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
| Warstwa | Pytanie | Punkty w ocenie |
|---|---|---|
| robots.txt | Czy plik wpuszcza boty AI (GPTBot, ClaudeBot, PerplexityBot, Google-Extended)? | 4 |
| Dostęp HTTP | Czy strona realnie odpowiada botom kodem 200, czy odbija je 403/406? | 3 |
| Dane strukturalne | Czy strona ma znaczniki schema.org właściwe dla jej typu? | 2 |
| Mapa strony | Czy 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.
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
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.
Zmierzyliśmy to na realnym sklepie. Ten sam adres mapy, ta sama chwila:
| Klient | Sieć | Wynik |
|---|---|---|
| nasz audyt (minimalne nagłówki) | centrum danych | 406 |
| pełny zestaw nagłówków Chrome'a | centrum danych | 406 |
| prawdziwy headless Chromium (HTTP/2, odcisk TLS przeglądarki) | centrum danych | 406 |
| to samo pobranie | inna 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.
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.
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ć:
- Które adresy odpytujemy. Najpierw ten zadeklarowany w
robots.txtwpisemSitemap: 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. - 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. - 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.
- 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
- 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.
- Bot Fight Mode / Under Attack Mode w Cloudflare — te tryby pomijają część zwykłych reguł, więc wyjątek trzeba dodać także tam.
- 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.
- 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"):
| Profil | Znaczniki 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.