Skip to main content

sitemap.xml is generated

ab-002589 · project-snapshot.seo.has-sitemap
Severity: lowactive

Why it matters

Search engines discover URLs by crawling links, which works for small sites but leaves entire sections of larger sites — blog archives behind pagination, product detail pages behind filter UIs, dynamically routed pages with no inbound links — effectively invisible until the crawler happens across them weeks or months later. A sitemap hands Google, Bing, and downstream AI crawlers (Perplexity, ChatGPT, Claude) an explicit list of canonical URLs with lastModified timestamps, which is the single fastest way to get new content indexed and to signal when existing content has been updated. AI coding tools skip sitemap generation because it is a convention, not a default — Next.js's app/sitemap.ts file is purely opt-in, and scaffolds never include one. The failure case this catches is the empty sitemap: a file that exists but contains only the homepage, which is worse than missing because search engines then treat every other URL as less important than the one listed.

Severity rationale

Low because Google can still discover most linked pages via crawling, but sitemaps measurably accelerate indexing of dynamic routes and are a trivial two-file addition in every mainstream framework.

Remediation

For Next.js App Router, create app/sitemap.ts:

export default function sitemap() {
  return [{ url: 'https://example.com', lastModified: new Date(), priority: 1 }]
}

Deeper remediation guidance and cross-reference coverage for this check lives in the seo-fundamentals Pro audit — run that after applying this fix for a more exhaustive pass on the same topic.

Detection

  • ID: project-snapshot.seo.has-sitemap
  • Severity: low
  • What to look for: Check for app/sitemap.ts, app/sitemap.xml, pages/sitemap.xml.tsx, public/sitemap.xml, or framework plugins (next-sitemap, @astrojs/sitemap, vite-plugin-sitemap).
  • Pass criteria: A sitemap is generated by the framework or shipped statically.
  • Fail criteria: No sitemap source detected.
  • Skip (N/A) when: Project is API / CLI / private dashboard (no public-indexable surface).
  • Do NOT pass when: A sitemap file exists but is empty or contains only the homepage URL — count URL entries before passing.
  • Report even on pass: "Sitemap source: {file or plugin}; URLs included: N (estimated)."
  • Detail on fail: "No sitemap.ts, sitemap.xml, or sitemap plugin detected".
  • Remediation: For Next.js App Router, create app/sitemap.ts:
    export default function sitemap() {
      return [{ url: 'https://example.com', lastModified: new Date(), priority: 1 }]
    }
    

Taxons

History