Un auditeur déterministe rend chaque page comme le ferait un agent génératif, extrait les signaux que les LLM exploitent, les note selon un barème fixe, et certifie la conformité GEO. Entrée : une URL. Sortie : un score /100, un rapport actionnable, un badge.
100%
disponibilité (SLA)
<100ms
chargement critique
0dép.
NPM / runtime externe
2/2
confiance binaire
01
Pipeline d'audit
Quatre étapes déterministes. Mêmes entrées → mêmes sorties. Aucune heuristique probabiliste dans la notation.
01
Crawl agent-first
Rendu sans exécution superflue, en se déclarant comme GPTBot / ClaudeBot. Capture du DOM réellement servi, des en-têtes et des fichiers .well-known.
INURL + robots.txtOUTDOM rendu, headers, statut
02
Extraction sémantique
Parsing de l'arbre : repères HTML5, hiérarchie de titres, ratio texte/balises, JSON-LD, OpenGraph, llms.txt, flux. Normalisation en faits atomiques.
INDOM renduOUT27 faits normalisés (SQLite)
03
Notation pondérée
Chaque fait est confronté à une règle et reçoit un statut (ok / warn / fail) et un poids. Le score GEO est la somme pondérée, bornée à 100.
IN27 faitsOUTscore /100 + statuts
04
Certification & non-régression
Émission du rapport, du badge et du PDF. Ré-audit à chaque déploiement ; toute baisse de score déclenche une alerte.
INscore + historiqueOUTbadge, PDF, webhook
02
Modèle de score
Six familles de signaux, poids fixes, total 100. Le barème est public : pas de boîte noire.
Famille de signaux
Identifiant
Poids
Lisibilité du DOM par les LLM
dom.readability
22
Structure sémantique HTML5
html5.semantic
20
Données structurées (JSON-LD)
schema.jsonld
18
Manifeste agents (llms.txt)
agents.llms_txt
14
Découverte (WebFinger / RSS)
agents.discovery
14
Crawlabilité IA (robots / headers)
robots.ai_agents
12
# Notation déterministe — pseudocodedef score(facts):
total = 0for rule in RULES: # barème versionné, figé
f = facts[rule.id]
total += rule.weight * f.ratio # ratio ∈ [0,1]return min(100, round(total))
03
Points de contrôle
Ce que l'auditeur inspecte concrètement, par famille.
Lisibilité du DOM dom.readability
Rendu serveur (SSR) vs contenu injecté par JavaScript
Ratio texte / balises et profondeur du DOM
Attributs lang, alt, ordre de lecture
Sémantique HTML5 html5.semantic
Repères main, article, aside, nav
Hiérarchie des titres, h1 unique
Tableaux avec thead / th
Données structurées schema.jsonld
JSON-LD Organization, Product, Offer
OpenGraph complet, canonical, sitemap
Validité des champs requis par type
Découverte & accès agents.discovery
/llms.txt présent et structuré
/.well-known/webfinger, RSS / Atom
robots.txt par agent IA, X-Robots-Tag
04
L'Invariant — le niveau aéronautique
Pour ce produit, la sécurité n'est pas une fonctionnalité : c'est le produit. Le standard ne peut pas avoir deux poids, deux mesures.
✈ Standard de confiance — binaire
Le prix n'achète pas plus de sécurité. Il achète plus de service.
La confiance est binaire : soit elle existe, soit elle n'existe pas. Le standard de qualité que nous appliquons à notre propre site — 100 % de disponibilité, <100 ms — est le socle minimal pour tous les clients. Pas d'exception, pas de palier « low-cost » sur la fiabilité.
Crash · artisan
Son site est ignoré par les IA. Il perd 30 % de son chiffre d'affaires. Pour lui, c'est la faillite.
Crash · grande marque
Produits absents des recommandations, ou une hallucination donne un faux prix. C'est une crise de réputation mondiale.
Dans les deux cas, c'est un crash. La mort est différente, mais tout aussi certaine. Ce qui varie avec le prix, c'est le volume, le service et la proximité stratégique — jamais le niveau de sécurité.
« Je ne vends pas un audit. Je vends la garantie qu'ils ne crasheront pas. »