llms.txt für Next.js
Keine First-Party-Konvention (noch nicht)
Next.js bringt Metadaten-Dateikonventionen für robots.txt und sitemap.xml mit — du exportierst eine Funktion aus app/robots.ts, und das Framework liefert die Datei aus. Für llms.txt existiert keine solche Konvention (es gibt einen offenen Feature-Request, vercel/next.js-Diskussion #80692), also verdrahtest du es selbst. Zwei Muster, beide trivial:
Muster 1: statische Datei
Leg llms.txt in public/ ab. Next.js liefert alles darin im Root aus, also public/llms.txt → yoursite.com/llms.txt. Fertig.
Die richtige Wahl, wenn sich deine Schlüsselseiten selten ändern. Das Risiko ist Drift: Die Datei beschreibt, was deine Website war.
Muster 2: Route-Handler
Für Inhalte, die sich bewegen — Doku, Produkte, Posts — generiere die Datei aus derselben Source of Truth wie deine Seiten:
// app/llms.txt/route.ts
import { getDocs } from '@/lib/content';
export async function GET() {
const docs = await getDocs();
const body = [
'# Acme',
'',
'> Acme ist eine Widget-API für Entwickler.',
'',
'## Docs',
...docs.map(d => `- [${d.title}](/docs/${d.slug}): ${d.summary}`),
'',
'## Maschinenlesbare Oberflächen',
'- [OpenAPI-Spezifikation](/openapi.json): vollständiges API-Schema',
].join('\n');
return new Response(body, {
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
});
}
Füge export const revalidate = 3600 hinzu, wenn deine Content-Quelle teuer ist. Dasselbe Muster liefert llms-full.txt aus, wenn du den Volltext-Begleiter willst.
Was hineingehört
Kuration schlägt Vollständigkeit: was die Website ist (eine Blockquote), das Dutzend Seiten, bei denen ein Agent anfangen sollte, mit Einzeiler-Zusammenfassungen, und Querverweise auf deine Maschinen-Oberflächen — die OpenAPI-Spezifikation und ein etwaiger MCP-Endpunkt sind die wertvollsten Zeilen der Datei. Vollständige Format-Guidance: der llms.txt-Guide.
Validieren
Lass den llms.txt-Validator gegen dein Deployment laufen — Existenz, Parsebarkeit, navigierbare Struktur — oder scanne die Website für das komplette Agent-Readiness-Bild.
Häufig gestellte Fragen
Hat Next.js eine llms.ts-Metadatenkonvention wie robots.ts?
Nein. Die Metadaten-Dateikonventionen decken robots.txt, sitemap.xml, Icons und OG-Images ab — nicht llms.txt. Ein Feature-Request ist offen; bis dahin nutze public/llms.txt oder einen Route-Handler.
Sollte der Route-Handler einen speziellen Content-Type setzen?
Liefere sie als text/plain (oder text/markdown) mit UTF-8 aus. Agenten parsen die Markdown-Struktur aus dem Body; entscheidend ist, dass die Route mit 200 und dem Inhalt direkt antwortet.
Statische Datei oder Route-Handler?
Statisch, wenn deine Schlüsselseiten stabil sind. Route-Handler, wenn die Datei irgendetwas listet, das sich ändert — es ist der Unterschied zwischen Dokumentation und einem Schnappschuss.