Skip to main content
Docs7 generates the standard SEO files automatically. Anything you ship in the repository wins over the generated version.

Sitemap and robots.txt

  • sitemap.xml is generated with git-derived <lastmod> dates. Hidden and noindex pages are excluded unless seo.indexing: "all" is set in docs.json.
  • robots.txt allows everything and points at the sitemap.
  • A repository sitemap.xml or robots.txt replaces the generated one.

Meta tags and canonical URLs

  • Set site-wide tags with seo.metatags in docs.json; well-known keys (description, og:*, twitter:*, canonical) act as overrides rather than duplicates.
  • Override per page with frontmatter: canonical, og:title, og:description, og:image.
  • noindex: true frontmatter emits a robots noindex tag for a page.

Open Graph images

Every page gets a social card automatically:
  • A site-wide 1200×630 card is rendered at build time from your name, colors, and logo.
  • Each page additionally gets its own card with the page title and description, rendered on demand and cached at the edge.
  • A frontmatter og:image (or a site-wide seo.metatags["og:image"]) overrides the generated cards. Per-page cards fall back to the site card when the title or description uses characters outside the Latin ranges.
Only local logos (.svg, .png, .jpg in the repository) appear on the cards; remote logo URLs are not fetched.

Structured data

Pages emit JSON-LD (WebSite, TechArticle/WebPage, BreadcrumbList). Add an Organization node with seo.organization in docs.json.

Last updated

metadata.timestamp: true in docs.json shows a git-derived “Last updated” date on every page; per-page timestamp frontmatter overrides it in either direction.

RSS

Changelog-style pages built from <Update> blocks can publish a feed: set rss: true in the page frontmatter and the feed appears at <page-url>/rss.xml. Date-like label values (2026-08-12, or March 5, 2026) become publish dates, and a per-entry rss={{ title, description }} prop overrides that feed item. There is no site-wide feed.