Gereedschap / Gevonden worden in AI
Waarom ChatGPT jouw site niet kan lezen
De reden dat AI-zoekmachines een lege pagina zien, en de vijf dingen die je er zelf aan doet.
- SoortStappenplan
- Tijd40 minuten
- Voor wieIedereen die een site heeft gebouwd met React, Vue of een AI-tool
- Fases4
Bouw je met Lovable, Bolt, v0 of gewoon React met Vite, dan krijg je een single page app. Die stuurt naar elke bezoeker eerst een vrijwel lege pagina, en daarna vult JavaScript hem. Voor een mens is dat onzichtbaar. Voor een groot deel van de AI-crawlers is het het einde van het verhaal: die zien wat er in de eerste HTML staat, en dat is bij jou een lege div.
Deze handleiding is geschreven om als werkopdracht te dienen. Neem hem in zijn geheel mee naar Cursor, Claude Code of waar je ook bouwt, en werk hem fase voor fase af.
Waar het misgaat
Fase 0Vaststellen
Tien seconden, en daarna weet je of je dit probleem hebt. Dit is de enige controle die telt.
# Haal de kale HTML op, zonder JavaScript uit te voeren: curl -s https://jouwsite.nl | head -100 # Staat je eigen tekst erin? Zoek op een zin die op de pagina hoort te staan: curl -s https://jouwsite.nl | grep -i "een zin van je homepage" # Geen resultaat, maar wel een regel als <div id="root"></div>? # Dan zien de crawlers die geen JavaScript draaien precies dat: niets.
Fase 1De tekst in de HTML krijgen
Dit is de kern en de rest is bijzaak. Doe alleen dit als je maar één ding doet.
Bij Next.js gebeurt dit vanzelf met server-side rendering. Blijf je bij Vite, gebruik dan prerendering: een bouwstap die je pagina's één keer draait en het resultaat als echte HTML wegschrijft. Vanaf dat moment leest elke crawler mee, ook de crawlers die geen JavaScript draaien.
Verwacht bij Vite plus Supabase dat je build lokaal slaagt en op Vercel faalt met iets als Supabase URL is not defined. Dat komt doordat je configuratiemodule tijdens het prerenderen draait zonder omgevingsvariabelen. Zet die variabelen ook in de buildomgeving.
Fase 2De vier dingen daarna
Pas zinvol als fase 1 klaar is.
- Geef elke pagina een eigen title en description, in de HTML zelf. Een site waar elke pagina dezelfde titel heeft wordt als één pagina behandeld.
- Zet er structured data in, in JSON-LD. Voor een dienstverlener minimaal Organization en WebSite, voor artikelen Article met auteur en datum, voor vragen FAQPage.
- Schrijf zo dat één alinea op zichzelf een antwoord is. AI-antwoorden citeren losse passages, geen hele pagina's. Begin met het antwoord en leg daarna pas uit.
- Laat de crawlers binnen. Controleer robots.txt op regels die GPTBot, ClaudeBot, PerplexityBot of CCBot blokkeren, en kijk of je Cloudflare-instellingen ze niet als bot tegenhouden.
Het bestand dat je in vijf minuten maakt
Er is een afspraak in opkomst, llms.txt: één bestand in de wortel van je site dat in gewone taal vertelt wat je doet en waar de belangrijkste pagina's staan. Het is geen standaard die iedereen leest en het lost het lege-pagina-probleem niet op, maar het kost vijf minuten.
# Jouw Bedrijf > Eén zin over wat je doet en voor wie. Jouw Bedrijf helpt [wie] met [wat]. Gevestigd in [plaats], actief in [gebied]. ## Belangrijkste pagina's - [Wat we doen](https://jouwsite.nl/diensten): overzicht van de diensten en wat ze kosten - [Over ons](https://jouwsite.nl/over): wie erachter zit - [Contact](https://jouwsite.nl/contact): telefoon, mail en adres ## Feiten - Opgericht: [jaar] - KvK: [nummer] - Werkgebied: [gebied] - Prijzen vanaf: [bedrag]
Fase 3Controleren
Bewijs voordat je zegt dat het klaar is. Dezelfde curl als in fase 0, plus drie extra.
- Je eigen tekst staat in de kale HTMLDezelfde grep als in fase 0, nu met een treffer. Dit is de meting die telt.
- Twee verschillende pagina's hebben twee verschillende titelscurl -s https://jouwsite.nl/ | grep -o '<title>.*</title>' en hetzelfde voor een andere pagina. Zijn ze gelijk, dan werkt je per-pagina-meta niet.
- Je robots.txt blokkeert geen AI-crawlerscurl -s https://jouwsite.nl/robots.txt en zoek op GPTBot, ClaudeBot, PerplexityBot en CCBot. Staat er een Disallow bij, dan is dat een keuze die je bewust moet maken.
- Een linkvoorbeeld in WhatsApp of LinkedIn toont de juiste titelPlak je eigen link in een gesprek met jezelf. Die bots draaien geen JavaScript, dus dit is de eerlijkste praktijkproef die er is.
- Je JSON-LD is geldigPlak de bron van je pagina in de Rich Results Test van Google. Een fout in je schema betekent dat het genegeerd wordt.
Alles hierboven in één keer, inclusief de fases, de SQL en de controlestap.
Werkt dit, maar wil je het niet zelf doen?
Dit blad is gratis en blijft gratis. Wil je dat het bij jou automatisch draait in plaats van met de hand, dan bouw ik dat. Beschrijf in vijf vragen wat er vastloopt en stuur het adres van je app mee; binnen één werkdag heb je mijn antwoord op papier.
Vertel wat er vastloopt