SEO en zoeken
Zoeken komt van Fumadocs. Onedocs voegt helpers toe voor de sitemap, bestanden robots.txt en llms.txt, allemaal ingesteld als routes van de Next.js App Router. Zie voor paginametadata en Open Graph-afbeeldingen onedocs/metadata en onedocs/og in de API-referentie.
Zoeken
Onedocs gebruikt de ingebouwde Orama-zoekfunctie van Fumadocs. Maak een route API aan:
import { source } from "@/lib/source";
import { createFromSource } from "fumadocs-core/search/server";
export const { GET } = createFromSource(source);
Het zoekvenster dat RootProvider toevoegt, doorzoekt standaard /api/search; verdere configuratie is niet nodig.
Sitemap
Genereer een sitemap op /sitemap.xml:
import { generateSitemap } from "onedocs/seo";
import meta from "../../content/docs/meta.json";
const baseUrl = "https://yourdomain.com";
export default function sitemap() {
return generateSitemap({
baseUrl,
pages: meta.pages ?? [],
});
}
generateSitemap vermeldt de hoofdmap van de site en vervolgens één URL per item in pages onder /docs. Items die beginnen met --- (scheidingstekens in de zijbalk) worden overgeslagen, en index verwijst naar /docs zelf. De items worden overgenomen zoals opgegeven; pagina's in submappen hebben dus een eigen item nodig, bijvoorbeeld "guides/setup".
Robots.txt
Genereer een robots.txt op /robots.txt:
import { generateRobots } from "onedocs/seo";
const baseUrl = "https://yourdomain.com";
export default function robots() {
return generateRobots({ baseUrl });
}
Dit maakt het volgende aan:
User-Agent: *
Allow: /
Host: https://yourdomain.com
Sitemap: https://yourdomain.com/sitemap.xml
LLMs.txt
LLMs.txt helpt AI-assistenten uw documentatie te begrijpen. Onedocs kan zowel samenvattingen als versies met de volledige inhoud genereren.
Samenvattingsversie
Maak /llms.txt met paginatitels en beschrijvingen:
import { createLLMsSource, generateLLMsText } from "onedocs/llms";
import { source } from "@/lib/source";
import config from "../../../onedocs.config";
export async function GET() {
const llmsSource = createLLMsSource(source);
const text = await generateLLMsText(llmsSource, {
title: config.title,
description: config.description,
});
return new Response(text, {
headers: { "Content-Type": "text/plain; charset=utf-8" },
});
}
Het bestand begint met de titel en beschrijving, vermeldt elke pagina als - Title: URL met de beschrijving ervan en eindigt met een verwijzing naar /llms-full.txt. Beide functies nemen de omhulde bron uit createLLMsSource, niet de bron Fumadocs zelf, en retourneren een promise.
Versie met volledige inhoud
Maak /llms-full.txt met de volledige documentatie:
import { createLLMsSource, generateLLMsFullText } from "onedocs/llms";
import { source } from "@/lib/source";
export async function GET() {
const llmsSource = createLLMsSource(source);
const text = await generateLLMsFullText(llmsSource);
return new Response(text, {
headers: { "Content-Type": "text/plain; charset=utf-8" },
});
}
Elke pagina wordt weergegeven met de titel, URL, beschrijving en verwerkte Markdown, met --- tussen de pagina's.
De paginatekst komt uit de verwerkte Markdown van Fumadocs MDX, die standaard uitgeschakeld is. Zonder deze optie bevat llms-full.txt alleen titels, URL's en beschrijvingen (#3). Schakel de optie in source.config.ts in:
import { defineDocs } from "fumadocs-mdx/config";
export const docs = defineDocs({
dir: "content/docs",
docs: {
postprocess: {
includeProcessedMarkdown: true,
},
},
});
Configuratieopties
Sitemapopties
generateSitemap({
baseUrl: "https://yourdomain.com",
pages: ["index", "getting-started", "configuration"],
docsPath: "/docs", // Default: "/docs"
});
Robots-opties
generateRobots({
baseUrl: "https://yourdomain.com",
sitemapPath: "/sitemap.xml", // Default: "/sitemap.xml"
});
Wat u krijgt
Na het instellen van deze routes:
| URL | Wat het doet |
|---|---|
/api/search?query=... |
Zoekendpoint API |
/sitemap.xml |
XML-sitemap voor zoekmachines |
/robots.txt |
Robotsbestand met verwijzing naar sitemap |
/llms.txt |
Samenvatting voor AI-assistenten |
/llms-full.txt |
Volledige documentatie voor AI-assistenten |