Robots.txt — kompletny przewodnik 2026 (z przykładami i AI bots)
Robots.txt to plik tekstowy w root domeny, który steruje dostępem crawlerów do Twojej strony. W 2026 to nie tylko narzędzie SEO — to pierwsza decyzja w strategii widoczności w AI. Niewłaściwa konfiguracja = strona znika z Google albo, coraz częściej, znika z odpowiedzi ChatGPT i Perplexity, bo sami zablokowaliśmy im wejście. My w ARDURA Lab patrzymy na ten plik przez pryzmat GEO, nie tylko klasycznego SEO — i to zmienia odpowiedź na pytanie „blokować czy nie".
TL;DR — Robots.txt
| Co | Detale |
|---|---|
| Lokalizacja | https://example.com/robots.txt (zawsze root) |
| Format | Plain text, UTF-8, max 500 KB |
| Główna składnia | User-agent: + Disallow: + Allow: |
| AI bots 2026 | GPTBot, ClaudeBot, Google-Extended, CCBot, PerplexityBot |
| Sitemap directive | Sitemap: https://example.com/sitemap.xml |
| Pułapka #1 | Disallow: / na produkcji = strona znika |
| Pułapka #2 | Robots.txt nie blokuje indeksacji (tylko crawling) |
Czym jest robots.txt?
Robots.txt to plik instrukcji dla crawlerów (bots) — programów, które przeszukują internet w celach indeksacji, scraping, treningu AI etc.
Plik znajduje się ZAWSZE w root domeny:
https://example.com/robots.txt
Nie w subdomenie, nie w folderze. Crawler najpierw czyta robots.txt, potem decyduje co crawlować.
Podstawowa składnia
User-agent: [nazwa bota lub *]
Disallow: [path do zablokowania]
Allow: [path do dopuszczenia mimo wcześniejszego Disallow]
Przykład 1: Allow all (default)
User-agent: *
Disallow:
Pusty Disallow = wszystko dozwolone. Albo brak robots.txt = to samo.
Przykład 2: Block all
User-agent: *
Disallow: /
❌ NIGDY na produkcji. Cała strona zniknie z Google w 2-4 tygodnie.
Przykład 3: Block admin areas
User-agent: *
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /private/
Disallow: /search?
Standardowa konfiguracja: blokuj panele admin i wewnętrzne searche.
Przykład 4: Block specific bot
User-agent: BadBot
Disallow: /
User-agent: *
Allow: /
Bot „BadBot" zablokowany, wszyscy inni dopuszczeni. Pamiętaj że zła wola ignoruje robots.txt.
AI Bots 2026 — kompletna lista
W 2026 era AI search wymaga decyzji: czy AI ma czytać Twoje treści?
OpenAI (ChatGPT)
User-agent: GPTBot
Disallow: /
Blokuje:
- Trening ChatGPT na Twoim contencie
- ChatGPT Plus z włączonym browsingiem (czasem)
NIE blokuje:
- ChatGPT search retrieval (cytowanie po Bing index)
- OAI-SearchBot (nowy retrieval bot)
Pełna blokada OpenAI:
User-agent: GPTBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
Anthropic (Claude)
User-agent: ClaudeBot
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: Claude-Web
Disallow: /
Google AI
User-agent: Google-Extended
Disallow: /
Ważne: Google-Extended kontroluje TYLKO trening Bard/Gemini. NIE kontroluje Googlebota (klasyczny search). Możesz mieć Google-Extended: Disallow + Googlebot: Allow — zwykle jest w SERP, ale nie trenuje Gemini.
Common Crawl (training data)
User-agent: CCBot
Disallow: /
Common Crawl to dataset, na którym trenuje większość modeli (GPT, Claude, LLaMa, etc.). Blokowanie CCBot = mniej widoczności w przyszłych modelach. To ten wiersz najczęściej odradzamy klientom usuwać z Disallow — CCBot to jeden z fundamentów tego, czy model w ogóle „wie", że dana firma istnieje.
Perplexity
User-agent: PerplexityBot
Disallow: /
Pełna blokada AI (zachowując Google search)
User-agent: GPTBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: *
Allow: /
Strategiczne pytanie 2026: blokować AI czy nie?
W audytach to pytanie prawie nigdy nie pada w tej formie. Realne pytanie brzmi inaczej: czym różni się blokada bota trenującego od blokady bota wyszukującego. To rozróżnienie zmienia całą decyzję. Blokada GPTBot, ClaudeBot czy Google-Extended ogranicza zbieranie danych treningowych. Blokada OAI-SearchBot czy PerplexityBot wycina firmę z cytowań na żywo — z odpowiedzi, które użytkownik dostaje dzisiaj, nie z modelu, który powstanie za rok. Łatwo mieć na myśli to pierwsze, a zrobić jedno i drugie naraz.
Naszą własną odpowiedź da się otworzyć w przeglądarce pod arduralab.com/robots.txt: reguła dla * to Allow na całą stronę z wyłączeniem /api/ i /cdn-cgi/, a GPTBot, ClaudeBot, PerplexityBot, Google-Extended i OAI-SearchBot są dopuszczone imiennie, plus wskazana sitemapa i host. Imiennie, bo decyzja wypisana z nazwy jest decyzją — brak wpisu to tylko domniemanie.
Wyjątki są wąskie i konkretne — nie generyczny strach przed „kradzieżą treści":
Blokować, jeśli:
- Twój treść to twój moat (np. autorskie badania)
- Konkurujesz z AI (Twój produkt = subscription do treści)
- Boisz się utraty ruchu na rzecz zero-click AI
NIE blokować, jeśli:
- Chcesz cytacji w AI Overviews / ChatGPT (główny kierunek 2026)
- Twój biznes opiera się na świadomości brandu
- Twój treść to lead-magnet, nie produkt sam w sobie
Trend 2026: większość firm NIE blokuje, bo cytacja w AI > strach przed kradzieżą. Wyjątki: NYTimes, Reuters, mniejsze paywall publishers. Poza tą wąską grupą wydawców z realnym paywallem, blokada AI botów to w naszej ocenie decyzja, którą firmy podejmują z lęku, nie ze strategii — a lęk to zły doradca przy konfiguracji robots.txt.
Jak to wygląda u firm, które audytowaliśmy — trzy przypadki, trzy różne wybory. Producent B2B świadomie blokował GPTBot, ClaudeBot i Google-Extended, dorzucał sygnał ai-train=no i nie miał llms.txt; jego bezpośredni konkurent z tego samego miasta i z tym samym produktem miał llms.txt i wpuszczał AI. Biuro projektowe blokowało w ogóle nie w robots.txt, tylko na poziomie serwera: ClaudeBot i GPTBot dostawały HTTP 403 (stabilnie w 3 na 3 próbach, przy kontroli na trzech innych domenach), podczas gdy Claude-SearchBot, OAI-SearchBot i PerplexityBot przechodziły z kodem 200 — a zapytany o tę firmę silnik AI sam napisał, że nie mógł wejść na jej stronę. Dystrybutor z branży wellness rozegrał to najbardziej świadomie: zablokował osiem botów treningowych, przepuścił wyszukujące i jako jedyny w swojej kategorii miał llms.txt, podczas gdy u obu badanych rywali llms.txt zwracał 404 przy zerowych blokadach.
Sitemap directive
W robots.txt można zadeklarować sitemap:
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-products.xml
Sitemap: https://example.com/sitemap-blog.xml
Bot odkrywa sitemap automatycznie. Można też submitować w GSC, ale directive w robots.txt to szybsza ścieżka dla wszystkich botów (nie tylko Google).
Crawl-delay (rzadko stosowane)
User-agent: *
Crawl-delay: 10
Mówi botom: poczekaj 10 sekund między requestami. Google ignoruje crawl-delay (używa swoich algorytmów). Bing, Yandex, Baidu respektują.
Stosuj tylko, jeśli serwer dusi się pod crawlowaniem.
Allow + Disallow konflikty
Co, jeśli mamy:
Disallow: /products/
Allow: /products/featured/
Crawler wybiera bardziej specyficzną regułę. /products/featured/some-product jest dozwolony (Allow specyficzniejszy), /products/regular-product zablokowany.
Najczęstsze błędy
Błąd 1: Plik nie w root
❌ https://example.com/seo/robots.txt (nie root)
✅ https://example.com/robots.txt
Błąd 2: Disallow path bez slash
❌ Disallow: admin
✅ Disallow: /admin/
Bez slash crawler nie wie czy to katalog czy substring.
Błąd 3: Wildcards bez wsparcia
Disallow: /*?utm
Większość botów (w tym Google) wspiera * jako wildcard, ale nie wszystkie. Test w GSC.
Błąd 4: Robots.txt return 5xx
Jeśli robots.txt zwraca 5xx (server error), bots traktują to jako „nie wiemy, więc nie crawlujemy". Strona znika z Google.
Zawsze sprawdzaj curl -I https://example.com/robots.txt — powinno być 200.
Błąd 5: Robots.txt return 4xx
404 na robots.txt = bot zakłada „brak ograniczeń" (allow all). Nie jest tak źle jak 5xx, ale lepiej mieć plik (nawet pusty).
Błąd 6: Konflikt z meta robots
<!-- Na stronie /private -->
<meta name="robots" content="noindex" />
# robots.txt
Disallow: /private
Konflikt: robots.txt blokuje crawl, więc Google nigdy nie odczyta meta noindex! Strona może pojawiać się w indeksie (URL-only) bez treści.
Fix: jeśli chcesz noindex, nie blokuj w robots.txt — pozwól crawlowi, niech zobaczy meta noindex.
Błąd 7: Blokowanie CSS/JS
User-agent: *
Disallow: /css/
Disallow: /js/
Google potrzebuje CSS/JS żeby renderować stronę. Blokada = Google widzi unstyled HTML, traktuje jako thin/broken treść. Nigdy nie blokuj zasobów potrzebnych do renderowania.
Robots.txt dla różnych CMS
WordPress
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /xmlrpc.php
Disallow: /trackback/
Disallow: /comments/feed/
Disallow: /?s=
Disallow: /search?
Sitemap: https://example.com/sitemap_index.xml
Shopify
Shopify nie pozwala edytować robots.txt natywnie (do 2026 — sprawdź aktualne API). Workaround: Shopify Theme settings → SEO → robots.txt.liquid customization.
Next.js
W Next.js generuj robots.txt przez /app/robots.ts (App Router) lub /pages/robots.txt:
import { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
disallow: '/api/',
},
sitemap: 'https://example.com/sitemap.xml',
}
}
Tak właśnie powstaje nasz własny plik: konfiguracja żyje w app/robots.ts, a jej wynik możesz porównać pod arduralab.com/robots.txt — łącznie z imiennym dopuszczeniem botów AI opisanym wyżej.
Weryfikacja
- Otwórz w przeglądarce:
https://example.com/robots.txt— powinno wyświetlać plik - GSC → Settings → Crawling → robots.txt — Google pokaże ostatnio odczytaną wersję
- GSC URL Inspection dla konkretnej strony — sekcja „Crawl" powie, czy bot jest blokowany
- Test online: Google Search Console robots.txt Tester (legacy ale działa)
- Sonduj pełnymi ciągami User-Agent — to lekcja z naszej własnej wpadki
Przy sondowaniu blokad zrobiliśmy błąd metodologiczny, który warto opisać, bo jest łatwy do powtórzenia. Pierwsza sonda używała skróconych tokenów User-Agent (ClaudeBot/1.0) i dostawała w odpowiedzi 200 — z czego wyszedł fałszywy wynik „brak blokady". Dopiero oficjalne, pełne ciągi UA ujawniły 403. Jeśli sprawdzasz, czy ktoś blokuje bota AI, użyj dokładnie tego ciągu, którym ten bot się przedstawia; inaczej sprawdzasz coś innego, niż myślisz, i wyciągasz wniosek odwrotny do prawdziwego.
Podsumowanie
Robots.txt 2026:
- Plik w root + 200 status code
- Allow all dla Googlebota (jeśli chcesz indeksacji)
- AI bots policy — decyzja strategiczna (blokować czy nie)
- Sitemap directive dla szybszego discovery
- Nie blokuj CSS/JS/zasobów renderowania
- Konflikt robots.txt vs meta noindex = używaj jednego, nie obu
To prosty plik, ale jego błędna konfiguracja może zniszczyć całe SEO w 2 tygodnie. Zawsze testuj zmiany w robots.txt w staging przed produkcją. I zanim wpiszesz kolejną linię Disallow dla bota AI „na wszelki wypadek" — zapytaj, czy naprawdę chcesz być niewidoczny w miejscu, gdzie Twoi klienci coraz częściej szukają odpowiedzi.
Audyt SEO technicznego — sprawdzimy obecny robots.txt + zalecenia AI bots policy dla Twojej branży.
Chcesz osiągnąć podobne rezultaty? Zamów bezpłatną wycenę.