Crawlers en logs

robots.txt en AI: GPTBot blokkeren blokkeert ChatGPT niet

Drie brede parallelle banden, verschoven en gesegmenteerd, vullen een diepe marineblauwe achtergrond, met korrelige texturen en drukfouten die het stapelen van meerdere filters of afzonderlijke rollen oproepen.

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.

Drie scherpe parallelle banden in verschillende kleuren doorkruisen een petrolblauwe achtergrond, met drukverschuivingen en korrelige textuur, wat het onderscheid tussen de verschillende soorten toegangs- en crawlcontroles voor webrobots suggereert.

De tabel met tokens, en wat elke blokkade inhoudt

robots.txt-tokenAanbiederRolAls je het blokkeert
GPTBotOpenAITrainingGeen gebruik voor training, citatie blijft mogelijk
OAI-SearchBotOpenAIZoekindex van ChatGPTJe pagina's verdwijnen uit de resultaten en citaties van ChatGPT
ChatGPT-UserOpenAILezen op verzoek van een gebruikerEen gebruiker kan je pagina niet meer laten lezen in een gesprek
ClaudeBot / Claude-SearchBot / Claude-UserAnthropicDezelfde drie rollenDezelfde gevolgen, aan de kant van Claude
PerplexityBot / Perplexity-UserPerplexityIndex / lezen op verzoekVerdwijnen uit de antwoorden van Perplexity / lezen onmogelijk
Google-ExtendedGoogleControletoken voor de training van GeminiGeen effect op de zoekmachine, noch op de AI Overviews
Applebot-ExtendedAppleControletoken voor de trainingGeen effect op Applebot (Siri, Spotlight)
CCBotCommon CrawlOpen archiefVerwijdering 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:

  1. 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.
  2. 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.
  3. 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.
Gelaagde parallelle banden, in het midden onderbroken, op een nachtblauwe achtergrond met een geel accent, wat het onderscheid tussen redactionele standpunten en een onbedoelde breuk in de consistentie oproept.

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.

Marineblauwe parallelle banden doorkruisen een felle oranje achtergrond, onderbroken door kleine onregelmatige inkepingen; de compositie roept de analyse op van sporen die in serverlogs zijn achtergelaten of ontbreken.
Yann Léguillon

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.