Publishing Outputs
When you run rustipo build, Rustipo does more than render HTML pages into dist/.
It also generates a small set of publishing artifacts that help the site behave like a real published product rather than a folder of HTML files.
This page explains the built-in generated outputs Rustipo writes today, when they appear, and where theme authors can influence the result.
What Rustipo Always Writes
Every normal Rustipo build writes rendered pages and copied assets into dist/.
In addition, Rustipo can generate:
dist/rss.xmldist/sitemap.xmldist/search-index.jsondist/robots.txtdist/404.html
Some outputs always appear. Others depend on site content such as dated blog posts.
dist/rss.xml
Rustipo generates dist/rss.xml from dated blog posts.
This is the feed output for the built-in blog publishing model.
When it appears
- when the site has dated blog posts that belong in the feed
What it is for
- feed readers
- subscribers who want post updates
- integrations that consume a standard RSS feed
What theme authors should know
RSS is a publishing artifact, not a theme template surface. Themes do not render it directly.
dist/sitemap.xml
Rustipo generates a sitemap from the rendered site routes.
When it appears
- during normal builds with a valid
base_url
What it is for
- search engine discovery
- crawler-friendly route listing
- giving other systems a canonical list of published URLs
What theme authors should know
The sitemap comes from the final rendered route set, so it reflects the pages Rustipo actually publishes rather than the theme structure alone.
dist/search-index.json
Rustipo generates a JSON search index from site content.
When it appears
- during normal builds
What it is for
- client-side or custom search implementations
- docs and notes sites that want lightweight local search data
What theme authors should know
Rustipo writes the index file, but themes decide whether to consume it in the frontend. A theme can ship search UI and read search-index.json without reimplementing index generation.
dist/robots.txt
Rustipo generates a default robots.txt file.
When it appears
- during normal builds
What it is for
- crawler guidance
- pointing crawlers at the generated sitemap
What theme authors should know
This is generated outside the theme layer. It is part of the publishing pipeline rather than the page template contract.
dist/404.html
Rustipo generates a not-found page.
When it appears
- during normal builds
What it is for
- host-level fallback when a route is missing
- giving static hosts a real not-found document instead of a generic server response
Theme override behavior
This output is the publishing artifact most directly influenced by themes.
Rustipo uses:
templates/404.htmlwhen the theme provides it- otherwise
templates/page.htmlas the fallback layout
That means theme authors can provide a custom branded not-found experience without changing the rest of the publishing pipeline.
What These Outputs Depend On
These outputs come from different parts of the product:
- content model and routes influence
sitemap.xml,search-index.json, andrss.xml - theme templates influence
404.html - build-time publishing logic generates
robots.txtand the other derived files base_urlmatters for absolute URL-aware publishing artifacts such as the sitemap and crawler hints
What To Expect From rustipo build
A healthy build usually means:
- rendered HTML pages in
dist/ - copied static assets
- generated
palette.css - generated publishing artifacts where applicable
So rustipo build is not only “HTML output.” It is the full static publishing step.
What Themes Should Usually Rely On
Themes should not try to reimplement these publishing artifacts in template code.
Instead:
- let Rustipo generate feed, sitemap, search, and crawler files
- provide
templates/404.htmlonly when you want a custom not-found page - build frontend behavior on top of generated files such as
search-index.jsonwhen needed