llms.txt — LLM-Kontextdatei
Was ist llms.txt?
llms.txt ist eine Klartext-Markdown-Datei im Root deiner Domain (/llms.txt), die deinen Service großen Sprachmodellen in menschenlesbarer Prosa beschreibt. Wo OpenAPI Maschinen eine strukturierte Spezifikation gibt und robots.txt Crawlern sagt, was sie abrufen dürfen, liefert llms.txt einem LLM den narrativen Kontext, den es braucht, um zu verstehen, was dein Service tut, wann ein Agent ihn nutzen sollte und welche Endpunkte zählen — in dem Format, das LLMs ohnehin am besten verarbeiten.
Die Spezifikation wurde im September 2024 von Jeremy Howard (fast.ai, Answer.AI) vorgeschlagen. Sie ist bewusst leichtgewichtig: keine Schema-Validierung, kein JSON-Parsing, keine Versionierung. Eine Markdown-Datei mit einer H1-Überschrift und einer einzeiligen Zusammenfassung. Die Einfachheit ist das Feature — jeder kann in fünf Minuten eine schreiben, und jedes LLM kann sie ohne spezielles Tooling lesen.
Warum llms.txt wichtig ist
LLMs, die das Web durchsuchen, haben ein Triage-Problem. Eine einzelne Seite auf einer modernen Website kann 200 KB HTML umfassen, wobei der Großteil des relevanten Texts hinter JavaScript steckt, das der Fetcher des Agenten nicht rendern kann. Selbst wenn der Agent JS rendern kann, ist das Signal-Rausch-Verhältnis schlecht — Navigation, Werbung, Cookie-Banner und Tracking-Skripte dominieren die Bytes.
llms.txt ist das Gegenteil: ein einzelnes Dokument, Klartext, passt in wenige KB, beginnt mit dem Wesentlichen. Ein Agent, der https://example.com/llms.txt abruft, bekommt:
- Was der Service ist, in einem Satz
- Die Endpunkte oder Seiten, die zählen, als Liste
- Auth- und Zahlungsregeln in Prosa
- Beispielaufrufe zum Kopieren
Das ist der Unterschied zwischen „der Agent muss sich deine Website erst erschließen“ und „der Agent kann mit einem einzigen Abruf entscheiden, ob deine Website relevant ist“. Für Websites, die von ChatGPT, Claude, Perplexity oder anderen Retrieval-Systemen zitiert werden wollen, ist llms.txt die günstigste denkbare Maßnahme.
So funktioniert es
Es gibt keine Protokollverhandlung. Agenten fordern /llms.txt genauso an wie /robots.txt, erwarten text/markdown oder text/plain zurück und parsen das Markdown. Die Datei MUSS mit einer H1-Überschrift beginnen; alles Weitere ist Konvention.
Eine minimale gültige llms.txt:
# Name deines Services
> Einzeiler: Was der Service tut.
## Overview
Wofür dein Service da ist, in 2-3 Sätzen. Beginne mit dem Use Case,
der einen Agenten interessiert, nicht mit deiner Firmengeschichte.
## Endpoints
- `GET /api/search?q=` — Katalog durchsuchen (kostenlos)
- `POST /api/order` — Bestellung aufgeben (kostenpflichtig: x402)
- `GET /api/status` — Health-Check (kostenlos)
## Authentication
Kostenlose Endpunkte brauchen keine Auth. Kostenpflichtige Endpunkte
liefern HTTP 402 mit einer x402-Payment-Challenge. Abwicklung in USDC
auf Base.
## Examples
Nach Schuhen suchen:
GET /api/search?q=shoes
Bestellung aufgeben:
POST /api/order {"sku": "ABC123", "qty": 1}
Das ist die gesamte Spezifikation. Überschriften jenseits der H1 sind optional. Aufzählungen, Fenced Code Blocks und Links funktionieren, weil sie Markdown sind — Agenten parsen sie mit der Markdown-Bibliothek, die sie ohnehin verwenden.
llms.txt im Vergleich zu anderen agentenlesbaren Dateien
| Datei | Zweck | Format | Wer liest sie |
|---|---|---|---|
/llms.txt | Narrativer Kontext für LLMs | Markdown | LLMs, browsende Agenten |
/llms-full.txt | Kompletter Textkorpus, eine Datei | Markdown / Klartext | RAG-Pipelines, eingebettete Agenten |
/robots.txt | Crawl-Berechtigungen | Klartext-Direktiven | Crawler, Bots |
/sitemap.xml | URL-Index für Crawler | XML | Suchmaschinen |
/openapi.json | Programmatische API-Spezifikation | JSON/YAML | Codegeneratoren, API-Clients |
/.well-known/mcp | Tool-Server-Protokoll | JSON-RPC | MCP-fähige Agenten |
llms.txt ersetzt keine dieser Dateien — es füllt die Lücke zwischen robots.txt (Maschinen-Direktiven) und OpenAPI (Maschinen-Spezifikationen) mit einer Ebene, die für die Sprachmodelle optimiert ist, die verstehen müssen, wofür deine Website da ist.
Der Begleiter: llms-full.txt
Die llmstxt.org-Spezifikation definiert eine optionale Schwesterdatei: llms-full.txt. Die Konvention ist dieselbe — Markdown, im Root ausgeliefert — aber der Inhalt unterscheidet sich. llms.txt ist das Verzeichnis (ein kurzer Überblick mit Verweisen). llms-full.txt ist der Korpus (der komplette konkatenierte Textinhalt deiner Website in einer einzigen Datei).
Warum beide? Zwei verschiedene Konsumenten:
- Browsende Agenten mit begrenztem Kontextfenster wollen das Verzeichnis — anhand von llms.txt entscheiden sie, was sie als Nächstes abrufen.
- Nicht-browsende Agenten (RAG-Pipelines, One-Shot-Retrieval, eingebettete Agenten in Mobile-Apps) wollen den Korpus — llms-full.txt einmal einlesen und Fragen beantworten, ohne weitere HTTP-Requests zu machen.
Liefere beide aus, wenn du kannst. llms.txt ist das Schaufenster; llms-full.txt ist die Wissensbasis.
Wer llms.txt veröffentlicht
Die Verbreitung ist breit — quer durch AI-Infrastruktur, Developer-Tools und Content-Plattformen:
- Anthropic veröffentlicht llms.txt unter docs.anthropic.com/llms.txt mit jeder Seite der Entwickler-Doku.
- Cloudflare veröffentlicht eine unter developers.cloudflare.com/llms.txt für die Workers- und Plattform-Doku.
- Stripe veröffentlicht eine für die API-Referenz.
- Vercel, Mintlify, Netlify, Supabase und Fly.io veröffentlichen alle llms.txt für ihre Entwicklerdokumentation.
- Viele Open-Source-Projekte liefern llms.txt automatisch über Doku-Generatoren aus (Mintlify und Docusaurus haben beide Plugins).
Das Muster, das sich herausgebildet hat: Doku-Plattformen veröffentlichen llms.txt für ihre Dokumentation, Produkt-Websites für ihre API-Oberfläche. Beides ist nützlich — Agenten, die ein Produkt zum ersten Mal entdecken, lesen die Marketing-llms.txt und tauchen dann in die Doku-llms.txt ein, wenn sie Integrationsdetails brauchen.
So fügst du llms.txt zu deinem Service hinzu
1. Entscheide, was ein Agent wissen muss
Lass alles weg, was ein Agent nicht braucht: Firmengeschichte, Designphilosophie, Marketingtexte. Beginne damit, was der Service tut und welche Endpunkte existieren. Wenn du die Zusammenfassung nicht in einem Satz schreiben kannst, ist dein Service zu breit — teile ihn auf.
2. Schreibe die Datei
Lege /llms.txt als reines Markdown an. Pflicht: eine H1-Überschrift in der ersten Zeile und eine Blockquote-Zusammenfassung. Empfohlen: ein „Endpoints“-Abschnitt, ein „Authentication“-Abschnitt und 2-3 Beispiel-Requests. Halte die gesamte Datei unter 10 KB.
3. Liefere sie im Root aus
Die Datei MUSS unter /llms.txt liegen — nicht /.well-known/llms.txt, nicht /docs/llms.txt. Agenten fragen direkt den Root ab. Bei den meisten Static-Site-Hosts reicht es, die Datei in public/ oder static/ abzulegen, und sie wird unverändert ausgeliefert.
Setze Content-Type: text/markdown oder text/plain. Manche Agenten lehnen application/octet-stream ab.
4. Verlinke sie von deiner Startseite
Füge einen rel="alternate"-Link in deinen HTML-Head ein, damit Agenten und Crawler sie entdecken:
<link rel="alternate" type="text/markdown" href="/llms.txt" title="LLM-freundliche Beschreibung">
5. Liefere auch llms-full.txt aus
Konkateniere deine Doku-Seiten zu einer einzigen Markdown-Datei unter /llms-full.txt. Die meisten Doku-Generatoren können das ausgeben. Wenn du es selbst baust, reicht ein Build-Schritt, der deine Markdown-Quellen durchläuft und mit H1-Trennern zusammenfügt.
Häufige Fehler und Debugging
- Datei wird als HTML ausgeliefert. Static Hosts verpacken Textdateien manchmal in ihr Template. Prüfe, dass
curl https://your-domain.com/llms.txtdas rohe Markdown zurückgibt und nicht eine HTML-Seite, die es enthält. - Fehlende H1 in der ersten Zeile. Die Spezifikation verlangt, dass das Dokument mit
#beginnt. Dateien, die mit einer Blockquote, Frontmatter oder einem HTML-Kommentar starten, scheitern an Parsern, die die H1 erwarten. - Content Negotiation funkt dazwischen. Manche Server liefern Browsern HTML und Agenten Markdown — aber wenn der
Accept-Header nicht stimmt, bekommen Agenten HTML. Liefere die Datei immer direkt aus; verstecke sie nicht hinter Content Negotiation. - Veraltete llms.txt. Autoren veröffentlichen die Datei einmal und aktualisieren sie nie. Agenten, die regelmäßig neu abrufen, sehen veraltete Endpunkte. Behandle llms.txt als Build-Artefakt — regeneriere sie, wenn sich die API ändert.
- Zu lang. Dateien über 50 KB werden von manchen Agenten abgeschnitten. Wenn deine llms.txt so lang ist, brauchst du eigentlich llms-full.txt — teile sie in Verzeichnis und Korpus auf.
AgentGrades Scanner ruft /llms.txt direkt ab und prüft, ob die Datei existiert, mit einer H1 beginnt und nicht-trivialen Inhalt hat.
Häufig gestellte Fragen
Ist llms.txt dasselbe wie robots.txt?
Nein. robots.txt sind Direktiven für Crawler (welche URLs sie abrufen dürfen). llms.txt ist Kontext für LLMs (was dein Service ist und wie man ihn nutzt). Eine Website kann und sollte beides veröffentlichen.
Lesen Suchmaschinen llms.txt?
Manche, informell. Google hat sich zu nichts Offiziellem verpflichtet. Die Hauptkonsumenten sind LLM-gestützte Tools — ChatGPT-Browsing, Claude mit Websuche, Perplexity, Cursors @web —, die llms.txt abrufen, wenn sie deinen Service zusammenfassen oder zitieren.
Sollte ich llms.txt von Hand schreiben oder generieren?
Schreibe die Top-Level-llms.txt von Hand — sie ist kurz (10-50 Zeilen) und das redaktionelle Urteil zählt. Generiere llms-full.txt aus deiner Doku-Build-Pipeline — sie ist lang und mechanisch.
Was, wenn mein Service kostenpflichtige Endpunkte hat?
Beschreibe die Zahlung in Prosa („Kostenpflichtige Endpunkte liefern HTTP 402 mit einer x402-Payment-Challenge“). Versuche nicht, Zahlungs-Metadaten in llms.txt zu codieren — dafür gibt es x402 und x-payment-info in OpenAPI.
Ersetzt llms.txt OpenAPI?
Nein. OpenAPI ist eine strikte Maschinen-Spezifikation — Codegeneratoren konsumieren sie direkt. llms.txt ist narrativ — LLMs lesen sie, um die Absicht zu verstehen. Liefere beides aus: OpenAPI fürs Tooling, llms.txt für den Kontext.
Wie unterscheidet sich llms.txt von einer SKILL.md?
SKILL.md ist instruktiv — ein Playbook, dem der Agent folgt, um eine Aufgabe zu erledigen. llms.txt ist deskriptiv — Kontext darüber, wofür der Service da ist. SKILLs leben in Agent-Runtimes (Claude Code, Cursor etc.) und sagen einem Agenten, wie er arbeiten soll. llms.txt liegt auf deiner Website und sagt jedem LLM, was du bist.
Muss die Datei Markdown sein?
Die Spezifikation sagt Markdown. In der Praxis funktioniert auch Klartext — die meisten LLMs ignorieren Markdown-Syntax ohnehin. Aber Markdown ist das empfohlene Format, weil die Überschriften Struktur geben, mit der Agenten direkt zum relevanten Abschnitt springen können.
Hilft eine veröffentlichte llms.txt meinem SEO?
Indirekt. Klassische Suchmaschinen ranken Seiten nicht nach llms.txt-Präsenz. Aber AI Overviews, Perplexity, die ChatGPT-Suche und Bings generative Antworten zitieren zunehmend Quellen — und eine klare, gut strukturierte llms.txt macht dich zu einer besser zitierbaren Quelle. Das ist GEO (Generative Engine Optimization), die AEO-verwandte Praxis, die sich neben der LLM-gestützten Suche etabliert hat.
Reifegrad der Spezifikation
Community-Standard. Definiert auf llmstxt.org von Jeremy Howard, September 2024. Kein formales Gremium, aber breit adoptiert von großen AI-Infrastruktur-Anbietern (Anthropic, Cloudflare, Stripe, Vercel) und Doku-Plattformen (Mintlify, Docusaurus). Die Spezifikation ist kurz und stabil — es sind keine Breaking Changes zu erwarten.
Mehr erfahren
- llmstxt.org — Spezifikation
- llms-full.txt — der Volltext-Begleiter
- Anthropic llms.txt — Referenzimplementierung
- Agent Readiness — wie llms.txt ins Gesamtbild passt
Querverweise
Wenn deine Website auch OpenAPI, MCP, SKILL.md, x402, A2A oder WebMCP ausliefert, erwähne sie in llms.txt. Der Sinn von llms.txt ist, das eine Dokument zu sein, das ein Agent liest, um zu erfahren, was dein Service bietet — wenn die Lektüre nicht verrät, dass du eine kostenpflichtige API oder einen MCP-Endpunkt hast, muss der Agent Well-Known-Pfade auf gut Glück abklopfen. Die meisten tun das nicht.
Ein guter Querverweis ist ein einzeiliges Bullet mit der URL, die der Agent abrufen kann:
POST /api/order— Bestellung aufgeben (bezahlt via x402 — siehe/.well-known/x402.json)- MCP-Server:
/mcp - Voller Korpus für RAG:
/llms-full.txt - OpenAPI-Spezifikation:
/openapi.json - SKILL.md (Agent-Playbook):
/skill.md - A2A Agent Card:
/.well-known/agent.json - WebMCP-Manifest:
/.well-known/webmcp.json
Ein eigener Abschnitt ist nicht nötig — Erwähnungen im Fließtext zählen. AgentGrades Scan erzeugt einen optionalen Unter-Check pro Ressource, die deine Website exponiert: Wenn der Scanner deinen /mcp-Endpunkt gefunden hat, aber llms.txt das Wort „mcp“ nie erwähnt, ist das ein Soft Fail, der die Lücke markiert.
Das sind optionale Checks: Sie senken deinen Gesamtscore nicht, zeigen aber, wo deine llms.txt für die Agenten, die sie lesen, weniger nützlich ist, als sie sein könnte.
Markdown-Struktur
Die llms.txt-Spezifikation verlangt nur eine H1, aber eine Datei mit bloß einem Titel bringt einem Agenten nichts bei. AgentGrades Markdown-Struktur-Check bestätigt, dass die Datei mindestens eines von drei Struktursignalen enthält, mit denen ein Agent etwas anfangen kann:
- Eine Liste von Markdown-Links — mindestens drei Bullets in der Form
- [Title](url). Das ist die Doku-Verzeichnis-Form, die Anthropic, Stripe, Cloudflare, Vercel, Mintlify und die meisten Plattform-llms.txt-Dateien verwenden. Jeder Link zeigt dem Agenten echten Inhalt, den er abrufen und lesen kann. - Ein Fenced Code Block — alles in dreifachen Backticks. Ein
curl-Beispiel, eine Beispiel-JSON-Antwort, ein Snippet zur Authentifizierung. Das ist die API-Oberflächen-Form: Eine Datei beschreibt einen Service mit einem funktionierenden Beispiel. - Ein benannter operativer Abschnitt — eine H2-Überschrift wie
## Endpoints,## API,## Routes,## Authentication,## Examples,## Usageoder## Quick Start. Diese Namen signalisieren „das ist operativer Inhalt für Agenten“ statt Marketingprosa.
Eines der drei reicht zum Bestehen. Die meisten sauberen llms.txt-Dateien erfüllen mindestens zwei — die Datei von agentgrade.com etwa hat Link-Bullets im Knowledge-Base-Abschnitt und einen ## Example-Abschnitt und einen curl-Fence.
Was durchfällt
Ein Marketing-Footer, verkleidet als llms.txt:
# Acme
> We make great products.
## Product
- Home
- About
- Pricing
## Legal
- Terms
- Privacy
Fünfzehn Zeilen, besteht den alten Zeilenzähler-Check, aber: keine Markdown-Links (die Bullets sind reine Textlabels), kein Codeblock, kein operativer Abschnitt. Ein Agent lernt daraus, dass Acme existiert und Seiten hat — aber nichts, wohin er navigieren kann. Fällt beim Markdown-Struktur-Check durch.
Warum Links zählen
llms.txt ist eine Routing-Datei, keine Content-Datei (dafür gibt es llms-full.txt). Ihr Job ist, Agenten auf die URLs zu verweisen, die sie als Nächstes abrufen sollen. Reine Text-Bullets wie - About geben dem Agenten ein Label ohne URL — er kann der Spur nicht folgen. Ein Markdown-Link wie - [About](/about) — company background liefert eine URL plus einen Einzeiler, sodass er entscheiden kann, ob sich der Abruf lohnt.
Der einfachste Fix, wenn dieser Check fehlschlägt: Mach aus deinen Text-Bullets Markdown-Links, oder ergänze ein Fenced-Beispiel, das einem Agenten zeigt, wie er deinen Service aufruft.