# llms.txt Generator — Manual

> Vollständige Funktionsbeschreibung des llms.txt Generators: alle Formularfelder, der Live-Checker mit jeder Validator-Regel, die Format-Referenz, Limits und Architektur.

Source: https://www.jpkc.com/db/tools/llms/manual/

Zurück zur Übersicht: [llms.txt Generator](https://www.jpkc.com/db/tools/llms/) · Tool live öffnen: [www.jpkc.com/tools/llms/](https://www.jpkc.com/tools/llms/)

Dieses Manual beschreibt den **llms.txt Generator** vollständig: jedes Eingabefeld des Generators, wie aus deinen Eingaben das Markdown wird, was der Live-Checker prüft (mit allen Regeln), die Format-Referenz und die technischen Grenzen. Die Oberfläche des Tools ist auf Englisch — Tab- und Button-Namen werden hier in ihrer englischen Original-Schreibweise genannt (mit deutscher Erläuterung), damit du dich im echten Interface zurechtfindest.

## Was eine llms.txt ist

Die `llms.txt` ist ein Vorschlag für einen Standard (von Jeremy Howard / fast.ai, dokumentiert auf [llmstxt.org](https://llmstxt.org/) (englisch)): eine **Markdown-Datei im Wurzelverzeichnis** deiner Domain, die KI-Sprachmodellen kuratierten, akkuraten Kontext über deine Inhalte gibt. Drei Rollen erfüllt sie laut Tool:

- **Discovery** — KI-Assistenten und Crawler prüfen `/llms.txt` am Domain-Root, wenn jemand nach deinem Produkt fragt; sie ist der Einstiegspunkt, vergleichbar mit einem Inhaltsverzeichnis.
- **Context Window** — LLMs haben begrenzte Kontextfenster. Eine knappe `llms.txt` hilft ihnen zu entscheiden, *welche* Seiten sie tatsächlich abrufen, statt die ganze Site herunterzuladen.
- **Trust Signal** — eine gepflegte `llms.txt` zeigt, dass dir wichtig ist, wie KI dein Projekt darstellt, und hebt die kanonischen, korrekten Informationen hervor.

## Die fünf Tabs im Überblick

Das Tool gliedert sich in fünf Tabs: **Generator** (Formular → Markdown), **Check** (Live-Validator), **Examples** (vier Vorlagen), **Tips** (Best Practices) und **Reference** (Format-Spezifikation). Generator und Check sind die beiden Werkzeuge; Examples, Tips und Reference sind Nachschlage-Inhalte und funktionieren auch ohne Eingabe.

## Der Generator-Tab

Der Generator ist zweispaltig: links das **Formular** (`Configure your llms.txt`), rechts der **Output**-Editor mit dem fertigen Markdown. Jede Eingabe aktualisiert die Ausgabe live (mit kurzer Verzögerung von etwa einer Drittelsekunde). Der Output-Editor ist ein schreibgeschützter ACE-Editor mit Markdown-Hervorhebung — du editierst also immer über das Formular, nie direkt im Markdown.

### Name und Tagline (die Pflichtfelder)

- **Project / Site Name** (Pflicht) — wird zur **H1-Überschrift**: `# Name`. Bleibt das Feld leer, setzt der Generator den Platzhalter `# My Project`.
- **Tagline** (Pflicht) — wird zum **Blockquote** direkt nach dem Titel: `> deine Tagline`. Das Tool nennt sie ausdrücklich „das wichtigste Feld": ein einziger, klarer Satz, der erklärt, was dein Projekt *genau* tut. KI-Systeme lesen die Tagline oft als Erstes.

### Intro-Absatz (optional)

Das Feld **Intro Paragraph** wird als gewöhnlicher Textabsatz nach der Tagline ausgegeben — kein Heading, kein Blockquote. Gedacht für ein bis drei Sätze zusätzlichen Kontext (Ziel, Zweck, Zielgruppe). Leer gelassen, entfällt der Absatz komplett.

### Sektionen, Links und Subsektionen

Der dynamische Bereich **Sections & Links** ist der Kern. Über **Add Section** legst du beliebig viele Sektionen an; jede wird zu einer **H2-Überschrift** (`## Name`). Innerhalb einer Sektion:

- **Links** über **Add Link**: drei Felder pro Zeile — *Link title*, *URL* (`https://…`) und *Description* (optional). Ausgegeben wird `- [Titel](URL): Beschreibung`. Ohne Beschreibung entfällt der Doppelpunkt; gibst du nur einen Titel ohne URL ein, erscheint nur der Titel; eine Zeile ganz ohne Titel und URL wird übersprungen.
- **Subsektionen (H3)** über **Add Subsection (H3)**: eine Sektion kann Untergruppen mit eigener Überschrift (`### Name`) und eigener Link-Liste enthalten. Subsektionen werden **nach** den direkten Links der Sektion ausgegeben. Eine Subsektion ohne Namen und ohne Links wird übersprungen.
- **Sortieren per Drag & Drop**: Sektionen lassen sich am Griff-Symbol (dem Punktraster links) anfassen und in neue Reihenfolge ziehen — praktisch, um die wichtigste Sektion nach oben zu holen.

Leere Sektionen (kein Name, keine Links) tauchen im Output nicht auf. Mehrfache Leerzeilen werden zu einer einzigen zusammengefasst, abschließende Leerzeilen entfernt — das Markdown bleibt sauber.

### Der llms-full.txt-Verweis

Das optionale Feld **llms-full.txt URL** verlinkt auf die kombinierte Vollinhalt-Datei (siehe unten). Trägst du hier eine URL ein, hängt der Generator automatisch eine Sektion `## Optional` mit der Zeile `- [llms-full.txt](URL): Complete documentation combined into a single file` ans Ende.

### Output: Copy, Download, Reset

Über dem Editor liegen drei Buttons:

- **Copy** — kopiert das erzeugte `llms.txt` in die Zwischenablage.
- **Download** — speichert es als Datei `llms.txt` (Plain-Text, UTF-8). Ist nichts eingegeben, warnt das Tool statt eine leere Datei zu erzeugen.
- **Reset** — setzt das Formular auf den Auslieferungszustand zurück (eine leere Sektion namens „Documentation") und löscht den gespeicherten Stand.

### Open File und automatisches Speichern

Mit **Open File** öffnest du eine vorhandene `.txt`-Datei: Das Tool parst sie und füllt das Formular damit, sodass du eine bestehende `llms.txt` bequem weiterbearbeiten kannst (Round-Trip). Unabhängig davon sichert der Generator deinen Zwischenstand **lokal im Browser** (LocalStorage) — schließt du den Tab und kommst zurück, ist deine Arbeit wieder da. **Reset** löscht diesen Speicher.

## Der Check-Tab: live prüfen und validieren

Der **Check**-Tab holt eine bestehende `llms.txt` von einer beliebigen Domain und prüft sie gegen die [llmstxt.org](https://llmstxt.org/)-Spezifikation (englisch). Du gibst entweder eine Domain ein (z. B. `example.com` — `/llms.txt` wird automatisch angehängt) oder eine volle URL. Fehlt das Schema, ergänzt das Tool `https://`.

Standardmäßig läuft der Abruf über den **serverseitigen Proxy**. Optional gibt es einen **Expert Mode** (Umschalter im Seitenkopf), der die Datei über einen selbst betriebenen lokalen Proxy auf `http://127.0.0.1:<port>` holt — fortgeschritten und für den Normalbetrieb nicht nötig.

### Was der Validator prüft

Die Validierung läuft **clientseitig** in deinem Browser und prüft die **Struktur und das Format** gegen die Spezifikation — sie ruft die verlinkten Seiten **nicht** ab und prüft nicht, ob die Links erreichbar sind. Das Ergebnis ist in drei Stufen gegliedert:

- **Errors** (rot, blockierend) — strukturelle Pflichtverletzungen:
  - leere Datei;
  - fehlende H1-Überschrift (`#`) bzw. eine vorhandene, aber leere H1;
  - fehlendes Blockquote-Summary (`>`);
  - ein Link mit leerer URL.
- **Warnings** (gelb, sollte behoben werden) — u. a.: mehrere H1-Überschriften; H1 nicht in der ersten Zeile; Blockquote nicht direkt nach der H1; HTML-Entities im Blockquote; leere H2-Überschrift; Link mit leerem Titel; keine H2-Sektionen vorhanden; keine Links vorhanden; sehr kurze Datei (unter 100 Bytes); sehr große Datei (über ~50 KB).
- **Info** (Hinweise) — z. B. ein Link ohne Beschreibung („consider adding one"); außerdem die Erfolgsmeldung „File structure looks valid", wenn weder Fehler noch Warnungen auftreten.

Jede Meldung nennt die betroffene Zeilennummer. Kurz gefasst: **H1-Titel, Blockquote-Tagline und nicht-leere Link-URLs sind hart Pflicht** (Fehler), während Sektionen, Links und Beschreibungen dringend empfohlen sind (Warnung/Info).

### Das Check-Ergebnis lesen

Oben steht ein Statusbanner mit einem **Verdict-Band**:

- **grün** „Structure looks valid." — 0 Fehler und 0 Warnungen;
- **gelb** „N warning(s) found." — keine Fehler, aber Warnungen;
- **rot** „N error(s) found." — mindestens ein Fehler.

Darunter eine **Summary**-Tabelle: Titel (H1), Summary (`>`), Anzahl Sektionen (`##`), Anzahl Links und Dateigröße. Es folgen die Listen Errors / Warnings / Info (nur, wenn nicht leer) und ein einklappbarer **Raw content**-Block mit Zeilennummern. Von dort kannst du den Rohinhalt per **Copy** kopieren oder per **Load into Generator** direkt ins Formular übernehmen, um die Datei zu reparieren. Liefert die Domain HTTP 404 oder einen anderen Nicht-2xx-Status, meldet das Tool „No `llms.txt` found … (HTTP nnn)"; eine leere Antwort meldet es ebenfalls als Warnung.

## Format-Referenz

Der **Reference**-Tab enthält die vollständige Spezifikation, die der Generator erzeugt und der Checker prüft. Die Elemente:

| Element | Syntax | Pflicht | Bedeutung |
| --- | --- | --- | --- |
| Titel | `# Projektname` | Pflicht | H1 — Name des Projekts/der Website |
| Tagline | `> Kurzbeschreibung` | Pflicht | Blockquote direkt nach dem Titel; ein knapper Satz; das wichtigste Feld |
| Intro | Plaintext-Absatz | optional | Zusätzlicher Kontext, 1–3 Sätze |
| Sektion | `## Sektionsname` | optional | H2 zum Gruppieren von Links; 2–5 Sektionen |
| Subsektion | `### Subsektionsname` | optional | H3 zum Untergruppieren innerhalb einer Sektion; nach deren eigenen Links |
| Link | `- [Titel](URL)` | optional | Listenpunkt mit Markdown-Link, innerhalb einer Sektion |
| Link-Beschreibung | `- [Titel](URL): Beschr.` | optional | Beschreibung nach dem Doppelpunkt; für jeden Link empfohlen |
| llms-full.txt | `- [llms-full.txt](URL)` | optional | Verweis auf die kombinierte Vollversion; per Konvention in „Optional" |

Ein vollständiges Beispiel (Komplettformat) und eine kopierbare Vorlage liegen ebenfalls im Reference-Tab.

### llms-full.txt — die kombinierte Inhaltsdatei

`llms-full.txt` enthält den **zusammengeführten Textinhalt aller** in der `llms.txt` verlinkten Seiten in einer einzigen großen Datei. Nützlich für LLM-Clients, die große Kontextfenster in einem Request verarbeiten, viele Einzel-HTTP-Requests vermeiden oder einen gecachten/Offline-Snapshot deiner Doku brauchen. Für große Doku-Sites empfiehlt das Tool, die `llms-full.txt` per Build-Script in der CI/CD-Pipeline automatisch zu erzeugen.

## Limits, Architektur und Datenschutz

- **Generator: rein clientseitig.** Die Datei wird vollständig in deinem Browser zusammengebaut; nichts wird übertragen. Dein Zwischenstand liegt im LocalStorage.
- **Check: serverseitiger Proxy.** Dein Browser darf eine fremde `llms.txt` wegen CORS nicht direkt laden. Ein serverseitiger JPKCom-Proxy holt sie per cURL und gibt sie zurück; validiert wird dann wieder lokal in deinem Browser. Die geprüfte Domain sieht den Request vom JPKCom-Server (mit dessen User-Agent), nicht deine IP-Adresse.
- **SSRF-Schutz:** Der Proxy blockiert localhost-, interne, private und reservierte IP-Adressen und prüft jeden Redirect-Hop erneut; nur HTTP und HTTPS sind erlaubt. Eine lokale Dev- oder Intranet-Datei lässt sich so nicht prüfen.
- **Abruf-Grenzen:** Body-Limit **1 MB**, Timeout **10 s**, maximal **5 Redirect-Hops**.
- **Rate-Limit (clientseitig):** Zwischen zwei Checks liegen mindestens **~3 Sekunden** (im Expert Mode umgangen). Feuerst du schneller, bittet das Tool dich kurz zu warten.
- **Kein öffentliches API:** Die beiden serverseitigen Endpunkte (Fetch-Proxy und ein token-basierter Authentifizierungs-Endpunkt) werden ausschließlich vom JavaScript des Tools genutzt und sind gegen Missbrauch gehärtet — sie sind nicht dafür gedacht, von außen aufgerufen zu werden.

Für den Einstieg und das große Bild siehe die [Übersichtsseite](https://www.jpkc.com/db/tools/llms/), für konkrete Durchläufe die [Beispiele](https://www.jpkc.com/db/tools/llms/examples/) und für Strategie die [Tipps & Tricks](https://www.jpkc.com/db/tools/llms/tips/). Ausprobieren kannst du alles direkt im [Tool](https://www.jpkc.com/tools/llms/).

