This is a demo announcement, dismissible and configured in site.json.

SEO and AI readability

Open Graph, hreflang, structured data, llms.txt and per-page markdown outputs.

Per-page head, automatically

Every page emits without configuration:

  • canonical URL (self-referencing, safe with separately-deployed versions)
  • Open Graph and Twitter card tags: title, description, type and locale
  • hreflang alternates linking the same page across the version’s languages (only where the page exists), with x-default on the default language
  • BreadcrumbList JSON-LD matching the visible breadcrumbs
  • noindex automatically on non-production builds

Social card image

site.jsonjson
"social": { "cover": "/docs/media/banner.png" }

Per-page override via cover: front matter. With an image set, shares render as large cards. Without one, they appear as text cards. Must be a direct image URL, sized approximately 1200x630.

Browser tint

site.jsonjson
"themeColor": { "light": "#fff8f6", "dark": "#1a110f" }

llms.txt and Markdown outputs

For AI assistants and “read as Markdown” use cases, the build emits:

  • /llms.txt: a curated index (llmstxt.org) of the latest version’s default language, linking to the per-page Markdown files
  • per-page index.md: the raw Markdown of every article, next to its HTML (this page: index.md)

Both come from the LLMS and Markdown output formats in hugo.toml. Remove those lines to disable them.

Internal links and anchors are validated while building:

hugo.tomltoml
[params.render_hooks.link]
errorLevel = "warning"   # ignore | warning | error

Set error in CI to make broken internal links fail the pipeline. The same pattern exists for remote images. See Images and links.