Przejdź do treści

Techniczne SEO dla AI: robots.txt, boty i RAG

Ustaw reguły dla GPTBot, ClaudeBot i wyszukiwarek AI w Next.js. Sprawdź, co kontroluje Google-Extended i jak sprawdzić dostęp botów do treści dla RAG.

Maciej Sala

Founder StriveLab

8 min czytaniaAktualizacja

Boty AI w robots.txt: GPTBot, ClaudeBot i inne crawlery

Podział według celu pozwala ustalić, na jakie wykorzystanie treści się zgadzasz. Dla publicznej strony najważniejsze są trzy grupy.

CelPrzykładyZnaczenie dla właściciela strony
Zbieranie treści do potencjalnego treninguGPTBot, ClaudeBotMożesz odmówić tego wykorzystania niezależnie od ustawień crawlerów wyszukujących.
Wyszukiwanie AIOAI-SearchBot, Claude-SearchBot, PerplexityBotDostęp umożliwia systemom pobieranie treści na potrzeby wyszukiwania; nie gwarantuje cytowania.
Pobieranie na żądanie użytkownikaChatGPT-User, Claude-User, Perplexity-UserAsystent odwiedza stronę w ramach konkretnego zadania; zasady respektowania robots.txt zależą od dostawcy.

OpenAI rozdziela ustawienia GPTBot i OAI-SearchBot, a dla ChatGPT-User zastrzega, że robots.txt może nie mieć zastosowania. Anthropic deklaruje respektowanie robots.txt przez komplet swoich botów, ale w przypadku Perplexity sytuacja wygląda nieco inaczej: agent Perplexity-User z założenia ignoruje te reguły, działając jako bezpośrednie proxy użytkownika. Wniosek? Deklaracje na papierze to jedno, a życie drugie. Jeśli chcesz skutecznie odciąć konkretnego bota, musisz dokładnie prześwietlić, jak on naprawdę składa żądania.

Google-Extended wymaga osobnego potraktowania. To token sterujący w robots.txt, bez własnego HTTP user-agenta. Google pobiera treści istniejącymi crawlerami, a token określa zgodę na wykorzystanie ich do treningu przyszłych modeli Gemini oraz groundingu w Gemini Apps i Grounding with Google Search na Vertex AI. Grounding oznacza dostarczenie modelowi treści jako kontekstu podczas przygotowywania odpowiedzi.

Czy warto blokować boty AI w robots.txt?

Kiedy celem strony internetowej jest pozyskiwanie klientów z wyszukiwarek AI, zapewnij dostęp crawlerom wyszukującym, ale decyzję o treningu podejmij osobno, uwzględniając model biznesowy i koszty pobierania treści. Zablokowanie GPTBot nie wymaga wyłączania OAI-SearchBot. Z kolei reguła Google-Extended wpływa także na grounding, więc jej wyłączenie ciągnie za sobą znacznie szersze konsekwencje.

Analiza wpływu blokowania botów AI na ruch (badanie Zhao i Bermana)

Uzasadnienie blokady botów AI często opiera się na obawie przed utratą ruchu, jednak twarde dane nakazują ostrożność. Badanie naukowców z Wharton i Rutgers (H. Zhao, R. Berman, wersja z kwietnia 2026) przeanalizowało realne skutki zablokowania crawlerów GenAI w pliku robots.txt przez dużych wydawców informacyjnych:

  • Co zbadano: Autorzy porównali zmiany w ruchu internetowym witryn, które zablokowały boty AI, z grupą kontrolną wydawców, którzy pozostawili im dostęp (metodologia difference-in-differences).

  • Główny wniosek: Duzi wydawcy, którzy odcięli dostęp botom GenAI, odnotowali spadek tygodniowych wizyt o około 7% w ciągu pierwszych 6 tygodni po wprowadzeniu blokady. Dane Comscore o ruchu ludzi pokazują podobny spadek, około 7%, ale z mniejszą precyzją. Wcześniejsze wersje pracy podawały inne liczby: pierwsza około 23% mniej wizyt miesięcznych w całej próbie, trzecia około 10% mniej wizyt tygodniowych w ciągu 12 tygodni. Różnią się próbą, miarą i oknem czasowym, więc nie są kolejnymi spadkami ani poprawką jednej liczby.

  • Dlaczego ruch mógł spaść? Autorzy nie dowodzą mechanizmu, ale go proponują. Za najbardziej prawdopodobne uznają to, że zablokowany wydawca rzadziej pojawia się jako źródło w odpowiedziach AI, więc słabnie rozpoznawalność marki i spada ruch bezpośredni. Utratę kliknięć z linków w odpowiedziach AI uważają za mniej prawdopodobną główną przyczynę, ponieważ przed majem 2024 ruch z asystentów był niewielki. Dopiero w 2025 roku można powiedzieć, że zjawisko znacząco się rozwijało.

Jak interpretować te wyniki w praktyce?

Wnioski z tego badania nie są uniwersalną prognozą dla każdej strony biznesowej, ponieważ dotyczą specyficznej próby portali informacyjnych, których model opiera się na bieżących wiadomościach. Wyniki te nie dowodzą poza tym, że sama blokada całkowicie eliminuje cytowania (np. z wcześniej pobranych zbiorów treningowych).

Ostatecznie, swoją decyzję o dostępie dla botów opieraj na celach własnego serwisu i stałej analityce, biorąc pod uwagę sezonowość, tempo publikacji nowych treści oraz równoległe zmiany w algorytmach Google.

Robots.txt w Next.js: reguły dla GPTBot, ClaudeBot i crawlerów AI

W App Routerze utwórz plik . Poniższy wariant odmawia dostępu GPTBot i ClaudeBot, pozostawiając crawlerom wyszukującym dostęp poza /api/.

Code
// app/robots.ts
import type { MetadataRoute } from 'next'
 
export default function robots(): MetadataRoute.Robots {
  return {
    rules: [
      {
        userAgent: '*',
        allow: '/',
        disallow: '/api/',
      },
      {
        userAgent: ['GPTBot', 'ClaudeBot'],
        disallow: '/',
      },
    ],
    sitemap: 'https://example.com/sitemap.xml',
  }
}

Oczywiście, by wszystko działało, zastąp example.com własną domeną. Next.js udostępni wynik pod /robots.txt. Ten dedykowany punkt końcowy jest domyślnie cache'owany. Sam fakt napisania go w TypeScripcie nie powoduje automatycznie, że plik będzie renderowany od nowa dla każdego przychodzącego żądania. Więcej przykładów znajdziesz w poradniku o sitemapach i robots.txt w App Routerze.

Google-Extended celowo nie jest w grupie treningowej. Jeśli chcesz odmówić także wykorzystania treści do treningu i groundingu objętego tym tokenem, dodaj osobny wpis { userAgent: 'Google-Extended', disallow: '/' } do tablicy rules.

Robots.txt i egzekwowanie dostępu

Plik robots.txt działa wobec klientów, którzy respektują jego reguły. Tutaj warto przywołać raport Cloudflare z 4 sierpnia 2025, w którym opisano obserwowane zachowania przypisywane Perplexity, w tym zmiany user-agentów i adresów IP przy próbach obejścia ograniczeń. Jest to dowód, że deklaratywna polityka dostępu ma swoje granice i jak łaskawie crawler posłucha deklaracji, to posłucha, ale równie dobrze może tego nie zrobić.

Możemy mieć wpływ na takie sytuacje poprzez , limity żądań i weryfikację botów. Nagłówek User-Agent można z łatwością sfałszować, z kolei sam numer ASN identyfikuje całą sieć, a nie konkretnego klienta. W związku z powyższym przy budowaniu wyjątków w zaporze sieciowej należy opierać się na oficjalnych, aktualnych zakresach IP wydawcy bota lub natywnych mechanizmach weryfikacji tożsamości wdrożonych na poziomie CDN. Treści płatne oraz prywatne bezwzględnie wymagają uwierzytelniania i kontroli dostępu po stronie serwera. WAF wspiera ochronę przed bezprawnym scrapingiem, ale trzeba pamiętać także o właściwej autoryzacji i zagwarantowaniu pełnego zabezpieczenia publicznie udostępnianych tekstów.

Dostępność danych dla agentów AI i systemów RAG

uzupełnia odpowiedź modelu informacjami pobranymi ze źródeł, które mogą być dokumentami, bazami danych, API albo indeksami stron. Dostępność publicznej witryny to jeden z możliwych etapów tego procesu. Dla klienta, który nie wykonuje JavaScriptu, treść pobierana dopiero w przeglądarce pozostanie niewidoczna. W Next.js zadbaj, by tekst artykułu lub oferty trafiał do HTML dzięki albo . Samo 'use client' nie oznacza braku treści w HTML. Przy pierwszym wejściu Next.js wykorzystuje również Client Components do przygotowania HTML na serwerze. Problemem jest na przykład pobieranie tekstu dopiero w useEffect. Szczegóły opisuje dokumentacja renderowania Next.js.

Czytelne nagłówki, listy i znaczniki <article> oraz <main> ułatwiają interpretację dokumentu. Sprawdź też, czy pełna treść nie wymaga kliknięcia lub przewinięcia uruchamiającego dodatkowe pobranie. Ukryty wizualnie fragment obecny w HTML to inna sytuacja niż tekst, którego serwer jeszcze nie zwrócił. Plik llms.txt może pomóc narzędziom, które go obsługują, odnaleźć materiały. Proponowany format nie gwarantuje jednak odczytu, indeksowania ani cytowania strony. Przykłady publikacji opisuję w poradniku o wdrożeniu llms.txt.

Eksperymentalna kategoria przeglądania agentowego w Lighthouse bada m.in. strukturę dostępności, stabilność układu, llms.txt i WebMCP. Dokumentacja wymaga Chrome 150 lub nowszego, a audyty WebMCP dodatkowo udziału w origin trial. Uzyskany wynik pomaga diagnozować obsługę strony przez agentów, chociaż sam w sobie nie oznacza, że strona jest cytowana. Kontekst opisuję we wpisie o przeglądaniu agentowym.

Jak sprawdzić dostęp botów do treści

Po wdrożeniu reguł przeprowadź weryfikację na reprezentatywnym URL-u i to najlepiej na kluczowym artykule lub stronie ofertowej, które mają generować ruch. Poniższy test pozwala przeanalizować odpowiedź serwera w czystym środowisku, z wyłączoną obsługą JavaScriptu. Oczywiście, przed jego uruchomieniem zastąp przykładową domenę i ścieżkę własnym adresem:

Code
curl -sS -L --max-time 30 https://example.com/robots.txt
curl -sS -L --max-time 30 -D headers.txt \
  -A 'OAI-SearchBot' \
  https://example.com/blog/przykladowy-wpis/ -o page.html
  1. Odczytaj reguły robots.txt dla wybranego bota. Sprawdź właściwy host i końcowy adres po przekierowaniach. curl sam nie egzekwuje tych reguł.
  2. Otwórz headers.txt i page.html. Końcowa odpowiedź powinna zawierać oczekiwany dokument. Zwróć uwagę na 403, 429, przekierowanie do logowania i ekran weryfikacji, który może przyjść nawet ze statusem 200. Zweryfikuj, czy treść artykułu renderuje się wprost w znacznikach HTML.
  3. Porównaj wynik z logami CDN lub serwera. Lokalny test zmienia tylko user-agent i nie odtwarza adresu IP prawdziwego crawlera. Potwierdź pochodzenie rzeczywistych żądań według dokumentacji dostawcy, a następnie sprawdź odpowiedzi i reguły WAF, które je obsłużyły.
  4. Oddziel pobrania botów od wizyt ludzi. W analityce monitoruj odsyłacze z platform AI, strony lądowania i wskaźnik konwersji. Uwzględnij przy tym ograniczenia techniczne: brak nagłówka Referer przy części wizyt sprawia, że dane będą niedoszacowane. Pamiętaj też o oznaczeniu w systemie momentu zmiany konfiguracji i zestawialnych przedziałów czasowych.
Audyt techniczny i optymalizacja SEO.
Audyt techniczny SEO

Często zadawane pytania

Czy powinienem blokować boty AI w robots.txt?

Decyzję o blokowaniu bota uzależnij od jego roli. Aby pojawiać się w odpowiedziach wyszukiwarek AI, musisz wpuścić ich roboty indeksujące, ale musisz odrębnie potraktować kwestię trenowania modeli na Twoich danych. Mimo że analizy na rynku mediów wskazują na ryzyko utraty ruchu po blokadzie, nie istnieje jedno uniwersalne podejście odpowiednie dla wszystkich witryn.

Czym różni się GPTBot od ChatGPT-User i OAI-SearchBot?

GPTBot pobiera treść, która może posłużyć do treningu modeli. OAI-SearchBot obsługuje wyszukiwanie w ChatGPT, a ChatGPT-User pobiera strony w ramach działań użytkownika. Blokada GPTBot jest niezależna od ustawień wyszukiwania. Według OpenAI reguły robots.txt mogą nie mieć zastosowania do pobrań inicjowanych przez ChatGPT-User.

Czy blokada Google-Extended zaszkodzi mojej pozycji w Google?

Nie wpływa na obecność ani ranking w Google Search. Google-Extended to token w robots.txt, bez własnego HTTP user-agenta. Kontroluje wykorzystanie treści do treningu przyszłych modeli Gemini i do groundingu, czyli dostarczania kontekstu odpowiedzi w Gemini Apps i Grounding with Google Search na Vertex AI. Blokada ma więc szerszy zakres niż sam trening.

Czy robots.txt realnie powstrzymuje boty AI?

Działa wobec botów respektujących jego reguły. Wymuszenie ograniczeń wymaga kontroli po stronie serwera lub WAF. Treści płatne i prywatne zabezpiecz uwierzytelnianiem oraz sprawdzaniem uprawnień. Sam user-agent nie potwierdza tożsamości bota, ponieważ każdy klient HTTP może go ustawić.

Co to znaczy, że strona ma być dostępna dla systemów RAG?

Systemy RAG zasilają odpowiedzi AI aktualnymi danymi z zewnętrznych zasobów. Dla publicznej witryny kluczowy jest czysty HTML renderowany po stronie serwera — bez konieczności uruchamiania JavaScriptu. Podejścia SSR i SSG w Next.js idealnie realizują ten wymóg, choć to wszystko nie jest gwarancją cytowania w interfejsie AI.

Jak w Next.js wygenerować robots.txt z regułami dla botów AI?

Utwórz app/robots.ts i wyeksportuj funkcję zwracającą obiekt MetadataRoute.Robots z tablicą rules. Next.js udostępni wynik pod /robots.txt. Ten specjalny Route Handler jest domyślnie cache'owany, chyba że użyjesz API czasu żądania lub konfiguracji wymuszającej działanie dynamiczne.

O autorze

Maciej Sala

Maciej Sala — konsultant technologiczny produktów cyfrowych i web developer z bogatym doświadczeniem w marketingu internetowym oraz SEO. Na co dzień pracuje z Reactem, Next.js i TypeScriptem, a ostatnio także z Astro i narzędziami do automatyzacji procesów AI. Sprawnie łączy perspektywę produktową z praktycznym podejściem do kodu. Przez kilka lat był związany z branżą gier wideo jako project manager i game designer. Absolwent historii na Uniwersytecie Jagiellońskim oraz studiów podyplomowych z marketingu internetowego na AGH w Krakowie. Po godzinach trenuje na siłowni, maluje figurki i rozwija własne projekty.

Pomagam przekładać takie tematy na konkretne wdrożenia w frontendzie, SEO, analityce i procesie produktowym.

Skontaktuj się ze mną
LH.pl – Hosting Mango

Biblioteka wiedzy na temat Next.js

Czytaj dalej

Zobacz więcej wpisów
Plik llms.txt w Next.js i Astro: wdrożenie i format

Systemy AI pozyskują treści na kilka sposobów. Korzystają z indeksów wyszukiwania, automatycznych crawlerów, danych treningowych oraz pobrań uruchamianych przez użytkownika. Każdy z tych mechanizmów ma inne zasady i ograniczenia. Propozycja llms.txt próbuje rozwiązać węższy problem: udostępnia zwięzły, wyselekcjonowany indeks treści narzędziom, które świadomie obsługują ten format podczas pracy z witryną.

Maciej Sala

Maciej Sala

Founder StriveLab

Jak modele AI oceniają wiarygodność i wybierają źródła

Model językowy korzysta z wzorców poznanych podczas treningu i materiałów dostarczonych do odpowiedzi, ale nie ma niezawodnego sposobu odróżniania prawdy od fałszu. W wyszukiwaniu AI Twoja treść musi przejść dwa sita: najpierw system musi uzyskać do niej dostęp, potem wybrać ją spośród materiałów pasujących do pytania. Samo cytowanie nie oznacza jeszcze, że system sprawdził prawdziwość informacji. Ten tekst opisuje oba etapy i oddziela sygnały potwierdzone od zaleceń, których wpływ na cytowania pozostaje niepewny.

Maciej Sala

Maciej Sala

Founder StriveLab

Audyt techniczny SEO: co obejmuje w 2026 roku?

To, że strona otwiera się w przeglądarce, nie oznacza jeszcze, że robot wyszukiwarki jest w stanie bez przeszkód pobrać jej treść, poprawnie ją zinterpretować i ostatecznie włączyć do indeksu. Audyt techniczny SEO służy właśnie do weryfikacji tych krytycznych warunków. Pozwala on zidentyfikować fundamenty wymagające naprawy i wyznaczyć właściwe priorytety, zanim przejdziemy do rozbudowy treści oraz pozyskiwania linków.

Maciej Sala

Maciej Sala

Founder StriveLab

LH.pl – Cloud Server 1C4G