# Ce que voit GPTBot curl -s -A "Mozilla/5.0 (compatible; GPTBot/1.1)" https://votre-site.com \ | sed 's/<[^>]*>//g' | wc -w # Comparaison : ce que voit un navigateur (rendu JS) # Ouvrez la page dans Chrome, F12, console : document.body.innerText.trim().split(/\s+/).length
Si l'écart entre les deux chiffres dépasse 80%, vos visiteurs IA voient un site fantôme.
| Approche | Pour quel cas | Effort |
|---|---|---|
| Prérendu build-time | Site vitrine, landing, documentation | Faible : script de prerender dans le pipeline CI |
| SSR hybride | Application avec pages critiques (accueil, pricing) | Moyen : framework avec rendu serveur (Next.js, Remix) |
| Double canal machine-first | Tous les sites, en complément | Faible : llms.txt + routes .md |
| Prérendu à la demande (Puppeteer) | Contenu dynamique servi aux crawlers uniquement | Moyen : middleware + service de rendu |
Dans package.json :
{
"scripts": {
"build": "vite build && node prerender.mjs"
}
}
Le script prerender.mjs charge la page construite dans un headless Chrome et remplace <div id="root"></div> par le HTML rendu :
import { readFileSync, writeFileSync } from 'fs'
import puppeteer from 'puppeteer'
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('file://' + resolve('dist/index.html'), {waitUntil: 'networkidle0'})
const html = await page.content()
writeFileSync('dist/index.html', html)
await browser.close()
Par défaut, le App Router rend côté serveur. Les pièges classiques qui cassent l'extraction :
'use client' sur toute l'application → le HTML initial revient quasi vide.useEffect → absentes du HTML servi.Un fichier /llms.txt à la racine indexe votre documentation pour les agents :
# Nom du projet > Description en une phrase. ## Docs - [Guide principal](https://votre-site.com/docs) - [Tarifs](https://votre-site.com/pricing) ## Pages comparatives - [vs concurrent A](https://votre-site.com/vs/a.html)
Ajoutez des routes .md miroir de vos pages clés : même contenu en Markdown pur, servi avec Content-Type: text/markdown.
Vérifiez automatiquement votre score d'extraction IA après chaque déploiement.
Tester mon domaine Budget et délais attendus