robots.txt dla botów AI: GPTBot, ClaudeBot, PerplexityBot

Kontrola botów AI zaczyna się w pliku, który istnieje od 1994 roku. To wciąż robots.txt decyduje, czy GPTBot, ClaudeBot i PerplexityBot dostaną się do Twoich treści, tylko że dziś jedna reguła potrafi jednocześnie odciąć Cię od zbioru treningowego i od cytowania w odpowiedzi chatbota. Ten tekst jest częścią szerszego przewodnika o tym, jak kontrolować boty AI za pomocą llms.txt i robots.txt, i skupia się na jednym: na gotowej liście user-agentów oraz regułach, które możesz wkleić dzisiaj.

Bot treningowy a bot pobierający treść na żywo

Najczęstszy błąd w konfiguracji bierze się z założenia, że każdy bot z nazwą dostawcy AI robi to samo. Nie robi. W praktyce mamy trzy różne funkcje, a każda z nich ma inne konsekwencje biznesowe.

Bot treningowy zbiera treść do trenowania modeli. Efekt blokady jest odroczony i trudny do zmierzenia: Twoje treści nie wejdą do kolejnej wersji modelu, ale nie zmieni to niczego w dzisiejszych odpowiedziach. Bot pobierający na żywo działa w momencie, gdy użytkownik zadaje pytanie. To on wchodzi na stronę, pobiera fragment i pozwala modelowi zacytować Cię wraz z linkiem. Zablokowanie go oznacza znikniecie z odpowiedzi tu i teraz. Bot wyszukiwarkowy buduje własny indeks używany później do retrievalu, czyli działa jak klasyczny crawler, tylko zasila silnik generatywny.

Praktyczna konsekwencja: firmy, które chcą chronić treść przed treningiem, ale zależy im na widoczności w ChatGPT czy Perplexity, muszą blokować selektywnie. Blokada wszystkiego jednym wpisem to najszybsza droga do zniknięcia z odpowiedzi generatywnych przy zerowym zysku dla ochrony własności intelektualnej.

Tabela user-agentów i ich funkcji

Poniższa lista obejmuje user-agenty, które faktycznie generują mierzalny ruch na polskich serwisach. Nazwy są wrażliwe na wielkość liter w części implementacji, więc kopiuj je dokładnie.

User-agent Właściciel Funkcja Blokada oznacza
GPTBot OpenAI trening modeli brak treści w kolejnych wersjach modelu
ChatGPT-User OpenAI pobranie na żądanie użytkownika brak cytowania i linku w odpowiedzi
OAI-SearchBot OpenAI indeks wyszukiwarki ChatGPT wypadnięcie z wyników wyszukiwania w ChatGPT
ClaudeBot Anthropic trening modeli brak treści w danych treningowych
Claude-User Anthropic pobranie na żądanie użytkownika brak cytowania w rozmowie z Claude
Claude-SearchBot Anthropic indeksowanie pod wyszukiwanie brak w wynikach wyszukiwania Claude
PerplexityBot Perplexity indeks wyszukiwarki wypadnięcie ze źródeł Perplexity
Perplexity-User Perplexity pobranie na żądanie brak podglądu strony w odpowiedzi
Google-Extended Google trening Gemini i grounding brak w treningu, indeks Google bez zmian
Applebot-Extended Apple trening modeli Apple brak w treningu, Siri i Spotlight bez zmian
Bytespider ByteDance trening modeli brak treści w danych ByteDance
CCBot Common Crawl publiczny zbiór danych brak w zbiorze wykorzystywanym przez wielu dostawców
meta-externalagent Meta trening modeli Meta brak treści w danych Meta AI

Zwróć uwagę na trzy pary: OpenAI, Anthropic i Perplexity rozdzielili trening od pobierania na żywo. To dobra wiadomość, bo pozwala prowadzić politykę „nie trenuj, ale cytuj”, która dla większości wydawców treści jest optymalna. Szczegóły ruchu poszczególnych crawlerów opisaliśmy w analizie danych Cloudflare o weryfikacji botów AI.

Gotowe bloki reguł do skopiowania

Trzy scenariusze pokrywają większość realnych potrzeb. Wklej jeden z nich do pliku robots.txt w katalogu głównym domeny.

Scenariusz 1: nie trenuj, ale cytuj

Najczęstszy wybór wydawców i firm B2B. Blokujesz zbieranie danych treningowych, zostawiasz otwarte boty odpowiadające na pytania użytkowników.

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Applebot-Extended
Disallow: /

User-agent: Bytespider
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: meta-externalagent
Disallow: /

User-agent: ChatGPT-User
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-User
Allow: /

User-agent: PerplexityBot
Allow: /

Scenariusz 2: pełna otwartość z wyłączeniem sekcji prywatnych

Domyślna rekomendacja dla serwisów, które żyją z widoczności. Otwierasz treść publiczną, zamykasz koszyk, panel klienta i wyniki wyszukiwania wewnętrznego.

User-agent: *
Disallow: /wp-admin/
Disallow: /koszyk/
Disallow: /moje-konto/
Disallow: /?s=
Allow: /wp-admin/admin-ajax.php

Scenariusz 3: twarda blokada wszystkiego, co AI

Uzasadniona tylko wtedy, gdy treść jest produktem sprzedawanym w modelu licencyjnym. Pamiętaj, że kosztem jest zniknięcie z odpowiedzi generatywnych, a ruch z tego kanału rośnie szybciej niż z klasycznych wyników.

User-agent: GPTBot
User-agent: ChatGPT-User
User-agent: OAI-SearchBot
User-agent: ClaudeBot
User-agent: Claude-User
User-agent: Claude-SearchBot
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Bytespider
User-agent: CCBot
User-agent: meta-externalagent
Disallow: /

Grupowanie kilku linii User-agent nad jedną dyrektywą Disallow jest zgodne ze standardem i obsługiwane przez główne parsery. Skraca plik i zmniejsza ryzyko literówki.

Google-Extended i osobne sterowanie

Google-Extended to nie crawler. To token uprawnień sprawdzany przez Google już po pobraniu strony przez Googlebota. Blokada Google-Extended mówi: „nie używaj mojej treści do trenowania Gemini ani do groundingu odpowiedzi”, ale nie usuwa strony z indeksu wyszukiwarki i nie wpływa na rankingi. Zasadę tę Google opisuje w dokumentacji crawlerów w Search Central.

Konsekwencja jest niewygodna: blokując Google-Extended, ograniczasz szansę na pojawienie się w AI Overviews, a jednocześnie nie chronisz się przed niczym innym. Dla większości serwisów to zły interes. Wyjątkiem są wydawcy, którzy negocjują licencję na dane i chcą mieć twardy dowód, że nie udostępniali treści za darmo.

Podobnie działa Applebot-Extended: rozdziela indeksowanie od treningu, więc Siri i Spotlight nadal widzą stronę. Analogiczne rozróżnienie warto trzymać w głowie przy treściach zamkniętych, bo paywall zmienia to, co model naprawdę widzi i cytuje.

Czego robots.txt nie załatwi

Plik robots.txt jest deklaracją, nie zaporą. Cztery ograniczenia trzeba znać, zanim uznasz temat za zamknięty.

  1. Boty pobierające na żądanie użytkownika bywają traktowane inaczej. OpenAI wprost sygnalizowało, że reguły robots.txt mogą nie obejmować ChatGPT-User, bo to akcja zainicjowana przez człowieka, a nie automatyczny crawl. Szerzej opisaliśmy to w tekście o tym, dlaczego robots.txt może nie dotyczyć ChatGPT-User.
  2. Treść już zebrana zostaje w modelu. Blokada działa w przód. Jeśli GPTBot pobierał Twoją stronę przez dwa lata, wpis dodany dziś niczego nie cofa.
  3. Scrapery ignorujące standard nie znikną. Boty bez deklarowanej tożsamości i farmy proxy nie czytają robots.txt. Tu pomaga wyłącznie warstwa sieciowa: weryfikacja po odwrotnym DNS, limity zapytań, WAF.
  4. Treść może wrócić przez cudzy serwis. Kopia Twojego artykułu na agregatorze bez blokady wejdzie do modelu razem z jego domeną, a Ty stracisz atrybucję.

Jeśli zależy Ci na kontroli, a nie na deklaracji, robots.txt jest pierwszym krokiem z czterech: po nim idzie blokowanie po adresie IP, weryfikacja tożsamości bota i dopiero na końcu ścieżka prawna. Warstwa techniczna nie zastąpi umowy licencyjnej.

Weryfikacja: jak sprawdzić, czy reguła działa

Wdrożenie bez weryfikacji jest bezwartościowe, bo najczęstsza awaria to nie zła reguła, tylko plik nieserwowany z katalogu głównego albo nadpisany przez wtyczkę.

Krok 1: sprawdź, co faktycznie widzi bot. Pobierz plik z zewnątrz i porównaj z tym, co masz w edytorze. W WordPressie plik bywa generowany dynamicznie, więc podmiana pliku na dysku nic nie da.

curl -s https://twojadomena.pl/robots.txt

Krok 2: przetestuj konkretną regułę na konkretnym user-agencie. Nie zakładaj, że dopasowanie prefiksu zadziała. Nazwy takie jak ClaudeBot i Claude-User to dwie różne reguły, a nie jedna rodzina.

Krok 3: potwierdź w logach serwera. To jedyne wiarygodne źródło. Po tygodniu od wdrożenia policz trafienia zablokowanego user-agenta. Jeśli liczba nie spada, bot albo nie odczytał pliku, albo go ignoruje.

grep -Ei "gptbot|claudebot|perplexitybot" access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head

Krok 4: zweryfikuj tożsamość bota. Podszywanie się pod GPTBot jest banalnie proste, bo user-agent to zwykły nagłówek. Sprawdź odwrotny DNS adresu IP i porównaj z listami zakresów publikowanymi przez dostawców. Bez tego kroku Twoje statystyki „ruchu AI” są zawyżone.

Krok 5: sprawdź, czy nie zablokowałeś zbyt wiele. Wpisz do ChatGPT lub Perplexity pytanie, na które Twój artykuł jest oczywistą odpowiedzią, i sprawdź, czy pojawia się jako źródło. Jeśli konkurencja jest cytowana, a Ty nie, przejrzyj reguły dla botów na żądanie. Warto przy okazji potwierdzić, że strona w ogóle renderuje się poprawnie dla crawlerów, co opisujemy w tekście o SEO technicznym 2026 i renderingu pod LLM.

Dobrym rytmem jest przegląd kwartalny. Dostawcy dodają nowe user-agenty częściej niż aktualizują dokumentację, a plik sprzed roku niemal na pewno pomija co najmniej dwa boty, które dziś generują realny ruch.

FAQ

Czy blokada GPTBot usuwa mnie z odpowiedzi ChatGPT?

Nie. GPTBot zbiera dane treningowe, a za odpowiedzi z linkiem odpowiadają ChatGPT-User i OAI-SearchBot. Jeśli chcesz zniknąć z odpowiedzi, musisz zablokować te dwa user-agenty osobno.

Czy Google-Extended wpływa na pozycje w wyszukiwarce?

Nie. Google-Extended steruje wyłącznie wykorzystaniem treści w trenowaniu Gemini i w groundingu. Indeksowanie przez Googlebota oraz rankingi pozostają bez zmian, choć blokada zmniejsza szansę na cytowanie w AI Overviews.

Czy wystarczy jeden wpis „User-agent: *” z Disallow?

Nie, i zwykle jest to szkodliwe. Taki zapis odcina również Googlebota i Bingbota, czyli kanały, z których pochodzi większość ruchu. Boty AI blokuj po nazwie.

Jak szybko boty zauważą zmianę w robots.txt?

Zwykle w ciągu 24 godzin, w praktyce do kilku dni, bo plik jest cache’owany po stronie dostawcy. Nie oceniaj skuteczności wdrożenia wcześniej niż po tygodniu obserwacji logów.

Czy robots.txt chroni przed scrapingiem?

Nie. To deklaracja intencji respektowana dobrowolnie. Scrapery podszywające się pod przeglądarkę zignorują plik, więc realną ochroną są limity zapytań, WAF i weryfikacja tożsamości bota po odwrotnym DNS.

Czy llms.txt zastępuje robots.txt?

Nie zastępuje, tylko uzupełnia. Robots.txt mówi, czego botowi nie wolno pobierać, a llms.txt wskazuje, które treści są najważniejsze i w jakiej formie. Oba pliki wdraża się równolegle.