mdbook-rss-feed
An mdBook preprocessor that generates a beautiful RSS 2.0 feed (and optional Atom) for your book, with HTML previews for each chapter.
Perfect for blogs, documentation sites, or any mdBook that you want to publish.
Features
-
HTML preview in
<description>built from the first paragraphs of each chapter -
Hybrid preview source:
- Prefer chapter body content for the preview
- Fall back to
descriptionin frontmatter when the body is empty or very short
-
Proper XML escaping via the
rsscrate -
Falls back to file modification time if no date in frontmatter
-
Supports
date:in YAML frontmatter (RFC3339 orYYYY-MM-DD) -
Respects
config.book.title,config.book.description, andoutput.html.site-url -
Zero-config, just drop it in
book.toml -
Works with or without YAML frontmatter
Installation
Version Check:
Tested against:
- mdBook v0.4.40 & v0.5.1
- Rust editions 2020 & 2024
Usage
After installing globally, add the following to your mdbook's book.toml:
[]
= "your-title"
= "your-author"
= "your-lang"
= "src"
[]
= ["html"]
[]
= "https://your-user.github.io/"
renderers = ["html"] ensures the preprocessor only runs for HTML builds.
-
If you omit
title, mdBook will useMy mdbook. -
If you omit
site-url, the default ishttps://example.com. Set this to the public base URL of your site. -
With the example above, the feed would be at:
https://your-user.github.io/rss.xml.
Frontmatter
Frontmatter is optional. Without it, entries only include the chapter title, book name, and date/time.(varies by RSS reader)
With frontmatter, you can customize those fields and add author and description:
title: Debugging NixOS modules
date:
author: saylesss88
description: This chapter covers debugging NixOS modules, focusing on tracing module
options and evaluating merges.
How feed preview is generated
The preview is generated from the rendered HTML of the chapter. The crate finds
<p>…</p> blocks and takes the first 2–3 paragraphs, up to 800 characters.
If a chapter starts with non-paragraph content (lists, details blocks, custom markup), the preview starts at the first real paragraph.
To override this, set description in the YAML frontmatter; that text is used
when the body is empty or very short.
-
Default: preview comes from the first few body paragraphs.
-
Fallback: when the body is empty/very short, preview comes from
description.
If you never want to use the fallback, just omit description; the preview will
always come from the body.
Hiding frontmatter in the rendered HTML
mdBook does not parse or strip YAML frontmatter, so the raw block (e.g. any YAML
keys like title:, date:, etc.) appears in the HTML.
To avoid this, you can use:
RSS Button for mdbook header
Your book.toml can accept additional css and js:
= [ "theme/rss-button.css" ]
= [ "theme/rss-buttons.js" ]
In your books theme/ directory, place these two files:
theme/rss-button.css
/* Simple RSS header button */
}
}
/* Optional: orange hover like classic RSS */
}
theme/rss-button.js
document.;
Now you should have a small logo pinned to the top right of your book that leads
to https://your-site/rss.xml