Leçons SEO tirées de la correction de notre propre site
Nous avons passé quelques jours à lire notre propre site comme le ferait un moteur de recherche, et nous avons trouvé six points à corriger. Chaque page déclarait deux blocs FAQ, Google utilisait une lueur décorative d'arrière-plan comme vignette, un ensemble de pages de modèles se positionnaient sur des recherches auxquelles elles ne répondaient pas, et une nouvelle section du site était bloquée par notre propre edge sur la préproduction. Rien de spectaculaire, mais tout cela nous coûtait discrètement en visibilité.
Le site en un paragraphe
mythex.ai est une application monopage que nous pré-rendons au moment de la compilation : un script parcourt chaque route, écrit un fichier HTML statique pour chacune, et injecte le titre, la description et les données structurées de la page (le bloc JSON-LD qui indique aux moteurs de recherche ce qu'est une page — voir ce que sont les données structurées). La plupart de ce qui suit se trouve dans cette étape de pré-rendu, parce que c'est le HTML que lit réellement un robot d'exploration.
1. Chaque page prétendait être la page FAQ
Symptôme. Notre modèle HTML contenait un bloc FAQPage valable pour tout le site dans ses données structurées, avec une URL pointant vers /faq. Le pré-rendu ajoutait ensuite le FAQPage propre à chaque page. Chaque page du site en contenait donc deux — et notre politique de confidentialité indiquait à Google qu'elle était la page FAQ.
Pourquoi c'est important. Google attend au plus un FAQPage par page. Un second, pointant ailleurs, est le genre de chose qui fait perdre de la valeur au balisage de la page, et pas seulement qui le fait ignorer.
Correction. Le bloc global a disparu. Le balisage FAQ de chaque page provient désormais d'un seul endroit, y compris /faq lui-même, qui le construit à partir de la liste complète des questions. Les pages sans FAQ ne déclarent plus rien, ce qui est la réponse honnête. Et le pré-rendu fait échouer la compilation si une page contient à nouveau plus d'un FAQPage. Une règle qui n'existe que dans la mémoire de quelqu'un finit par être enfreinte ; une règle appliquée par la compilation ne l'est pas.
2. Google utilisait la mauvaise image pour nous
Symptôme. Dans les résultats de recherche, la vignette de Mythex était la lueur pulsante et douce derrière le héros de notre page d'accueil — une image d'arrière-plan décorative — au lieu de notre carte de partage.
Pourquoi cela arrivait. Nous n'avions jamais indiqué à Google quelle image représentait une page, alors il en choisissait une parmi celles qu'il trouvait.
Correction. Deux aspects du même problème :
- Indiquer quelle image appartient à la page. La page d'accueil dispose désormais d'un nœud
WebPageavec unprimaryImageOfPagepointant vers la carte de partage, et les données structurées de chaque page pré-rendue portent leur propre image (l'image de partage de la page, ou l'image par défaut). - Masquer la décoration. Les images d'arrière-plan sont désormais interdites dans
robots.txtet servies avec un en-têtenoindex, noimageindex, afin qu'elles restent hors de la recherche d'images et des vignettes.
3. Les moteurs de recherche ne connaissaient que notre logo
Notre balisage Organization ne comportait qu'un nom, un logo et quelques liens vers les réseaux sociaux — de l'image de marque, rien de plus. Les moteurs de recherche construisent le panneau de connaissances d'une entreprise à partir de faits de type registre, nous avons donc ajouté ceux de notre licence commerciale : raison sociale, date de fondation, fondateur et adresse du siège. Nous avons volontairement omis le numéro de téléphone.
4. Les pages de modèles répondaient à une autre question
Symptôme. Search Console montrait trois pages de modèles qui recueillaient des impressions sans aucun clic. L'une se positionnait sur « portfolio content strategist » et ses variantes, une autre sur « best italian restaurant website design », une troisième sur un groupe autour de « agile board » — la moitié de ces recherches contenaient le mot « free ». Les positions allaient du milieu des 20 au milieu des 50.
Pourquoi. Chaque page répondait à une question différente de celle posée. Quelqu'un qui voulait voir à quoi ressemble un bon site de restaurant italien tombait sur une page qui lui vendait un générateur.
Correction. Chacune des trois pages comporte désormais une section écrite pour la recherche plutôt que pour le produit, un titre et une description dans les mots que les gens tapent, et des FAQ qui valent le balisage qu'elles émettaient déjà.
Le même commit a corrigé un problème plus discret. Le bloc « modèles similaires » prenait les quatre premiers modèles d'une catégorie, si bien que chaque modèle de portfolio pointait vers les mêmes quatre portfolios, et le reste de la catégorie ne recevait aucun lien interne. Nous l'avons remplacé par un anneau ordonné par sous-catégorie : chaque page de modèle reçoit exactement quatre liens entrants et quatre liens sortants. Le HTML pré-rendu affiche désormais aussi ces liens — avant, ils n'existaient qu'après l'exécution de JavaScript, qu'un robot d'exploration peut ne jamais exécuter.
5. Prévenir Bing des nouvelles pages dès leur déploiement
Google ignore IndexNow, un protocole qui signale aux moteurs de recherche qu'une URL a changé. Bing, Yandex et Seznam l'utilisent — et l'index de Bing est celui que lit la recherche de ChatGPT. Un créateur d'applications IA que les assistants IA ne peuvent pas trouver constitue une défaillance d'un genre particulier.
L'approche évidente, soumettre tout le plan du site à chaque déploiement, est exactement ce qui fait limiter une clé, et la plupart des déploiements ne modifient rien qui intéresse un moteur de recherche. Un script compare donc le plan du site actuellement servi avec celui qui vient d'être compilé, et ne soumet que la différence.
Deux détails ont rendu cela possible :
- Prendre un instantané avant le déploiement. La référence doit être capturée avant que la nouvelle compilation ne soit en ligne. Ensuite, le plan « en direct » est déjà le nouveau, et chaque différence revient vide.
- Seulement les nouvelles pages, pour l'instant. Notre plan du site ne contient pas de dates
lastmod, donc le script signale les nouvelles pages mais pas les réécritures. Dater chaque URL avec la date de compilation marquerait tout le site comme modifié à chaque déploiement — exactement le spam que nous voulions éviter.
Il ne s'exécute que pour les déploiements en production et n'échoue jamais la compilation : au moment où il tourne, le site est déjà en ligne, et une notification à un moteur de recherche ne vaut pas un déploiement en échec.
6. Notre propre edge répondait « introuvable »
Au lancement des pages /ai (on en parle dans une page d'accueil pour chaque type d'entreprise), la préproduction affichait « Not found » pour toutes, alors que l'hébergement statique les servait correctement.
Le service placé devant nos hôtes marketing ne transmet qu'une liste autorisée de chemins ; tout autre chemin reçoit un 404 définitif. /ai était nouveau et ne figurait pas dans la liste. Nous avons ajouté /ai et /ai/*, avec un test qui vérifie qu'ils passent. Un petit bogue, mais exactement le genre qui rend une nouvelle section invisible pour les robots d'exploration sans que personne ne le remarque.
Ce que nous en avons retenu
- Lisez le HTML que lit un robot d'exploration. La plupart de ces problèmes étaient invisibles dans un navigateur et évidents dans le fichier pré-rendu.
- Transformez les règles SEO en contrôles de compilation. « Un seul FAQPage par page » est désormais appliqué, et non plus simplement retenu.
- Dites clairement aux moteurs de recherche ce que vous voulez dire. Si vous ne précisez pas quelle image ou quels faits vous représentent, ils devineront.
- Search Console vous indique quelle question les gens ont posée. Des impressions sans clics signifient généralement que la page a répondu à une autre question.
- Soumettez les différences, pas tout. Ne signaler que ce qui a changé vous permet de rester dans les limites de débit.
Si vous faites la même chose pour un site que vous avez créé, nos guides sur le SEO pour les sites créés avec l'IA et la configuration de Google Search Console couvrent les bases.