Dlaczego ważne jest, kto naprawdę przychodzi
Asystent AI może zacytować tylko stronę, którą przeczytał jeden z jego crawlerów. Jeśli żaden z nich nie pobrał Twojej strony z cennikiem, żadna odpowiedź jej nie zacytuje, nawet jeśli jest świetnie napisana.
Twój robots.txt i tabela botów AI w raporcie SagBot mówią, które crawlery mogą czytać Twoją stronę. Nie mówią, które przyszły. Mówi to log dostępu Twojego serwera: każde żądanie, z adresem, z którego przyszło, stroną, kodem statusu i user agentem, który wskazuje crawlera.
Jakie są crawlery AI i po co przychodzą
Crawlery AI przychodzą z jednego z trzech powodów. Crawlery treningowe zbierają strony do trenowania modeli. Crawlery wyszukiwania budują indeks, który asystent przeszukuje, gdy odpowiada. Agenci działający na żądanie użytkownika pobierają stronę na żywo, bo ktoś właśnie zapytał o nią asystenta. To wizyty dwóch ostatnich rodzajów mogą prowadzić do cytowania.
OpenAI wysyła GPTBot do treningu, OAI-SearchBot do wyszukiwania i ChatGPT-User do żądań na żywo. Anthropic wysyła ClaudeBot, Claude-SearchBot i Claude-User; Perplexity wysyła PerplexityBot i Perplexity-User. Meta używa meta-externalagent, meta-webindexer i meta-externalfetcher, Amazon używa Amazonbot, Amzn-SearchBot i Amzn-User, a Mistral i DuckDuckGo wysyłają MistralAI-User i DuckAssistBot. Bytespider (ByteDance) i CCBot (Common Crawl, otwarte archiwum, na którym trenuje się wiele modeli) zbierają dane treningowe.
Dwie nazwy, których nie znajdziesz w logu: Google-Extended i Applebot-Extended to reguły robots.txt, a nie crawlery. Google pobiera strony za pomocą Googlebot, a Apple za pomocą Applebot; reguły Extended decydują tylko o tym, czy to, co pobrały, może zostać użyte do AI. Agent Google do żądań użytkowników na żywo, Google-Agent, pojawia się natomiast pod własną nazwą.
1. Znajdź swój log dostępu
Na własnym serwerze log to zwykły plik tekstowy. nginx zapisuje /var/log/nginx/access.log. Apache zapisuje /var/log/apache2/access.log na Debianie i Ubuntu oraz /var/log/httpd/access_log na Red Hat, Rocky i Alma. Starsze dni trafiają w ramach rotacji do ponumerowanych lub datowanych plików obok, a te najstarsze są kompresowane jako .gz.
Na hostingu współdzielonym lub zarządzanym poszukaj w panelu hostingu surowych logów dostępu i pobierz je. Niektórzy dostawcy przechowują tylko kilka dni, więc zapisuj je regularnie, jeśli chcesz mieć dłuższy obraz.
Za Cloudflare otwórz w panelu AI Crawl Control dla swojej domeny. Jest dostępny w każdym planie i pokazuje żądania z podziałem na crawlery AI, ich kody statusu i najczęściej żądane ścieżki, bez żadnych plików logów; w planie darmowym metryki obejmują ostatnie 24 godziny. Surowe wiersze żądań Logpush eksportuje do wybranego przez Ciebie magazynu. Cloudflare widzi tylko nazwy hostów objęte proxy (pomarańczowa chmurka); rekordy DNS only trafiają prosto do Twojego serwera.
Na Vercelu strona Logs projektu pokazuje ostatnie żądania z ich user agentem, przez godzinę w planie Hobby i przez dobę w planie Pro. Log drain (Pro i Enterprise) wysyła każde żądanie, łącznie z plikami statycznymi, do wybranego przez Ciebie magazynu.
2. Sprawdź, czy log zapisuje user agenta
To user agent wskazuje crawlera, więc musi być w każdym wierszu. nginx i Apache mają format o nazwie combined, który kończy każdy wiersz refererem i user agentem w cudzysłowie. nginx używa go, o ile nie wybierzesz innego; Apache go definiuje, a Twój wiersz CustomLog decyduje, czy jest używany.
Obejrzyj ostatnie wiersze logu pierwszym poleceniem poniżej. Jeśli każdy kończy się nazwą przeglądarki lub bota w cudzysłowie, wszystko gra. Jeśli wiersze kończą się statusem i liczbą bajtów, serwer zapisuje Common Log Format, w którym nie ma user agenta: ustaw combined w wierszu access_log (nginx) lub w wierszu CustomLog (Apache), jak poniżej, i przeładuj serwer.
Polecenia w kolejnych krokach zakładają układ combined. Jeśli używasz własnego log_format lub LogFormat, zostaw $http_user_agent lub %{User-Agent}i jako ostatnie pole w cudzysłowie albo dostosuj polecenia.
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. Policz wizyty każdego crawlera AI
Wklej pierwszy blok do powłoki na serwerze. Ustawia BOTS na nazwy crawlerów AI z tabeli botów AI w SagBot i liczy żądania każdego crawlera w bieżącym logu. Zmień ścieżkę, jeśli Twoja jest inna, na przykład na /var/log/apache2/access.log.
Drugi blok robi to samo dla plików po rotacji, skompresowanych lub nie; uruchom go w tej samej powłoce, żeby BOTS było nadal ustawione. Crawlery treningowe często są na czele listy. Z odpowiedziami wiążą się wizyty crawlerów wyszukiwania i agentów na żądanie użytkownika, więc warto zauważyć, gdy ich brakuje.
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. Sprawdź, czy crawler jest prawdziwy
Każdy może wysłać żądanie, którego user agent podaje GPTBot, i scrapery tak robią. Aby zaufać wizycie, porównaj adres, z którego przyszła, z listą publikowaną przez samego operatora. Pierwsze polecenie poniżej wypisuje adresy, które podawały się za GPTBot; wstaw dowolną inną nazwę.
OpenAI, Anthropic, Perplexity, Amazon, Apple i Common Crawl publikują zakresy IP swoich crawlerów w dokumentacji botów. Google i Binga można też sprawdzić odwrotnym DNS: adres musi wskazywać na nazwę w googlebot.com, google.com lub googleusercontent.com w przypadku Google albo search.msn.com w przypadku Binga, a ta nazwa musi wskazywać z powrotem na ten sam adres. Drugi blok pokazuje to sprawdzenie na przykładowym adresie podanym przez Google. Apple (applebot.apple.com) i Common Crawl (crawl.commoncrawl.org) przechodzą ten sam test.
Meta i ByteDance w chwili pisania nie publikują listy adresów, więc ich wizyty można policzyć, ale nie zweryfikować.
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. Znajdź strony, które zawodzą crawlery AI
Crawler, który dostaje 404 lub 500, odchodzi bez niczego do zacytowania, a strona, która ciągle zwraca błąd, może wypaść z jego indeksu.
Blok poniżej wypisuje ścieżki, które odpowiedziały crawlerom AI kodem 404 lub dowolnym 5xx, od najczęstszych; potrzebuje BOTS z kroku liczenia w tej samej powłoce. Przekieruj przeniesione strony na ich nowy adres, napraw błędy i usuń martwe linki z mapy witryny i linków wewnętrznych.
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 -20Czego logi nie pokażą
Strona serwowana z cache CDN nigdy nie dociera do Twojego serwera, więc Twój własny log zaniża liczbę wizyt. Pełny obraz dają logi CDN lub jej widok crawlerów.
Cloudflare widzi tylko nazwy hostów objęte proxy. Host ustawiony na DNS only nie pokazuje żadnych wizyt w AI Crawl Control, niezależnie od tego, ile crawlerów do niego trafia.
Sam user agent można podrobić, a Common Log Format w ogóle go nie zapisuje.
Logi pokazują wizyty, a nie cytowania. To, że crawler czyta stronę, nie znaczy, że asystent ją zacytuje; to, jak często jesteś cytowany, to osobny pomiar.
Sprawdź, kto może czytać Twoją stronę
Darmowy skan czyta Twój robots.txt i pokazuje, które crawlery AI wpuszcza, a które blokuje, obok reszty gotowości Twojej strony na AI.