Last updated June 23, 2026
SEO & Metadata
2 minutes read
Page metadata
The layout injects the following <head> tags automatically from frontmatter and folio.config.ts:
<title>:{page title} | {site name}<meta name="description">: pagedescriptionor site-level fallback<meta name="author">: from the pageauthorfrontmatter field when set- Open Graph tags:
og:title,og:description,og:image,og:url,og:locale - Twitter / X card tags
<link rel="canonical">derived fromsiteUrlinfolio.config.ts<meta name="robots">set tonoindex, nofollowwhennoIndex: truein frontmatter<meta name="theme-color">derived from the active theme gradient
Open Graph images
folio.md automatically generates a /og/{slug}.png image for every page at build time using Satori and Sharp. The image includes the page title, description, and site name, styled with the configured gradient colors. No extra configuration required.
folio.md uses the auto-generated image for og:image and twitter:image. No configuration required.
Sitemap
folio.md generates a /sitemap.xml at build time. It includes every page that doesn’t have noIndex: true in its frontmatter, with a <lastmod> date from git history where available.
folio.md also injects a <link rel="sitemap"> tag into every page’s <head> automatically.
Atom feed
folio.md generates an Atom 1.0 feed at /feed.xml at build time. It includes every page that doesn’t have noIndex: true, sorted by most recently modified. Each entry includes the page title, description, canonical URL, and published and updated dates from git history where available.
folio.md also injects a <link rel="alternate"> tag into every page’s <head> so feed readers can discover the feed automatically.
Structured data
folio.md injects JSON-LD structured data into every page’s <head>:
- WebSite: site name and URL on every page
- Article: title, description, author, publish date, and last-modified date on non-index pages that don’t have
noIndex: true - BreadcrumbList: sidebar path to the current page
folio.md generates this automatically from frontmatter and folio.config.ts. No configuration required.