SEO
JSON-LD
PageJsonLd.astro renders a <script type="application/ld+json"> based on the page's blocks. Each block can declare a JSON-LD output (e.g. FAQ → FAQPage schema, Article → Article schema). Outputs are registered in src/lib/jsonLdRegistry.ts (auto-generated).
buildPageJsonLd() and buildCollectionEntryJsonLd() are the helpers. resolveJsonLd() short-circuits if canonicalUrl is set on the page.
Organization schema
src/content/globals/site.json accepts Organization fields (name, legalName, logo, email, telephone, address, etc.). jsonLdOrganization.ts builds and emits an Organization (or LocalBusiness) JSON-LD block on every page.
Sitemap & robots
src/lib/sitemap.ts exposes collectSitemapUrls(), buildSitemapXml(), sitemapResponse(). Sitemap enumerates every page and collection entry across all configured languages. robots.txt blocks preview environments and points to the sitemap index.
Per-page meta
The .structure.json may include a meta object: title, description, image, noindex, canonicalUrl. hydratePageMeta() injects <title>, <meta>, and <link rel="canonical"> tags. validatePageMeta() warns (in dev) about missing fields.