Comment nous notons : 23 contrôles, et leurs poids

Une note sur 100 est une affirmation, et la plupart sont infalsifiables : un chiffre sans méthode derrière, sans version dessus, et sans moyen de savoir ensuite si c'est votre site qui a changé ou l'outil.

La nôtre, ce sont 23 contrôles répartis en cinq dimensions pondérées, et tout tient dans un seul fichier : packages/engine/src/scorer.js. Voici ce que chaque partie mesure, ce qu'elle vaut, et ce qu'elle ne peut pas vous dire.

Les cinq dimensions

Accessibilité — 30 %, 3 contrôles. La machine peut-elle seulement lire la page. Le contenu existe-t-il sans JavaScript, le contenu principal commence-t-il près du début du HTML, la page est-elle assez légère pour être récupérée entière. C'est la dimension la plus lourde parce que tout le reste est décoratif si le robot ne reçoit qu'une coquille vide.

Découvrabilité par l'IA — 25 %, 6 contrôles. Les clients IA sont-ils autorisés à entrer et savent-ils où aller : robots.txt existe-t-il, autorise-t-il les robots de recherche IA, y a-t-il un sitemap, le site répond-il à Accept: text/markdown, y a-t-il un llms.txt, Content-Signal est-il déclaré.

Données structurées — 20 %, 5 contrôles. Schema.org/JSON-LD, Open Graph, meta description, URL canonique, lang sur <html>. Ce qui dit à une machine ce que la page est, et non ce qu'elle raconte.

HTML sémantique — 15 %, 5 contrôles. Hiérarchie des titres, <article> ou <main>, rapport entre éléments sémantiques et divs, textes alternatifs qui décrivent quelque chose, profondeur d'imbrication des divs. C'est là-dessus que l'extraction décide quelles parties de la page sont la page.

Efficacité du contenu — 10 %, 4 contrôles. Réduction de tokens entre HTML et Markdown, rapport contenu/bruit, poids de la page, styles en ligne. Quelle part de ce que vous envoyez est du contenu.

Pourquoi les contrôles ne comptent pas tous pareil

Chaque contrôle porte un niveau de preuve à côté de son poids, et c'est ce niveau qui fixe le poids :

  • prouvé — un fournisseur de modèle le documente, ou la mesure le démontre. 3 des 23.
  • plausible — raisonnement solide, cohérent avec le fonctionnement des chaînes d'extraction, mais aucun fournisseur ne l'a confirmé. 13 des 23.
  • spéculatif — la convention existe et le secteur y croit, mais personne n'a montré qu'un robot la consomme. 7 des 23.

Reporté sur la note finale, cela place environ 32 des 100 points sur des contrôles prouvés, 51 sur des plausibles et 17 sur des spéculatifs.

Les trois contrôles prouvés : la page s'affiche sans JavaScript, le robots.txt autorise les robots de recherche IA, la page porte un balisage Schema.org. Le premier est le signal le mieux étayé de tout ce domaine, puisqu'aucun robot IA majeur n'exécute JavaScript. Le second est la seule vraie barrière du tableau : bloquez un robot de recherche et vous êtes tout simplement absent de cet assistant.

À l'autre bout se trouvent llms.txt et Content-Signal. Ils sont servis par un très grand nombre de domaines, aucun fournisseur n'a confirmé les lire, et Google a déclaré que llms.txt n'avait aucun effet. Nous les notons quand même — l'absence de preuve n'est pas la preuve de l'absence — mais à 10 % de leur dimension chacun au lieu des 20 % que portait llms.txt. L'efficacité du contenu est spéculative de bout en bout : les chaînes de récupération lancent une extraction de type Readability avant qu'un modèle ne voie quoi que ce soit, donc un HTML sobre rapporte sans doute moins que le secteur ne l'imagine.

Ce rééquilibrage, c'est exactement ce qu'a été le barème v2. En v1, « s'affiche sans JavaScript » valait 6 % de la note finale alors que la réduction de tokens, qu'aucun fournisseur n'a jamais mentionnée, en valait 10 % : le contrôle le mieux étayé du tableau comptait moins qu'une intuition.

Le barème porte un numéro de version

Le scorer exporte RUBRIC_VERSION, aujourd'hui 2. La v1, ce sont les poids d'origine, février 2026. La v2, c'est le rééquilibrage par la preuve, juillet 2026.

Sans ce numéro, une note n'est pas reproductible. Vous lancez une analyse, vous obtenez 90. Six mois plus tard, 85. Votre site a-t-il régressé, ou avons-nous déplacé les poteaux ? Un certificat qui ne nomme pas la règle avec laquelle il a été mesuré est un chiffre que personne ne peut vérifier.

Cette erreur, nous l'avons commise. La version existait dans le scorer et voyageait sur l'objet résultat, mais elle n'atteignait jamais la base de données : le classement rangeait donc des notes les unes par rapport aux autres sans savoir si elles avaient été mesurées de la même façon, des lignes v1 au-dessus de lignes v2 comme si la comparaison voulait dire quelque chose.

La migration 007_add_rubric_version_to_analyses.js a ajouté la colonne, avec 1 par défaut pour toutes les lignes existantes. Ce défaut n'était pas une supposition : toutes ces lignes précédaient la v2, donc 1 est un fait. Elle indexe aussi (rubric_version, score) pour qu'un classement puisse être restreint à un seul barème. Le timing était la partie sensible : il fallait qu'elle passe avant la première analyse en v2, sinon les nouvelles lignes se seraient déclarées v1 sans l'être.

Ce que nous ne notons délibérément pas

Une page, pas un site. Une analyse lit une URL. robots.txt, sitemap et llms.txt valent pour tout le site ; le reste concerne cette page et elle seule. Une bonne page sur un site par ailleurs faible obtient une bonne note, à juste titre.

Ce qu'un modèle a réellement fait de vous. Nous ne pouvons pas voir si ChatGPT vous a cité, si Claude a bâti sa réponse à partir de votre page, si quelqu'un vous a mentionné. Personne ne voit cela de l'extérieur. Chaque contrôle est une propriété de ce que vous servez, pas de ce qu'on en a fait.

Si un robot est vraiment entré. Quand nous sondons en nous présentant comme un robot IA et que quelque chose en périphérie nous refoule alors que le robots.txt nous accueille, nous ignorons lequel des deux rencontre un robot vérifié. Ce contrôle est plafonné à 60 — un succès avec réserve, pas un échec — et le détail dit ce qui s'est passé. Un chiffre est une mauvaise façon de dire « on ne sait pas ».

Rien ici ne vérifie si ce que vous avez écrit vaut quelque chose. Une note élevée est un bon indice de départ : une machine peut lire la page et sait ce qu'elle est. Ce n'est pas une promesse d'être cité.

Nous l'appliquons à nous-mêmes

agentready.md obtient 94/100. Ce chiffre sort de la base de données — notre analyse la plus récente de notre propre domaine, reliée à son certificat — plutôt que tapé dans le gabarit. Quand il bouge, la page bouge. Quand il n'y a pas d'analyse, la page n'affiche rien plutôt qu'un chiffre périmé.

Il a déjà baissé. Pendant des mois, notre origine renvoyait 404 sur /robots.txt tandis que la Content Signals Policy managée de Cloudflare répondait en périphérie avec un 200 et un fichier que nous n'avions jamais écrit. Notre propre scorer lisait ce 200 et nous validait. En réparant l'origine et en coupant le fichier managé, nous sommes passés de 93 à 90. Le chiffre le plus bas était l'honnête : ces trois points mesuraient le fichier de Cloudflare, pas le nôtre.

Comment la note est construite · Ce que les autres obtiennent