Przejdź do głównej zawartości

Monitor crawlerów AI

Monitor sprawdza, czy modele AI mogą w ogóle przeczytać Twoją stronę. To warstwa fundamentu: jeśli GPTBot albo ClaudeBot nie wejdzie na stronę, żadna optymalizacja treści nie pomoże, bo nie ma czego zacytować.

Co dokładnie mierzymy

WarstwaPytaniePunkty w ocenie
robots.txtCzy plik wpuszcza boty AI (GPTBot, ClaudeBot, PerplexityBot, Google-Extended)?4
Dostęp HTTPCzy strona realnie odpowiada botom kodem 200, czy odbija je 403/406?3
Dane strukturalneCzy strona ma znaczniki schema.org właściwe dla jej typu?2
Mapa stronyCzy sitemap.xml istnieje i da się ją pobrać?1

Ocena to 0–10, liczona wyłącznie z warstw, które udało się zmierzyć (patrz niżej).

Trzy stany, nie dwa

Każda warstwa może wyjść na trzy sposoby — i trzeci jest najważniejszy:

  • zmierzone, w porządku — np. robots.txt jawnie wpuszcza GPTBota,
  • zmierzone, jest problem — np. Disallow: / dla ClaudeBota,
  • nie zmierzono (szara kropka albo ?) — Twój firewall/WAF odbił nasz próbnik, więc nie wiemy i nie zgadujemy.

Stan „nie zmierzono" nie obniża oceny: warstwa wypada z licznika i z mianownika. Jeśli zmierzyliśmy 6 z 10 punktów, pod oceną zobaczysz „Zmierzono 6/10 pkt". Nie karzemy Cię za to, że czegoś nie widzimy — ale też nie udajemy, że widzimy.

Dlaczego to ważne

Wcześniej nieudany pomiar zapisywał się jako werdykt („boty są blokowane", „brak mapy strony"). Taki raport wysyła zespół na polowanie na problem, którego nie ma. Trzeci stan usuwa tę klasę błędu.

Jak odblokować audyt na swojej stronie

Audyt puka do Twojej strony z serwera w centrum danych. Ochrony antybotowe (Cloudflare, Akamai, Imperva) rutynowo odbijają taki ruch kodem 403 albo 406 — i wtedy warstwy robią się szare.

Zalecane: wpuść User-Agenta audytu

Nasze własne pobrania (robots.txt, mapa strony, treść strony) przedstawiają się tak:

GEOPlatformAudit/1.0 (+https://audit.geoplatform.pl)

Reguła po tym User-Agencie to wariant zalecany, bo nie psuje pomiaru. Osobno od tych pobrań wysyłamy sondy z nagłówkami prawdziwych botów AI — one mają podlegać Twojej realnej polityce.

Cloudflare: Security → WAF → Custom rules → nowa reguła, warunek User Agent contains GEOPlatformAudit, akcja Skip (zaznacz wszystkie moduły bezpieczeństwa do pominięcia).

nginx / Apache / ModSecurity: dodaj wyjątek na dopasowanie GEOPlatformAudit w nagłówku User-Agent przed regułami blokującymi automaty.

Alternatywnie: wpuść adres IP

Dla firewalli, które nie umieją reguł po User-Agencie. Aktualny adres i UA zawsze pod stałym URL-em:

https://audit.geoplatform.pl/api/crawl/audit-info

Endpoint jest publiczny (bez logowania) — Twój dział IT może go czytać skryptem, tak jak openai.com/gptbot.json czy listy Google.

Ten sam adres otwarty w przeglądarce — audit.geoplatform.pl — pokazuje stronę wyjaśniającą, kto puka do Twojej strony, jak zweryfikować nasze żądania przez reverse DNS i jak audyt zablokować. To adres, który znajdziesz w logach serwera, i to na niego wskazuje +URL w naszym User-Agencie — możesz go bez obaw przekazać swojemu działowi IT.

Adres możesz też po prostu rozwiązać z nazwy — to ta sama wartość, zawsze aktualna:

dig +short audit.geoplatform.pl

Nie wpisujemy tu adresu na sztywno celowo: wartość podana w dokumentacji zdezaktualizowałaby się przy migracji naszej infrastruktury, a klient miałby w firewallu regułę wskazującą w pustkę. Nazwa audit.geoplatform.pl i endpoint audit-info są stabilne — adres pod nimi możemy przenieść.

Nazwa jest weryfikowalna przez forward-confirmed reverse DNS, tak jak weryfikuje się Googlebota (PTR wraca na nazwę, nazwa wraca na ten sam adres):

dig +short audit.geoplatform.pl # adres audytu
dig +short -x $(dig +short audit.geoplatform.pl) # → audit.geoplatform.pl
Wpuszczenie po IP ma skutek uboczny

Reguła po IP zwalnia wszystkie nasze żądania, więc także sondy udające boty AI. Warstwa „dostęp botów po HTTP" pokaże wtedy dostęp niezależnie od Twojej realnej polityki. Jeśli zależy Ci na wiarygodności tego pomiaru, użyj reguły po User-Agencie.

Czego NIE robić

Nie dodawaj wyjątków dla User-Agentów samych botów AI (GPTBot, ClaudeBot, PerplexityBot, Googlebot). Audyt pokaże wtedy, że je wpuszczasz — nawet jeśli realnie blokujesz je dla całego świata. Ta warstwa ma mierzyć Twoją politykę, nie nasze zwolnienie.

Szczególny przypadek: mapa strony zwraca 403/406

To najczęstsza pozostałość po odblokowaniu audytu: reguła na UA już przepuszcza stronę, a mapa nadal jest szara.

Tu reguła po User-Agencie zwykle NIE wystarczy

Zmierzyliśmy to na realnym sklepie. Ten sam adres mapy, ta sama chwila:

KlientSiećWynik
nasz audyt (minimalne nagłówki)centrum danych406
pełny zestaw nagłówków Chrome'acentrum danych406
prawdziwy headless Chromium (HTTP/2, odcisk TLS przeglądarki)centrum danych406
to samo pobranieinna sieć200, poprawny XML

Skoro nawet realna przeglądarka dostaje 406, blokada nie zależy od tego, jak wygląda klient — decyduje reputacja sieci źródłowej. Ochrony typu Akamai / Cloudflare Bot Management na wybranych ścieżkach odrzucają ruch z centrów danych niezależnie od nagłówków.

Skuteczne dźwignie są więc dwie: reguła po adresie IP (rozwiąż audit.geoplatform.pl) albo reguła zezwalająca klientom przechodzącym weryfikację reverse DNS dla tej nazwy — tak jak wpuszcza się Googlebota. Reguła po UA zostaw dla warstwy strony i robots.txt.

To dotyczy także botów AI

GPTBot, ClaudeBot i PerplexityBot również wychodzą z centrów danych. Jeśli Twoja ochrona odrzuca taki ruch na ścieżce mapy i nie masz dla nich wyjątku (weryfikowane boty / allow-lista), to najpewniej nie widzą jej tak samo jak my. Dlatego warto to odblokować, nawet jeśli sam audyt Cię nie interesuje — my zapisujemy „nie zmierzono", ale realny skutek może być twardszy.

Co robimy, gdy nie możemy pobrać mapy

Zanim zapiszemy „nie zmierzono", sprawdzamy archiwum internetu (Wayback Machine). Jeśli ma ono Twoją mapę, pokazujemy to wprost: „istnieje w archiwum (stan DATA), nie dosięgamy jej z naszej sieci".

Punktu za mapę to nie przywraca — pytanie brzmi „czy crawler pobierze ją dziś", a snapshot z przeszłości na nie nie odpowiada. Ale zamienia puste „nie wiemy" w konkret: mapa istnieje, tylko jest niedostępna z sieci centrów danych. Archiwum pomijamy, gdy adresy mapy zwracają czyste 404 — wtedy brak mapy jest zmierzony, a snapshot sprzed usunięcia tylko wprowadzałby w błąd.

Co jeszcze warto sprawdzić:

  1. Które adresy odpytujemy. Najpierw ten zadeklarowany w robots.txt wpisem Sitemap: https://…, a jeśli go nie ma — zgadujemy: /sitemap.xml, /sitemap_index.xml, /sitemap-index.xml, /sitemap/sitemap.xml. Jeśli Twoja mapa leży pod inną nazwą, zadeklaruj ją w robots.txt — wtedy trafiamy dokładnie tam, gdzie trzeba.
  2. Reguła po ścieżce lub rozszerzeniu. Sprawdź, czy któraś reguła obejmuje *.xml / sitemap* (Cloudflare: Security → WAF → Custom rules oraz Managed Rules). Wyjątek dla audytu — po IP albo po rDNS — musi stać wyżej w kolejności niż taka blokada.
  3. Odpowiedź 200, ale nie XML. Jeśli pod adresem mapy serwer zwraca stronę HTML (typowy „soft 404"), zapisujemy to jako zmierzony brak mapy, nie jako brak pomiaru — bo odpowiedź dostaliśmy, tylko nie ma w niej mapy.
  4. Mapa za logowaniem albo tylko dla wybranych IP. Jeśli udostępniasz ją wyłącznie wyszukiwarkom, dodaj wyjątek również dla audytu — inaczej ta warstwa zostanie szara na stałe (i nie będzie obniżać oceny, ale nie dowiesz się, czy boty AI ją widzą).

Pozostałe pułapki

  1. Rate limiting — audyt wysyła kilka żądań pod rząd. Limit zwraca 429, co raportujemy jako „nie zmierzono" (bo to artefakt naszego tempa, nie Twoja polityka). Wyłącz limit dla audytu.
  2. Bot Fight Mode / Under Attack Mode w Cloudflare — te tryby pomijają część zwykłych reguł, więc wyjątek trzeba dodać także tam.
  3. Blokada wyżej niż WAF — jeśli po dodaniu wyjątku warstwy nadal są szare, ruch jest odbijany u dostawcy CDN albo na firewallu sieciowym przed serwerem.
  4. robots.txt nie jest tu przeszkodą — audyt go tylko czyta, żeby sprawdzić, co pozwalasz botom AI. Nie musisz w nim nic zmieniać, żeby odblokować audyt.

Po dodaniu wyjątku wróć na stronę monitora i kliknij Sprawdź teraz — szare warstwy powinny dostać realny wynik i wrócić do oceny.

Typ strony a dane strukturalne

Znaczniki, których oczekujemy, zależą od typu strony (Profil → „Typ strony"):

ProfilZnaczniki kluczowe
general (marka, treść)Organization, WebSite, BreadcrumbList, FAQPage, Article
ecommerce (sklep)Product, Offer, AggregateRating, Review, BreadcrumbList, Organization
local (firma lokalna)LocalBusiness, Organization, FAQPage

Domyślnie profil wynika z Twojego pakietu, ale możesz go nadpisać ręcznie. Znaczniki „dodatkowe" nigdy nie obniżają oceny — sklep nie jest karany za brak LocalBusiness.

Dla sklepów audyt skanuje dodatkowo kartę przykładowego produktu, bo Product/Offer żyją tam, nie na stronie głównej.

Historia sprawdzeń

Monitor trzyma pełną historię (lista jest przewijalna, widocznych ~10 wpisów). Pojedynczy wpis usuniesz krzyżykiem, całą historię przyciskiem Wyczyść. Nowe sprawdzenie zbuduje ją od nowa.