Skip to content

www: SEO/AEO audit fixes (sitemap, robots, JSON-LD, canonicals)#95

Draft
bholmesdev wants to merge 1 commit intomainfrom
oz/seo-aeo-audit-www-v2
Draft

www: SEO/AEO audit fixes (sitemap, robots, JSON-LD, canonicals)#95
bholmesdev wants to merge 1 commit intomainfrom
oz/seo-aeo-audit-www-v2

Conversation

@bholmesdev
Copy link
Copy Markdown
Owner

@bholmesdev bholmesdev commented Apr 30, 2026

SEO/AEO audit of simple-stack/www

This PR is the result of an SEO + AEO audit of the Starlight docs site at
simple-stack.dev. It addresses the highest-impact
findings while staying minimal and self-contained.

Findings (highlights)

Critical

  • No site configured in astro.config.mjs. Without it, Astro/Starlight
    cannot emit absolute canonical URLs, the canonical/og:url/twitter:url
    tags fall back to relative paths, and @astrojs/sitemap cannot run.
  • No XML sitemap. Search engines have to discover every page by crawling.
  • No robots.txt. AI crawlers (GPTBot, OAI-SearchBot, PerplexityBot,
    Google-Extended, ClaudeBot, etc.) had no explicit signal and no sitemap
    pointer.

High

  • No structured data anywhere on the site. AEO benchmarks consistently
    show Organization + FAQPage JSON-LD as the highest-leverage schema for
    AI citations.
  • Homepage frontmatter overrode <title> to Simple stack 🌱 (an
    emoji-only title), which suppressed Starlight's brand template and
    produced a SERP entry with weak keywords.
  • Homepage description was generic ("A suite of tools built for Astro
    to simplify your workflow.") and missing the product names that drive
    branded queries.

Medium / Ongoing (not in this PR — see below)

  • Stream and Form sections are deprecated but currently indexable. They
    should likely be noindex and excluded from the sitemap so AI/search
    don't surface unmaintained content.
  • No FAQPage JSON-LD on landing pages. Low-effort and high-impact for
    ChatGPT/Perplexity/Google AI Overviews citations.
  • No Open Graph image. Starlight inherits the favicon — fine but not branded.
  • Two large media assets (astro-partial-rendering-demo.mp4 ~14MB,
    simple-stream-intro.mov ~3.4MB) ship from public/assets/ on every
    deploy. Host externally or <video preload="none"> with a poster.
  • No Lighthouse/PageSpeed step in CI.

Changes in this PR

  1. site URL configuredhttps://simple-stack.dev added to
    astro.config.mjs. Enables absolute canonical/OG/Twitter URLs.
  2. Sitemap — Added @astrojs/sitemap integration. Emits
    sitemap-index.xml plus sitemap-0.xml on build.
  3. robots.txt — New www/public/robots.txt referencing the sitemap
    and explicitly allowing major AI crawlers (AEO).
  4. Organization JSON-LD — Injected site-wide via Starlight's head
    config so AI engines and Google can disambiguate the project as an
    entity (name, url, logo, description, sameAs).
  5. Default site description — Added a top-level description so
    pages without frontmatter description inherit a meaningful default.
  6. Homepage metadata — Removed the redundant head: title override,
    replaced the emoji-only title with a descriptive one, and expanded the
    description to include the product names that drive branded search.

Note on the existing oz/seo-aeo-audit-www branch

A previous remote branch with a similar name already exists (Ben's
commit 2b5ee58) and goes further: it also adds FAQPage JSON-LD to the
home page, marks deprecated docs noindex, and excludes them from the
sitemap. Consider merging the two — that branch is a good template for
the "Suggested follow-ups" section above.

Suggested follow-ups (not in this PR)

  • noindex deprecated stream.md and form/*.md{x} and exclude them
    from the sitemap with sitemap({ filter: ... }).
  • Add FAQPage JSON-LD to home + store.mdx / query.mdx / scope.mdx
    covering "What is …", "How do I install …", "Is it production-ready?".
  • Add a branded og:image and reference it from Starlight head.
  • Move large demo .mp4/.mov files out of public/ or lazy-load.

Validation

pnpm install was attempted in the sandbox to run astro build, but the
sandbox network timed out before it completed. The changes are
configuration-only and follow the documented Starlight + @astrojs/sitemap
patterns; please run pnpm install && pnpm --filter docs build locally
to verify.

Conversation: https://app.warp.dev/conversation/0b12e656-aa9e-4a08-ae5b-2ba337858621
Run: https://oz.warp.dev/runs/019ddd9d-dd42-7c07-9e12-82d2e0bb3366

This PR was generated with Oz.

- Set `site` to https://simple-stack.dev in astro.config so Astro and
  Starlight emit absolute canonical, Open Graph, and Twitter URLs.
- Add @astrojs/sitemap integration. Generates sitemap-index.xml and
  per-page entries on build.
- Add public/robots.txt referencing the sitemap and explicitly allowing
  AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot,
  Google-Extended, ClaudeBot) to improve AEO / AI citation visibility.
- Inject site-wide Organization JSON-LD via Starlight `head` config so
  AI engines and search engines can identify the project as an entity.
- Add a top-level `description` to the Starlight config so non-frontmatter
  pages inherit a meaningful default meta description.
- Rework the homepage frontmatter: removed the redundant `head: title`
  override that suppressed the brand template, replaced the emoji-only
  title with a descriptive one, and expanded the meta description with
  product-name keywords.

Co-Authored-By: Oz <oz-agent@warp.dev>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 30, 2026

⚠️ No Changeset found

Latest commit: 6a1c8ce

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
simple-stack-docs Error Error Apr 30, 2026 10:55am

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant