robots.txt mówi crawlerom, czego nie wolno im pobierać, i jest standardem internetowym (RFC 9309), który każdy duży crawler, łącznie z crawlerami AI, deklaruje, że respektuje. llms.txt podpowiada, co warto przeczytać, i jest propozycją z llmstxt.org, której żaden duży dostawca AI nie zobowiązał się czytać. Pytanie "llms.txt a robots.txt" nie brzmi więc "którego potrzebuję". To szlaban kontra lista lektur, a szlaban zawsze wygrywa.

Jeśli masz zapamiętać z tego artykułu jedną rzecz, niech to będzie to ostatnie zdanie. Większość zamieszania, które widzę, bierze się z traktowania tych plików jako alternatyw albo, co gorsza, z edytowania jednego, podczas gdy drugi po cichu go unieważnia.

Najważniejsze wnioski
  • robots.txt to Robots Exclusion Protocol, ustandaryzowany jako RFC 9309 we wrześniu 2022. llms.txt to propozycja społeczności z września 2024 bez formalnego statusu.
  • Żaden z plików niczego nie egzekwuje. Samo RFC 9309 mówi, że reguły nie są formą autoryzacji dostępu. Prawdziwe blokowanie dzieje się na serwerze albo w CDN.
  • Jeśli robots.txt blokuje GPTBot, posłuszny GPTBot nie pobierze też Twojego llms.txt. Lista lektur traci sens.
  • Crawler stosuje się tylko do najbardziej szczegółowej grupy User-agent, która do niego pasuje. Dodaj grupę dla GPTBot, a przestanie czytać Twoje reguły dla *.
  • Google-Extended decyduje o użyciu treści do treningu i groundingu Gemini, nie o wyszukiwarce. Zablokowanie go nie usuwa Cię z AI Overviews.

Cel: szlaban i lista lektur

robots.txt służy do ograniczania. Istnieje od 1994 roku, leży pod /robots.txt na każdym hoście, a jego zadanie to powiedzieć "nie pobieraj tych ścieżek". Nic nie mówi o tym, co jest dobre. Idealnie skonfigurowany robots.txt może pozwalać na wszystko.

llms.txt służy do kuratorowania. To plik markdown pod /llms.txt, który wymienia strony uznane przez Ciebie za najprzydatniejsze, z krótkimi opisami, żeby model językowy mógł pominąć nawigację i banery cookies. Nic nie mówi o pozwoleniach. Format opisałem w poradniku, jak zrobić llms.txt, więc sekcję o składni trzymam krótko.

Różne zadania. Pokrywają się dokładnie w jednym miejscu: oba są pobierane przez boty z katalogu głównego domeny. I tu zaczynają się kłopoty.

Składnia obok siebie, z przykładowymi plikami

Oto realistyczny robots.txt dla małej firmy usługowej z UE, która chce widoczności w wyszukiwaniu AI, ale nie chce, żeby crawlowano strefę konta i wewnętrzną wyszukiwarkę:

# robots.txt dla example.com

        User-agent: *
        Disallow: /account/
        Disallow: /search
        Allow: /

        User-agent: GPTBot
        Disallow: /account/
        Disallow: /search

        # Wypisuje z treningu i groundingu Gemini. Wyszukiwarki i AI Overviews to nie dotyczy.
        User-agent: Google-Extended
        Disallow: /

        Sitemap: https://example.com/sitemap.xml
        

Reguły działają liniami: User-agent otwiera grupę, Disallow i Allow przyjmują prefiksy ścieżek, a kiedy do URL-a pasują dwie reguły, wygrywa najdłuższa (najbardziej szczegółowa) ścieżka. Sitemap nie należy do podstawowych reguł RFC 9309, ale Google, Bing i główne crawlery AI go czytają.

Zauważ, że grupa GPTBot powtarza blokady. To celowe, a dlaczego, wyjaśniam niżej przy historii Michała.

A oto pasujący llms.txt:

# Example Analytics

        > Niezależny monitoring GTM i GA4 dla firm z UE. Abonament od 390 EUR miesięcznie, konsultacje godzinowe, darmowy audyt GTM.

        ## Usługi
        - [Monitoring GTM](https://example.com/gtm.md): Cotygodniowe automatyczne kontrole tagów, poprawki w 48 godzin
        - [Audyty GA4](https://example.com/ga4-audit.md): Zakres, rezultaty i cena

        ## Artykuły
        - [Lista kontrolna Consent Mode v2](https://example.com/consent-mode.md): Jak sprawdzić sygnały zgody w Tag Assistant

        ## Optional
        - [Archiwum realizacji](https://example.com/cases.md): Starsze opisy projektów
        

Jedyny wymagany element to tytuł #. Podsumowanie w cytacie i sekcje ## z linkami to konwencje z propozycji, a sekcja Optional oznacza materiał, który narzędzie może pominąć, gdy brakuje kontekstu. Nie ma odpowiednika Disallow, nie ma kierowania do user agentów, nie ma wildcardów. To dokument, a nie zestaw reguł.

Kto czyta który plik

Tu drogi obu plików naprawdę się rozchodzą.

robots.txt czyta praktycznie każdy dobrze wychowany crawler: Googlebot, Bingbot i crawlery AI GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, CCBot, Applebot. OpenAI, Anthropic, Google i Perplexity dokumentują swoje user agenty i deklarują, że ich crawlery stosują się do robots.txt. RFC 9309 mówi też, że crawlery nie powinny trzymać pliku w cache dłużej niż 24 godziny, więc zmiana zwykle działa w ciągu doby.

Jest haczyk z fetcherami uruchamianymi przez użytkownika. Kiedy człowiek prosi chatbota o otwarcie konkretnego URL-a, część dostawców traktuje to inaczej niż crawlowanie. Perplexity dokumentuje, że Perplexity-User co do zasady ignoruje robots.txt, bo pobranie zainicjował człowiek. Sprawdzaj aktualną stronę o botach u każdego dostawcy, zamiast zakładać, że reguły dla crawlerów przechodzą automatycznie.

Warto też wiedzieć, że duzi dostawcy dzielą boty według zadania, więc jedna grupa w robots.txt nie obejmuje całego ruchu danego dostawcy:

Dostawca Crawler treningowy Crawler wyszukiwania / indeksu Fetcher na żądanie użytkownika
OpenAI GPTBot OAI-SearchBot ChatGPT-User
Anthropic ClaudeBot Claude-SearchBot Claude-User
Perplexity (brak osobnego) PerplexityBot Perplexity-User
Google token Google-Extended, bez osobnego bota Googlebot nie dotyczy wyszukiwarki

Dlatego "zablokuj AI" to trzy decyzje, a nie jedna. Zablokowanie GPTBot trzyma Cię z dala od danych treningowych OpenAI. Nie powstrzymuje OAI-SearchBot przed indeksowaniem Cię dla wyszukiwania w ChatGPT, a właśnie ten firma zwykle chce zachować.

llms.txt nie ma udokumentowanych czytelników wśród wielkiej czwórki. W moim artykule o dowodach na llms.txt opisuję, co powiedział Google (że go nie używa) i co pokazują logi serwera (sporadyczne pobrania przez crawlery treningowe, prawie nic od fetcherów na żywo). Potwierdzeni czytelnicy to narzędzia deweloperskie, do których człowiek celowo wkleja URL.

Egzekwowanie: żaden z plików nikogo nie zatrzyma

Ludzie traktują robots.txt jak zamek. To kartka na drzwiach.

RFC 9309 mówi wprost, że reguły "nie są formą autoryzacji dostępu". Crawler, który je ignoruje, nie trafia na żadną barierę techniczną, ryzykuje tylko reputację i, coraz częściej, problemy prawne. Cloudflare publicznie oskarżył w 2025 Perplexity o crawlowanie stron, które go zablokowały, przy użyciu niezadeklarowanych user agentów. Cokolwiek sądzisz o tym sporze, pokazuje on granicę: robots.txt działa na crawlery, które same chcą się stosować.

llms.txt egzekwuje jeszcze mniej, bo nawet nie próbuje. Niczego nie zablokuje ani na nic nie pozwoli.

Jeśli potrzebujesz prawdziwej blokady, rób ją tam, gdzie odpowiada się na żądania:

  • Reguły CDN albo WAF dopasowujące user agenta i zweryfikowane zakresy IP (OpenAI publikuje zakresy dla swoich botów).
  • Kontrola crawlerów AI w Cloudflare, która blokuje na brzegu sieci kodem 403, niezależnie od tego, co mówi robots.txt.
  • Uwierzytelnianie dla wszystkiego, co nie powinno być publiczne. Jeśli coś jest wrażliwe, linia Disallow tylko reklamuje tę ścieżkę.

Jak na siebie wpływają (i błędy, które ciągle znajduję)

Dwie historie, obie z ostatniego roku.

Ewa prowadzi sklep z kosmetykami na Shopify, z Cloudflare z przodu. Spędziła dwa dni na budowaniu wersji markdown i starannego llms.txt, a potem zapytała mnie, dlaczego w cytowaniach AI nic się nie zmieniło.

Logi odpowiedziały w pięć minut: 1940 żądań od GPTBot w 30 dni, każde zakończone kodem 403. Rok wcześniej deweloper włączył w Cloudflare blokowanie botów AI i o tym zapomniał.

Jej robots.txt mówił "zapraszamy". Brzeg sieci mówił "wynocha". llms.txt nie został dostarczony ani razu.

Naprawa to jeden przełącznik. Dwa dni pracy nad llms.txt nie poszły na marne, ale przez rok leżały za zamkniętymi drzwiami.

Michał prowadzi katalog części B2B z 6200 URL-ami produktów. Dodał grupę User-agent: GPTBot z Disallow: /koszyk/ i założył, że jego dotychczasowe reguły dla *, blokujące /admin-preview/, dalej obowiązują. Nie obowiązywały.

Zgodnie z RFC 9309 crawler stosuje się do jednej, najbardziej szczegółowej grupy pasującej do jego nazwy, a resztę ignoruje. Dla GPTBot plik pozwalał teraz na wszystko poza koszykiem, łącznie z 340 stronami podglądu. Naprawa: skopiuj do nazwanej grupy każdą regułę, którą chcesz zachować.

Ogólne zasady interakcji:

  1. robots.txt jest sprawdzany pierwszy. Jeśli /llms.txt jest zablokowany dla danego bota, posłuszny bot nigdy go nie przeczyta.

  2. Odblokowanie samego /llms.txt nie ma sensu. Disallow: / plus Allow: /llms.txt pozwala botowi przeczytać listę lektur, a potem zabrania wejścia na każdą stronę z tej listy.

  3. Wpisanie zablokowanego URL-a do llms.txt niczego nie nadpisuje. Blokada zostaje.

  4. Zablokowanie Google-Extended nie dotyka AI Overviews. Te pochodzą z wyszukiwarki, crawlowanej przez Googlebota. Żeby się z nich wypisać, potrzebujesz kontroli w stylu nosnippet, które szkodzą też zwykłym wynikom.

Ten ostatni punkt to powód, dla którego uważałbym z szablonami "zablokuj całe AI" kopiowanymi z forów. Część z nich blokuje boty, które dają Ci widoczność w wyszukiwaniu, a przepuszcza te, które biorą tylko dane do treningu.

Nie wiesz, które crawlery AI w ogóle docierają do Twoich stron? AI Visibility crawluje Twoją stronę tak jak LLM i pokazuje, co jest dostępne i czytelne, strona po stronie.

llms.txt a robots.txt w skrócie

robots.txt llms.txt
Cel Ograniczyć, co pobierają crawlery Wskazać, co warto przeczytać
Status Standard internetowy, RFC 9309 (2022) Propozycja z llmstxt.org (2024)
Lokalizacja /robots.txt, osobno dla hosta i protokołu /llms.txt w katalogu głównym domeny
Format Linie User-agent, Disallow, Allow Markdown: tytuł, podsumowanie, listy linków
Kierowanie do konkretnych botów Tak, przez grupy user agentów Nie
Czytany przez Google, OpenAI, Anthropic, Perplexity Tak, wszyscy dokumentują zgodność Brak publicznej deklaracji od kogokolwiek
Egzekwowanie Dobrowolne stosowanie się Żadne, to treść doradcza
Limit rozmiaru Crawlery muszą sparsować co najmniej 500 KiB Nieokreślony
Co, jeśli go brak Wszystko jest dozwolone Nic się nie zmienia
Czy może zaszkodzić Tak, zły Disallow może wyciąć całe sekcje z indeksu Praktycznie nie

W ostatni wiersz bym się wpatrywał. robots.txt to plik, który z dnia na dzień może kosztować Cię ruch. llms.txt to ten, nad którym ludzie spędzają czas.

Od którego zacząć

Powiem wprost: jeśli masz godzinę, poświęć 55 minut na robots.txt i 5 na llms.txt.

Oto kolejność, której używam, sprawdzając stronę klienta:

  • Pobierz /robots.txt i przeczytaj każdą grupę. Szukaj nazwanych grup dla AI, które przypadkiem wyłączają Twoje reguły dla *.
  • Sprawdź, czy w CDN albo WAF nie ma blokady botów AI sprzecznej z plikiem.
  • Przeszukaj 30 dni logów pod kątem GPTBot, OAI-SearchBot, ClaudeBot i PerplexityBot i spójrz na kody odpowiedzi. Ściana 403 albo 429 znaczy, że problem nie leży w pliku.
  • Zdecyduj dla każdego bota, czy chcesz crawlery treningowe, wyszukiwania, czy oba. To osobne user agenty nie bez powodu.
  • Dopiero wtedy opublikuj albo zaktualizuj llms.txt i upewnij się, że każdy URL w nim jest dozwolony.

Podstawy, które naprawdę dają cytowania, czyli odpowiadanie od razu i sprawdzalne fakty, opisałem w artykule o LLM SEO. Żaden plik tekstowy ich nie zastąpi.

Najczęstsze pytania

Jaka jest różnica między llms.txt a robots.txt? robots.txt mówi crawlerom, których ścieżek nie wolno im pobierać, i jest formalnym standardem (RFC 9309), którego trzymają się główne crawlery. llms.txt to lista lektur w markdown dla modeli językowych, propozycja, której żaden duży dostawca AI nie zobowiązał się czytać.

Czy llms.txt zastępuje robots.txt? Nie. Robią co innego, a dla każdego posłusznego crawlera robots.txt ma pierwszeństwo. Jeśli bot jest tam zablokowany, nie przeczyta ani llms.txt, ani stron, które ten plik wymienia.

Jak zablokować GPTBot w robots.txt? Dodaj grupę z User-agent: GPTBot i Disallow: /. Jeśli chcesz zachować widoczność w wyszukiwaniu ChatGPT, a wypisać się z treningu, zablokuj GPTBot i zostaw dostęp dla OAI-SearchBot, bo OpenAI dokumentuje je jako osobne crawlery.

Czy zablokowanie Google-Extended usuwa mnie z AI Overviews? Nie. Google-Extended decyduje, czy Twoja treść jest używana do treningu i groundingu Gemini, a Google mówi, że nie wpływa to na wyszukiwarkę. AI Overviews są częścią wyszukiwarki i korzystają ze stron crawlowanych przez Googlebota.

Czy robots.txt jest prawnie wiążący? To konwencja techniczna, a nie umowa, i RFC 9309 mówi, że reguły nie są autoryzacją dostępu. Niektóre jurysdykcje traktują maszynowo odczytywalne zastrzeżenia jako istotne przy eksploracji tekstów i danych (unijne prawo autorskie przewiduje takie zastrzeżenie), ale nie polegaj na samym pliku przy ochronie czegokolwiek wrażliwego.

Czy mogę wpisać do llms.txt strony zablokowane w robots.txt? Możesz, ale nic to nie da. Posłuszne crawlery stosują się do robots.txt i tych URL-i nie pobiorą, więc trzymaj oba pliki w zgodzie.

Co dalej

Otwórz teraz swój /robots.txt i przeczytaj go tak, jak zrobiłby to GPTBot: znajdź najbardziej szczegółową pasującą grupę, zignoruj resztę i zobacz, co zostało. Potem sprawdź, czy CDN nie ma blokady, która go przebija. To dziesięć minut i to ta część tematu, która naprawdę zmienia wyniki.

Potem opublikuj llms.txt, jeśli chcesz. Jest tani. Tylko nie oczekuj, że lista lektur otworzy drzwi, które zamknął Twój szlaban. Jeśli wolisz, żeby ktoś przejrzał z Tobą pliki, logi i reguły CDN, to jest projekt indywidualny.


Źródła i dalsza lektura - RFC 9309: Robots Exclusion Protocol (IETF) - Propozycja llms.txt (llmstxt.org) - Wprowadzenie do robots.txt (Google Search Central) - Crawlery i user agenty OpenAI (OpenAI)

Czy Twój robots.txt po cichu blokuje crawlery AI, na których Ci zależy?

AI Visibility sprawdza, do czego crawlery AI mają dostęp na Twojej stronie, wskazuje zablokowane boty i strony, których model nie odczyta, strona po stronie. Darmowy plan, jedna strona.

Sprawdź widoczność w AI
Piotr Litwa

Piotr Litwa

GTM & Analytics Specialist

Piotr monitoruje kontenery GTM i usługi GA4 dla firm w całej Europie, wyłapując problemy z trackingiem, zanim zaczną kosztować konwersje. 120+ klientów, 10+ lat, zero outsourcingu.