robots.txt en AI: GPTBot blokkeren blokkeert ChatGPT niet
Toen OpenAI in 2023 de naam van zijn trainingsbot publiceerde, voegden duizenden sites twee regels toe aan hun robots.txt-bestand: User-agent: GPTBot en daarna Disallow: /. Velen denken sindsdien dat ChatGPT hun pagina's niet meer kan lezen. Dat klopt niet, en de verwarring komt voort uit iets wat de AI-aanbieders juist helder documenteren: ze sturen geen bot, maar meerdere, elk met een eigen rol en een eigen token. De ene blokkeren blokkeert de andere niet.
Meerdere bots, meerdere rollen, bij elke aanbieder
Bij OpenAI, volgens zijn documentatie over de bots:
- GPTBot verzamelt pagina's die kunnen dienen om de modellen te trainen. Dit is de enige bot waarvan de blokkade beschermt tegen gebruik voor training.
- OAI-SearchBot voedt de index van de zoekfunctie die in ChatGPT is ingebouwd. Hem blokkeren haalt je pagina's uit de zoekresultaten van ChatGPT, en dus uit de citaties die daaruit voortkomen.
- ChatGPT-User haalt een specifieke pagina op wanneer een gebruiker daarom vraagt in een gesprek, bijvoorbeeld door een URL te plakken of een vraag te stellen die een leesactie uitlokt. Deze bot doorkruist het web niet op eigen houtje.
Anthropic past dezelfde scheiding toe, beschreven op zijn helppagina over de bots: ClaudeBot voor de training, Claude-SearchBot voor de zoekindex, Claude-User voor het ophalen op verzoek van een gebruiker. Perplexity documenteert PerplexityBot (index) en Perplexity-User (ophalen op verzoek) in zijn documentatie over de crawlers.
Google en Apple: een controletoken los van de bot
Google werkt anders. Googlebot blijft de enige bot die pagina's crawlt voor de zoekmachine, en het zijn diezelfde pagina's die de AI Overviews voeden. De controle over het gebruik voor training loopt via een apart token, Google-Extended, dat geen bot is maar een richtlijn die Googlebot leest, zoals de lijst van veelvoorkomende crawlers van Google uitlegt. Google preciseert dat dit token niets verandert aan de indexering van de pagina's. Apple doet hetzelfde met Applebot-Extended, een token dat in zijn ondersteuningsartikel over Applebot is gedocumenteerd en dat het gebruik voor training regelt zonder Applebot zelf te raken.
Aan dat lijstje moet CCBot worden toegevoegd, de bot van Common Crawl, waarvan de open archieven als grondstof hebben gediend voor talrijke modellen. CCBot blokkeren is de breedste hefboom tegen training door partijen die geen eigen bot hebben.
De tabel met tokens, en wat elke blokkade inhoudt
| robots.txt-token | Aanbieder | Rol | Als je het blokkeert |
|---|---|---|---|
| GPTBot | OpenAI | Training | Geen gebruik voor training, citatie blijft mogelijk |
| OAI-SearchBot | OpenAI | Zoekindex van ChatGPT | Je pagina's verdwijnen uit de resultaten en citaties van ChatGPT |
| ChatGPT-User | OpenAI | Lezen op verzoek van een gebruiker | Een gebruiker kan je pagina niet meer laten lezen in een gesprek |
| ClaudeBot / Claude-SearchBot / Claude-User | Anthropic | Dezelfde drie rollen | Dezelfde gevolgen, aan de kant van Claude |
| PerplexityBot / Perplexity-User | Perplexity | Index / lezen op verzoek | Verdwijnen uit de antwoorden van Perplexity / lezen onmogelijk |
| Google-Extended | Controletoken voor de training van Gemini | Geen effect op de zoekmachine, noch op de AI Overviews | |
| Applebot-Extended | Apple | Controletoken voor de training | Geen effect op Applebot (Siri, Spotlight) |
| CCBot | Common Crawl | Open archief | Verwijdering uit toekomstige archieven, niet uit de oude |
Wat robots.txt wel en niet kan
Het protocol is intussen gestandaardiseerd in RFC 9309. Drie van de regels daarin verklaren de meeste verrassingen:
- Het bestand wordt alleen op de root van de host gelezen. Het is de host en niet het domein: een robots.txt op voorbeeld.nl geldt niet voor blog.voorbeeld.nl, dat een aparte host is. Een robots.txt in een submap, bijvoorbeeld onder een pad /blog/ dat elders wordt gehost, wordt nooit geraadpleegd. De richtlijnen daarin, inclusief de sitemapverklaringen, zijn onzichtbaar voor alle bots. Bij een mediasite die als subpad van een hoofdsite draait, is het robots.txt van de hoofdsite bepalend.
- De meest specifieke groep wint, en vervangt de generieke groep. Een groep User-agent: GPTBot die alleen Disallow: / bevat, erft de regels van de groep User-agent: * niet. Verbood de generieke groep bepaalde facetten of bestanden, dan heeft de met naam genoemde bot daar weer toegang toe. Dat is een veelgemaakte fout als je maandenlang groepen per bot op elkaar stapelt.
- Het bestand is een instructie, geen barrière. De hier genoemde aanbieders verklaren zich eraan te houden. Een partij die haar naam niet bekendmaakt, ontsnapt aan elke regel op naam. Om echt te blokkeren moet je ingrijpen op het niveau van de server of de firewall, met de neveneffecten die we beschrijven in het artikel over de blinde vlek van blokkades aan de edge.
Welk beleid kiezen
De beslissing is redactioneel voordat ze technisch is. Er zijn drie houdbare posities:
- Alles openzetten. De site aanvaardt zowel training als citatie. Dat is de standaardpositie van een mediasite die zichtbaarheid zoekt, ook in de modellen zelf.
- Training weigeren, citatie aanvaarden. Je blokkeert GPTBot, ClaudeBot en CCBot en verbiedt Google-Extended en Applebot-Extended, terwijl je OAI-SearchBot, Claude-SearchBot, PerplexityBot en de "User"-bots doorlaat. Dat is de positie van een uitgever die geciteerd wil worden zonder de modellen gratis te voeden.
- Alles dichtzetten. De site ziet af van zichtbaarheid in de AI's. Dat is verdedigbaar voor een intranet of betaalde content, niet voor een mediasite die wil wegen op een SERP of een gegenereerd antwoord.
De tweede positie is wijdverbreid bij persuitgevers, en wordt vaak slecht toegepast: in de praktijk hebben velen in één beweging alles verboden wat "GPT" of "Claude" bevatte, dus ook de zoek- en leesbots. Het resultaat is een site die ontbreekt in de gegenereerde antwoorden, zonder dat iemand in het team dat heeft besloten.
Controleren in plaats van aannemen
De controle bestaat uit twee handelingen. Eerst het robots.txt-bestand herlezen zoals het op de root wordt geserveerd, token voor token, met de tabel hierboven ernaast. Daarna de serverlogs openen om te zien welke bots er echt komen, hoe vaak, en welke een 403 of 404 krijgen. Een AI-bot die nooit in de logs voorkomt, is niet per se afwezig: hij kan eerder in de keten door een firewall zijn tegengehouden, voordat hij de server bereikte. Die controle wordt stap voor stap beschreven in "Een access log lezen in 30 minuten".
Aan de kant van Google levert Search Console een robots.txt-rapport dat de laatste door Googlebot gelezen versie toont, de ophaaldatum en eventuele parsefouten; de introductie van robots.txt door Google beschrijft het gebruik ervan. Bij de andere aanbieders bestaat daar geen equivalent van: de logs zijn bepalend, en een handmatige test met de user-agent van elke bot blijft de zekerste manier om na te gaan wat de server werkelijk antwoordt.
Een mediasite die geciteerd wil worden, kan niet vertrouwen op een bestand dat twee jaar geleden is geschreven. Tokens veranderen, bots vermenigvuldigen zich, en een regel die op een dag in 2023 uit voorzorg is toegevoegd, kan in 2026 elke aanwezigheid in de antwoorden van AI's kosten.
Geschreven door
Yann Léguillon
Voorzitter van Mazette, de uitgever van Joornal. Hij begeleidt bedrijven die hun eigen medium opbouwen: redactionele structuur, zichtbaarheid in zoekmachines en in AI-antwoorden, productie op schaal.