Przejdź do treści

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

GPTBot, ClaudeBot czy PerplexityBot? Zobacz, jak w robots.txt kontrolować dostęp agentów AI do Twoich danych i jak przez przypadek nie zablokować RAG.

Maciej Sala

Founder StriveLab

7 min czytaniaOpublikowano 30 maja 2026 (Aktualizacja 6 lipca 2026)

Klasyczne techniczne , czyli sitemapy, adresy kanoniczne, czysty oczywiście nadal obowiązuje, ale doszła nowa warstwa wymagająca decyzji: który z botów AI ma prawo czytać Twoją treść i w jakim celu. To nie jest pytanie czysto techniczne, lecz biznesowe, ponieważ część tych botów kieruje do Ciebie ruch i cytowania, a część jedynie pobiera treść do treningu, nie dając nic w zamian.

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

Nie można traktować AI jako jednej kategorii botów, podczas gdy w rzeczywistości na Twoją stronę trafiają boty o trzech różnych celach. Takie rozróżnienie jest ważne, by podjąć sensowną decyzję. Czy coś z tym robimy czy nie.

  1. Pierwsza kategoria to boty trenujące model: pobierają treść, by uczyć na niej modele i nie dają nic w zamian. Należą tu GPTBot (OpenAI), Google-Extended (Gemini) i ClaudeBot (Anthropic).
  2. Kategoria druga to boty indeksujące pod AI search. Budują indeks pod funkcję wyszukiwania, która może Cię cytować z linkiem i kierować do Ciebie realny ruch: OAI-SearchBot, Claude-SearchBot, PerplexityBot.
  3. Trzecia to boty pobierające na żądanie: odwiedzają stronę, bo użytkownik poprosił asystenta o jej sprawdzenie — praktycznie odwiedziny w Twoim imieniu: ChatGPT-User, Claude-User.

Anthropic jest tu wzorcowym przykładem, ponieważ rozdzielił swoją aktywność na trzy osobne user-agenty (ClaudeBot, Claude-User, Claude-SearchBot) właśnie po to, byś mógł podejmować decyzje dla określonego celu. Blokowanie „Anthropic" w całości oznaczałoby odcięcie się także od cytowań i odwiedzin na żądanie, czyli od ruchu.

Czy warto blokować boty AI w robots.txt?

Hurtowa blokada zwykle Ci szkodzi, a fundamentem tego wniosku są badania opublikowane pod koniec 2025 roku przez naukowców z Rutgers Business School i The Wharton School. Pokazały one, że wydawcy blokujący crawlery AI przez robots.txt odnotowali spadek ruchu o około 23% miesięcznie, w tym także ruchu prawdziwych użytkowników, przy czym blokada nie obniżała niezawodnie cytowań przez systemy AI. O ile możemy do badań naukowych i ich jakości podchodzić w różny sposób — są lepsze i gorsze — to te powinny nam dać jakiś punkt zaczepienia w dyskusji.

Sensowne podejście powinno być selektywne. Rozważ blokadę botów trenujących (jeśli masz powód, by nie zasilać treningu — np. treść premium), a zostaw otwarte boty wyszukujące i odwiedzające na żądanie, ponieważ to właśnie one kierują do Ciebie ruch i cytowania. Najczystszy, bezpieczny ruch to zablokowanie Google-Extended, które kontroluje wyłącznie trenowanie Gemini i nie wpływa na ranking w Google Search (ważne!), ponieważ za niego odpowiada osobny Googlebot.

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

W App Routerze robots.txt generujesz dynamicznie przez plik , definiując osobne reguły dla różnych user-agentów:

Code
// app/robots.ts
import type { MetadataRoute } from 'next'
 
export default function robots(): MetadataRoute.Robots {
  return {
    rules: [
      // Klasyczne wyszukiwarki i boty AI-search — pełny dostęp
      {
        userAgent: '*',
        allow: '/',
        disallow: '/api/',
      },
      // Boty trenujące — przykład selektywnej blokady
      {
        userAgent: ['GPTBot', 'Google-Extended', 'ClaudeBot'],
        disallow: '/',
      },
    ],
    sitemap: 'https://example.com/sitemap.xml',
  }
}

W tym przykładzie wyszukiwarki i boty AI-search (OAI-SearchBot, PerplexityBot, Claude-SearchBot, łapane przez *) mają pełny dostęp, a boty czysto trenujące są zablokowane. To jeden z wielu możliwych kompromisów, ponieważ równie dobrze możesz zostawić wszystko otwarte, jeśli zależy Ci wyłącznie na maksymalnej widoczności. Ważne, że decyzja jest świadoma i odnosi się do danej kategorii bota.

Robots.txt dla botów AI to deklaracja, która nie działa jak zapora

Trzeba to powiedzieć wprost, ponieważ łatwo o złudne poczucie kontroli. Plik robots.txt egzekwuje tylko ten, kto chce go respektować. Innymi słowy to taka umowa dżentelmeńska, że "dobrze wychowane" boty (GPTBot, Googlebot) będą ją przestrzegać. O tym, że nie zawsze tak jest, piszę poniżej.

W sierpniu 2025 roku Cloudflare opublikowało raport pokazujący, że Perplexity korzystał z niedeklarowanych crawlerów rotujących user-agenty i adresy IP, by omijać dyrektywy no-crawl. To pokazuje granicę robots.txt: jeśli ktoś naprawdę chce pobrać Twoją treść, po prostu zignoruje zasady i plik tekstowy go nie powstrzyma.

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

Druga stawka technicznego SEO dla AI to nie blokowanie, ale upewnienie się, że boty, które chcesz wpuścić, w ogóle widzą Twoją treść. Tutaj wraca jak bumerang fundamentalny problem renderowania.

Wiele i botów pobierających stronę na żądanie nie wykonuje pełnego renderowania JavaScriptu albo robi to nie tak jak trzeba. Jeśli kluczowa treść pojawia się dopiero po wykonaniu JS (jak w czystym ), agent może zobaczyć pustą powłokę zamiast odpowiedzi. To ta sama bolączka, która latami szkodziła SEO aplikacji klienckich, a teraz dotyczy też silników AI.

Rozwiązanie leży po stronie architektury: treść powinna renderować się na serwerze. W Next.js przez Server Components, SSR albo SSG, by istotny tekst był już w źródłowym HTML, zanim bot w ogóle dotknie JavaScriptu. Semantyczny HTML robi resztę, czyli czytelną hierarchię nagłówków, sensowne <article> i <main>, właściwe listy (agent parsuje strukturę). Trzecia zasada to by nie chować kluczowej treści za interakcją, czyli wracamy do starej zasady SEO. Jest to istotne dlatego, że to co pojawia się dopiero po kliknięciu albo przy lazy-loadzie, bywa dla bota niewidoczne.

Techniczne SEO dla AI to z jednej strony kontrola dostępu (kogo wpuszczam i po co), a z drugiej dostępność treści (czy wpuszczony bot w ogóle ją zobaczy). Pierwsze robisz w robots.txt i na poziomie sieci, a drugie, w architekturze renderowania. Poza robots.txt istnieje jeszcze jeden plik wpływający na to, co modele AI widzą na Twojej stronie, czyli chodzi o llms.txt. To nie zamiennik robots.txt, obydwa działają na różnych poziomach, ale razem tworzą kompletną warstwę sterowania widocznością. Jak wdrożyć go w Next.js i Astro, opisuję w artykule o llms.txt — wdrożenie i formatowanie.

Od 2026 do tej układanki dochodzi jeszcze warstwa diagnostyczna: Lighthouse sprawdza Przeglądanie Agentowe przez sygnały takie jak accessibility tree, CLS, llms.txt i eksperymentalny WebMCP. To nadal nie jest czynnik rankingowy, ale dobry test, czy wpuszczony agent będzie miał po czym chodzić i czy interfejs nie będzie mu uciekał spod kursora.

Jak poukładać techniczne SEO dla agentów AI w praktyce

Sensowna kolejność wdrożenia dla typowej strony w Next.js zaczyna się od otwartego dostępu — domyślnie wpuszczasz wszystko i blokujesz tylko jeśli jest na to konkretny powód. Jeśli już blokujesz to boty trenujące (GPTBot, Google-Extended), a nie wyszukujące i odwiedzające na żądanie, ponieważ właśnie te drugie kierują do Ciebie użytkowników. robots.txt generujesz przez app/robots.ts, gdzie reguły per userAgent są wersjonowane w repo, a nie ręcznie edytowane. Jednocześnie upewniasz się, że treść żyje w źródłowym HTML — SSR/SSG dla wszystkiego, co ma być widoczne dla agentów i systemów RAG. Twardą blokadę, jeśli naprawdę musisz ją wprowadzić, przenosisz do sieci: WAF lub Cloudflare.

Audyt techniczny i optymalizacja pod kątem SEO i GEO.
Audyt techniczny SEO

Często zadawane pytania

Czy powinienem blokować boty AI w robots.txt?

Zwykle nie warto. Badania z końca 2025 pokazały, że wydawcy blokujący crawlery AI odnotowali ~23% spadek ruchu miesięcznie (wliczając w to ruch rzeczywistych użytkowników), a cytowań przez AI blokada nie ograniczała w 100%. Częściej tracisz widoczność, a nie chronisz realnie treści.

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

To trzy różne boty OpenAI o różnych celach. GPTBot pobiera treść do trenowania modeli. OAI-SearchBot indeksuje strony pod funkcję wyszukiwania w ChatGPT. ChatGPT-User pobiera stronę na żywo, gdy użytkownik poprosi asystenta o jej odwiedzenie. Możesz traktować je osobno, przykładowo zablokować trenowanie (GPTBot), a zostawić otwarte wyszukiwanie i odwiedziny na żądanie, bo te drugie realnie kierują ruch i cytowania do Ciebie.

Czy blokada Google-Extended zaszkodzi mojej pozycji w Google?

Nie. Google-Extended kontroluje wyłącznie wykorzystanie treści do trenowania modeli generatywnych Google (Gemini). Za klasyczne wyszukiwanie i ranking odpowiada Googlebot, który jest osobnym botem. Możesz zablokować Google-Extended, nie tracąc nic w wynikach Search i są to dwie niezależne ścieżki. To jeden z nielicznych przypadków, gdzie blokada trenowania jest bezpieczna dla widoczności.

Czy robots.txt realnie powstrzymuje boty AI?

Tylko te, które go respektują. robots.txt to umowa dżentelmeńska, nie zapora. W sierpniu 2025 Cloudflare opublikowało raport pokazujący, że Perplexity korzystał z niedeklarowanych crawlerów rotujących user-agenty i adresy IP, by omijać dyrektywy no-crawl. Jeśli naprawdę musisz wymusić blokadę, potrzebujesz egzekwowania na poziomie sieci (WAF, reguły Cloudflare, weryfikacja po ASN), czyli sam robots.txt jest tylko deklaracją intencji.

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

Systemy RAG pobierają stronę i wyciągają z niej treść do udzielenia odpowiedzi z kontekstem. Jeśli kluczowa treść pojawia się dopiero po wykonaniu JavaScriptu (jak w czystym SPA), wiele takich systemów jej nie zobaczy albo zobaczy z opóźnieniem. W związku z powyższym, dostępność dla RAG oznacza, że istotna treść jest w źródłowym HTML i zapewniasz ją w Next.js poprzez SSR/SSG i Server Components, a nie przez renderowanie po stronie klienta.

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

Najprościej przez plik app/robots.ts, który eksportuje obiekt konfiguracji. Definiujesz w nim tablicę rules z osobnymi wpisami per userAgent. Możesz mieć jedną regułę dla wszystkich botów, a osobne, ostrzejsze dla GPTBot czy Google-Extended. Next.js wygeneruje z tego poprawny /robots.txt podczas buildu, bez ręcznego utrzymywania pliku statycznego.

O autorze

Maciej Sala

Maciej Sala — Product Manager i Frontend 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 rozwijam własne projekty.

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

Skontaktuj się ze mną

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

Agenty AI, takie jak ChatGPT czy Claude, to nie Googlebot pracujący cierpliwie w nocy, ale narzędzia pracujące w czasie rzeczywistym. Sięgają one, po treść Twojej strony, gdy użytkownik zada pytanie. To stwarza fundamentalny problem, ponieważ działając w krótkim oknie kontekstowym, gubią się w labiryncie nawigacji i JavaScriptu. W odpowiedzi na to wyzwanie powstał llms.txt , czyli nowa mapa dla modeli AI, która prowadzi je na skróty do wartościowej wiedzy.

Maciej Sala

Maciej Sala

Founder StriveLab

Co to jest GEO i jak optymalizować treści pod AI?

Kiedy użytkownik pyta ChatGPT, Perplexity albo Google AI Overviews, coraz częściej dostaje syntetyczną odpowiedź opartą na wielu źródłach. Twoja strona może stać się jednym z takich źródeł, ale wymaga to połączenia dobrego SEO, wiarygodnej treści, czytelnej struktury i technicznej dostępności. GEO opisuje ten zestaw działań z perspektywy systemów generatywnych.

Maciej Sala

Maciej Sala

Founder StriveLab

Next.js Sitemap i robots.txt — automatyczna generacja z App Routera

Next.js App Router oferuje natywne API bez zewnętrznych bibliotek do generowania obu plików. W tym artykule pokazuję, jak zrobić to konwencjami app/sitemap.ts i app/robots.ts , kiedy wystarczy natywne rozwiązanie, a kiedy warto sięgnąć po next-sitemap .

Maciej Sala

Maciej Sala

Founder StriveLab