SEO et recherche
La recherche provient de Fumadocs. Onedocs ajoute des utilitaires pour le plan du site, les fichiers robots.txt et llms.txt, tous configurés comme routes de l’App Router Next.js. Pour les métadonnées de page et les images Open Graph, consultez onedocs/metadata et onedocs/og dans la référence API.
Recherche
Onedocs utilise la recherche Orama intégrée de Fumadocs. Créez une route API :
import { source } from "@/lib/source";
import { createFromSource } from "fumadocs-core/search/server";
export const { GET } = createFromSource(source);
Par défaut, la fenêtre de recherche ajoutée par RootProvider interroge /api/search ; aucune autre configuration n’est donc nécessaire.
Plan du site
Générez un plan du site dans /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 répertorie la racine du site, puis une URL par entrée dans pages sous /docs. Les entrées commençant par --- (séparateurs de la barre latérale) sont ignorées, et index pointe vers /docs lui-même. Les entrées sont lues telles quelles ; les pages des sous-dossiers doivent donc avoir leur propre entrée, par exemple "guides/setup".
Robots.txt
Générez un robots.txt dans /robots.txt :
import { generateRobots } from "onedocs/seo";
const baseUrl = "https://yourdomain.com";
export default function robots() {
return generateRobots({ baseUrl });
}
Cela crée :
User-Agent: *
Allow: /
Host: https://yourdomain.com
Sitemap: https://yourdomain.com/sitemap.xml
LLMs.txt
LLMs.txt aide les assistants IA à comprendre votre documentation. Onedocs peut générer les versions résumée et intégrale.
Version résumée
Créez /llms.txt avec les titres et descriptions des pages :
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" },
});
}
Le fichier commence par le titre et la description, répertorie chaque page sous la forme - Title: URL avec sa description, puis se termine par un lien vers /llms-full.txt. Les deux fonctions prennent la source encapsulée de createLLMsSource, et non la source Fumadocs elle-même, et renvoient une promesse.
Version intégrale
Créez /llms-full.txt avec la documentation complète :
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" },
});
}
Chaque page est écrite avec son titre, URL, sa description et son Markdown traité, avec --- entre les pages.
Le texte des pages provient du Markdown traité par Fumadocs MDX, désactivé par défaut. Sans cela, llms-full.txt ne contient que les titres, les URL et les descriptions (#3). Activez cette option dans source.config.ts :
import { defineDocs } from "fumadocs-mdx/config";
export const docs = defineDocs({
dir: "content/docs",
docs: {
postprocess: {
includeProcessedMarkdown: true,
},
},
});
Options de configuration
Options du plan du site
generateSitemap({
baseUrl: "https://yourdomain.com",
pages: ["index", "getting-started", "configuration"],
docsPath: "/docs", // Default: "/docs"
});
Options des robots
generateRobots({
baseUrl: "https://yourdomain.com",
sitemapPath: "/sitemap.xml", // Default: "/sitemap.xml"
});
Ce que vous obtenez
Après avoir configuré ces routes :
| URL | Fonction |
|---|---|
/api/search?query=... |
Point de terminaison de recherche API |
/sitemap.xml |
Plan du site XML pour les moteurs de recherche |
/robots.txt |
Fichier robots avec référence au plan du site |
/llms.txt |
Résumé pour les assistants IA |
/llms-full.txt |
Documentation complète pour les assistants IA |