Skip to content
Docs

SEO & structured data

What the theme does for search engines automatically, and the few knobs worth knowing. Structured data for events, blog posts and your organization ships out of the box.

What’s automatic

Every page gets a description, canonical URL, full Open Graph and Twitter card tags, og:locale, and a robots.txt advertising your sitemap. You don’t configure any of it.

The site also emits /llms.txt, a short plain-text summary for AI agents: what the community is, the next upcoming event (regenerated every build so it stays true), how to join, and links to the key pages and the calendar feed. On Astro it is always generated; on Hugo add LLMS to the home page’s outputs (the demos and starter already do).

The theme also emits JSON-LD structured data:

  • Event on event pages (rich-result eligible),
  • Organization on the home page,
  • BlogPosting on blog posts.

Validate any page with Google’s Rich Results Test.

Event rich results

Event pages become eligible for Google’s event rich results. The theme reads your existing front matter, no new required fields. The event’s start time is parsed from the free-text time field, best effort:

time valueinterpreted start
6:00 PM18:00
18:3018:30
12:00 AM00:00
6:00 PM · doors 5:3018:00 (leading token)
doors at 5:30date only (no leading time)
(absent)date only

Only a leading HH:MM[am/pm] token is read, so put the real start time first. Write date as a plain calendar date and the clock time in time.

Optional event fields:

  • cancelled = true: marks the event cancelled (a visible badge and the structured data), so the two never disagree.
  • online = true: an online event (virtual location, online attendance mode).
  • price, currency, cost: for paid events (cost is the displayed text, price/currency feed the structured offer).
  • imageAlt: alt text for the social share image.

Knobs

[params.seo] (Astro: SITE.seo):

  • currency: default offer currency (default USD).
  • noindexTaxonomies = true: keep tag pages out of search results.
  • faqJsonLd: emit FAQPage JSON-LD from faq blocks (default true).

See also FAQ sections for the faq shortcode.