Warum zählt, wer wirklich kommt
Ein KI-Assistent kann nur eine Seite zitieren, die einer seiner Crawler gelesen hat. Hat keiner davon deine Preisseite abgerufen, wird keine Antwort sie zitieren, egal wie gut sie geschrieben ist.
Deine robots.txt und die KI-Bot-Tabelle in einem SagBot-Bericht sagen, welche Crawler deine Website lesen dürfen. Sie sagen nicht, welche gekommen sind. Das sagt das Zugriffslog deines Servers: jede Anfrage, mit der Adresse, von der sie kam, der Seite, dem Statuscode und dem User-Agent, der den Crawler nennt.
Welche KI-Crawler es gibt und warum sie kommen
KI-Crawler kommen aus einem von drei Gründen. Trainings-Crawler sammeln Seiten, um Modelle zu trainieren. Such-Crawler bauen den Index, den ein Assistent beim Antworten durchsucht. Nutzer-Agenten rufen eine Seite live ab, weil gerade jemand den Assistenten danach gefragt hat. Besuche der letzten beiden sind die, die zu einer Zitierung führen können.
OpenAI schickt GPTBot fürs Training, OAI-SearchBot für die Suche und ChatGPT-User für Live-Anfragen. Anthropic schickt ClaudeBot, Claude-SearchBot und Claude-User; Perplexity schickt PerplexityBot und Perplexity-User. Meta nutzt meta-externalagent, meta-webindexer und meta-externalfetcher, Amazon nutzt Amazonbot, Amzn-SearchBot und Amzn-User, und Mistral und DuckDuckGo schicken MistralAI-User und DuckAssistBot. Bytespider (ByteDance) und CCBot (Common Crawl, ein offenes Archiv, mit dem viele Modelle trainiert werden) sammeln Trainingsdaten.
Zwei Namen findest du in keinem Log: Google-Extended und Applebot-Extended sind robots.txt-Regeln, keine Crawler. Google ruft Seiten mit Googlebot ab und Apple mit Applebot; die Extended-Regeln entscheiden nur, ob das Abgerufene für KI genutzt werden darf. Googles Agent für Live-Anfragen von Nutzern, Google-Agent, taucht dagegen mit Namen auf.
1. Finde dein Zugriffslog
Auf deinem eigenen Server ist das Log eine einfache Textdatei. nginx schreibt /var/log/nginx/access.log. Apache schreibt /var/log/apache2/access.log unter Debian und Ubuntu und /var/log/httpd/access_log unter Red Hat, Rocky und Alma. Ältere Tage werden in nummerierte oder datierte Dateien daneben rotiert, die älteren davon als .gz komprimiert.
Bei Shared oder Managed Hosting suchst du im Hosting-Panel nach den rohen Zugriffslogs und lädst sie herunter. Manche Hoster behalten nur wenige Tage, also sichere sie regelmäßig, wenn du einen längeren Zeitraum sehen willst.
Hinter Cloudflare öffnest du im Dashboard AI Crawl Control für deine Domain. Es ist in jedem Tarif enthalten und zeigt Anfragen pro KI-Crawler, ihre Statuscodes und die am häufigsten angefragten Pfade, ganz ohne Logdateien; im Free-Tarif decken die Metriken die letzten 24 Stunden ab. Die rohen Anfragezeilen exportiert Logpush in einen Speicher deiner Wahl. Cloudflare sieht nur Hostnamen, die über den Proxy laufen (die orangefarbene Wolke); DNS-only-Einträge gehen direkt an deinen Server.
Auf Vercel zeigt die Logs-Seite des Projekts aktuelle Anfragen mit ihrem User-Agent, eine Stunde lang bei Hobby und einen Tag lang bei Pro. Ein Log Drain (Pro und Enterprise) schickt jede Anfrage, auch für statische Dateien, an einen Speicher deiner Wahl.
2. Prüfe, ob das Log den User-Agent enthält
Der User-Agent nennt den Crawler, also braucht ihn jede Zeile. nginx und Apache haben beide ein Format namens combined, das jede Zeile mit Referrer und User-Agent in Anführungszeichen beendet. nginx nutzt es, solange du kein anderes wählst; Apache definiert es, und deine CustomLog-Zeile entscheidet, ob es verwendet wird.
Sieh dir mit dem ersten Befehl unten die letzten Zeilen des Logs an. Endet jede mit einem Browser- oder Bot-Namen in Anführungszeichen, passt alles. Enden die Zeilen mit dem Status und einer Byte-Zahl, schreibt der Server das Common Log Format, das keinen User-Agent enthält: Setze combined in der access_log-Zeile (nginx) oder der CustomLog-Zeile (Apache), wie unten gezeigt, und lade den Server neu.
Die Befehle in den nächsten Schritten gehen vom combined-Layout aus. Wenn du ein eigenes log_format oder LogFormat nutzt, lass $http_user_agent bzw. %{User-Agent}i das letzte Feld in Anführungszeichen bleiben oder passe die Befehle an.
tail -n 3 /var/log/nginx/access.logaccess_log /var/log/nginx/access.log combined;LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog ${APACHE_LOG_DIR}/access.log combined3. Zähle Besuche pro KI-Crawler
Füge den ersten Block in eine Shell auf dem Server ein. Er setzt BOTS auf die KI-Crawler-Namen aus SagBots KI-Bot-Tabelle und zählt die Anfragen pro Crawler im aktuellen Log. Ändere den Pfad, falls deiner anders ist, zum Beispiel /var/log/apache2/access.log.
Der zweite Block macht dasselbe über die rotierten Dateien, komprimiert oder nicht; führe ihn in derselben Shell aus, damit BOTS noch gesetzt ist. Trainings-Crawler stehen oft ganz oben. Mit Antworten verbunden sind die Besuche von Such-Crawlern und Nutzer-Agenten, deshalb lohnt es sich zu bemerken, wenn sie fehlen.
BOTS='GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User'
BOTS="$BOTS|PerplexityBot|Perplexity-User|Google-Agent|Applebot|Bytespider|CCBot"
BOTS="$BOTS|meta-externalagent|meta-webindexer|meta-externalfetcher|Amazonbot"
BOTS="$BOTS|Amzn-SearchBot|Amzn-User|MistralAI-Training|MistralAI-Index"
BOTS="$BOTS|MistralAI-User|DuckAssistBot"
awk -F'"' '{print $6}' /var/log/nginx/access.log \
| grep -Eo "$BOTS" | sort | uniq -c | sort -rnzgrep -hE "${BOTS:?}" /var/log/nginx/access.log* \
| awk -F'"' '{print $6}' | grep -Eo "$BOTS" | sort | uniq -c | sort -rn4. Prüfe, ob ein Crawler echt ist
Jeder kann eine Anfrage schicken, deren User-Agent GPTBot sagt, und Scraper tun das auch. Um einem Besuch zu vertrauen, gleich die Adresse, von der er kam, mit der eigenen Liste des Betreibers ab. Der erste Befehl unten listet die Adressen, die sich als GPTBot ausgegeben haben; setz einen beliebigen anderen Namen ein.
OpenAI, Anthropic, Perplexity, Amazon, Apple und Common Crawl veröffentlichen die IP-Bereiche ihrer Crawler in ihrer Bot-Dokumentation. Google und Bing lassen sich auch per Reverse-DNS prüfen: Die Adresse muss für Google auf einen Namen unter googlebot.com, google.com oder googleusercontent.com auflösen, für Bing auf search.msn.com, und dieser Name muss wieder auf dieselbe Adresse auflösen. Der zweite Block zeigt die Prüfung mit Googles eigener Beispieladresse. Apple (applebot.apple.com) und Common Crawl (crawl.commoncrawl.org) bestehen denselben Test.
Meta und ByteDance veröffentlichen zum Zeitpunkt des Schreibens keine Adressliste, ihre Besuche lassen sich also zählen, aber nicht verifizieren.
awk '/GPTBot/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rnhost 66.249.66.1
host crawl-66-249-66-1.googlebot.com5. Finde Seiten, an denen KI-Crawler scheitern
Ein Crawler, der ein 404 oder 500 bekommt, geht ohne etwas Zitierbares, und eine Seite, die immer wieder fehlschlägt, kann aus seinem Index fallen.
Der Block unten listet die Pfade, die KI-Crawlern mit 404 oder einem 5xx geantwortet haben, die häufigsten zuerst; er braucht BOTS aus dem Zählschritt in derselben Shell. Leite verschobene Seiten auf ihre neue Adresse um, behebe die Fehler und entferne tote Links aus deiner Sitemap und deinen internen Links.
awk -F'"' -v bots="${BOTS:?}" '$6 ~ bots {
split($3, f, " "); split($2, r, " ")
if (f[1] == 404 || f[1] >= 500) print f[1], r[2]
}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20Was Logs dir nicht zeigen
Eine Seite aus einem CDN-Cache erreicht deinen Server nie, also zählt dein eigenes Log zu wenig. Für das vollständige Bild nutze die Logs oder die Crawler-Ansicht des CDN.
Cloudflare sieht nur Hostnamen, die über den Proxy laufen. Ein Hostname auf DNS only zeigt in AI Crawl Control keine Besuche, egal wie viele Crawler ihn erreichen.
Der User-Agent allein lässt sich fälschen, und das Common Log Format zeichnet ihn gar nicht auf.
Logs zeigen Besuche, keine Zitierungen. Dass ein Crawler eine Seite liest, heißt nicht, dass ein Assistent sie zitiert; wie oft du zitiert wirst, ist eine eigene Messung.
Prüfe, wer deine Website lesen darf
Ein kostenloser Scan liest deine robots.txt und zeigt, welche KI-Crawler sie hineinlässt und welche sie blockiert, neben der übrigen KI-Readiness deiner Website.