Développement web
SEO technique : protocole d’audit vérifiable des fondations d’un site
Un audit SEO technique utile ne collectionne pas des alertes. Il relie chaque rupture possible à un test rejouable, une preuve, une sévérité, un responsable et une décision explicite.
- 13 domaines Du transport HTTP aux agents IA.
- 44 contrôles Méthode et preuve attendue publiées.
- 4 statuts Non testé n’est jamais conforme.
- 0 promesse Ni position, ni trafic, ni résultat enrichi.
Réponse courte
Le SEO technique réduit l’incertitude entre une URL publiée et une page réellement explorée, rendue, indexée, comprise et servie.
Le SEO technique ne consiste pas à accumuler des cases vertes dans un crawler. Il consiste à rendre chaque décision rejouable : quelle URL doit répondre, qui peut l’explorer, quelle version doit être canonique, comment le contenu devient accessible, quelles preuves établissent le résultat et quelle anomalie doit bloquer une mise en ligne.
Un audit utile distingue quatre choses souvent mélangées : ce qui est publiquement observable, ce qui exige Search Console, ce qui exige les journaux serveur et ce qui reste une hypothèse. Il ne promet ni classement ni trafic. Il retire des ruptures techniques qui empêchent les moteurs de traiter la bonne page.
Quatre repères pour lire le protocole sans confondre contrôle et promesse.
domaines techniques contrôlés.
contrôles rejouables et documentés.
statuts contrôlés pour décider.
garantie de classement formulée.
Un contrôle non testé n’est pas conforme. Une observation publique n’est pas une preuve Search Console. Un seul blocage critique peut imposer NO-GO, quel que soit le nombre de cases vertes.
Périmètre de preuve
Quatre niveaux de preuve évitent de transformer un audit public en certitude privée.
| Niveau | Exemples | Établit | N’établit pas |
|---|---|---|---|
| Public | HTTP, robots.txt, HTML source, DOM rendu, sitemap, JSON-LD. | La réponse obtenue depuis un contexte et un instant documentés. | Ce que Google a exploré, choisi ou indexé. |
| Search Console | Inspection d’URL, canonique Google, rapport Pages, Core Web Vitals. | L’état rapporté pour la propriété et l’échantillon observés. | La cause unique d’une variation de position. |
| Logs serveur | Requêtes Googlebot, codes, fréquence, URL et octets servis. | Une interaction reçue par l’infrastructure, sous réserve d’authentifier le robot. | L’usage ultérieur du contenu par le moteur. |
| Configuration | WAF, CDN, application, CMS, règles de déploiement. | L’intention et la règle configurée, si elle est testée. | Que toutes les couches appliquent la même politique. |
Cette méthode est publiée par Edikka, agence de développement web, SEO et GEO. Ce n’est ni une norme indépendante, ni une certification. Les seuils reposent sur des spécifications et documentations primaires ; la décision finale dépend du contexte, du risque et des données privées du site audité.
Modèle causal
Crawl, rendu, indexation et service sont quatre étapes différentes.
Dire qu’une page est « SEO compatible » masque souvent l’étape qui échoue. Une URL peut être découverte mais bloquée, explorée mais rendue sans contenu, indexée sous une autre canonique, ou indexée sans être retenue pour une requête. Le diagnostic commence donc par localiser la rupture.
| Étape | Question | Preuve utile | Erreur fréquente |
|---|---|---|---|
| Découverte | Un chemin public mène-t-il à l’URL ? | Lien HTML, sitemap, URL référente dans les logs. | Confondre présence dans le sitemap et découvrabilité interne. |
| Exploration | Le robot peut-il demander la ressource ? | robots.txt, réponse HTTP, logs authentifiés. | Utiliser Disallow comme mécanisme de désindexation. |
| Rendu | Le contenu critique apparaît-il après exécution ? | HTML source, DOM rendu, inspection d’URL. | Déclarer JavaScript mauvais en soi. |
| Indexation | Quelle URL et quel contenu le moteur conserve-t-il ? | Inspection d’URL, canonique Google, rapport Pages. | Déduire l’indexation d’un code 200. |
| Service | La page est-elle sélectionnée pour une requête et un contexte ? | Performances Search Console et résultats observés. | Attribuer une position à un seul facteur technique. |
Grille ouverte v1.1
Le protocole couvre 13 domaines et 44 contrôles.
Le nombre de contrôles varie selon le risque : la symétrie d’un tableau ne doit pas dicter l’audit. Le JSON public v1.1 est l’unique source canonique des identifiants, méthodes, preuves, sources et limites. Le tableau HTML indexable et la matrice XLSX sont générés à partir de ce dataset.
Les identifiants TS01 à TS44 restent stables entre les versions. Pour citer un contrôle précis, utiliser son fragment direct, par exemple #TS41.
| IDs | Domaine | Décision principale | Preuve qui manque souvent |
|---|---|---|---|
| TS01–03 · TS37 | HTTP et disponibilité | Quelle réponse et quel transport servir ? | GET final, chaîne, certificat et HSTS. |
| TS04–06 | Robots et accès | Explorer, indexer ou protéger ? | Test de la couche serveur. |
| TS07–09 | Indexation | Quelles pages doivent rester indexables ? | Inspection Search Console. |
| TS10–12 | Canonicalisation | Quelle URL représente le contenu ? | Canonique choisie par Google. |
| TS13–15 | Sitemaps et fraîcheur | Quelles URL déclarer et quand ? | lastmod relié à une vraie modification. |
| TS16–18 | Découvrabilité interne | Comment atteindre chaque page utile ? | Comparaison crawl, CMS et sitemap. |
| TS19–21 · TS38 | Espaces d’URL | Quels paramètres et variantes normaliser ? | Segmentation, hôte, casse et slash. |
| TS22–24 · TS40 | Internationalisation | Quelle variante et quelle source hreflang ? | Réciprocité HTML, HTTP ou sitemap. |
| TS25–27 | JavaScript et rendu | À quel stade le contenu existe-t-il ? | Source, rendu et inspection comparés. |
| TS28–30 | HTML et sémantique | Le document reste-t-il compréhensible ? | Structure et liens crawlables. |
| TS31–33 | Données structurées | Quelles entités sont réellement visibles ? | Graphe sans entité inventée. |
| TS34–36 · TS39 · TS41 | Performance et suivi | Quelle expérience, quel edge et quelle non-régression ? | CrUX, CDN, CI, logs et déploiements. |
| TS42–44 | Exploration IA et agents | Quel accès pour recherche, action et entraînement ? | Politique par finalité, GET complet et logs. |
Inventaire indexable · v1.1
Les 44 contrôles sont publiés dans la page, pas seulement dans un fichier à télécharger.
Le JSON versionné est l’unique source canonique. Le tableau ci-dessous et le XLSX en sont deux représentations générées, lisibles et citables. La colonne « accès » empêche de confondre un test public avec une preuve Search Console, serveur ou de configuration. Chaque ligne possède une ancre stable : #TS01 à #TS44.
| ID | Domaine | Contrôle | Méthode | Preuve attendue | Accès · sévérité | Source |
|---|---|---|---|---|---|---|
| TS01 | HTTP et disponibilité | La page finale répond avec un code HTTP exploitable. | Envoyer une requête GET, suivre les redirections et relever le code final. | URL testée, horodatage, code final 200 pour une page canonique publique. | Public Bloquant | RFC 9110 · HTTP Semantics |
| TS02 | HTTP et disponibilité | Les redirections sont intentionnelles, directes et sans boucle. | Tester les variantes HTTP/HTTPS, hôte, slash et anciennes URL avec le nombre de redirections. | Destination finale unique, chaîne documentée, absence de boucle. | Public Majeur | Google Search Central · Redirections et Google Search |
| TS03 | HTTP et disponibilité | Les erreurs serveur et soft 404 ne remplacent pas une réponse explicite. | Tester une page existante, une URL supprimée et une URL inexistante ; comparer code et contenu. | Codes 4xx/5xx cohérents et modèle d’erreur qui ne renvoie pas 200 par défaut. | Public Majeur | Google Search Central · Erreurs HTTP et réseau |
| TS04 | Robots et accès | robots.txt est accessible, parsable et ne bloque pas les ressources nécessaires. | Récupérer /robots.txt, vérifier le type de contenu, les groupes et les règles applicables. | Fichier 200, syntaxe lisible, règles reliées à une intention documentée. | Public Bloquant | RFC 9309 · Robots Exclusion Protocol |
| TS05 | Robots et accès | Une directive Disallow n’est jamais présentée comme une garantie de désindexation. | Comparer la politique robots, les besoins d’indexation et les directives meta/X-Robots-Tag. | Décision distincte pour exploration, indexation et protection. | Configuration Bloquant | Google Search Central · Introduction à robots.txt |
| TS06 | Robots et accès | Les zones sensibles refusent réellement l’accès au serveur. | Tester sans session les routes privées et vérifier authentification, autorisation et cache. | Réponse 401/403 ou redirection d’authentification sans contenu sensible livré. | Configuration Bloquant | RFC 9110 · HTTP Semantics |
| TS07 | Indexation | Les directives meta robots et X-Robots-Tag sont cohérentes avec l’objectif de la page. | Inspecter les en-têtes et le DOM source sur les gabarits indexables et exclus. | Directive unique ou combinaison compatible, sans noindex accidentel. | Public Bloquant | Google Search Central · Meta robots et X-Robots-Tag |
| TS08 | Indexation | Le statut d’indexation réel est vérifié dans Search Console. | Utiliser l’inspection d’URL sur un échantillon représentatif et conserver l’export ou la capture. | URL connue, exploration autorisée, indexation et canonique Google documentées. | Search Console Majeur | Google Search Console · Inspection d’URL |
| TS09 | Indexation | Les exclusions volontaires ont un propriétaire et une justification. | Relier chaque famille exclue à une règle, un responsable et une date de revue. | Registre des exclusions : type de page, mécanisme, motif, propriétaire, révision. | Configuration Mineur | Google Search Central · Bloquer l’indexation |
| TS10 | Canonicalisation | Chaque page canonique publie une URL absolue, stable et cohérente. | Comparer URL finale, rel=canonical, sitemap et liens internes. | Signaux convergents vers la même URL canonique sans chaîne. | Public Majeur | Google Search Central · Canonicalisation des URL dupliquées |
| TS11 | Canonicalisation | Les variantes réellement dupliquées convergent sans masquer des pages distinctes. | Échantillonner paramètres, pagination, filtres et versions imprimables ; comparer contenu et canonique. | Correspondance documentée entre doublon et canonique pertinent. | Public Majeur | Google Search Central · Canonicalisation des URL dupliquées |
| TS12 | Canonicalisation | La canonique choisie par Google est comparée à celle déclarée. | Inspecter les URL prioritaires et consigner canonique utilisateur et canonique Google. | Accord ou divergence qualifiée et traitée. | Search Console Majeur | Google Search Console · Inspection d’URL |
| TS13 | Sitemaps et fraîcheur | Le sitemap contient uniquement des URL absolues et canoniques utiles. | Parser chaque sitemap, compter les URL et comparer statut, canonique et indexabilité. | Inventaire sans redirection, 4xx, noindex ni doublon de canonique. | Public Majeur | Google Search Central · Construire et envoyer un sitemap |
| TS14 | Sitemaps et fraîcheur | lastmod reflète une modification significative de la page. | Comparer lastmod à l’historique éditorial ou au déploiement de contenu significatif. | Horodatage ISO 8601 lié à une modification réelle, pas à la génération du fichier. | Configuration Mineur | Google Search Central · lastmod et sitemaps |
| TS15 | Sitemaps et fraîcheur | Les limites et découpages de sitemap sont respectés. | Contrôler taille décompressée, nombre d’URL, index de sitemaps et encodage. | Maximum 50 000 URL et 50 Mo non compressés par sitemap. | Public Majeur | Sitemaps.org · Protocole Sitemap XML |
| TS16 | Découvrabilité interne | Chaque page importante reçoit au moins un lien interne crawlable. | Crawler le site depuis les entrées publiques et lister les pages sans lien entrant HTML. | Source du lien, destination, ancre et statut de la page. | Public Majeur | Google Search Central · Liens explorables |
| TS17 | Découvrabilité interne | Les liens essentiels utilisent un élément a avec href résoluble. | Comparer DOM source et rendu ; relever boutons, onclick et ancres sans href. | Lien HTML crawlable vers chaque destination essentielle. | Public Majeur | Google Search Central · Liens explorables |
| TS18 | Découvrabilité interne | La profondeur et les pages orphelines sont mesurées sur un périmètre explicite. | Comparer crawl, sitemap et export CMS ; qualifier chaque différence. | Liste d’orphelines, profondeur minimale observée et décision par famille. | Public Majeur | Google Search Central · Liens explorables |
| TS19 | Espaces d’URL | Les paramètres, filtres et calendriers ne créent pas un espace infini. | Regrouper les URL par motif, compter les combinaisons et rechercher les pièges de crawl. | Règle d’indexation et de navigation pour chaque motif de paramètre. | Public Majeur | Google Search Central · Structure des URL |
| TS20 | Espaces d’URL | La structure d’URL est lisible, stable et encodée correctement. | Relever espaces, fragments, caractères encodés, casse et identifiants volatils. | Motifs d’URL documentés et absence de variantes involontaires. | Public Mineur | Google Search Central · Structure des URL |
| TS21 | Espaces d’URL | Les URL découvertes mais non indexées sont investiguées par famille. | Segmenter le rapport Pages par gabarit et comparer aux sitemaps et logs. | Hypothèse par famille, échantillon d’URL et résultat après correction. | Search Console Majeur | Google Search Console · Rapport Indexation des pages |
| TS22 | Internationalisation | Chaque variante hreflang pointe vers une URL indexable et canonique. | Parser les annotations HTML, HTTP ou sitemap et résoudre chaque URL. | Langue/région valide, URL 200, canonique cohérente. | Public Majeur | Google Search Central · Versions localisées et hreflang |
| TS23 | Internationalisation | Les annotations hreflang sont réciproques et incluent la page elle-même. | Construire les groupes de variantes et vérifier retour et auto-référence. | Groupe complet, réciproque et sans URL contradictoire. | Public Majeur | Google Search Central · Versions localisées et hreflang |
| TS24 | Internationalisation | x-default représente une destination neutre ou la variante par défaut assumée. | Vérifier sa présence et sa fonction dans chaque groupe multilingue pertinent. | URL x-default documentée, accessible et cohérente avec le parcours. | Public Mineur | Google Search Central · Versions localisées et hreflang |
| TS25 | JavaScript et rendu | Le contenu critique existe dans le HTML source ou devient observable après rendu. | Comparer réponse HTML, DOM rendu et inspection d’URL pour les éléments critiques. | Titre, contenu, liens, canonical et données structurées présents au bon stade. | Public Bloquant | Google Search Central · Principes de base du SEO JavaScript |
| TS26 | JavaScript et rendu | Les ressources nécessaires au rendu ne sont pas bloquées ni en erreur. | Inspecter réseau, robots, CSP et erreurs console sur les gabarits prioritaires. | Ressources critiques accessibles et absence d’erreur qui retire le contenu. | Public Majeur | Google Search Central · Principes de base du SEO JavaScript |
| TS27 | JavaScript et rendu | Les états et routes SPA produisent des URL partageables et des réponses serveur cohérentes. | Ouvrir directement les routes, tester actualisation, historique, canonical et statut HTTP. | Chaque vue indexable possède URL, 200, contenu et signaux propres. | Public Majeur | Google Search Central · Corriger les problèmes JavaScript |
| TS28 | HTML et sémantique | Le document expose une structure HTML compréhensible sans dépendre de son apparence. | Inspecter titre, langue, main, niveaux de titres, liens et libellés sur un échantillon. | Structure logique, un sujet principal identifiable, composants accessibles. | Public Majeur | WHATWG · HTML Living Standard |
| TS29 | HTML et sémantique | Les contenus essentiels restent disponibles lorsque scripts ou styles échouent. | Tester HTML source, désactivation JavaScript et mode réseau dégradé. | Information et navigation principales toujours accessibles ou solution de repli documentée. | Public Majeur | Google Search Central · Principes de base du SEO JavaScript |
| TS30 | HTML et sémantique | Les métadonnées essentielles sont uniques, visibles et cohérentes avec la page. | Comparer title, description, H1, Open Graph et contenu principal par gabarit. | Sujet et promesse cohérents sans duplication mécanique. | Public Majeur | Google Search Central · Liens de titre |
| TS31 | Données structurées | Le JSON-LD décrit des entités visibles et appropriées au contenu. | Comparer chaque propriété importante au contenu visible et aux recommandations du type. | Graphe valide, cohérent, sans entité ni note inventée. | Public Majeur | Google Search Central · Règles relatives aux données structurées |
| TS32 | Données structurées | Les identifiants @id relient les mêmes entités sans créer de doublons. | Construire le graphe, repérer les nœuds sans nom, les identifiants variables et les doublons. | Organization, Person, WebSite, WebPage et Article reliés par des @id stables. | Public Mineur | Schema.org · Modèle de données |
| TS33 | Données structurées | Les erreurs, avertissements et usages non pris en charge sont distingués. | Tester syntaxe Schema.org et éligibilité Google séparément ; consigner les résultats. | Rapport sans erreur bloquante et avertissements qualifiés. | Public Mineur | Google Search Central · Comprendre les données structurées |
| TS34 | Performance et suivi | Les Core Web Vitals terrain sont lus au 75e percentile. | Relever LCP, INP et CLS sur données de terrain par type d’appareil et groupe d’URL. | LCP ≤ 2,5 s, INP ≤ 200 ms, CLS ≤ 0,1 au 75e percentile pour l’état Bon. | Search Console Majeur | web.dev · Seuils des Core Web Vitals |
| TS35 | Performance et suivi | Les tests de laboratoire servent au diagnostic, pas à simuler le terrain. | Conserver URL, appareil, profil réseau, version de l’outil et mesures détaillées. | Rapport Lighthouse/WebPageTest reproductible et relié à une hypothèse de correction. | Public Mineur | web.dev · Différences entre laboratoire et terrain |
| TS36 | Performance et suivi | Le suivi relie Search Console, logs et déploiements à des dates de décision. | Créer une baseline avant changement puis vérifier J+1, J+7 et J+30 selon le risque. | Journal des déploiements, anomalies crawl/indexation et décisions signées. | Logs serveur Majeur | Google Search Central · Crawl budget |
| TS37 | HTTP et disponibilité | HTTPS, HSTS et les ressources intégrées ne créent ni erreur de certificat ni contenu mixte. | Tester le certificat sur les hôtes publics, suivre les variantes HTTP/HTTPS, relever Strict-Transport-Security et rechercher les sous-ressources en HTTP. | Certificat valide pour chaque hôte, redirection vers HTTPS, en-tête HSTS documenté et aucune ressource active en HTTP. | Public Majeur | RFC 6797 · HTTP Strict Transport Security |
| TS38 | Espaces d’URL | Les variantes d’hôte, de casse et de slash convergent vers une règle unique. | Rejouer www/sans www, HTTP/HTTPS, casse pertinente et slash final sur un échantillon de routes ; comparer redirection, canonical, sitemap et liens internes. | Une URL finale stable par ressource, sans chaîne, avec des signaux internes concordants. | Public Majeur | Google Search Central · Canonicalisation des URL dupliquées |
| TS39 | Performance et suivi | Le CDN, Vary et la géolocalisation ne servent pas des signaux SEO contradictoires. | Comparer code, canonical, robots, langue et contenu depuis plusieurs régions ou clés de cache ; inspecter Vary, redirections géographiques et règles edge. | Mêmes signaux SEO pour une même URL, ou variantes explicitement documentées et accessibles à Googlebot. | Configuration Majeur | RFC 9110 · HTTP Semantics Google Search Central · Pages adaptées à la langue ou à la région RFC 9110 établit la sémantique de Vary et des réponses HTTP. Le comportement des pages adaptées à la région est documenté séparément par Google. |
| TS40 | Internationalisation | La méthode hreflang choisie — HTML, en-tête HTTP ou sitemap — est complète et unique. | Identifier la source de vérité, puis vérifier que chaque URL liste sa propre variante et toutes les alternatives dans cette méthode. | Groupes équivalents et réciproques ; si le sitemap est choisi, namespace xhtml et entrées par URL valides. | Public Majeur | Google Search Central · Versions localisées et hreflang |
| TS41 | Performance et suivi | Les invariants SEO critiques sont rejoués automatiquement avant et après déploiement. | Exécuter dans la CI un jeu d’URL représentatif : code final, redirections, robots/noindex, canonical, hreflang, contenu serveur, liens essentiels et JSON-LD. | Commande versionnée, sortie horodatée, seuil d’échec explicite et lien vers le déploiement concerné. | Configuration Majeur | Méthode Edikka · sans source primaire unique Contrôle de gouvernance et de non-régression proposé par Edikka ; aucune documentation officielle unique ne prescrit ce pipeline complet. |
| TS42 | Exploration IA et agents | Chaque crawler IA est gouverné selon son usage réel : recherche, action utilisateur ou entraînement. | Cartographier séparément recherche, action utilisateur et entraînement — par exemple OAI-SearchBot / ChatGPT-User / GPTBot et Claude-SearchBot / Claude-User / ClaudeBot — vers une décision datée et un propriétaire. | Table user-agent / finalité / règle / source opérateur / date de revue, sans confondre recherche en direct et entraînement. | Configuration Majeur | OpenAI · Crawlers et user-agents Anthropic · Crawlers Claude |
| TS43 | Exploration IA et agents | L’accès des crawlers autorisés est testé avec leur chaîne complète et rapproché des journaux. | Envoyer une requête GET avec le user-agent complet documenté, relever code et redirections, puis rechercher la requête dans les logs et vérifier l’identité lorsque l’opérateur publie une méthode. | Commande, chaîne complète, réponse finale, horodatage, trace serveur et statut d’identité vérifiée ou non vérifiée. | Logs serveur Majeur | OpenAI · Crawlers et user-agents |
| TS44 | Exploration IA et agents | Le contenu critique et ses preuves restent accessibles sans dépendre d’une exécution JavaScript non documentée. | Comparer la réponse HTML brute, la version rendue et, lorsqu’elle existe, une ressource machine publique ; vérifier titres, faits, sources, liens et date de mise à jour. | Faits et sources essentiels dans le HTML serveur ou une ressource publique reliée, avec une version cohérente et une URL stable. | Public Majeur | Google Search Central · Principes de base du SEO JavaScript OpenAI · Crawlers et user-agents Anthropic · Crawlers Claude Portée partielle : la source Google documente le rendu JavaScript pour Google Search. Le contrôle étend prudemment la vérification à des consommateurs dont les capacités de rendu ne sont pas uniformément documentées. |
Contrôles TS01–TS03
Tester une page avec GET, la chaîne complète et un cas d’erreur.
Un test HEAD seul est insuffisant : CDN, pare-feu et application peuvent traiter HEAD et GET différemment. Le protocole relève le code final, le nombre de redirections, l’URL effective et la durée. Il rejoue au minimum l’URL canonique, une ancienne URL, une ressource supprimée et une URL inexistante.
curl -L -sS -o /dev/null \
-w 'HTTP %{http_code} · redirects %{num_redirects} · final %{url_effective} · %{time_total}s\n' \
https://www.exemple.fr/page| Réponse | Interprétation | Action |
|---|---|---|
| 200 | Le serveur livre une représentation ; cela ne prouve pas l’indexation. | Vérifier contenu, directives et canonique. |
| 301 / 308 | La ressource est déplacée durablement. | Contrôler destination, pertinence et chaîne. |
| 302 / 307 | Le déplacement est temporaire au niveau HTTP. | Vérifier que le caractère temporaire est volontaire. |
| 404 / 410 | La ressource n’est pas disponible. | Conserver si la suppression est intentionnelle ; éviter les soft 404. |
| 5xx | Le serveur n’a pas traité la requête. | Corriger, journaliser et surveiller avant publication. |
Contrôles TS04–TS09
Disallow, noindex et protection serveur répondent à trois problèmes différents.
Disallow demande à un robot conforme de ne pas explorer un chemin. Il ne garantit pas la disparition de l’URL des résultats. Une directive noindex doit être lue dans le HTML ou l’en-tête HTTP ; si la ressource est bloquée par robots.txt, le moteur peut ne jamais la voir. Une donnée confidentielle, enfin, doit être refusée par authentification ou autorisation côté serveur.
Cette distinction corrige une recommandation trop répandue : associer noindex à Disallow ne renforce pas mécaniquement l’exclusion. Cela peut empêcher la lecture du noindex. La documentation Google sur les directives robots et le RFC 9309 bornent précisément ces mécanismes.
| Intention | Mécanisme principal | Preuve | À éviter |
|---|---|---|---|
| Réduire l’exploration | robots.txt, si le crawler le respecte. | Règle parsée + logs. | Présenter la règle comme une sécurité. |
| Retirer de l’index | noindex accessible au crawler. | Inspection d’URL après nouvelle exploration. | Bloquer la page avant lecture de noindex. |
| Consolider des doublons | redirection ou rel=canonical selon le cas. | Signaux convergents + canonique Google. | Canonicaliser des pages réellement distinctes. |
| Protéger une donnée | Authentification et autorisation serveur. | Test sans session, réponse 401/403, absence de contenu. | Publier le secret puis le cacher aux robots. |
curl -sS -D - -o /tmp/page.html https://www.exemple.fr/page
grep -iE 'x-robots-tag|canonical|robots' /tmp/page.htmlContrôles TS10–TS12
Une canonique est un signal fort ; le moteur conserve la décision finale.
Google classe la redirection et rel="canonical" parmi les signaux forts de canonicalisation, et la présence dans un sitemap parmi les signaux plus faibles. Ces signaux se renforcent lorsqu’ils convergent. Ils ne transforment pas la canonique déclarée en ordre absolu : le moteur peut choisir une autre URL.
Le contrôle public compare URL finale, canonique déclarée, sitemap et liens internes. Le contrôle privé compare ensuite la canonique utilisateur à la canonique Google dans l’inspection d’URL. Sans cette seconde étape, l’audit ne peut conclure qu’à une déclaration cohérente, pas à une canonique effectivement choisie.
Une page canonique ne doit pas rediriger, être noindex, pointer vers une autre langue sans raison, ni recevoir l’essentiel du maillage sous une variante concurrente.
Contrôles TS13–TS15
Le sitemap est un inventaire de candidates canoniques, pas un passeport d’indexation.
Un sitemap utile contient des URL absolues, finales, indexables et canoniques. Chaque fichier respecte la limite de 50 000 URL ou 50 Mo non compressés. Les grands périmètres sont répartis dans un index de sitemaps pour permettre un diagnostic par famille.
lastmod doit correspondre à une modification significative de la page, pas à l’heure de génération du fichier. Google indique ne pas utiliser priority et changefreq. Un lastmod systématiquement réécrit détruit le signal qu’il prétend fournir.
curl -sS https://www.exemple.fr/sitemap.xml \
| xmllint --format - \
| grep -E '<loc>|<lastmod>'Contrôles TS16–TS21
Le crawl interne doit révéler les pages utiles sans ouvrir un espace d’URL infini.
Google recommande que chaque page importante reçoive au moins un lien depuis une autre page. Le format fiable reste un élément <a> avec un attribut href résoluble. Un gestionnaire onclick, une carte cliquable sans lien ou un état produit uniquement côté client peut rester invisible à certains crawlers.
Le rapport d’orphelines naît de la comparaison entre trois inventaires : pages découvertes par le crawl, URL déclarées dans les sitemaps et URL connues du CMS ou de la base. Une différence n’est pas automatiquement une erreur ; elle doit être qualifiée. Une page de campagne volontairement isolée n’a pas la même fonction qu’une offre principale sans lien entrant.
Les filtres, tris, calendriers et paramètres peuvent produire des combinaisons infinies. Le protocole regroupe les URL par motif, mesure les combinaisons, puis décide pour chaque famille : navigable, indexable, canonicalisée, bloquée à l’interface ou réellement indisponible.
« Trois clics maximum » n’est pas une loi du classement. La profondeur est un signal d’architecture à interpréter avec importance métier, maillage, fréquence de crawl et taille du site.
Contrôles TS22–TS24
Un groupe hreflang doit être indexable, réciproque et cohérent avec ses canoniques.
Chaque variante pointe vers elle-même et vers les autres variantes du groupe. Les retours doivent exister. Les codes de langue et de région doivent être valides. Les URL doivent répondre, rester indexables et publier une canonique compatible avec leur propre langue.
x-default peut désigner une page neutre ou la variante assumée par défaut. Il n’est pas obligatoire dans tous les cas. Surtout, hreflang ne compense pas une traduction pauvre, un contenu identique non localisé ou une géolocalisation forcée qui empêche l’utilisateur et le crawler de choisir.
Contrôles TS25–TS27
Le problème n’est pas JavaScript ; c’est l’écart non testé entre réponse, rendu et indexation.
Google traite le JavaScript selon trois phases documentées : crawl, rendu, indexation. Un site rendu côté client peut être indexable. Un site rendu côté serveur peut échouer. Le choix SSR, SSG ou CSR ne prouve rien à lui seul ; la preuve vient de la présence réelle du contenu, des liens et des métadonnées au stade attendu.
| Représentation | À vérifier | Outil | Limite |
|---|---|---|---|
| Réponse HTML | Statut, title, canonical, contenu et liens initiaux. | curl ou navigateur sans JavaScript. | Ne montre pas le DOM après exécution. |
| DOM rendu | Éléments ajoutés, retirés ou remplacés ; erreurs réseau. | DevTools ou navigateur automatisé. | Ne reproduit pas exactement Google. |
| Vue Google | HTML rendu, capture, ressources et canonique. | Inspection d’URL Search Console. | Échantillon et état daté. |
# HTML reçu du serveur
curl -sS https://www.exemple.fr/page > source.html
# Le DOM rendu doit être exporté par un navigateur réel,
# puis comparé à source.html et à l’inspection Search Console.Contrôles TS28–TS30
Un document compréhensible possède un sujet, une structure et des liens qui ne dépendent pas de son apparence.
Le contrôle porte sur la langue du document, le titre, le contenu principal, la hiérarchie de titres, les liens, les libellés et les états d’interface. La validation HTML repère des erreurs de structure ; elle ne prouve ni la qualité, ni la pertinence, ni l’accessibilité complète.
Cette couche relie SEO technique, accessibilité et compréhension machine. Pour approfondir, voir le protocole Edikka sur l’accessibilité, le SEO et le HTML sémantique, ainsi que l’analyse des limites d’un score Lighthouse de 100.
Contrôles TS31–TS33
Les données structurées décrivent le contenu visible ; elles ne remplacent ni la page ni son autorité.
Le JSON-LD doit décrire des entités réellement présentes, utiliser des propriétés appropriées et relier les mêmes objets avec des identifiants @id stables. Les nœuds Organization, Person, WebSite, WebPage et Article ne doivent pas être recréés sans relation à chaque bloc.
Les consignes Google sont explicites : un balisage valide ne garantit pas l’affichage d’un résultat enrichi. Une donnée structurée trompeuse peut faire perdre cette éligibilité sans que cela signifie automatiquement une baisse de classement organique. Le contrôle sépare donc syntaxe Schema.org, politique Google et cohérence avec le contenu visible.
Voir aussi le guide dédié aux données structurées pour le SEO et le GEO.
Contrôles TS34–TS36
Les Core Web Vitals se lisent sur le terrain au 75e percentile ; le laboratoire sert au diagnostic.
| Métrique | Mesure | Bon | Preuve terrain |
|---|---|---|---|
| LCP | Vitesse d’affichage du plus grand élément de contenu. | ≤ 2,5 s | CrUX / Search Console, selon disponibilité. |
| INP | Réactivité globale aux interactions. | ≤ 200 ms | CrUX / bibliothèque web-vitals. |
| CLS | Stabilité visuelle. | ≤ 0,1 | CrUX / instrumentation RUM. |
Lighthouse produit un test de laboratoire dans des conditions définies. Il localise un problème et permet une non-régression ; il ne remplace pas les données d’utilisateurs réels. L’absence de données CrUX signifie parfois seulement que le volume public est insuffisant.
Les Core Web Vitals participent aux systèmes de classement de Google, mais la documentation sur l’expérience de page rappelle qu’un score parfait ne garantit pas la première position. Le protocole relie donc performance, contenu, indexation et suivi sans transformer une métrique en causalité unique.
Contrôles TS37–TS40
Le transport, la normalisation et l’edge doivent servir les mêmes signaux à chaque point de contrôle.
Une page en 200 peut rester techniquement incohérente : certificat invalide sur une variante d’hôte, ressource active chargée en HTTP, slash final qui crée une seconde URL, redirection géographique dépendante de l’IP ou cache CDN qui conserve un ancien noindex. Le protocole teste donc HTTPS, HSTS, hôte, casse, slash, Vary et règles edge séparément.
Pour l’international, Google accepte trois méthodes équivalentes pour hreflang : HTML, en-tête HTTP ou sitemap XML. Les cumuler ne crée pas de bénéfice Search et multiplie les sources de divergence. L’audit nomme une source de vérité, puis vérifie auto-référence, réciprocité et URL canoniques dans cette méthode.
for url in \
'http://example.fr/Page' \
'https://example.fr/Page/' \
'https://www.example.fr/Page'; do
curl -L -sS -o /dev/null \
-w '%{http_code} · %{num_redirects} · %{url_effective}\n' "$url"
doneDeux régions de test ne couvrent pas tous les POP ni toutes les clés de cache. Une divergence edge doit être rapprochée de la configuration CDN et des journaux avant de conclure à un comportement systématique.
Contrôle TS41
Un audit ponctuel devient une fondation lorsqu’il bloque les régressions connues.
Le pipeline ne cherche pas à « automatiser le SEO ». Il rejoue des invariants observables sur un échantillon représentatif : code final, nombre de redirections, absence de noindex involontaire, canonical absolue, groupe hreflang, contenu critique dans le HTML serveur, liens essentiels et JSON-LD parsable. Chaque échec pointe vers une URL, une règle et une sortie conservée.
Search Console, les logs et la revue éditoriale restent indispensables. La CI empêche seulement qu’une erreur déjà connue franchisse silencieusement une nouvelle mise en ligne.
set -eu
url='https://www.exemple.fr/page-prioritaire'
headers="$(mktemp)"
body="$(mktemp)"
trap 'rm -f "$headers" "$body"' EXIT
curl -L -sS --fail -D "$headers" -o "$body" "$url"
if ! grep -Eqi '<link[^>]+rel="canonical"' "$body"; then
echo 'NO-GO · canonical absente du HTML serveur' >&2
exit 1
fi
if grep -Eqi '^[[:space:]]*x-robots-tag:.*noindex' "$headers" || \
grep -Eqi '<meta[^>]+(name="robots"[^>]+content="[^"]*noindex|content="[^"]*noindex[^>]+name="robots")' "$body"; then
echo 'NO-GO · noindex détecté dans HTTP ou HTML' >&2
exit 1
fi
echo 'GO · réponse, canonical et indexabilité minimales contrôlées'Cette porte est volontairement minimale : elle ne prouve ni la canonique choisie par Google, ni le rendu final, ni l’indexation. Le projet doit ajouter ses URL, ses invariants et ses diagnostics propres.
Contrôles TS42–TS44 · SEO × GEO
Un protocole 2026 distingue crawler de recherche, agent déclenché par un utilisateur et crawler d’entraînement.
Les opérateurs ne publient pas tous les mêmes jetons ni les mêmes finalités. OpenAI distingue OAI-SearchBot pour la recherche, ChatGPT-User pour les actions déclenchées par un utilisateur et GPTBot pour l’entraînement. Anthropic sépare notamment Claude-SearchBot, Claude-User et ClaudeBot. Google-Extended est un jeton de contrôle et non un user-agent HTTP autonome.
Le test technique utilise une requête GET avec la chaîne complète documentée, puis rapproche la réponse des logs. Imiter un user-agent ne prouve jamais qu’une visite provient réellement de l’opérateur. Enfin, le contenu critique, les preuves et les liens doivent rester disponibles dans le HTML serveur ou dans une ressource publique reliée : un fichier llms.txt ou Markdown peut faciliter l’accès, mais ne garantit ni citation ni classement.
| Finalité documentée | OpenAI | Anthropic | Décision à consigner |
|---|---|---|---|
| Recherche | OAI-SearchBot | Claude-SearchBot | Accès, preuve opérateur, propriétaire et date de revue. |
| Action utilisateur | ChatGPT-User | Claude-User | Parcours autorisés, authentification et traces attendues. |
| Entraînement | GPTBot | ClaudeBot | Doctrine de droits distincte de la visibilité en recherche. |
curl -L -sS -o /dev/null \
-A 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)' \
-w 'HTTP %{http_code} · redirects %{num_redirects} · final %{url_effective}\n' \
https://www.exemple.fr/pagePour la doctrine et les limites juridiques, voir le protocole dédié Faut-il bloquer les robots et agents IA ?. Cette section ne déduit aucune présence réelle dans ChatGPT, Gemini, Claude ou Perplexity à partir d’un simple accès HTTP.
Contexte avant optimisation
Le crawl budget n’est prioritaire que pour certains grands sites ou des symptômes documentés.
Le guide Google consulté le 22 août 2026 cible principalement les sites très grands — environ un million de pages ou davantage avec des changements hebdomadaires —, les sites d’au moins dix mille pages qui changent quotidiennement, ou les sites où une part importante des URL reste « Découverte, actuellement non indexée ». Ces ordres de grandeur sont des repères, pas une frontière universelle.
Sur un site vitrine de cinquante pages, parler d’abord de crawl budget détourne souvent l’attention de causes plus probables : pages sans lien, canonicalisation contradictoire, contenu faible, rendu cassé ou absence d’intention distincte. La documentation crawl budget de Google doit être lue avant de prescrire des optimisations complexes.
Exemple public · Edikka
Ce qu’un audit public de cette URL établit — et ce qu’il doit refuser d’affirmer.
Observation effectuée le 22 août 2026 avant publication de cette nouvelle édition, depuis une connexion externe non authentifiée. Le début de collecte est horodaté 08 :13 :55 CEST dans l’artefact ; la réponse HTTP porte 06 :13 :55 GMT, soit le même instant exprimé dans deux fuseaux. Le cas sert à montrer la discipline de preuve ; il n’est pas présenté comme un audit complet de l’ensemble du domaine.
| Observation | État public | Preuve | Conclusion autorisée |
|---|---|---|---|
| Réponse finale | HTTP 200. | Requête GET avec redirections suivies. | La page répond publiquement depuis ce point de test. |
| Canonical | Auto-référente et absolue. | HTML source. | La page déclare cette URL ; Google peut en choisir une autre. |
| Robots | Meta index, follow ; chemin non bloqué par robots.txt. | HTML source et robots.txt public. | Aucun blocage public observé dans ces deux couches. |
| Sitemap | URL présente. | sitemap.xml public. | L’URL est déclarée ; l’indexation n’est pas prouvée. |
| Contenu serveur | H1 et contenu éditorial présents dans la réponse HTML. | Source reçue sans exécuter JavaScript. | Le contenu principal ne dépend pas entièrement du rendu client. |
| JSON-LD | WebPage, Article et FAQ exposés. | Scripts application/ld+json. | Le graphe existe ; son usage par un moteur n’est pas garanti. |
L’indexation actuelle, la canonique choisie par Google, les requêtes réelles de Googlebot, les Core Web Vitals terrain, les impressions, les positions et l’effet causal de cette mise à jour exigent Search Console, les logs ou une période de mesure. Ils ne sont pas déduits du HTML.
Télécharger l’artefact JSON de cet auto-audit : commandes, horodatage, en-têtes sélectionnés, empreintes SHA-256, conclusions autorisées et limites. L’adresse IP publique du collecteur n’a pas été conservée ; l’artefact le déclare au lieu d’en inventer une.
Décision sans faux score
Statut, sévérité et décision sont trois champs distincts.
| Champ | Valeurs | Question traitée |
|---|---|---|
| Statut | Non testé · Conforme · Non conforme · Non applicable. | Quel est le résultat observé ? |
| Sévérité | Bloquant · Majeur · Mineur · Information. | Quel risque l’échec crée-t-il ? |
| Décision | NO-GO · À arbitrer · GO sous réserves. | Peut-on publier dans ce contexte ? |
La matrice ne calcule pas une note sur 100. Une moyenne diluerait une erreur critique : 43 réussites ne compensent pas un noindex involontaire sur la page d’offre. La règle est donc une porte : un Bloquant non conforme, ou un Bloquant applicable non testé, impose NO-GO ; un Majeur non conforme impose un arbitrage documenté.
Exécution et non-régression
Préproduction, J+1, J+7 et J+30 ne répondent pas aux mêmes questions.
| Moment | Contrôles prioritaires | Décision | Preuve |
|---|---|---|---|
| Avant bascule | HTTP, directives, canonical, maillage, sitemap, hreflang, rendu, données structurées. | GO / NO-GO signé. | Matrice, exports et captures datés. |
| J+1 | Codes, chaînes, robots, noindex, canonical, sitemap, formulaires et analytics. | Corriger immédiatement les bloqueurs. | Crawl de production et comparaison à la baseline. |
| J+7 | Logs, rapport Pages, sitemaps, erreurs serveur, principales canonisations. | Prioriser les familles anormales. | Segments par gabarit. |
| J+30 | Indexation, performances Search, CWV terrain si disponibles, anomalies persistantes. | Clôturer, prolonger ou ouvrir une analyse causale. | Fenêtre comparable et journal des changements. |
Pour une refonte, ce protocole complète la migration SEO URL par URL et la recette de site avant mise en ligne. La page refonte de site internet Edikka décrit le périmètre commercial qui réunit ces expertises.
Raccourcis à éliminer
Huit phrases séduisantes deviennent fausses lorsqu’on retire leur contexte.
| Raccourci | Formulation vérifiable |
|---|---|
| « Disallow désindexe. » | Disallow limite l’exploration pour les robots conformes ; l’URL peut rester connue. |
| « noindex dans robots.txt fonctionne. » | Google ne prend pas en charge cette règle dans robots.txt ; utilisez meta robots ou X-Robots-Tag accessible. |
| « Canonical impose l’URL. » | rel=canonical est un signal fort ; le moteur conserve le choix final. |
| « Sitemap garantit l’indexation. » | Le sitemap aide à déclarer des candidates canoniques ; il ne garantit pas leur indexation. |
| « JavaScript empêche le SEO. » | Le risque vient d’un contenu ou de liens absents, bloqués ou rendus incorrectement. |
| « Schema.org améliore le classement. » | Les données structurées aident certains consommateurs à comprendre et enrichir ; aucun gain de position n’est garanti. |
| « Lighthouse 100 prouve la vitesse. » | Lighthouse est un test de laboratoire ; les CWV terrain sont lus séparément au 75e percentile. |
| « Tout site a un problème de crawl budget. » | Le sujet devient prioritaire sur de grands volumes ou face à des symptômes documentés. |
Ressources ouvertes
Télécharger, rejouer et citer la méthode.
Cet article et la Grille d’audit SEO technique Edikka v1.1 sont publiés sous licence CC BY 4.0. La réutilisation est autorisée avec attribution à Edikka et à cette URL canonique. Les fichiers sont accessibles sans formulaire.
v1.1 · 22 août 2026. Le protocole passe à 44 contrôles dans 13 domaines, publie l’inventaire complet dans l’HTML, ajoute HTTPS/HSTS, normalisation, CDN, hreflang par sitemap, CI et exploration IA, puis associe une preuve JSON à l’auto-audit. Aucune statistique de marché n’est affirmée sans panel préenregistré.
Sources primaires
Documents consultés le 22 août 2026.
- RFC 9309 · Robots Exclusion Protocol.
- RFC 9110 · HTTP Semantics.
- Google Search Central · Introduction à robots.txt.
- Google Search Central · Meta robots et X-Robots-Tag.
- Google Search Central · Canonicalisation.
- Google Search Central · Créer et envoyer un sitemap et Sitemaps.org.
- Google Search Central · Liens crawlables.
- Google Search Central · Versions localisées et hreflang.
- Google Search Central · Pages adaptées à la langue et à la zone géographique.
- Google Search Central · Principes de base du SEO JavaScript.
- Google Search Central · Règles relatives aux données structurées.
- web.dev · Seuils Core Web Vitals.
- Google · Crawl budget pour les grands sites.
- RFC 6797 · HTTP Strict Transport Security.
- OpenAI · Crawlers et finalités.
- Google · Google-Extended.
- Anthropic · Crawlers Claude.
Un socle technique n’est solide que lorsque sa décision peut être rejouée.
L’objectif n’est pas d’obtenir un audit plus impressionnant. Il est de savoir exactement ce qui a été testé, ce qui reste inconnu et ce qui doit empêcher une mise en ligne.
Séparer les couches
HTTP, robots, rendu, indexation, canonique Google et terrain ne se déduisent pas les uns des autres. Chaque preuve garde son périmètre.
Nommer l’inconnu
Non testé, non applicable et non conforme sont trois états différents. Les fusionner donne une impression de maîtrise au lieu d’une décision.
Refuser la moyenne rassurante
Un noindex accidentel ne se compense pas avec 43 réussites. La sévérité et le propriétaire du risque priment sur le score.
Pour aller plus loin sur ce sujet
Des réponses complémentaires pour clarifier les points essentiels abordés dans cet article.