← Tous les articles

Les robots passent des examens dans ma Search Console

Sur une fenêtre récente de 28 jours, mon site a collecté 3,78 millions d’impressions dans la Google Search Console, et 91 % d’entre elles venaient de requêtes qu’aucun humain n’a tapées.1 L’indice était un billet de blog sur les hooks de Claude Code qui ressemblait à une percée : 30 000 impressions en deux semaines, pour un taux de clics de 0,14 %. Tous les manuels de SEO disent qu’une page avec de grosses impressions et un CTR mort a besoin d’un sauvetage de titre. Puis j’ai extrait les requêtes réelles, et les premières étaient des questions d’examen à choix multiple, collées mot pour mot dans Google, de six façons légèrement différentes : « a developer wants to prevent claude from reading sensitive .env files. which type of hook… » Personne ne clique, parce qu’il n’y a personne. Le chercheur est un quiz de certification qui vérifie son propre corrigé.

TL;DR

  • Un billet vieux de 13 jours a attiré 30 105 impressions à 0,14 % de CTR, le profil classique d’un titre cassé. Les requêtes derrière étaient des questions d’examen mot pour mot et des chaînes de jargon SDK ; les vraies requêtes humaines se comptaient sur les doigts d’une main. Le titre était bon. Le public était synthétique.4
  • À l’échelle du site, 3,78 M d’impressions sur 28 jours se réduisent à 340 K (9 %) dès qu’on exclut les requêtes contenant un guillemet double ou un tiret bas, une signature de requête machine bon marché mais efficace. Le CTR filtré triple presque, de 0,42 % à 1,10 %, et la position moyenne passe de 11,2 à 7,7.1
  • Les requêtes machine se séparent en trois espèces de valeur totalement différente : les candidats aux examens (questions de test en langage naturel, zéro clic à jamais), les colleurs d’erreurs (chaînes d’erreur mot pour mot, 3 à 10 % de CTR, les visiteurs les plus intentionnels que j’aie), et les balayages de récupération (expressions entre guillemets et identifiants en snake_case à échelle industrielle, ~0,35 % de CTR).
  • Aucune regex ne sépare proprement les humains des machines. Les questions d’examen se lisent comme humaines et ne le sont pas ; les colleurs d’erreurs ont l’air robotiques et sont des gens en difficulté. La forme de la requête ment ; le comportement de clic dit la vérité.
  • Le changement pratique : ne jamais optimiser un titre, ni paniquer devant une page « en déclin », avant d’avoir séparé ses requêtes en humaines et machine. Les impressions ont cessé d’être une métrique de vanité pour devenir une métrique mixte.

Le billet qui a failli recevoir un sauvetage de titre

Le billet en question, une explication des hooks de Claude Code, a été publié le 1er juillet. Au 13 juillet, il avait accumulé 24 377 impressions dans sa première semaine et tenait ce rythme dans la deuxième. Mon tableau de bord l’a signalé comme le font les tableaux de bord : exposition énorme, 43 clics au total, 0,14 % de CTR à une position moyenne de 6,6.4

J’ai un manuel éprouvé pour exactement ce profil. Un guide de ce site a un jour stagné à 1,4 million d’impressions avec un CTR de 0,28 % jusqu’à une réécriture du titre, alors le réflexe était fort : réécrire le titre, regarder le CTR se redresser, compter les victoires.

Le réflexe a survécu jusqu’au chargement du rapport de requêtes. La première requête, 191 impressions sur sa plus grosse variante et 254 sur toute la famille, était une question d’examen complète, options comprises, dans le registre plat d’une banque de certification. Six formulations quasi identiques de la même question ont touché trois billets différents sur les hooks de mon site, plus les traductions allemande, française et polonaise.4 Zéro clic sur l’ensemble. En deuxième place venait « anthropic agent sdk hitl lifecycle hooks pretooluse », qu’aucun humain n’a jamais tapé avec ses doigts. Les requêtes véritablement humaines, celles avec des fautes de frappe et de l’espoir dedans, se comptaient sur les doigts d’une main.

Une réécriture de titre optimise le seul élément d’un résultat de recherche que seuls les humains lisent. Le public de la montagne d’impressions ne lit pas les titres. Il lit des extraits de réponse, ou rien du tout. J’aurais dépensé le changement sur des lecteurs qui n’ont jamais été là, puis tiré exactement la mauvaise conclusion quand le CTR n’aurait pas bougé.

Trois espèces de requêtes machine

Une fois que j’ai su quoi chercher, j’ai extrait les requêtes à signature machine pour tout le site. Ce n’est pas un phénomène. C’en est trois, et les confondre coûte de l’argent réel.

Espèce Exemple Volume CTR Qui c’est
Candidats aux examens « a developer wants to prevent claude from reading sensitive .env files. which type of hook… » Des centaines d’impressions par famille de questions 0 % Générateurs de quiz, outils de préparation aux certifications, ou agents qui notent des réponses
Colleurs d’erreurs « userpromptsubmit hook timed out after 60s » De quelques dizaines à quelques centaines par chaîne d’erreur 3 à 10 % Des humains (ou leurs agents) en plein débogage
Balayages de récupération Expressions entre guillemets, identifiants en snake_case, jargon SDK Des millions d’impressions ~0,35 % Des assistants qui vérifient et récupèrent à grande échelle

Les candidats aux examens sont la cohorte la plus étrange. Les requêtes sont de l’anglais grammatical, donc elles passent tous les filtres humains naïfs, et pourtant elles se comportent comme aucun chercheur humain : familles de questions identiques, répétées sur des semaines, réparties sur plusieurs langues, jamais un seul clic. Ma meilleure hypothèse sur la provenance, et je veux dire clairement que c’est une hypothèse : des tests d’entraînement générés par IA et des outils de préparation aux certifications qui valident leurs propres corrigés contre les résultats de recherche réels, plus quelques étudiants qui collent des questions de quiz entières. Google compte chacune comme une impression sur ma page, parce que ma page est bel et bien apparue dans les résultats.2 L’impression est réelle. Le lecteur ne l’est pas.

Les colleurs d’erreurs sont l’inverse, et ils sont la raison pour laquelle un filtre grossier « supprimer toutes les requêtes à l’air machine » détruit de la valeur. Une erreur collée comme xcrun: error: unable to find utility "mcpbridge" déclenche le filtre par son nom d’utilitaire entre guillemets, et elle génère un clic à 6,25 % depuis la position 2,7. « failure in void _uiapplicationevaluateruntimeissuefornoscenelifecycleadoption » emporte son tiret bas jusqu’à un CTR de 9,68 %. Les identifiants de configuration se comportent de la même façon : « codex trust_level » à 8,70 %, « hermes custom_providers » à 4,55 %.1 Ces chiffres battent mon CTR humain à l’échelle du site d’un facteur de trois à neuf. Le texte de la requête est écrit par une machine, parce qu’il a été écrit par un compilateur ou un schéma de configuration, mais la personne qui le colle a un problème maintenant et lira tout ce qui correspond. Les visiteurs les plus intentionnels de mon site arrivent en costume de robot.

Les balayages de récupération forment le gros des 3,4 millions. Chaînes exactes entre guillemets, noms de surfaces d’API, fragments de documentation. Mon billet précédent, Les assistants sont désormais le public, a retracé le côté livraison du même phénomène à la périphérie du réseau : environ 17 000 requêtes d’agents IA par jour contre environ 300 visiteurs humains, l’essentiel étant de la récupération en direct dirigée par l’utilisateur plutôt que des explorations d’entraînement.5 Les données de la Search Console bouclent la boucle du côté de la demande. Les assistants ne se contentent pas de récupérer mes pages ; ils lancent aussi des recherches Google en chemin, et Google consigne consciencieusement chacune comme une impression, position comprise.

Quelle part de la Search Console est encore humaine

Le filtre que j’utilise est une seule expression régulière. Dans l’API Search Analytics, exclure les requêtes correspondant à ["_], c’est-à-dire toute requête contenant un guillemet double ou un tiret bas :

{
  "dimensionFilterGroups": [{
    "filters": [{
      "dimension": "query",
      "operator": "excludingRegex",
      "expression": "[\"_]"
    }]
  }]
}

Les chaînes entre guillemets signalent une vérification en correspondance exacte, dont les humains se donnent rarement la peine. Les tirets bas viennent des identifiants, et les identifiants viennent du code, pas des pouces.3 Mes 28 derniers jours passés à ce filtre :

Tranche Impressions Clics CTR Position moy.
Tout 3 776 076 15 911 0,42 % 11,2
Filtré humain 340 267 3 729 1,10 % 7,7
Reste à signature machine 3 435 809 12 182 0,35 % 11,6

Le filtre est une heuristique, et il échoue dans les deux sens. Les questions d’examen le passent, puisqu’elles ne contiennent ni guillemets ni tirets bas, donc la part machine de 91 % est un plancher, pas un plafond. Et les colleurs d’erreurs y échouent tout en étant le trafic le plus humain que j’aie. Je traite la tranche filtrée comme « surtout humaine, sous-estimée » et le reste comme « surtout machine, plus mes meilleurs visiteurs en débogage », et je vérifie les listes de requêtes à l’œil avant toute décision qui coûte de l’effort.

La distorsion dépasse le CTR. Les requêtes machine tirent ma position moyenne apparente de 7,7 à 11,2, parce que les balayages de récupération sondent des formulations de longue traîne où mes pages se classent n’importe où. Un tableau de bord qui mélange les tranches rapporte un site qui glisse dans les classements alors que l’expérience humaine tient bon.

Le guide qui avait l’air de mourir

La même séparation a sauvé ma lecture d’une page plus grosse. Mon guide Hermes affiche 763 439 impressions sur les 28 derniers jours avec 569 clics : un CTR de 0,075 % à une position moyenne mélangée de 13,5. Pris au pied de la lettre, la page s’est effondrée. Sa base de référence humaine suivie est un CTR de 1,53 % à la position 8,5, et la dernière semaine filtrée humaine tient toujours la position 8,4.1

Les deux lectures décrivent la même page le même mois. Le chiffre mélangé dit que le guide échoue ; le chiffre filtré dit que les humains le trouvent exactement là où ils l’ont toujours trouvé, tandis qu’un océan de récupération machine montait autour. Changement de composition, pas perte de classement. Si j’avais fait confiance à la vue mélangée, les gestes naturels auraient été une réécriture, un nouveau titre, peut-être une migration d’URL : une chirurgie coûteuse sur un patient en bonne santé.

Je pars maintenant du principe que n’importe quelle page établie peut présenter le même symptôme, et je parierais que la plupart des « baisses de performance » de la Search Console dans les niches à forte présence d’IA se décomposent de la même façon. Le dénominateur a changé d’espèce.

Ce que j’ai réellement changé

Séparer avant de décider. Chaque jugement de CTR, chaque expérience de titre et chaque enquête sur un déclin sur mon site commence désormais par la passe du filtre humain et un balayage manuel des 20 premières requêtes. Cinq minutes de lecture du texte des requêtes ont renversé à plusieurs reprises la conclusion que l’agrégat suggérait.

Nourrir délibérément les colleurs d’erreurs. Les chaînes d’erreur exactes sont les meilleurs mots-clés que je n’ai jamais choisis. Les pages qui y correspondent se placent aux positions 2 à 4 et convertissent à des taux d’urgence de débogage. Les messages d’erreur, les clés de configuration et les sorties de CLI reçoivent désormais des titres mot pour mot dans mes billets techniques, parce que quelqu’un qui colle cette chaîne dans Google est le visiteur le plus récupérable d’internet.

Cesser de courtiser les candidats aux examens. Zéro clic veut dire zéro, pour toujours. Une banque de questions qui vérifie son corrigé ne peut être convertie par aucun titre, aucun extrait, aucun balisage schema. La seule réponse rationnelle est d’ignorer ce volume quand on juge une page, et peut-être de savourer le fait qu’un examen de certification quelque part cale apparemment ses réponses sur mon blog.

Rapporter des chiffres humains ou ne rien rapporter. Mes propres tableaux de bord tracent désormais la tranche filtrée, annotent la tranche mélangée et gardent les instantanés quotidiens dans git pour que les changements de composition restent visibles dans le temps. Les impressions comptent toujours, mais seulement une fois qu’on sait qui impressionne qui.

Le changement plus profond rejoint là où le dernier billet s’arrêtait. Les assistants lisent mes pages 17 000 fois par jour à la périphérie, et maintenant je peux les regarder faire la queue à la porte d’entrée de Google en chemin. La Search Console est discrètement devenue un journal de curiosité machine traversé par un mince courant humain. Le courant est la partie qui fait attention. Mesurez le courant.

Questions fréquentes

Combien de mes impressions Search Console viennent d’humains ?

Environ 9 % des impressions ; les 91 % restants ont une forme de machine. Sur une fenêtre récente de 28 jours, j’ai collecté 3 776 076 impressions, et exclure les requêtes qui contiennent un guillemet double ou un tiret bas réduit ce chiffre à 340 267, environ 9 %. Le CTR filtré triple presque, de 0,42 % à 1,10 %, et la position moyenne passe de 11,2 à 7,7. Les 91 % sont un plancher plutôt qu’un plafond, parce que les questions d’examen passent le filtre.1

Comment filtrer les requêtes machine de la Search Console ?

Une expression régulière. Dans l’API Search Analytics, ajoutez un filtre de dimension query avec l’opérateur excludingRegex et l’expression ["_], qui écarte toute requête contenant un guillemet double ou un tiret bas. Les chaînes entre guillemets signalent une vérification en correspondance exacte, dont les humains se donnent rarement la peine, et les tirets bas viennent des identifiants, et les identifiants viennent du code, pas des pouces.3

Pourquoi mon billet a-t-il d’énormes impressions et un CTR quasi nul ?

Lisez les requêtes avant de toucher au titre. Un de mes billets sur les hooks de Claude Code a attiré 30 105 impressions à 0,14 % de CTR en moins de deux semaines, le profil classique d’un titre cassé. Les premières requêtes étaient des questions d’examen à choix multiple mot pour mot et des chaînes de jargon SDK, et les requêtes véritablement humaines se comptaient sur les doigts d’une main. Le titre était bon. Le public était synthétique.4

Toutes les requêtes à forme de machine sont-elles sans valeur ?

Non, et un filtre grossier « supprimer toutes les requêtes à l’air machine » détruit de la valeur. Les colleurs d’erreurs déclenchent la signature par leurs noms entre guillemets et leurs tirets bas tout en étant les visiteurs les plus intentionnels que j’aie : xcrun: error: unable to find utility "mcpbridge" génère un clic à 6,25 %, et « codex trust_level » à 8,70 %. Les candidats aux examens, eux, ne cliquent jamais. La forme de la requête ment ; le comportement de clic dit la vérité.1

Ma page perd-elle vraiment des positions ?

Séparez les requêtes avant de conclure cela. Mon guide Hermes affichait 763 439 impressions et 569 clics sur 28 jours, un CTR de 0,075 % à une position moyenne mélangée de 13,5, ce qui se lit comme un effondrement. Sa base de référence humaine suivie est un CTR de 1,53 % à la position 8,5, et la dernière semaine filtrée humaine tient toujours la position 8,4. Changement de composition, pas perte de classement.1

Références


  1. Analyse de l’auteur des données Google Search Console pour blakecrosley.com via l’API Search Analytics, fenêtre de 28 jours du 16 juin au 13 juillet 2026. Non filtré : 3 776 076 impressions, 15 911 clics. Après exclusion des requêtes correspondant à ["_] : 340 267 impressions, 3 729 clics. Lignes par requête citées mot pour mot depuis la même extraction ; base de référence du guide Hermes issue des instantanés filtrés humains suivis par le site. ↩↩↩↩↩↩↩

  2. Google, Rapport sur les performances (Recherche), qui définit une impression comme un lien apparaissant dans un résultat de recherche vu par le chercheur, sans exigence que le chercheur soit une personne. ↩

  3. Google, Search Analytics API : query, documentant dimensionFilterGroups et l’opérateur excludingRegex utilisés pour le filtre humain. ↩↩

  4. Analyse de l’auteur, extraction Search Analytics par page pour /blog/claude-code-hooks-explained, du 30 juin au 13 juillet 2026 : 43 clics sur 30 105 impressions à la position moyenne 6,6, la famille de questions d’examen totalisant 254 impressions et zéro clic sur neuf pages et trois langues. ↩↩↩↩

  5. Blake Crosley, Les assistants sont désormais le public, données de première main de la périphérie Cloudflare sur le volume de requêtes d’agents IA par rapport aux visiteurs humains ; la moyenne actuelle sur 7 jours est d’environ 17 000 requêtes d’agents par jour contre une moyenne humaine sur 28 jours proche de 300 visiteurs par jour. ↩

Articles connexes

Le public, désormais, ce sont les assistants

Données de première main : les assistants IA demandent mes pages environ 66 fois plus souvent que les humains, surtout e…

19 min de lecture

La couche de nettoyage est le véritable marché des agents IA

Charlie Labs a pivoté de la construction d'agents au nettoyage derrière eux : le marché des agents IA passe de la généra…

19 min de lecture

La boucle Ralph : comment je fais tourner des agents IA autonomes pendant la nuit

J'ai bâti un système d'agents autonomes avec hooks d'arrêt, budgets de spawn et mémoire sur fichiers : les échecs et ce …

14 min de lecture