RSS & Atom Feeds
Dune automatically generates RSS 2.0 and Atom 1.0 feeds from your published, dated content. No configuration is required to get started.
Feed URLs
| Format | URL | Content-Type |
|---|---|---|
| RSS 2.0 | /feed.xml |
application/rss+xml |
| Atom 1.0 | /atom.xml |
application/atom+xml |
Both feeds are served at startup and are ready to submit to feed readers and podcast aggregators.
What's included
A page appears in the feeds if ALL of the following are true:
published: truein frontmatter- The page has a routable URL
- The page has a
datefield set
Pages without a date are excluded — feeds are date-ordered streams and a dateless page has no meaningful position.
Items are sorted newest-first. The default is 20 items; see Configuration below to adjust.
Feed discovery
Dune automatically injects <link rel="alternate"> discovery tags into every HTML response so browsers and feed readers can find your feeds without manual configuration:
<link rel="alternate" type="application/rss+xml" title="My Site" href="/feed.xml">
<link rel="alternate" type="application/atom+xml" title="My Site" href="/atom.xml">
These tags are inserted in <head> automatically — no changes to your theme are required.
Configuration
Add a feed: block to config/site.yaml:
feed:
enabled: true # Set to false to disable both feeds (default: true)
items: 20 # Number of most-recent items to include (default: 20)
content: "summary" # "summary" (excerpt) or "full" (full HTML) (default: "summary")
enabled
Set to false to disable feed generation entirely. /feed.xml and /atom.xml will return 404, and the discovery <link> tags will not be injected.
items
The number of most-recent dated pages to include, sorted by date descending. Increase this for content-heavy sites; keep it at 20–50 for typical blogs.
content
Controls the body of each feed item:
| Value | Description | Best for |
|---|---|---|
"summary" |
Auto-generated excerpt from page body | Blogs, news (encourages click-through) |
"full" |
Fully rendered HTML content | Email newsletters, offline reading |
Generation timing
| Mode | When generated |
|---|---|
dune serve |
Once at startup, then cached |
dune dev |
Regenerated on each request |
In production (dune serve), feeds are built once when the server starts. Restart the server after publishing new content to update the feeds, or use the /api/rebuild endpoint if your hosting setup supports it.
Cover images in feeds
If a page has an image frontmatter field, it is included as the feed item's cover image:
---
title: "My Post"
date: 2026-03-09
image: cover.jpg
---
The image must be a filename co-located with the content file (not an absolute URL). The generated feed item will reference /content-media/{dir}/cover.jpg.
Feed metadata
Feed-level metadata (title, description, author, language) comes directly from config/site.yaml:
title: "My Blog"
description: "Thoughts on Deno and web development"
url: "https://example.com"
author:
name: "Jane Doe"
email: "jane@example.com"
Set url to your production domain for correct absolute URLs in the feed. Without a valid url, item links will be relative and may not work in all feed readers.