# robots.txt & Sitemap — Manual

> Funktionsbeschreibung von robots.txt & Sitemap: beide Generatoren mit allen Optionen, die zwei Live-Checker, Direktiven, Sitemap-Felder, Limits und Architektur.

Source: https://www.jpkc.com/db/tools/robots-sitemap/manual/

Zurück zur Übersicht: [robots.txt & Sitemap](https://www.jpkc.com/db/tools/robots-sitemap/) · Tool live öffnen: [www.jpkc.com/tools/robots-sitemap/](https://www.jpkc.com/tools/robots-sitemap/)

Dieses Manual beschreibt **robots.txt & Sitemap** vollständig: jeden der sieben Tabs, jede Option der beiden Generatoren, das Verhalten der beiden Live-Checker und die technischen Grenzen darunter. Die Oberfläche des Tools ist auf Englisch — die Tab- und Button-Bezeichnungen stehen hier deshalb in ihrer englischen Original-Schreibweise (mit deutscher Erläuterung), damit du dich im echten Interface zurechtfindest.

## Aufbau: sieben Tabs, vier Funktionen

Das Tool gliedert sich in sieben Tabs: **robots.txt** (Generator), **Sitemap** (Generator), **Check robots.txt** (Live-Checker), **Check Sitemap** (Live-Checker), **Examples**, **Tips** und **Reference**. Die beiden Generatoren erzeugen Dateien, die beiden Checker holen und analysieren bestehende Dateien von einer fremden URL. Examples, Tips und Reference sind statische Nachschlage-Tabs und funktionieren ohne jede Eingabe.

## robots.txt-Generator

Der erste Tab baut eine `robots.txt` mit Live-Vorschau: Jede Änderung im Formular links aktualisiert nach einer kurzen Verzögerung den Ausgabe-Editor rechts.

### User-agent-Blöcke

Das Herzstück. Über **Add User-agent Block** legst du beliebig viele Blöcke an. Jeder Block hat:

- ein **User-agent**-Feld mit Autovervollständigung (Datalist). Vorgeschlagen werden über 40 gängige Bot-Namen — Suchmaschinen (`Googlebot`, `Bingbot`, `DuckDuckBot`, `YandexBot` …), Social-Bots (`Twitterbot`, `LinkedInBot`, `facebookexternalhit` …), KI-Crawler (`GPTBot`, `ChatGPT-User`, `OAI-SearchBot`, `Google-Extended`, `anthropic-ai`, `Claude-Web`, `ClaudeBot`, `CCBot`, `Bytespider`, `PerplexityBot` …) und SEO-Tool-Crawler (`AhrefsBot`, `SemrushBot`, `MJ12bot` …). Du kannst auch jeden anderen Namen eintippen; `*` steht für „alle Bots".
- einen **Rules**-Bereich. Über **Add Rule** fügst du Regelzeilen hinzu, jede mit einem Typ-Auswahlfeld (`Disallow` oder `Allow`) und einem Pfad-Feld (z. B. `/admin/`). Ein leerer `Disallow:`-Wert bedeutet „nichts blockiert" — also alles erlaubt.
- ein **Crawl-delay**-Feld (Zahl, 0 bis 3600 Sekunden, optional). Es erzeugt eine `Crawl-delay:`-Zeile im Block.

Die Blöcke lassen sich am Griff-Symbol per Drag-and-drop umsortieren.

### Sitemap-URL und Host

Unter den Blöcken stehen zwei optionale Felder:

- **Sitemap URL** — wird am Ende der Datei als `Sitemap: URL` angehängt. Du kannst die Adresse direkt aus dem Sitemap-Generator übernehmen.
- **Host** — eine Yandex-spezifische Direktive für die bevorzugte (kanonische) Domain, ausgegeben als `Host: domain`.

### Ausgabe, Kopieren, Download, Import

Rechts steht der Ausgabe-Editor (schreibgeschützt). Jede generierte Datei beginnt mit einem Kommentar-Header (`# robots.txt` und ein Hinweis, dass sie mit JPKCom Tools erzeugt wurde). Über den Buttons:

- **Load File** — liest eine bestehende `robots.txt` ein und füllt das Formular daraus. Der Parser erkennt `User-agent`, `Disallow`, `Allow`, `Crawl-delay`, `Sitemap` und `Host`; Kommentarzeilen werden übersprungen, unbekannte Direktiven ignoriert (ein Hinweis nennt sie). Teilen sich mehrere User-agents dieselben Regeln, wird je ein eigener Block angelegt.
- **Reset** — setzt das Formular auf den Standard zurück: ein Block `User-agent: *` mit einer leeren `Disallow:`-Regel.
- **Copy** — kopiert die `robots.txt` in die Zwischenablage.
- **Download** — speichert sie als `robots.txt` (`text/plain`).

Der Zwischenstand wird automatisch lokal im Browser (LocalStorage) gespeichert und beim nächsten Besuch wiederhergestellt. Beim allerersten Aufruf siehst du den Standard-Block `User-agent: *`.

## Sitemap-Generator

Der zweite Tab baut eine XML-Sitemap, ebenfalls mit Live-Vorschau.

### Base-URL und URL-Zeilen

- **Base URL** (Pflichtfeld) — die Domain, der jeder relative Pfad vorangestellt wird (z. B. `https://example.com`). Ein abschließender Schrägstrich wird automatisch entfernt.
- **URLs** — über **Add URL** fügst du Zeilen hinzu. Jede Zeile hat:
  - **Path** — der Pfad relativ zur Base-URL (z. B. `/about/`); ein fehlender führender `/` wird ergänzt.
  - **Last Modified** — ein Datumsfeld; erzeugt `<lastmod>` im Format `YYYY-MM-DD`.
  - **Freq.** — Auswahl für `<changefreq>`: `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, `never` (oder leer).
  - **Priority** — Auswahl für `<priority>`: `1.0` bis `0.0` in Zehntel-Schritten (oder leer).

Optionale Felder werden nur ausgegeben, wenn sie gesetzt sind. Auch hier lassen sich Zeilen per Drag-and-drop umsortieren.

### Ausgabe und Import

Der Editor rechts zeigt die fertige `sitemap.xml` mit XML-Deklaration und dem korrekten `urlset`-Namespace. Buttons:

- **Load File** — liest eine bestehende `sitemap.xml` ein. Der Parser akzeptiert nur ein reguläres `<urlset>`; **Sitemap-Index-Dateien** (`<sitemapindex>`) werden hier abgelehnt — dafür ist der *Check Sitemap*-Tab zuständig. Ungültiges XML oder ein unbekanntes Format werden gemeldet. Die Base-URL wird aus dem ersten `<loc>` abgeleitet.
- **Reset** — setzt auf drei Standard-Zeilen zurück (`/`, `/about/`, `/contact/`).
- **Copy** / **Download** — kopiert bzw. speichert die Datei als `sitemap.xml` (`application/xml`).

Beim ersten Aufruf sind drei Beispiel-URLs vorbelegt. Der Zwischenstand wird ebenfalls lokal gespeichert.

## Live-Checker: Check robots.txt

Dieser Tab holt eine bestehende `robots.txt` von einer fremden Domain und zerlegt sie. Du gibst entweder nur eine Domain ein (z. B. `example.com`; `/robots.txt` wird automatisch ergänzt) oder eine vollständige URL. Fehlt das Protokoll, wird `https://` vorangestellt. Ein Klick auf **Check** startet den Abruf.

### Was du im Ergebnis siehst

- Eine **Erfolgsmeldung** mit HTTP-Status, Dateigröße und der Anzahl gefundener User-agent-Blöcke.
- **Per-Bot Access** — eine Tabelle, die für über 40 bekannte Bots prüft, wie die Datei sie behandelt. Pro Bot: Name, Betreiber, Typ (Search, Social, Archive, AI, SEO Tool), **Access** (`Allowed`/`Blocked`), **Source** (`Specific` = eigener Block, `Wildcard *` = über `User-agent: *`, `Default` = keine passende Regel), der `Crawl-Delay` und die konkret greifende Regel. Das ist der schnellste Weg zu sehen, ob du versehentlich KI-Crawler aussperrst.
- **User-agent blocks** — jeder Block der Datei einzeln, mit seinen Allow-/Disallow-Regeln und einem Crawl-delay-Badge. Ein Block ohne Regeln bedeutet vollen Zugriff.
- **Sitemaps declared** — alle in der Datei deklarierten `Sitemap:`-Direktiven. Neben jeder steht ein **check**-Button, der direkt in den *Check Sitemap*-Tab springt und diese Sitemap prüft.
- **Test a URL against these rules** — ein kleines Formular: Du gibst einen Pfad (oder eine URL) und einen User-agent ein und bekommst zurück, ob die Datei den Zugriff erlaubt oder blockiert, welche Regel greift und aus welchem Block. Voreingestellt sind der Pfad `/` und der Agent `Googlebot`.
- **Raw content** — der rohe Inhalt der Datei, ausklappbar und kopierbar.

### Sonderfälle

Findet der Checker keine `robots.txt` (HTTP 404 oder ein anderer Fehlerstatus), meldet er das mit dem Hinweis, dass ohne `robots.txt` standardmäßig **alle Crawler erlaubt** sind. Eine vorhandene, aber leere Datei wird ebenso eingeordnet (auch sie erlaubt alle Crawler).

## Live-Checker: Check Sitemap

Derselbe Ablauf für die `sitemap.xml`: Domain oder volle URL eingeben (`/sitemap.xml` wird automatisch ergänzt), **Check** klicken.

### Reguläre Sitemap (`urlset`)

- Eine **Erfolgsmeldung** mit der URL-Anzahl und der Dateigröße.
- **Spec-Warnungen**: Überschreitet die Datei **50.000 URLs** oder **50 MB**, weist das Tool darauf hin, dass laut Sitemaps-Protokoll dann auf mehrere Dateien plus eine Index-Datei aufgeteilt werden muss.
- **Metadata coverage** — eine Tabelle mit Fortschrittsbalken: für `lastmod`, `changefreq` und `priority` jeweils, bei wie viel Prozent der URLs das Feld gesetzt ist.
- **URLs** — eine Tabelle der Einträge (die ersten 100 von N) mit URL, `lastmod`, `changefreq` und `priority`. **Copy all URLs** kopiert die vollständige Liste, nicht nur die angezeigten 100.
- **Raw XML** — der rohe XML-Inhalt, ausklappbar und kopierbar (die Anzeige ist gekappt, der Copy-Button liefert den vollständigen Inhalt).

### Sitemap-Index

Erkennt der Checker eine Index-Datei (`<sitemapindex>`), listet er stattdessen die **Kind-Sitemaps** mit ihrem optionalen `lastmod`. Jede Kind-Sitemap hat einen **Check**-Button, mit dem du sie einzeln weiterprüfst. Auch hier gibt es eine Warnung, falls der Index mehr als 50.000 Sitemaps auflistet.

### Sonderfälle

404 oder Fehlerstatus, eine leere Datei oder Inhalt ohne ein einziges `<loc>`-Element werden jeweils als entsprechende Warnung bzw. Fehler gemeldet. Wurde die Datei wegen des Größenlimits des Proxys abgeschnitten, weist ein Hinweis darauf hin, dass die Statistik unvollständig sein kann.

## Examples, Tips, Reference

- **Examples** — fertige Vorlagen. Für die `robots.txt`: *Allow All Bots*, *Standard Website*, *WordPress*, *Block AI & Scraper Bots*. Für die Sitemap: *Simple Website*, *Blog*, *E-Commerce*. Ein Button **Load into Generator** (bzw. **Load**) übernimmt die Vorlage als Startpunkt in den jeweiligen Generator.
- **Tips** — kompakte Best-Practice-Karten („Do This" / „Avoid This") für beide Dateien plus eine Erklärung, wie `robots.txt` und Sitemap zusammenspielen.
- **Reference** — die Format-Spezifikation: eine Tabelle aller `robots.txt`-Direktiven mit Support-Hinweisen, eine Tabelle von über 40 bekannten Bots mit Betreiber und Typ, eine Tabelle der Sitemap-XML-Elemente sowie Links zu den offiziellen Spezifikationen.

### robots.txt-Direktiven (Reference)

| Direktive | Unterstützung | Bedeutung |
| --- | --- | --- |
| `User-agent` | alle | Ziel-Bot. `*` für alle oder ein konkreter Name. |
| `Disallow` | alle | Blockiert einen Pfad. Leerer Wert = alles erlaubt. |
| `Allow` | alle | Gibt einen Pfad frei, überschreibt ein breiteres `Disallow`. |
| `Crawl-delay` | die meisten | Sekunden zwischen Anfragen. **Nicht von Googlebot** unterstützt (dort die Search Console nutzen). |
| `Sitemap` | alle | Volle Sitemap-URL. Darf mehrfach vorkommen. |
| `Host` | Yandex | Bevorzugte Domain (kanonischer Host). |

### Sitemap-XML-Elemente (Reference)

| Element | Pflicht | Werte / Hinweis |
| --- | --- | --- |
| `<urlset>` | ja | Wurzelelement mit Namespace `http://www.sitemaps.org/schemas/sitemap/0.9`. |
| `<url>` | ja | Container je Eintrag. |
| `<loc>` | ja | Voll-qualifizierte URL, max. 2048 Zeichen, URL-kodiert. |
| `<lastmod>` | optional | Datum im Format `YYYY-MM-DD` (W3C). Nur setzen, wenn echt — nicht fälschen. |
| `<changefreq>` | optional | `always`/`hourly`/`daily`/`weekly`/`monthly`/`yearly`/`never` — nur ein Hinweis. |
| `<priority>` | optional | `0.0`–`1.0`, Standard `0.5`. Relativ innerhalb deiner Site, kein Ranking-Faktor gegenüber anderen Sites. |

## Architektur, Limits und Datenschutz

- **Generatoren rein clientseitig.** Die beiden Generator-Tabs erzeugen ihre Dateien vollständig im Browser. Es wird nichts hochgeladen; der Zwischenstand liegt nur in deinem LocalStorage.
- **Checker über einen serverseitigen Proxy.** Eine fremde Datei kann der Browser wegen CORS nicht direkt laden. Deshalb holt ein **serverseitiger Proxy** auf dem JPKCom-Server die Datei per cURL; die Analyse läuft danach wieder lokal im Browser. Die geprüfte Domain sieht einen Request vom JPKCom-Server (mit dessen User-Agent), **nicht deine IP-Adresse**.
- **Kein öffentliches API.** Die beiden serverseitigen Endpunkte (ein Fetch-Proxy und ein token-basierter Hilfsendpunkt) sind **kein** öffentlich aufrufbares API — sie werden ausschließlich vom JavaScript des Tools genutzt und sind gegen Missbrauch gehärtet (Token-Authentifizierung, Referer-Prüfung).
- **SSRF-Schutz:** Interne, lokale und private IP-Adressen werden blockiert, und jeder Redirect-Hop wird erneut geprüft.
- **Abruf-Grenzen:** maximal **5 MB** Body (größere Dateien werden abgeschnitten — ein Hinweis erscheint), **15 s** Timeout pro Abruf.
- **Rate-Limit:** Im Standard-Proxy-Modus ist etwa **1 Prüfung alle 3 Sekunden** möglich; darüber kommt ein Hinweis, kurz zu warten.
- **Expert Mode (optional).** Über einen Schalter im Header lässt sich ein **lokaler Proxy** (`http://127.0.0.1:<port>`) aktivieren, der die Dateien direkt holt — ohne Rate-Limit und Größen-Cap. Die Einrichtung ist fortgeschritten und für den normalen Betrieb nicht nötig.

Für den Einstieg, die Zielgruppen und das große Bild siehe die [Übersichtsseite](https://www.jpkc.com/db/tools/robots-sitemap/). Konkrete Durchläufe zeigen die [Beispiele](https://www.jpkc.com/db/tools/robots-sitemap/examples/). Ausprobieren kannst du alles direkt im [Tool](https://www.jpkc.com/tools/robots-sitemap/).

