SEO Built In: Meta, Schema, Sitemap and Robots
Need this adapted for your organization? Work with AstroWeb.dev — Astro services by NViewsWEB.
Feature

SEO Built In: Meta, Schema, Sitemap and Robots

What the theme prints for search engines and AI agents by default, and the settings that turn each part on or off per page and per collection.

SEO is on by default. Every layout renders through core/components/BaseHead.astro, so a new page gets the same tags as the rest of the site as soon as it passes its head properties.

In the page head

Output Source
title, meta name="description", keywords, author Page front matter or the page’s HeadProps
link rel="canonical" Built from info.siteUrl and the page path
Open Graph (og:title, og:description, og:url, og:type, og:image with width, height and alt) and article: dates Page meta and the hero image
twitter:card (summary_large_image) and title, description, image Same meta
meta name="robots" index, follow or noindex, nofollow, set by the page’s index flag; printed in production only
rel="prev" and rel="next" PaginationSeo.astro on paginated lists
Icons, web manifest, color-scheme, referrer policy, sitemap link BaseHead.astro

The image for social previews comes from the hero image meta (see Feature image workflow). A page without one falls back to siteImages.image.

Structured data

core/components/schema/Schema.astro prints JSON-LD for the page type: WebPage, Article, VideoObject, AudioObject, Person, credentials, ItemList for listings and ImageObject for the images registered by ResponsiveImage. FaqList adds FAQPage, Breadcrumb adds BreadcrumbList, and SchemaLocalBusiness and SchemaSiteNavigation cover business and navigation data. Business details come from src/site/config/local-business.mjs and info.mjs.

Generated files

URL Route Notes
/sitemap.xml src/pages/sitemap.xml.ts Each collection’s sitemap flag in pages.mjs controls inclusion; info.sitemap controls the link rel="sitemap" in the head
/robots.txt src/pages/robots.txt.ts Disallows paths such as /api/; blocks everything outside production (blockAllInNonProd); blockAICrawlers can add AI bot rules
/rss.xml and collection feeds rss.xml.ts Combined and per-collection
/llms.txt and per-collection llms.txt llms.txt.ts Plain-text exports for AI agents

Read more in llms.txt and RSS outputs.

Where to control it

  • Per page: index, sitemap, rss, search and llms front matter fields.
  • Per collection: src/site/config/pages.mjs (index, sitemap, sitemapMinPosts).
  • Per site: info.mjs (name, URL, keywords, sitemap), local-business.mjs, functions.mjs (robots rules).
  • IndexNow: helper scripts live in core/scripts/prepare-indexnow.mjs and submit-indexnow.mjs.

Check it

  1. Build the site and open a page source: canonical, one description, Open Graph image with dimensions, JSON-LD.
  2. Open /sitemap.xml, /robots.txt and /llms.txt.
  3. Validate the JSON-LD with a structured data testing tool.
  4. Use docs/seo-image-checklist.md to confirm every page has its own hero image and alt text.