Set up a blog with posts, tags, pagination, and an Atom feed.

πŸ“‚content/posts/
β”œβ”€β”€ πŸ“_index.mdsection: blog config
β”œβ”€β”€ πŸ“my-first-post.mdpage
β”œβ”€β”€ πŸ“another-post.mdpage

What your blog structure will look like after this guide.

Create the section #

Create content/posts/_index.md with this frontmatter:

+++
title = "Blog"
sort_by = "date"
paginate_by = 10
+++

This creates a paginated section at /posts/ that sorts posts by date (newest first).

Write a post #

Create content/posts/my-first-post.md:

+++
title = "My first post"
date = "2026-01-15"
description = "A short introduction."
tags = ["intro"]
+++

A short summary of the post goes here.

<!-- more -->

The full content continues after the "more" marker. Everything above it becomes the summary shown on listing pages.

Enable tags #

Add a taxonomy to config.toml:

[[taxonomies]]
name = "tags"

Zorto automatically generates:

  • /tags/ β€” list of all tags
  • /tags/intro/ β€” all posts with the β€œintro” tag

Add an Atom feed #

Enable feed generation in config.toml:

# config.toml
generate_feed = true

The feed is available at /atom.xml. Add a <link> tag in your base template’s <head> so feed readers can discover it automatically:

<link rel="alternate" type="application/atom+xml" title="{{ config.title }}" href="/atom.xml">

Drafts #

Set draft = true in a post’s frontmatter to exclude it from production builds. To preview drafts locally, pass the --drafts flag:

zorto preview --drafts