ChatGPT i Perplexity nie widzą Twojej strony? Sprawdź, czy nie blokuje ich Cloudflare

Stanisław Fekete — projektant i programista · ostatnio sprawdzone

Jeśli strona firmy stoi za Cloudflare, boty ChatGPT, Claude i Perplexity mogą dostawać od niej błąd 403, zanim przeczytają jedno zdanie. Drugi mechanizm jest cichszy: Cloudflare potrafi dokleić do Twojego robots.txt zakazy dla botów AI, których nikt u Ciebie nie napisał. Oba sprawdzisz sam, z terminala i przeglądarki. Naprawiasz w panelu Cloudflare, nie w kodzie strony.

Botów AI jest kilka rodzajów i blokada każdego kosztuje co innego

Jeden „bot ChatGPT” nie istnieje. Każda firma ma osobne boty do treningu modeli, do wyszukiwania i do pobierania strony na prośbę użytkownika. Blokada działa na każdy z osobna.

Bot Po co przychodzi Blokada oznacza
GPTBot trening modeli OpenAI treść nie trafia do treningu
OAI-SearchBot wyniki wyszukiwania w ChatGPT strona nie pojawia się w odpowiedziach ChatGPT z wyszukiwania
ChatGPT-User pobranie strony, gdy użytkownik o to poprosi robots.txt może go nie dotyczyć, blokada w Cloudflare tak
ClaudeBot trening modeli Anthropic treść nie trafia do treningu
Claude-SearchBot indeks wyszukiwania Claude słabsza obecność w wynikach Claude
Claude-User pobranie strony na pytanie użytkownika Claude nie otworzy strony dla pytającego
PerplexityBot indeks wyszukiwania Perplexity, nie trening strona znika z odpowiedzi Perplexity
Google-Extended trening Gemini i grounding w Gemini Gemini nie użyje strony w odpowiedziach; wyniki Google bez zmian

src · OpenAI — Overview of OpenAI crawlers

src · Anthropic — boty ClaudeBot, Claude-SearchBot, Claude-User

src · Perplexity — Perplexity Crawlers

src · Google — Google-Extended

Z tej tabeli wynika jedno: decyzja o treningu i decyzja o widoczności to dwie różne decyzje. Możesz nie chcieć, żeby Twoje teksty uczyły modele, i jednocześnie chcieć, żeby ChatGPT podawał Twoją stronę, gdy ktoś szuka elektryka w Twoim mieście. Blokada „wszystkich botów AI” jednym przełącznikiem zabiera obie rzeczy naraz.

Perplexity-User z zasady pomija robots.txt, a dla ChatGPT-User reguły „mogą nie mieć zastosowania”. Plik ich nie zatrzyma. Zatrzyma je dopiero zapora, czyli właśnie Cloudflare.

Skąd blokada, której nikt nie włączał

Od 15.09.2026 Cloudflare ma nowe ustawienia domyślne: boty z kategorii Training i Agent są blokowane na stronach z reklamami, Search zostaje dozwolone. Boty łączące wyszukiwanie z treningiem są blokowane w każdej konfiguracji, która blokuje trening.

src · Cloudflare — Block AI bots

Druga funkcja to managed robots.txt. Gdy jest włączona, Cloudflare dokleja swoją treść przed Twoim plikiem: Disallow dla Amazonbot, Applebot-Extended, Bytespider, CCBot, ClaudeBot, Google-Extended, GPTBot i meta-externalagent oraz sygnał ai-train=no. W repozytorium plik jest czysty. Na produkcji już nie.

src · Cloudflare — Managed robots.txt

Koszt pomyłki: ktoś pyta asystenta o firmę, którą mu polecono, a asystent odpowiada, że nie ma o niej informacji. Nikt Ci o tym nie powie. W statystykach tego nie widać. Klient z polecenia, który trafi na pustą odpowiedź, nie zostawia śladu. O tym, co musi zobaczyć na samej stronie, jest poradnik Klienci z polecenia wchodzą na Twoją stronę.

Jak to rozpoznać samemu

Każdy punkt zajmuje minutę albo dwie.

  • Otwórz robots.txt w przeglądarce, pod adresem https://twojadomena.pl/robots.txt. Jeśli na górze są grupy User-agent: GPTBot, ClaudeBot, Google-Extended z Disallow: / albo linia Content-Signal z ai-train=no, a Ty ich nie pisałeś, to jest managed robots.txt.
  • Porównaj z plikiem w repozytorium albo w panelu hostingu. Różnica między plikiem u Ciebie a plikiem na żywo to dokładnie to, co dokleił Cloudflare.
  • Sprawdź kod odpowiedzi dla botów poleceniem niżej. 200 znaczy: strona odpowiada. 403 przy botach, gdy zwykłe żądanie dostaje 200, znaczy: blokuje zapora, nie robots.txt.
  • Wejdź do panelu Cloudflare, do ustawień botów AI tej domeny. Sprawdź, co jest ustawione dla Training, Agent i Search, i czy włączony jest managed robots.txt. Cloudflare zmienia nazwy menu, więc szukaj po tych słowach.
  • Przypomnij sobie, czy na stronie są reklamy albo coś, co automat może za nie uznać. Od tego zależy domyślna polityka.
# punkt odniesienia: zwykłe żądanie
curl -s -o /dev/null -w "%{http_code}\n" https://twojadomena.pl/

# to samo z nagłówkiem User-Agent bota
for ua in GPTBot OAI-SearchBot ChatGPT-User ClaudeBot Claude-SearchBot PerplexityBot; do
  printf "%-18s " "$ua"
  curl -s -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0 (compatible; $ua)" https://twojadomena.pl/
done

# robots.txt tak, jak widzi go świat, nie repozytorium
curl -s https://twojadomena.pl/robots.txt

Jedno zastrzeżenie. curl -A podszywa się pod bota tylko nagłówkiem; prawdziwy bot przychodzi z adresów, które Cloudflare potrafi zweryfikować, i może zostać potraktowany inaczej. 403 w tym teście to powód, żeby otworzyć panel, nie wyrok. Ostateczną odpowiedź dają ustawienia domeny i logi ruchu botów w Cloudflare.

Co zrobić

  1. Zdecyduj osobno o treningu i osobno o wyszukiwaniu. To decyzja biznesowa i powinna być zapisana. Ustawienie domyślne nie jest decyzją.
  2. Ustaw politykę botów AI w Cloudflare jawnie, dla każdej kategorii: Training, Agent, Search. Ustawienie domyślne może się zmienić bez Twojej wiedzy. Jawne nie.
  3. Wyłącz managed robots.txt, jeśli ma obowiązywać Twój plik. Inaczej dwie reguły mówią botom dwie różne rzeczy.
  4. Napisz robots.txt jedną grupą User-agent: *, jeśli wpuszczasz wszystkich. Bot, który znajdzie grupę ze swoją nazwą, stosuje tylko ją, a grupę * pomija. Każda dodatkowa grupa to miejsce na pomyłkę.
  5. Sprawdź jeszcze raz tym samym poleceniem curl i tym samym adresem robots.txt. Zmiana w panelu, której nie zweryfikowałeś z zewnątrz, jest założeniem, nie naprawą.
  6. Zapisz datę i wynik przed zmianą i po niej. Bez punktu wyjścia nie ocenisz, czy odblokowanie cokolwiek dało.

src · RFC 9309, § 2.2.1 — dopasowanie grupy user-agent

Jeśli wynik testu nie zgadza się z tym, co widzisz w panelu, opisz swoją domenę w zgłoszeniu audytu — sprawdzę, kto ją blokuje.