Méthodologie

Tout chiffre affiché sur ce site est mesuré, daté et reproductible. Cette page décrit comment.

Dernière campagne de mesure : août 2026

1. Constitution de l'échantillon

Source : la liste Tranco (classement de popularité de domaines, agrégé sur 30 jours), identifiant de liste 46W9X. Elle est filtrée sur les domaines en .fr du top 1 million.

Voir la liste Tranco 46W9X

Tranco classe par popularité de trafic. Les domaines .fr du top 1M surreprésentent donc les médias et les e-commerces établis. Pour ne pas noyer les petits sites, le tirage est stratifié en trois tranches de rang, et les agrégats sont toujours publiés par tranche — jamais en chiffre global. La tranche 500k–1M est celle que nous mettons en avant : c'est la plus proche d'un site de TPE/PME.

Tirage aléatoire à graine fixe « geoanalyze-benchmark-2026 » (générateur mulberry32). À liste Tranco identique, le tirage est strictement reproductible.

Un domaine est retenu seulement si sa page d'accueil répond en HTTP 200 avec du HTML. Les domaines écartés sont comptés par motif ci-dessous. Notez le biais : les sites qui bloquent les robots inconnus (403, 429) sont exclus par construction.

TrancheTirésRetenusÉcartésÉcartement (strict)Écartement hors injoignablesPubliéeMotifs d'écartement
rangs 500k–1M42530012129 %20 %ouierreur réseau / DNS : 46 · pare-feu applicatif / anti-bot (403, 429, 503) : 43 · délai dépassé (10 s) : 12 · robots.txt interdit : 10 · autre statut HTTP ≠ 200 : 4 · page vide : 3 · réponse non HTML : 3
rangs 100k–500k43630013231 %22 %ouipare-feu applicatif / anti-bot (403, 429, 503) : 68 · erreur réseau / DNS : 46 · délai dépassé (10 s) : 7 · autre statut HTTP ≠ 200 : 6 · robots.txt interdit : 3 · page vide : 2
rangs 1–100k45630015334 %27 %non (> 25 % hors injoignables)pare-feu applicatif / anti-bot (403, 429, 503) : 95 · erreur réseau / DNS : 40 · délai dépassé (10 s) : 10 · robots.txt interdit : 5 · autre statut HTTP ≠ 200 : 2 · boucle de redirection : 1

Ce que l'échantillon n'est pas : un échantillon des « entreprises françaises ». C'est un échantillon de sites .fr issus du top 1M Tranco, ni plus ni moins.

Taux d'écartement strict = domaines écartés ÷ domaines tirés (hors surplus), tous motifs confondus.

Taux d'écartement hors injoignables = même calcul en retirant du numérateur et du dénominateur les domaines qui ne répondent pas au DNS ou au réseau : un domaine qui n'existe plus est inéligible, ce n'est pas une non-réponse. Un 403 de pare-feu, un délai dépassé ou un robots.txt interdisant restent comptés comme écartements.

Règle de publication : une tranche dont le taux d'écartement hors injoignables dépasse 25 % n'est pas affichée sur le site. Ses résultats restent visibles ci-dessous, marqués « non publiée », pour transparence.

2. Collecte

  • Le robots.txt de chaque domaine est lu en premier et respecté : si notre agent est interdit sur « / », le domaine est écarté sans autre requête.
  • User-Agent explicite : GEOanalyzeBench/1.0 (+https://geoanalyze.fr/fr/methodologie; benchmark de visibilité IA, contact via la page)
  • Au plus 2 requêtes par seconde tous domaines confondus, avec un délai aléatoire supplémentaire.
  • Délai d'attente de 10 secondes par requête, une seule tentative de reprise.
  • Seule la page d'accueil est analysée, plus robots.txt, llms.txt et sitemap.xml.
  • Aucun appel à une API de modèle de langage pendant le benchmark : uniquement les vérifications techniques, identiques à celles de l'audit produit (même code).

6437 requêtes HTTP au total, 69 minutes de collecte.

3. Les 13 critères vérifiés

Chaque critère est testé de façon déterministe sur la page d'accueil. Le tableau donne, pour chaque critère, ce qui est concrètement vérifié, pourquoi cela influence la citation, sa pondération réelle et le taux de conformité mesuré par tranche.

CritèrePoidsConformes
rangs 500k–1M
Conformes
rangs 100k–500k
Conformes
rangs 1–100k
GPTBot autorisé
Test : Le robots.txt ne contient pas de « Disallow: / » pour GPTBot (ni via le groupe « * » sans exception).
Impact sur la citation : GPTBot est le robot d'exploration d'OpenAI. Bloqué, le contenu ne peut pas entrer dans l'index utilisé par ChatGPT.
15 / 10091 %92 %84 %
ClaudeBot autorisé
Test : Même vérification pour ClaudeBot (Anthropic).
Impact sur la citation : Sans accès, Claude ne peut ni lire ni citer les pages.
10 / 10092 %92 %87 %
PerplexityBot autorisé
Test : Même vérification pour PerplexityBot.
Impact sur la citation : Perplexity s'appuie sur son propre index ; un blocage exclut le site de ses réponses.
10 / 10098 %98 %91 %
llms.txt présent
Test : GET /llms.txt répond 200 avec un contenu non-HTML.
Impact sur la citation : Fichier proposé (llmstxt.org) pour donner aux modèles un résumé structuré du site. Standard émergent, adoption non confirmée par les fournisseurs de LLM, recommandé à titre préventif — d'où une pondération moyenne, pas haute.
10 / 10010 %12 %5 %
llms.txt structuré
Test : Le fichier contient un titre « # », une description « > » et au moins une entrée de page « - » ou une URL.
Impact sur la citation : Un llms.txt vide ou mal formé n'apporte rien au modèle qui le lit.
5 / 1003 %5 %3 %
Schema Organization
Test : Un JSON-LD @type Organization existe ; points partiels (5/10) si name ou url manque.
Impact sur la citation : Identifie l'entité derrière le site : nom, URL. Les moteurs génératifs citent des entités, pas des pages anonymes.
15 / 10019 %20 %18 %
Schema WebSite
Test : Un JSON-LD @type WebSite existe.
Impact sur la citation : Déclare le site comme entité et ses fonctions (recherche interne, nom).
5 / 10020 %23 %19 %
Schema LocalBusiness
Test : Un JSON-LD LocalBusiness, ProfessionalService, Store, Restaurant ou Hotel existe. Avertissement (0 point) sinon.
Impact sur la citation : Indispensable pour les requêtes géolocalisées (« meilleur X à Y »). Non pénalisant pour un site non local, mais les points ne sont pas attribués.
5 / 1001 %1 %0 %
Meta description
Test : Balise meta description non vide.
Impact sur la citation : Premier résumé lu par les robots ; utilisée dans la génération de requêtes du test de citation.
5 / 10079 %83 %84 %
Open Graph
Test : og:title, og:description et og:url présents ; 3/5 si deux sur trois.
Impact sur la citation : Signaux de description structurée utilisés par les crawlers pour titrer et décrire la page.
5 / 10052 %55 %47 %
URL canonique
Test : Balise link rel=canonical présente.
Impact sur la citation : Évite la dilution entre variantes d'URL ; le modèle cite une URL stable.
5 / 10065 %74 %81 %
H1 unique
Test : Exactement un H1 sur la page. Avertissement si aucun, échec si plusieurs.
Impact sur la citation : Le H1 définit le sujet de la page pour l'extraction ; plusieurs H1 brouillent l'entité principale.
5 / 10056 %59 %60 %
sitemap.xml
Test : GET /sitemap.xml répond 200 avec un contenu non-HTML.
Impact sur la citation : Permet aux robots IA de découvrir toutes les pages, pas seulement l'accueil.
5 / 10058 %59 %70 %

4. Calcul du score

Le score est la somme des points obtenus sur les 13 critères, sur un total de 100. Trois statuts : conforme (points complets), avertissement (points partiels ou nuls, sans pénalité supplémentaire), échec (0 point).

Points partiels : Schema Organization incomplet 8/15, Open Graph avec deux balises sur trois 3/5. Tous les autres critères sont binaires.

La pondération affichée dans le tableau est lue directement dans le code de l'analyseur au moment de la construction du site : elle ne peut pas diverger de ce que l'audit calcule réellement.

5. Résultats par tranche

rangs 500k–1M

Tranche mise en avant

300 sites

Taux d'écartement : 29 % · hors injoignables : 20 % (dont 46 domaines injoignables (DNS / réseau))

Médiane
55/100
Q1Q3
4060
Moyenne
53.8
Sous 50/100
37 %
Bloquent ≥ 1 robot IA
9 %
Sans llms.txt
90 %

rangs 100k–500k

300 sites

Taux d'écartement : 31 % · hors injoignables : 22 % (dont 46 domaines injoignables (DNS / réseau))

Médiane
55/100
Q1Q3
4565
Moyenne
55.2
Sous 50/100
31 %
Bloquent ≥ 1 robot IA
9 %
Sans llms.txt
88 %

rangs 1–100k

Non publiée sur le site : écartement hors injoignables supérieur à 25 %

300 sites

Taux d'écartement : 34 % · hors injoignables : 27 % (dont 40 domaines injoignables (DNS / réseau))

Médiane
55/100
Q1Q3
4360
Moyenne
52.5
Sous 50/100
36 %
Bloquent ≥ 1 robot IA
17 %
Sans llms.txt
95 %

6. Le test de citation

Le score technique mesure si un site peut être lu. Le test de citation mesure s'il est effectivement cité. Ce sont deux choses différentes.

Fonctionnement : à partir du titre, de la description et des données structurées de la page d'accueil, un modèle (Claude Haiku) génère 14 requêtes réalistes qu'une personne taperait pour trouver ce type de site, avec la zone géographique déduite (adresse dans le schéma, sinon extension du domaine). Chaque requête est ensuite posée à 3 moteurs avec recherche web activée : Claude, OpenAI et Gemini. Le site est « cité » si son domaine apparaît dans la réponse ou dans ses sources. Les domaines cités à sa place sont relevés.

L'aperçu gratuit exécute 3 de ces requêtes sur un seul moteur (OpenAI) et affiche le résultat brut. Les requêtes et moteurs restants sont dans le rapport complet.

Limite importante : API ≠ interface ChatGPT

Nous interrogeons l'outil de recherche web des API (OpenAI Responses API, Claude web search, Gemini grounding). Cet outil ne reproduit pas exactement le comportement de récupération de l'interface ChatGPT grand public : index consulté, nombre de sources, personnalisation, mémoire et modèle peuvent différer. Un site cité via l'API peut ne pas l'être dans ChatGPT, et inversement. Le résultat est un indicateur solide de citabilité, pas une reproduction à l'identique de ce qu'un utilisateur verra.

7. Limites de la méthode

  • Un bon score technique ne garantit pas la citation. Il retire les obstacles ; il ne crée pas l'autorité ni le contenu qui font qu'un moteur choisit un site plutôt qu'un autre.
  • Le délai entre les corrections et les premières citations observées se compte en mois, pas en jours : les index des moteurs génératifs se rafraîchissent lentement et de façon opaque.
  • Seule la page d'accueil est analysée. Un site peut être bien structuré sur ses pages profondes et mal noté ici, ou l'inverse.
  • L'échantillon est un instantané à la date indiquée ; les sites changent, la liste Tranco change chaque jour.
  • Les sites qui bloquent les robots inconnus sont exclus de l'échantillon, ce qui peut biaiser les taux de conformité dans un sens ou dans l'autre.
  • L'analyse de robots.txt suit une lecture simplifiée (Disallow: / par groupe) ; des règles fines par chemin ne sont pas évaluées.
  • Les sites protégés par un pare-feu applicatif ou un anti-bot (réponses 403, 429, 503 à notre agent) sont écartés. Ils sont surreprésentés dans les rangs élevés du classement, et sont probablement mieux optimisés que la moyenne. Le taux de non-conformité mesuré sur la tranche 0–100k est donc vraisemblablement surestimé, et le biais décroît avec le rang.

8. Reproduire la mesure

Le script de benchmark est versionné avec le site. Commande :

npx tsx scripts/benchmark-geo.ts --list-id 46W9X

Sortie : un fichier brut par campagne (résultats par domaine) et un fichier d'agrégats lu par le site à la construction. Aucun chiffre statistique n'est écrit à la main dans les pages.

Questions sur la méthode

Écrivez-nous à [email protected]. Toute erreur signalée sur un chiffre publié est corrigée et datée.

← Retour à l'accueil