Wat een AI-crawler wel en niet doet
Geen enkele AI-crawler voert JavaScript uit. Niet OpenAI's OAI-SearchBot, niet Anthropic's ClaudeBot, niet PerplexityBot. Ze lezen de ruwe HTML-broncode van een pagina, en verder niets. Onafhankelijke logmetingen tonen dat consistent: ClaudeBot haalt weliswaar in ongeveer een kwart van de gevallen ook JavaScript-bestanden op, maar voert ze nooit uit, exact het onderscheid dat Google zelf beschrijft in zijn documentatie over JavaScript en SEO.
Googlebot doet dat anders. Die rendert een pagina wel, met een vertraging die meestal een tiental seconden duurt en soms uren. Bingbot rendert grotendeels mee. Voor klassieke Google-zoekresultaten maakt JavaScript dus meestal weinig uit. Voor wat ChatGPT, Claude en Perplexity citeren, maakt het alles uit.
Ook de derde OpenAI-crawler, ChatGPT-User, die een pagina ophaalt op het moment dat een gebruiker er expliciet naar vraagt, doet dat zonder JavaScript uit te voeren.
Wat dit concreet betekent voor je site
Alles wat pas verschijnt nadat JavaScript is uitgevoerd, bestaat niet voor deze crawlers. Een reviewwidget van Trustindex of Trustpilot die reviews via een script inlaadt: onzichtbaar. Een tabblad dat pas content toont na een klik: onzichtbaar. Een accordeon die uitklapt met JavaScript: onzichtbaar, tenzij hij server-side gerenderd is. Tekst die pas laadt zodra je scrollt: onzichtbaar.
Net die inhoud wil je geciteerd krijgen: reviews, veelgestelde vragen, praktijkkennis. Staat die enkel in een JS-widget, dan mag de content nog zo goed zijn, ze bereikt deze AI-systemen gewoon niet. Daar draait onze AI-SEO dienst rond.
Ook tekst die pas laadt na een klik op "lees meer", een patroon dat veel sites gebruiken om een pagina korter te doen ogen, valt in dezelfde categorie.
Wat een bezoeker ziet tegenover wat een AI-crawler ophaalt
Wat een bezoeker ziet
- Reviews met sterren en tekst
- Een FAQ die uitklapt na een klik
- Tabbladen met inhoud per tab
- Tekst die pas laadt bij het scrollen
Wat een AI-crawler ophaalt
- Een leeg blokje waar het script iets in zet
- Niets, tot iemand er zelf op klikt
- Enkel de eerst zichtbare tab
- Niets onder de vouw
Geen enkele AI-crawler voert JavaScript uit (references/ons bewijsdossier over AI-zichtbaarheid, ).
De inspecteur toont je iets anders dan een AI-crawler ziet
De meeste mensen checken hun site met de inspecteur in Chrome, via rechtsklikken en Inspecteren. Dat scherm toont de pagina na rendering: zoals de browser ze heeft opgebouwd, inclusief alles wat JavaScript er nog heeft bijgezet. Een AI-crawler ziet iets anders.
Gebruik in plaats daarvan Bekijk paginabron, in Chrome met Ctrl+U. Dat toont de ruwe HTML zoals de server ze aflevert, voor er ook maar één regel JavaScript is uitgevoerd. Staat je tekst daar niet in, dan staat ze er voor een AI-crawler ook niet in, hoe mooi ze er in de browser ook uitziet.
Werk je op een Mac, dan gebruik je Cmd+Option+U in plaats van Ctrl+U. De rest van de controle verloopt hetzelfde.
Hoe je het zelf controleert
Open de pagina die je wil laten citeren. Druk Ctrl+U voor de paginabron. Gebruik Ctrl+F om een stuk tekst te zoeken dat je op de pagina ziet staan, bijvoorbeeld een review of een antwoord uit je veelgestelde vragen. Vind je die tekst terug in de broncode, dan zit ze in de server-gerenderde HTML en is ze zichtbaar voor AI-crawlers. Vind je ze niet, dan komt ze via JavaScript binnen en bestaat ze voor ChatGPT, Claude en Perplexity niet.
Doe dit per pagina, niet één keer voor de hele site. Een homepage kan perfect in orde zijn terwijl een dienstenpagina met een los ingeladen FAQ-blok alsnog onzichtbaar blijft.
Doe deze test los van hoe snel de pagina laadt. Een trage pagina die alles server-side aanlevert, is voor een AI-crawler nog altijd beter dan een snelle pagina die op JavaScript leunt.
Voorbeeld: reviews die niet bestaan voor ChatGPT
Een aannemer plaatst zijn Google-reviews via een widget zoals Trustindex, die de reviews met JavaScript ophaalt en toont. In de browser ziet dat er prima uit: sterren, namen, tekst. In de paginabron staat vaak niets van dat alles, enkel een leeg blokje waar het script straks iets in zet.
Voor een AI-systeem dat een vraag beantwoordt over betrouwbare aannemers in de regio, bestaan die reviews dus niet. Wil je dat een review wel meetelt, zet ze dan ook als gewone tekst op de pagina zelf, niet enkel in de widget.
Sommige reviewwidgets bieden wel een instelling om een deel van de tekst vooraf statisch mee te leveren, als vangnet voor wie geen JavaScript uitvoert. Vraag daar expliciet naar bij de leverancier van de widget.
Voorbeeld: praktijkkennis verstopt in een accordeon
Een boekhouder zet twintig veelgestelde vragen in een uitklapbare lijst onderaan zijn dienstenpagina, met antwoorden uit eigen ervaring. In Elementor rendert zo'n accordeon meestal gewoon server-side, dus die tekst staat al in de broncode voor er iets wordt aangeklikt. Bij een aparte FAQ-plugin of een op maat gebouwd component is dat niet gegarandeerd.
Controleer dit dus per widget, niet per bouwer. Elementor-accordeons zijn doorgaans in orde, maar reviewwidgets en losse feed-integraties van derden meestal niet.
Twijfel je, vraag dan aan wie de site bouwde of de plugin "server-side rendering" ondersteunt, of test het gewoon zelf via paginabron.
Wat je hieraan kan doen
Loop de pagina's na die je wil laten citeren en check ze stuk voor stuk via paginabron. Staat cruciale tekst enkel in een widget van een derde partij, overweeg dan om die tekst ook rechtstreeks in de pagina te zetten, als gewone HTML.
Voor een fotograaf betekent dat de tekst van reviews letterlijk op de pagina, niet enkel via een los blok. Voor een verhuurbedrijf betekent het dat de voorwaarden en veelgestelde vragen in de pagina zelf staan, niet achter een knop die pas iets ophaalt na een klik.
Dat hoeft geen grote technische ingreep te zijn. Vaak volstaat het om de belangrijkste zinnen ook als gewone tekst naast de widget te zetten, in plaats van de widget helemaal te vervangen. Zo pakken we dat zelf ook aan, zoals we beschrijven in hoe wij als bureau werken.
Wat dit niet garandeert
Zorgen dat je tekst in de broncode staat, is een voorwaarde, geen garantie. Het maakt je content zichtbaar voor deze crawlers, het betekent niet dat ChatGPT, Claude of Perplexity je daarna ook citeert of vermeldt. Welke bron een AI-systeem uiteindelijk gebruikt, hangt van veel meer af dan enkel leesbaarheid.
Dit is dus geen belofte van een vermelding in ChatGPT. Het is de minimale voorwaarde om ooit in aanmerking te komen. Zonder dit werk je met content die voor een groot deel van de AI-zoekmachines gewoon niet bestaat, hoe goed ze ook is. Wat er in AI-zoekmachines wel en niet verandert, lees je in dit artikel.
“Wat in JavaScript zit, bestaat niet voor ChatGPT. Punt.”
Veelgestelde vragen
Werkt Google hetzelfde als ChatGPT hierin?
Nee. Googlebot rendert JavaScript wel, met een vertraging die kan oplopen tot uren. Voor klassieke Google-zoekresultaten is een JS-widget dus minder een probleem, voor AI-crawlers wel.
Moet ik alle JavaScript van mijn site halen?
Nee. Het gaat om de content die je geciteerd wil zien, zoals reviews en veelgestelde vragen. De rest van de site mag gerust met JavaScript werken.
Hoe vaak moet ik dit controleren?
Elke keer je een nieuwe widget toevoegt of een pagina herwerkt. Eén controle bij de lancering volstaat niet als er nadien nog dingen veranderen.