mirror of
https://github.com/headroomlabs-ai/headroom.git
synced 2026-08-27 14:17:10 -04:00
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
|
|
// Next.js App Router sitemap convention (Next 13+). Pulls every page
|
||
|
|
// out of the Fumadocs ``source`` (same source that backs ``/llms.txt``,
|
||
|
|
// search, and the OG image generator) and emits a valid sitemap.xml.
|
||
|
|
//
|
||
|
|
// Search engines and AI crawlers use this to enumerate every doc page
|
||
|
|
// without scraping HTML. The ``robots.ts`` route advertises the
|
||
|
|
// sitemap URL so well-behaved crawlers find it on the first GET.
|
||
|
|
|
||
|
|
import type { MetadataRoute } from 'next';
|
||
|
|
import { source } from '@/lib/source';
|
||
|
|
|
||
|
|
const SITE_URL = process.env.NEXT_PUBLIC_SITE_URL ?? 'https://headroom-docs.vercel.app';
|
||
|
|
|
||
|
|
export default function sitemap(): MetadataRoute.Sitemap {
|
||
|
|
const now = new Date();
|
||
|
|
|
||
|
|
// Static top-level routes (home page; docs index is covered by the
|
||
|
|
// page enumeration below).
|
||
|
|
const staticRoutes: MetadataRoute.Sitemap = [
|
||
|
|
{
|
||
|
|
url: `${SITE_URL}/`,
|
||
|
|
lastModified: now,
|
||
|
|
changeFrequency: 'weekly',
|
||
|
|
priority: 1.0,
|
||
|
|
},
|
||
|
|
];
|
||
|
|
|
||
|
|
// Every Fumadocs page (introduction, quickstart, installation,
|
||
|
|
// integrations, …). ``page.url`` is the relative URL like
|
||
|
|
// ``/docs/quickstart``; ``page.data`` carries the front-matter.
|
||
|
|
const docPages: MetadataRoute.Sitemap = source.getPages().map((page) => ({
|
||
|
|
url: `${SITE_URL}${page.url}`,
|
||
|
|
lastModified: now,
|
||
|
|
changeFrequency: 'weekly' as const,
|
||
|
|
priority: 0.8,
|
||
|
|
}));
|
||
|
|
|
||
|
|
return [...staticRoutes, ...docPages];
|
||
|
|
}
|