SEO și căutare
Căutarea este oferită de Fumadocs. Onedocs adaugă utilitare pentru sitemap, fișierele robots.txt și llms.txt, toate configurate ca rute App Router Next.js. Pentru metadatele paginii și imaginile Open Graph, consultați onedocs/metadata și onedocs/og din API referință.
Căutare
Onedocs folosește căutarea Orama încorporată din Fumadocs. Creați o rută API:
import { source } from "@/lib/source";
import { createFromSource } from "fumadocs-core/search/server";
export const { GET } = createFromSource(source);
Dialogul de căutare adăugat de RootProvider interoghează implicit /api/search, deci nu este necesară nicio altă configurare.
Sitemap
Generați un sitemap la /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 listează rădăcina site-ului, apoi câte un URL pentru fiecare intrare din pages din /docs. Intrările care încep cu --- (separatorii barei laterale) sunt omise, iar index se mapează la /docs însuși. Intrările sunt preluate așa cum sunt furnizate, așadar paginile din subdosare trebuie să aibă propriile intrări, de exemplu "guides/setup".
Robots.txt
Generați un robots.txt la /robots.txt:
import { generateRobots } from "onedocs/seo";
const baseUrl = "https://yourdomain.com";
export default function robots() {
return generateRobots({ baseUrl });
}
Aceasta creează:
User-Agent: *
Allow: /
Host: https://yourdomain.com
Sitemap: https://yourdomain.com/sitemap.xml
LLMs.txt
LLMs.txt ajută asistenții AI să înțeleagă documentația. Onedocs poate genera atât versiuni rezumative, cât și versiuni cu conținut complet.
Versiunea rezumativă
Creați /llms.txt cu titlurile și descrierile paginilor:
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" },
});
}
Fișierul începe cu titlul și descrierea, listează fiecare pagină ca - Title: URL împreună cu descrierea sa și se încheie cu o trimitere la /llms-full.txt. Ambele funcții preiau sursa încapsulată din createLLMsSource, nu sursa Fumadocs însăși, și returnează o promisiune.
Versiunea cu conținut complet
Creați /llms-full.txt cu documentația completă:
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" },
});
}
Fiecare pagină este scrisă cu titlul, URL, descrierea și Markdown procesat, cu --- între pagini.
Textul paginii provine din Fumadocs MDX, din Markdown procesat, care este dezactivat implicit. Fără acesta, llms-full.txt conține doar titluri, URL-uri și descrieri (#3). Activați-l în source.config.ts:
import { defineDocs } from "fumadocs-mdx/config";
export const docs = defineDocs({
dir: "content/docs",
docs: {
postprocess: {
includeProcessedMarkdown: true,
},
},
});
Opțiuni de configurare
Opțiuni pentru sitemap
generateSitemap({
baseUrl: "https://yourdomain.com",
pages: ["index", "getting-started", "configuration"],
docsPath: "/docs", // Default: "/docs"
});
Opțiuni pentru robots
generateRobots({
baseUrl: "https://yourdomain.com",
sitemapPath: "/sitemap.xml", // Default: "/sitemap.xml"
});
Ce primiți
După configurarea acestor rute:
| URL | Ce face |
|---|---|
/api/search?query=... |
Punct final API de căutare |
/sitemap.xml |
Sitemap XML pentru motoarele de căutare |
/robots.txt |
Fișier Robots cu referință la sitemap |
/llms.txt |
Rezumat pentru asistenții AI |
/llms-full.txt |
Documentație completă pentru asistenții AI |