Why it matters
Sitemaps are the main discovery channel for new and updated URLs, especially for sites with few external links.
How to fix it
Add app/sitemap.ts listing every indexable URL with its real lastModified date, and reference it from robots.txt.
Example
// app/sitemap.ts
import type { MetadataRoute } from 'next'
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const posts = await getPosts()
return [
{ url: 'https://acme.example/', lastModified: '2026-09-01' }, // real content date, NOT new Date()
...posts.map((p) => ({ url: 'https://acme.example/blog/' + p.slug, lastModified: p.updated })),
]
}References
More seo rules
void seo reports 60 rules in this category. What search engines need from the raw response: status codes, titles and descriptions in <head>, self-referencing canonicals, one h1, crawlable links, Open Graph, icons, robots.txt and a sitemap with real dates.
robots-txt-invalidrobots.txt serves HTML, exceeds 500 KiB, or has unparseable linesrobots-blocks-allrobots.txt disallows the site for * / Googlebot / Bingbotrobots-blocks-resourcesrobots.txt blocks JS/CSS needed to renderrobots-sitemap-directiverobots.txt has no absolute Sitemap: linesitemap-invalidSitemap isn't valid sitemap XML or exceeds protocol limitssitemap-url-invalidSitemap <loc> is relative or on another hostsitemap-lastmod<lastmod> invalid, in the future, or identical across entriessitemap-url-statusSitemap lists URLs that don't return 200 directly