Ce que le référencement
exige réellement
Le socle documentaire sur lequel le langage à jetons a été conçu. Chaque affirmation est qualifiée — règle documentée, convention de place, ou mythe — parce qu'une large part de ce qui s'enseigne comme « règle SEO » n'en est pas une. Douze domaines, quarante et un points, vérifiés en août 2026.
Le socle technique du code
Ce que Google et Bing exigent réellement du HTML — et ce qui relève du folklore d'agence.
Rendu : pourquoi le HTML au build est structurellement supérieurRègle
Google traite le JavaScript en trois phases séquentielles : exploration → rendu → indexation. Le point critique est la file d'attente de rendu.
« Googlebot queues all pages with a 200 HTTP status code for rendering […] The page may stay on this queue for a few seconds, but it can take longer than that. » — Google Search Central — JavaScript SEO Basics
Google ne publie aucun chiffre officiel sur la durée de cette file. Méfiez-vous des « 9 jours en moyenne » qui circulent : ce sont des mesures tierces.
Bing est plus restrictif encore : Microsoft écrit qu'il « peut être difficile pour bingbot de traiter le JavaScript à grande échelle » et recommande le prerendering.
Le HTML généré au build n'apporte pas de bonus de classement — il n'en existe pas. Il supprime une phase entière du pipeline et garantit l'accès aux robots sans JS. C'est une condition d'éligibilité, pas un levier.
Votre site
100 % statique, généré au build. Cet avantage est déjà acquis — et c'est le plus structurant de tous.
Core Web Vitals : facteur confirmé, mais départageurRègle
La citation qui remet tout à sa place :
« Google Search always seeks to show the most relevant content, even if the page experience is sub-par. » — Google — Page Experience
Google confirme que les CWV « sont utilisés par nos systèmes de classement », tout en précisant que de bons scores « ne garantissent pas que vos pages seront classées en tête ». Lecture défendable : un facteur départageur entre contenus de pertinence comparable, jamais un substitut à la pertinence.
Le « SEO score » n'existe pas chez Google
Le score Lighthouse (0-100) est du lab data simulé. Le classement s'appuie sur le field data (CrUX, utilisateurs réels). Un « SEO score 98/100 » affiché par Semrush, Yoast ou Lighthouse n'a aucune existence chez Google. C'est la première chose que votre langage JSON ne doit pas chercher à optimiser.
| Métrique | Bon | À améliorer | Mauvais |
|---|---|---|---|
| LCP — chargement | ≤ 2,5 s | 2,5 – 4,0 s | > 4,0 s |
| INP — interactivité | ≤ 200 ms | 200 – 500 ms | > 500 ms |
| CLS — stabilité | ≤ 0,1 | 0,1 – 0,25 | > 0,25 |
Le piège CrUX : votre site n'aura probablement jamais de données de champRègle
Point capital, et rarement expliqué. Le classement utilise les données de champ (CrUX), pas le laboratoire. Or CrUX exige qu'une page soit « suffisamment populaire » — seuil non divulgué.
Un site de 13 pages à faible trafic est donc évalué au niveau de l'origine, pas par URL. La conséquence est contre-intuitive et importante :
La page la plus lente contamine les douze autres
Sans cloisonnement par URL, une seule page lourde dégrade l'évaluation du site entier.
Autre exclusion notable : Chrome sur iOS ne contribue pas à CrUX. En Suisse romande, où la part d'iPhone est élevée, le bassin de collecte est encore réduit.
Délai de visibilité d'une correction — fenêtre glissante de 28 jours :
Premier frémissement
J+3
Effet à 50 %
J+16
Fenêtre purgée
J+30
Toute mesure prise à J+7 est du bruit. La parade réelle : collecter vos propres données de champ (bibliothèque web-vitals → Cloudflare Worker), qui n'a pas de seuil minimum et capture Safari/iOS.
Codes HTTP et « soft 404 »Règle
Google suit jusqu'à 10 sauts de redirection.
Le soft 404 : le serveur répond 200 mais le contenu indique une erreur. Google l'identifie en analysant le contenu rendu. Nuisible car il consomme du crawl et fait indexer des pages vides sous une infinité d'adresses.
« 410 désindexe plus vite que 404 »
La documentation dit explicitement que 403, 404 et 410 sont traités de la même manière. L'avantage du 410 est une observation de terrain, pas une règle.
Votre site — vérifié en ligne
Les trois versions renvoient un vrai 404 sur une adresse fausse. La version statique renvoyait auparavant 200 avec le HTML de l'accueil : c'était un soft 404, corrigé.
| Code | Traitement Google |
|---|---|
200 | Contenu transmis à l'indexation — sans garantie d'indexation |
301 / 308 | Signal fort de canonicalisation |
302 / 307 | Signal faible — la source peut rester canonique |
404 / 410 / 403 | Traités identiquement — désindexation progressive |
429 | Traité comme une erreur serveur, pas comme un 4xx |
5xx | Crawl réduit ; pages supprimées si persistant |
Le budget de crawl ne vous concerne pasRègle
Google délimite précisément qui est concerné — « rough estimates, not exact thresholds » :
1. Plus d'un million de pages uniques, contenu changeant hebdomadairement 2. Plus de 10 000 pages uniques, contenu changeant quotidiennement 3. Une grande part d'URLs en « Découverte, actuellement non indexée »
Conclusion pour un site de 13 pages
Optimiser le budget de crawl ici est du théâtre SEO. Seul le critère 3 mérite une surveillance. N'y consacrez aucune ressource.
HTML sémantique : la réponse honnêteMythe
Aucune documentation Google n'affirme que <header>, <nav>, <main>, <article> ou <section> influencent le classement.
John Mueller a déclaré à plusieurs reprises qu'<article> n'a pas d'effet direct. Ces propos sont des déclarations d'employé, fiables directionnellement, mais pas de la spécification.
Les vraies raisons de les utiliser : accessibilité (régions ARIA implicites pour les lecteurs d'écran), maintenabilité, extraction par les robots d'IA. Argumentez sur l'accessibilité, jamais sur un gain de classement.
Données structurées : ce qui produit encore un résultat enrichiRègle
Rupture majeure : les résultats enrichis FAQ sont supprimés
« This feature will no longer appear in Google Search starting May 7, 2026. » — Google — FAQPage structured data (vérifié à la source)
La documentation a été retirée le 15 juin 2026. Le balisage
FAQPage
ne produit
plus aucun résultat enrichi, pour personne
. Il ne nuit pas s'il reste en place, mais en attendre de la visibilité est faux.
Le piège des avis auto-attribués
« If the entity that's being reviewed controls the reviews about itself, their pages that use LocalBusiness or any other type of Organization structured data are ineligible for star review feature. » — Google — Review snippet (vérifié à la source)
Baliser vos propres témoignages en
Review
vous rendrait inéligible et vous exposerait à une action manuelle.
Votre site — audité en ligne
LocalBusiness, WebSite, WebPage, BreadcrumbList et Service présents. Zéro balisage Review sur les 5 témoignages — c'est la bonne décision, et elle vous évite une sanction. Le FAQPage de l'accueil est devenu inerte : sans danger, sans bénéfice.
| Type | Résultat enrichi réel | Statut |
|---|---|---|
BreadcrumbList | Fil d'Ariane affiché à la place de l'URL | Fiable — desktop |
LocalBusiness | Panneau de connaissance, infos enrichies | Requis : name + address |
Organization | Panneau de connaissance, logo | Actif |
Service | Aucun | Utile pour l'entité, pas l'affichage |
FAQPage | Aucun depuis mai 2026 | Supprimé |
Review sur soi-même | Interdit | Risque d'action manuelle |
Images : dimensions, lazy loading et l'erreur à ne pas commettreRègle
Formats indexables : BMP, GIF, JPEG, PNG, WebP, SVG, AVIF.
width et height ne sont pas des attributs « SEO » : ils permettent au navigateur de réserver l'espace avant le chargement, éliminant le décalage. C'est la cause n° 1 de CLS évitable.
Ne jamais mettre loading="lazy" sur l'image LCP
Mesures web.dev sur un thème WordPress : retirer le lazy loading au-dessus de la ligne de flottaison améliore le LCP médian de 13 % en desktop (2 029 → 1 759 ms) et 15 % en mobile (1 657 → 1 403 ms).
<!-- Image LCP --> <img src="hero.avif" width="1200" height="675" fetchpriority="high" alt="…"> <!-- Tout le reste --> <img src="x.webp" width="800" height="600" loading="lazy" decoding="async" alt="…">
Titres, méta et structure Hn
Le domaine où circulent le plus de fausses règles — et où quelques chiffres solides existent.
Longueur du title : mesurée en pixels, pas en caractèresRègle
Google ne fixe aucune limite de caractères. La documentation dit que les titres sont tronqués « typically to fit the device width ». La mesure est en pixels rendus.
Contre-intuitif : le desktop est plus contraignant que le mobile
Le desktop tronque sur une seule ligne ; le mobile passe à la ligne et affiche davantage. Corollaire : un titre en MAJUSCULES est tronqué ~30 % plus tôt à nombre de caractères égal.
Votre site — mesuré sur les 6 pages principales
46 à 57 caractères. Toutes vos pages sont dans la fenêtre optimale.
| Contexte | Pixels | ≈ caractères |
|---|---|---|
| Desktop — seuil de troncature | ~600 px | 50–60 |
| Desktop — cible sûre | 580 px | 55–58 |
| Mobile | ~480–520 px | 70–80 (2-3 lignes) |
Tiret ou pipe : un écart mesuré de 21 pointsRègle
De même, les crochets sont réécrits à 77,6 % contre 61,9 % pour les parenthèses.
Attention à la lecture
Le pipe n'est pas pénalisé et le tiret n'améliore pas le classement. L'écart porte sur la conservation du titre tel quel, pas sur le rang.
Votre site
Trois pages utilisent le pipe (Pass Découverte — Demi-journée & portraits | Kaina). Votre propre validateur le signalait déjà en avertissement. Correctif trivial, gain mesurable sur la conservation.
| Séparateur | Taux de remplacement par Google | |
|---|---|---|
Tiret - | 19,7 % | |
| Pipe `\ | ` | 41,0 % |
Faire concorder le title et le H1 : facteur ×11Convention
La donnée la plus actionnable de cette section :
La leçon générale : Google arbitre entre le title et le H1. Quand les deux concordent, il n'a rien à arbitrer.
La bonne pratique n'est ni « identiques » ni « divergents » mais concordants : même noyau sémantique (mot-clé, chiffres, entité), habillage différent (le title ajoute la marque, le H1 respire).
| Situation | Conservation par Google |
|---|---|
| Chiffres dans le title, absents du H1 | 74,2 % |
| Mêmes chiffres dans le title et le H1 | 97,3 % |
« Un seul H1 par page » et la hiérarchie stricteMythe
« You can use H1 tags as often as you want on a page. There's no limit, neither upper nor lower bound. […] Your site is going to rank perfectly fine with no H1 tags or with five H1 tags. » — John Mueller, Google
« From Google Search perspective, it doesn't matter if you're using them out of order. […] H1 is the most important heading for screen readers but it's not the most important for Google. » — Gary Illyes, Google
Illyes ajoute, visant directement les audits qui signalent en rouge un saut H2→H4 : « Just because a non-Google tool tells you something is good or bad, that doesn't make it relevant for Google. »
La formulation juste
Respectez la hiérarchie — pour l'accessibilité, pas pour le SEO. Ne vendez jamais une refonte de hiérarchie Hn comme un levier de positionnement : Google a dit l'inverse.
Votre site — audité en ligne
Un seul H1, hiérarchie h1 h2 h3 h3 h3 h2 h2 h3…sans aucun saut. Irréprochable, et conforme WCAG 1.3.1.
| Aspect | Impact SEO | Impact accessibilité |
|---|---|---|
| Un seul H1 | Nul | Recommandé |
| Ordre strict H1→H2→H3 | Nul | Requis — WCAG 1.3.1 (A) |
| Titres descriptifs | Réel | Réel |
Meta description : pas un facteur de classementRègle
Retirée des signaux de classement en 2009. Son effet est indirect, via le taux de clic.
Le constat qui contredit tous les plugins SEO
Ahrefs (20 000 mots-clés, 192 656 pages) : Google réécrit 62,78 % des meta descriptions. Et surtout — respecter la longueur idéale n'améliore pas le taux de conservation : 63,69 % de réécriture pour les bien dimensionnées contre 61,46 % pour les trop longues. La longueur n'est donc pas le levier anti-réécriture.
Un quart des pages les mieux classées n'a aucune meta description. Écrivez-en sur les pages commerciales, où les 37 % de cas où elle passe comptent le plus.
| Contexte | Pixels | Caractères |
|---|---|---|
| Desktop | ~920 px | 155–160 |
| Mobile | ~680 px | ~120 |
Balises méta mortesMythe
Liste blanche réelle : description, robots/googlebot, google-site-verification, notranslate, viewport, charset, rating (adult), nopagereadaloud. Tout le reste est décoratif pour Google.
| Balise | Statut |
|---|---|
meta keywords | Ignorée depuis septembre 2009, annonce officielle |
meta author | Sans effet — utiliser Schema.org author |
geo.region, ICBM | Non supportées — le SEO local passe par GBP |
revisit-after | N'a jamais été supportée par aucun moteur |
meta language | Ignorée — utiliser <html lang> |
Fil d'Ariane : un changement de janvier 2025 à connaîtreRègle
Le 23 janvier 2025, Google a retiré le fil d'Ariane des extraits mobiles
Remplacé par le nom de domaine seul. Il reste affiché sur desktop. L'argument « le fil d'Ariane améliore le CTR mobile » n'est plus valable.
Les bénéfices durables sont ailleurs : maillage interne ascendant, transmission de PageRank vers les pages de catégorie, compréhension de la taxonomie, accessibilité.
<nav aria-label="Fil d'Ariane"> <ol> <li><a href="/">Accueil</a></li> <li aria-current="page">Page actuelle</li> </ol> </nav>
Le dernier élément du JSON-LD n'a pas besoin de item.
Mots-clés : la grande illusion
Le domaine où l'écart entre ce qui se vend et ce qui est vrai est le plus grand.
La densité de mots-clés n'existe pas — et n'a jamais existé
« That's just not the way it works. » — Matt Cutts, alors chef de l'équipe antispam de Google, sur la densité idéale (2011)
« Keyword density, in general, is something I wouldn't focus on. » — John Mueller (2014)
Aucun seuil, aucun pourcentage, aucune fourchette n'a jamais été confirmé par Google. Les jauges vertes et rouges de Yoast, RankMath ou SurferSEO sur ce point sont des inventions d'éditeurs de logiciels. Quand une fourchette est citée (1–3 %, 0,5–2,5 %), elle provient d'une reprise circulaire d'articles de blog, jamais d'une source primaire.
Techniquement, le concept est obsolète : il suppose une correspondance de chaînes, alors que Google fonctionne depuis 2019 (BERT) sur un modèle de compréhension contextuelle bidirectionnelle.
Le keyword stuffing, lui, est réel — et vous concerne directementRègle
« Keyword stuffing refers to the practice of filling a web page with keywords or numbers in an attempt to manipulate rankings. » — Google — Spam Policies
Parmi les exemples explicitement cités par Google : les listes de villes ou régions pour lesquelles une page tente de se positionner. C'est précisément le piège d'un service à Genève et Lausanne.
<!-- ❌ Violation explicite --> <footer>Photographe femme Genève, photographe femme Lausanne, photographe femme Nyon, séance photo Genève, séance photo Lausanne…</footer> <!-- ✅ Mention géographique porteuse de sens --> <p>Les journées ont lieu à Genève et à Lausanne, dans un lieu choisi ensemble.</p>
Le critère opérationnel de Google est simple : le texte sonne-t-il naturellement lu à voix haute ? Pas un pourcentage.
E-E-A-T n'est pas un facteur de classementMythe
C'est le point que la quasi-totalité des agences présentent de travers.
- Les Search Quality Rater Guidelines précisent aux évaluateurs que leurs notes ne modifient pas les classements.
- Les ~10 000 évaluateurs humains produisent des données servant à entraîner et valider les systèmes, jamais à noter des pages en production.
- Il n'existe aucun « score E-E-A-T » dans l'algorithme.
Formulation correcte : E-E-A-T est le concept que les signaux de Google tentent d'approximer. Ce sont ces signaux (liens, mentions, cohérence d'entité, historique, comportement) qui agissent — pas E-E-A-T lui-même. On n'« optimise » pas pour E-E-A-T : on construit une réputation réelle et on la rend lisible par les machines.
Google donne un cadre : Who / How / Why — qui a écrit, comment le contenu a été produit (y compris l'usage de l'IA), et pourquoi il existe.
Longueur de contenu : ni minimum, ni corrélation causaleMythe
« Are you writing to a particular word count because you've heard or read that Google has a preferred word count? (No, we don't.) » — Google — Creating helpful content
Cette question figure dans la liste des signaux d'alerte de Google — écrire pour un quota est présenté comme un symptôme de contenu conçu pour les moteurs.
Les études de corrélation, lues correctement
Ahrefs (~900 millions de pages) trouve une forte corrélation longueur ↔ domaines référents. Ahrefs eux-mêmes en donnent la lecture juste : c'est un processus en deux étapes — un contenu long obtient plus de liens, et les liens améliorent le classement. La variable causale est le lien, pas le mot. Rallonger un texte sans gain de substance ne produit aucun lien, donc aucun effet.
Contre-preuve décisive : Ahrefs mesure une corrélation quasi nulle (Spearman = 0,04) entre longueur et citation dans les AI Overviews. Si la longueur était causale, elle se serait maintenue.
Contenu dupliqué : pas de pénalitéMythe
Google a publié dès 2008 un article intitulé « Demystifying the duplicate content penalty ». Il n'existe aucun seuil de pourcentage de similarité. Les outils affichant « 87 % de similarité — danger » appliquent un modèle qui n'existe pas chez Google.
Ce qui se passe réellement : Google regroupe les pages similaires, choisit une canonique, et consolide les signaux vers elle. Ce n'est pas une sanction, c'est une consolidation. Le problème pratique : Google peut choisir une autre canonique que la vôtre.
Le vrai risque, documenté par un cas réel
Un site avec plus de 3 000 pages de localisation a reçu une action manuelle « thin content ». Le détail décisif : les textes étaient réellement différents, rédigés par des humains. La reformulation ne suffit pas — la différenciation doit porter sur des faits, pas des synonymes.
Contenu généré par IA : la politique exacteRègle
Google a explicitement neutralisé la question « IA ou humain » en mars 2024, en remplaçant l'ancienne politique sur le contenu automatique par le scaled content abuse :
Cette règle permet à Google d'agir « que le contenu soit produit par automatisation, par des humains, ou par une combinaison des deux ». — Google — March 2024 spam policies
Le critère n'est plus la méthode mais le résultat : production de masse sans valeur ajoutée.
Ce qui vous protège structurellement
Votre proposition de valeur repose sur l'expérience vécue — le pilier « Experience » de E-E-A-T, celui que l'IA ne peut pas fabriquer. « Une cliente est arrivée en larmes à sa séance de janvier » ne peut venir que de vous.
| Usage | Statut |
|---|---|
| Structurer, reformuler, corriger | Sans réserve |
| Premier jet retravaillé avec du vécu réel | Acceptable |
Générer les alt puis relire | Acceptable |
| Générer 30 pages « [service] à [ville] » | Violation — doorway |
| Générer des témoignages clientes | Grave — et illicite (LCD suisse) |
Typographie par type d'écran
Ce qui est une obligation normative, ce qui est une recommandation d'éditeur, et ce qui est une convention.
Le seuil de « 16 px minimum » n'est pas une norme
WCAG ne définit à aucun niveau (A, AA, AAA) de taille de police minimale. Aucun critère ne dit « 16 px ». Le seul seuil qu'ait documenté Google était 12 px, dans un audit Lighthouse supprimé depuis — comme le rapport d'ergonomie mobile, retiré en décembre 2023. La légitimité du 16 px vient d'ailleurs : c'est la valeur par défaut dufont-size racine des
navigateurs, et le seuil de zoom automatique d'iOS.Ce que WCAG exige réellementRègle
1.4.12 est souvent mal compris
Il n'exige pas que votre design ait un line-height: 1.5. Il exige qu'il ne casse pas si l'utilisateur l'impose. L'échec typique n'est pas typographique mais structurel : hauteurs fixes, overflow: hidden, conteneurs non extensibles.
| Critère | Niveau | Exigence réelle |
|---|---|---|
| 1.4.4 Resize Text | AA | Texte agrandissable à 200 % sans perte de contenu |
| 1.4.10 Reflow | AA | Utilisable à 320 px de large sans défilement bidirectionnel |
| 1.4.12 Text Spacing | AA | Ne pas casser si l'utilisateur impose interligne 1.5, espacement 2em, lettres 0.12em, mots 0.16em |
| 2.5.8 Target Size | AA | Cibles de 24 × 24 px minimum |
| 2.5.5 Target Size (Enhanced) | AAA | 44 × 44 px |
Le seul argument dur en faveur de 16 px : le zoom iOSRègle
Safari sur iOS — et tous les navigateurs iOS, contraints d'utiliser WebKit — zoome automatiquement le viewport quand un champ de saisie reçoit le focus et que sa taille calculée est strictement inférieure à 16 px.
- Seuil dur : 16 px ne déclenche pas le zoom, 15,99 px oui.
- C'est la taille calculée et rendue qui compte, pas la valeur déclarée.
- Le zoom n'est pas annulé au blur — c'est le vrai coût : toute la mise en page reste zoomée.
La mauvaise solution
user-scalable=no supprime le zoom auto et interdit le zoom volontaire → échec direct de WCAG 1.4.4. iOS l'ignore d'ailleurs largement depuis la version 10.
input, textarea, select { font-size: max(16px, 1rem); }
max() garantit le plancher tout en laissant la taille croître si l'utilisateur a augmenté sa police racine.
Votre site — mesuré en ligne
Champ e-mail à 17 px. Au-dessus du seuil, pas de zoom iOS. Bouton d'envoi 145 × 60 px, bien au-delà des 44 px AAA.
⚠️ Typographie fluide : l'erreur qui casse le zoomRègle
Le W3C documente formellement cet échec sous la technique F94 : « Failure of Success Criterion 1.4.4 due to incorrect use of viewport units to resize text ».
Le mécanisme : quand l'utilisateur zoome, les pixels CSS grossissent, donc le viewport mesuré en pixels CSS rétrécit. À 200 %, un écran de 1440 px ne fait plus que 720 px CSS. Or 1vw = 1 % de cette largeur. Les deux effets s'annulent exactement — le texte en vw pur ne grossit pas du tout.
Comportement au zoom 200 %
Taille du H1 mesurée sur votre site, à viewport 1440 px puis 720 px (= zoom 200 %)
clamp(3.5rem, 9vw, 8rem)
sans composante rem — votre code actuel
152 px
79 px — rétrécit de 48 %
clamp(3.5rem, 1.83rem + 6.86vw, 8rem)
avec composante rem — conforme F94
152 px
152 px — conservé
Mesure réelle effectuée sur le site en production, pas une simulation.
La règle : la valeur préférée doit être de la forme Xrem + Yvw, jamais Yvw seul, et MAX ≤ 2,5 × MIN.
Votre site — défaut confirmé par la mesure
35 déclarations clamp() sans composante rem. Vérifié dans le navigateur : à l'équivalent d'un zoom 200 %, le H1 passe de 152 px à 79,2 px — il rétrécit de moitié au lieu de doubler. Échec de WCAG 1.4.4 (AA), qui est une obligation normative. Bonne nouvelle : le corps de texte n'est pas touché (16–18,8 px, il grossit correctement). Tous les ratios sont déjà sous 2,5 — seule la composante rem manque. Le correctif est mécanique et calculable.
Valeurs de référence par écranConvention
Résolutions réelles (StatCounter, juillet 2026) : mobile très fragmenté — 414×896 (13,2 %), 360×800 (9,1 %), 390×844 (6,7 %). Desktop : 1920×1080 domine à 22,4 %, mais 1536×864 à 7,3 % rappelle que beaucoup d'utilisateurs Windows sont à 125 % de mise à l'échelle. Concevoir « pour du 1920 » revient souvent à concevoir pour du 1536 réel.
Longueur de ligne : le seul chiffre opposable est WCAG 1.4.8 (AAA) — ≤ 80 caractères. La fourchette 50–75 très citée relève de la tradition typographique, non d'un essai contrôlé.
| Élément | Mobile 390 | Tablette 768 | Desktop 1440 |
|---|---|---|---|
| Corps de texte | 16–17 px | 16–18 px | 17–20 px |
| Champs de formulaire | 16 px impératif | 16 px | 14–16 px |
| H1 hero | 32–40 px | 48–56 px | 64–80 px |
| Interligne corps | 1,5–1,6 | 1,5–1,6 | 1,5–1,7 |
| Interligne hero | 1,15–1,2 | 1,1–1,15 | 1,0–1,1 |
| Longueur de ligne | ~40–45 ch | 60–65 ch | 65–75 ch |
| Cible tactile | 48 px | 44–48 px | 24 px AA / 44 AAA |
Contraste et accessibilité
Une obligation légale, pas un levier SEO — et l'audit chiffré de votre palette.
L'accessibilité n'est pas un facteur de classement
Position officielle de John Mueller (mars 2022) : l'accessibilité n'est pas un facteur de classement direct. Le score Lighthouse Accessibility n'a aucun effet sur le référencement — il n'est jamais transmis à l'index. Seulsalt, les ancres explicites et le texte réel ont un
impact SEO confirmé. Le contraste est une obligation légale et éthique ; le vendre comme argument SEO est une
surpromesse.Les seuils exacts et la formuleRègle
Formule officielle : (L1 + 0,05) / (L2 + 0,05), avec L = 0,2126·R + 0,7152·V + 0,0722·B après linéarisation gamma (seuil 0,04045, pente 12,92, exposant 2,4).
APCA n'est pas dans WCAG 3 — contrairement à ce qu'on lit partout
L'AGWG a retiré APCA de la spécification en 2023, faute de soutien. La note d'édition en vigueur est sans ambiguïté : « The contrast algorithm used in WCAG 3 is yet to be determined. » Les obligations légales (EAA, ADA, RGAA, LHand suisse) référencent WCAG 2.x niveau AA, jamais APCA. N'abandonnez jamais les seuils WCAG 2 au prétexte qu'APCA valide une couleur.
| Contenu | AA (1.4.3) | AAA (1.4.6) |
|---|---|---|
| Texte normal | 4,5:1 | 7:1 |
| Texte large (≥ 18 pt / 24 px, ou 14 pt gras / 18,66 px) | 3:1 | 4,5:1 |
| Composants d'interface, bordures (1.4.11) | 3:1 | — |
Audit chiffré de votre palette — calcul indépendantRègle
J'ai calculé ces ratios moi-même avec la formule officielle, puis un agent les a recalculés indépendamment. Les deux calculs concordent au millième.
Trois constats sur votre site
1. Le socle est excellent : noir/crème, noir/blanc, gris-sur-noir — tous AAA sans réserve. 2.#6e6e6e sur crème passe AA avec 0,06 de marge. C'est une conformité sans filet : le moindre ajustement le fait basculer. Correctif : #5a5a5a (≈ 5,8:1) pour une marge confortable, ou #515151 (7,10:1) pour viser AAA. 3.#a9a9a9 échoue totalement sur fonds clairs (2,10:1). Il est conçu pour le fond noir. Ce jeton doit être verrouillé au thème sombre — sinon c'est un bug d'accessibilité en attente. Le gris clair (1,30:1) sert de fond d'attente derrière les images, jamais de texte — donc conforme, car 1.4.11 ne couvre que les composants d'interface. Une exception vérifiée : le séparateur « / » du fil d'Ariane, purement décoratif.
| Texte | Fond | Ratio | Verdict |
|---|---|---|---|
Noir #111111 | Blanc | 18,88:1 | AAA |
| Noir | Crème #f4f2ee | 16,89:1 | AAA |
| Crème | Noir | 16,89:1 | AAA |
Gris sur noir #a9a9a9 | Noir | 8,03:1 | AAA |
Gris #6e6e6e | Blanc | 5,10:1 | AA |
| Gris | Crème | 4,56:1 | AA — marge 0,06 |
| Gris | Noir | 3,70:1 | Échec texte normal |
| Gris sur noir | Crème | 2,10:1 | Échec total |
Gris clair #d8d6d2 | Crème | 1,30:1 | Échec — usage décoratif seulement |
Ce qui relie vraiment accessibilité et SEORègle
Formulation honnête : accessibilité et SEO partagent des moyens techniques (HTML sémantique, texte alternatif, liens explicites) parce que les deux servent un agent qui ne voit pas la page. Mais une grande partie de l'accessibilité n'a aucun effet SEO — justifiez-la par la conformité légale.
alt="" et non alt omis
alt="" retire l'image de l'arbre d'accessibilité — correct. Omettre l'attribut fait annoncer le nom de fichier par certains lecteurs d'écran — incorrect. Google interdit explicitement le bourrage : « may cause your site to be seen as spam ».
| Élément | Impact SEO |
|---|---|
alt des images | Réel — Google le documente : compréhension de l'image, ancrage si l'image est un lien, Google Images |
| Ancres explicites | Réel — « good anchor text tells users and Google something about the page » |
| Texte réel plutôt que texte-en-image | Réel — le texte gravé dans un JPG n'est pas indexé |
| Transcriptions | Réel — l'audio seul n'est pas indexable |
| Hiérarchie Hn en ordre | Nul (mais requis WCAG 1.3.1) |
Attribut lang | Nul — Google détecte la langue par le contenu |
| ARIA, focus, clavier, contraste | Nul |
Favicon et présence dans les SERP
Une règle périmée dans la plupart des guides, et un défaut réel sur votre site.
La règle des « multiples de 48 px » n'existe plus
Google a réécrit cette exigence le 24 octobre 2024. Vérifié à la source ce jour, le texte actuel est :« Your favicon must be a square (1:1 aspect ratio) that's at least 8x8px. While the minimum size requirement is 8x8px, we recommend using a favicon that's larger than 48x48px. » — Google — Favicon in SearchAucune mention de « multiple de 48 » dans la documentation actuelle. C'est aujourd'hui l'erreur la plus répandue dans les guides francophones.
Le défaut critique de votre siteRègle
Votre favicon ne peut pas s'afficher dans Google
Fichier mesuré : logo-88.webp = 88 × 49 px. C'est un rectangle, alors que Google exige un ratio 1:1 strict. Le ratio non carré est la cause n° 1 documentée de non-affichage : Google substitue un globe générique. Second défaut : /favicon.ico renvoie 404 — or Bing va le chercher à la racine en priorité, même sans balise <link>.
Taille réellement affichée : ~16 × 16 px CSS en desktop, soit 32 à 48 px physiques sur écran Retina. D'où la recommandation « > 48×48 » : il faut de la matière pour le redimensionnement. Un favicon 16×16 natif sera flou sur tout écran moderne.
Le jeu de fichiers moderne — l'époque des 20 fichiers est révolue :
<link rel="icon" href="/favicon.ico" sizes="32x32"> <link rel="icon" type="image/png" href="/favicon-96.png" sizes="96x96"> <link rel="icon" href="/icon.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- 180×180 -->
Le piège le plus insidieux
Il faut deux autorisations dans robots.txt : Googlebot sur la page d'accueil et Googlebot-Image sur le fichier favicon. Un Disallow: /assets/ tue le favicon silencieusement — le site s'indexe parfaitement, seul le favicon disparaît.
Autres causes fréquentes : URL instable (hash de build changeant à chaque déploiement — excluez le favicon du hashing), data URI (ne fonctionne pas, Googlebot-Image doit crawler une URL réelle), un favicon par hostname uniquement (impossible d'en avoir un propre à /blog).
Le nom du site affiché dans les résultatsRègle
Ordre de priorité des signaux, vérifié à la source :
1. Données structurées WebSite — le plus fort 2. og:site_name 3. Balise <title> 4. Titres <h1> et texte de la page d'accueil
Placement impératif
Le WebSite schema doit être sur la page d'accueil uniquement, au niveau du domaine ou sous-domaine. Google ne lit ce signal nulle part ailleurs. Une incohérence entre og:site_name, <title> et WebSite.name fait perdre le signal.
Votre site
WebSite avec name: "Kaina Expérience" et og:site_name identique. Cohérent, correctement placé.
Architecture et SEO local
Là où se joue réellement votre visibilité — et le risque de pénalité à connaître.
La règle des 3 clics est un mythe — et trois chiffres n'ont pas résisté à la vérification
La règle des 3 clics est « an arbitrary rule of thumb that is not backed by data, so it's a myth ». — Nielsen Norman GroupOrigine documentée : un livre de 2001, énoncée sans données. Une étude de 2003 montre que le taux d'abandon n'augmente pas au-delà de 3 clics.
Trois chiffres très cités ont été cherchés et non retrouvés à la source : « 94 % des pages top-ranking à moins de 3 clics (Ahrefs) », « Botify : profondeur 1-2 crawlée 10× plus », « NN/g : +600 % de findability ». Sur 13 pages, la question ne se pose de toute façon pas.
⚠️ Pages villes : le risque de « doorway »Règle
Google liste explicitement parmi les abus de type doorway :
« Multiple domain names or pages targeted at specific regions or cities that funnel users » — Google — Spam Policies
Un cas documenté qui change la façon de voir
Un site avec
plus de 3 000 pages de localisation
a reçu une action manuelle « thin content ». Le détail décisif :
le propriétaire avait payé des rédacteurs humains, et les textes étaient réellement différents
.
« The wording on all the pages was actually different. But simply rewording similar content, especially when you have thousands of pages, isn't enough to please Google. » — Sterling Sky
Le test de validation, à faire avant publication : imprimez les deux pages, masquez tous les noms de villes. Si un lecteur ne peut pas dire laquelle est laquelle, la page n'existe pas encore.
Ce qui doit différer substantiellement (au moins 5 éléments sur 7) : le lieu réel décrit et photographié, les témoignages de clientes de cette ville, l'accès concret (TPG vs TL/M2, Cornavin vs Lausanne-Flon), les lieux de prise de vue extérieurs, les modalités propres, les partenaires locaux, l'angle éditorial.
Votre atout non copiable
Vous êtes photographe : vous ne pouvez pas dupliquer des photos entre Genève et Lausanne. Elles sont intrinsèquement locales et uniques. Là où la plupart des sites multi-villes échouent (contenu reformulé), vous disposez d'un différenciateur structurel. C'est simultanément votre protection anti-doorway et votre argument de conversion.
Votre site aujourd'hui
Aucune page ville. Donc aucun risque actuel. Le risque n'apparaîtra que le jour où vous en créerez.
Où se joue vraiment le classement localConvention
Étude Whitespark 2026 (47 experts). Nature de la donnée : opinions agrégées d'experts, pas une mesure de l'algorithme. C'est la meilleure donnée disponible, pas une expérimentation.
Local Pack vs organique local
Local Pack (carte)
Organique local
Fiche Google
32 %
Contenu on-page
33 %
Avis
20 %
Liens
24 %
Contenu on-page
15 %
Comportemental
10 %
Comportemental
9 %
Personnalisation
8 %
Liens
8 %
Fiche Google
7 %
Genève se gagne par la fiche Google et les avis (52 %).
Lausanne se gagne par le contenu et les liens (57 %).
L'écart entre les deux colonnes est votre feuille de route à deux villes.
Top 5 des facteurs individuels du Local Pack : catégorie principale de la fiche (227 pts), proximité de l'adresse (225), mots-clés dans le titre de la fiche (223), adresse dans la ville recherchée (213), établissement ouvert au moment de la recherche (189).
La conséquence stratégique
Avec une seule adresse réelle, vous ne rankerez pas ou peu dans le Local Pack de Lausanne — la proximité est le facteur n° 2. C'est en organique local que Lausanne se gagne, où le contenu pèse 33 % et la fiche seulement 7 %. La qualité substantielle de votre future page Lausanne est donc votre unique voie d'accès à ce marché.
Une fiche ou deux ? Les règles Google sont explicites : « Service-area businesses […] should have one profile for the central office with a designated service area », et un bureau en coworking ne peut être listé que s'il « maintains clear signage, receives customers […] and is staffed during business hours ». Une seconde fiche sur une adresse non staffée est le scénario de suspension le plus fréquent en SEO local.
Avis : la régularité prime sur le volumeRègle
Le facteur Whitespark n° 14 est formulé précisément : « sustained influx over time (rather than bursts) » — un flux soutenu, par opposition aux rafales. La rafale est identifiée comme le contre-modèle, et déclenche les filtres anti-spam.
Objectif réaliste pour un service premium
2 à 4 avis par mois, chaque mois, sans interruption. C'est très supérieur, en effet, à 30 avis en deux mois puis plus rien. Notez aussi le facteur n° 9 : avis avec texte — un 5 étoiles sans commentaire pèse beaucoup moins. Votre service génère spontanément des textes longs : encouragez le récit, pas la note.
Politique mise à jour les 16-17 avril 2026 — beaucoup de conseils en circulation sont périmés. Désormais interdits : demander un avis sur place, les bornes et tablettes, les quotas de personnel. Et le review gating : même « Si vous avez aimé, laissez un avis » est considéré comme du filtrage sélectif.
Formulation conforme — les mots qui neutralisent le reproche de sélectivité : « Si vous souhaitez partager votre ressenti sur cette expérience — quel qu'il soit […] Votre retour, positif comme critique, m'aide à faire évoluer l'accompagnement. »
Backlinks : le désaveu est une perte de tempsMythe
« The concept of toxic links is made up by SEO tools so that you pay them regularly. » — John Mueller, Google
Il a également qualifié le désaveu de liens toxiques de « billable waste of time ».
- Il n'existe aucune métrique Google de « toxicité ». Les « Toxicity Score » et « Spam Score » sont des inventions commerciales.
- Depuis Penguin 4.0 (2016), Google dévalue les liens spam au lieu de pénaliser le site cible.
Un seul cas légitime de désaveu
Une action manuelle pour liens artificiels dans Search Console. Si cet écran est vide, ne touchez jamais au fichier de désaveu. Un cas documenté montre un site ayant dû retirer un fichier de 15 000+ domaines pour retrouver ses positions.
Ce qui marche réellement en Suisse romande : la prescription croisée. Sages-femmes et doulas (post-grossesse), psychologues et coachs de transition (rupture, burn-out), naturopathes (ménopause), salons et boutiques haut de gamme. Proposez un échange de valeur réel, pas un échange de liens. Presse locale avec un angle société — jamais « je fais des photos ».
Ordre de grandeur réaliste : 15 à 25 liens locaux de qualité sur 12 mois. Peu en absolu, amplement suffisant pour une niche où la concurrence directe est quasi inexistante.
Formulaires et conversion
Deux corpus qui se contredisent — et ce qu'il faut en retenir honnêtement.
La contradiction est réelle et non résolue
HubSpot (40 000+ clients, landing pages) : les formulaires à 3 champs convertissent le mieux (~25 %).Zuko (93 millions de sessions de formulaires réels) : « la sagesse commune veut que les formulaires plus courts performent mieux ; ce n'est pas confirmé par les données. La courbe de tendance est plate. »
Les deux mesurent probablement des choses différentes. Ne prétendez pas que « la science dit 3 champs ». La lecture honnête : le nombre de champs est un proxy, pas une cause. Ce qui tue la conversion, c'est l'effort perçu et la friction psychologique de chaque champ.
Le formulaire recommandé pour un service intime et cherConvention
Le levier le plus sous-estimé : l'anxiété dominante au moment de cliquer n'est pas « mes données sont-elles en sécurité » mais « que va-t-il se passer maintenant ? ». Annoncez la suite :
Je lis chaque message personnellement et je réponds sous 48 heures. Pas de rappel téléphonique, pas de relance. Juste une réponse.
À éviter absolument : compteurs d'urgence, badges « SSL sécurisé », chiffres de vanité. Ils fonctionnent en e-commerce et se retournent sur un service intime, où ils signalent l'industrialisation.
| Champ | Statut | Justification |
|---|---|---|
| Prénom | Obligatoire | Permet une réponse nominative. Coût faible (texte simple). Pas de nom de famille. |
| Obligatoire | Canal de réponse | |
| Message libre | Optionnel, explicitement | Le textarea est le champ le plus coûteux en conversion, et le plus rentable en qualification. Le marquer facultatif neutralise son coût. |
| Téléphone | À exclure | Sur un sujet de vulnérabilité, il signale « on va vous appeler pour vendre » |
Le placeholder comme label : anti-pattern documentéRègle
NN/g documente sept problèmes, dont : charge mémoire (l'indice disparaît à la saisie), vérification impossible avant envoi, correction d'erreur difficile, et un constat d'eye-tracking — « les yeux des utilisateurs sont attirés par les champs vides » : un champ avec placeholder paraît déjà rempli et est sauté.
Placement : le label au-dessus permet la transition œil label→champ en ~50 ms, soit 10× plus rapide que le label aligné à gauche.
Votre formulaire — audité en ligne
Points corrects : autocomplete="email", type="email", taille 17 px (au-dessus du seuil iOS), bouton 145 × 60 px (au-delà des 44 px AAA), et un <label for> présent. Le défaut : ce label est position:absolute; left:-9999px — masqué hors écran. Visuellement, c'est donc un placeholder seul, l'anti-pattern documenté. Il satisfait le lecteur d'écran (WCAG 3.3.2) mais pas l'utilisateur voyant.
nLPD : le point juridique qui surprendRègle
Contre-intuitif : sous la nLPD suisse, le traitement de données par un privé ne requiert en principe ni consentement ni motif justificatif, dès lors que les principes de proportionnalité et de finalité sont respectés. C'est l'inverse de la logique RGPD.
Une case à cocher n'est donc pas légalement obligatoire pour un simple formulaire de contact. En ajouter une non requise est une friction pure.
Mais votre cas est différent — attention
Un champ libre où une femme écrit « je sors d'un burn-out » ou « post-partum difficile » fait entrer le traitement dans le champ des données sensibles (LPD art. 5 let. c : santé, sphère intime). Le consentement exprès devient alors requis (art. 6 al. 7). Ce qui est toujours obligatoire : le devoir d'information (art. 19) — identité du responsable, finalité, destinataires. Sanction : amende jusqu'à CHF 250 000, à charge de la personne physique responsable, pas de l'entreprise.
Formulez au positif : « Vos informations restent entre nous » plutôt que « Pas de spam, promis » — l'amorçage plante le mot « spam » dans l'esprit du lecteur.
Synthèse documentaire, pas un avis juridique. Le point « données sensibles » mérite d'être tranché par un juriste suisse.
Recherche générative et IA
Le domaine le plus vendu et le plus mal compris. Google a tranché — quatre fois.
Quatre tactiques « GEO » nommément désavouées par Google
« You don't need to create new machine readable files, AI text files, markup, or Markdown to appear in Google Search (including its generative AI capabilities), as Google Search itself doesn't use them. » — Google — Optimizing for generative AI features, mai 2026
llms.txt— « will neither harm nor help ». Mueller l'a comparé au meta keywords : un fichier où un site déclare ce qu'il prétend être, alors que Google préfère lire le site directement. Aucun fournisseur d'IA majeur n'a documenté le consommer en production.- Le « chunking » — « There's no requirement to break your content into tiny pieces for AI to better understand it. »
- Réécrire « pour l'IA » — « You don't need to write in a specific way just for generative AI search. »
- Empiler du schema.org — « Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add. »
« From Google Search's perspective, optimizing for generative AI search is optimizing for the search experience, and thus still SEO. »
Ce qui est réellement corrélé à la citationConvention
Étude Advanced Web Ranking (juillet 2026, 265 citations, 112 passages codés — échantillon petit, à traiter comme un signal). Ses résultats contredisent le discours GEO dominant :
Deux mythes tombent : la position du passage dans la page n'a pas de pouvoir prédictif (« répondre dans les 100 premiers mots » n'est pas confirmé), et le format définition n'aide pas — il est même légèrement plus fréquent chez les non-cités.
Ce qui compte : la fraîcheur, le nommage explicite des entités, et l'unicité (chiffres durs, affirmations nouvelles).
Le vrai levier : l'auto-suffisance sémantique
Un passage auto-porteur reste vrai et compréhensible extrait de son contexte. Concrètement : pas de pronom anaphorique en début de section (« Il », « Cela », « Ces »), l'entité et la ville répétées dans chaque section, une date visible, un chiffre dur par section de service.
| Critère | Passages cités | Non cités |
|---|---|---|
| Fraîcheur (dates 2025-2026) | 80 % | 53 % |
| Entité nommée à la première mention | 96 % | 82 % |
| Format « définition » | 60 % | 65 % |
La bonne nouvelle : vos requêtes sont protégéesConvention
Les AI Overviews se déclenchent sur ~48-50 % des recherches, et 83 % de ces recherches se terminent sans clic. Mais le taux varie énormément selon l'intention :
Transactionnelle
5 %
Commerciale
8 %
Locale
15 %
Informationnelle
36 %
Mixte + ville
97 %
Lecture stratégique
Zone protégée — « accompagnement Genève », « séance portrait Lausanne », « prix » : 5-15 % de déclenchement, Local Pack présent dans 93 % des cas. Votre trafic commercial est structurellement peu menacé. Zone exposée — « comment reprendre confiance après un burn-out » : 36 %, CTR effondré. Ne construisez pas votre acquisition sur ce trafic. Ces contenus gardent une valeur d'autorité et de citation, mais leur volume de clics baissera.
Crawlers IA : la distinction qui coûte cherRègle
Trois familles fonctionnelles, et bloquer la mauvaise supprime le site des réponses génératives :
Un mythe répandu à corriger
Beaucoup de blogs affirment que bloquer Google-Extended vous retire des AI Overviews. C'est faux : la doc Google est explicite — « Google-Extended does not impact a site's inclusion in Google Search nor is it used as a ranking signal ». Les AI Overviews passent par Googlebot.
⚠️ Le piège Cloudflare, daté
Depuis le 15 septembre 2026, Cloudflare bloque par défaut certaines catégories de bots IA sur les nouveaux sites et le plan gratuit. Le danger réel : les crawlers mixtes (Googlebot, Applebot, BingBot) font à la fois Search et Training — bloquer « Training » peut donc bloquer Googlebot.
Votre site — vérifié via l'API Cloudflare
kaina-experience.chn'est pas une zone Cloudflare : le site tourne sur .workers.dev et .pages.dev. Les réglages « AI bot policies », qui s'appliquent par zone, ne vous concernent donc pas aujourd'hui. Test réel des crawlers : OAI-SearchBot → 200, PerplexityBot → 200, Googlebot → 200. Aucun blocage actif. Cette vérification deviendra nécessaire le jour où vous rattacherez le domaine.
| Agent | Rôle | Décision |
|---|---|---|
Googlebot | Search + AI Overviews | NE JAMAIS BLOQUER |
OAI-SearchBot | Index ChatGPT Search | Autoriser |
Claude-SearchBot, Claude-User | Recherche / réponse | Autoriser |
PerplexityBot | Recherche | Autoriser |
Google-Extended | Entraînement + grounding Gemini | Autoriser |
GPTBot, ClaudeBot, CCBot | Entraînement seul | Choix commercial — sans impact sur les citations |
YMYL, E-E-A-T et témoignages
La section la plus critique pour votre activité — deux risques juridiques réels.
Le passage qui valide votre modèle
Les Search Quality Rater Guidelines (§3.4.1, p. 28) contiennent exactement votre cas :« Pages that share first-hand life experience on clear YMYL topics may be considered to have high E-E-A-T as long as the content is trustworthy, safe, and consistent with well-established expert consensus. »La table d'exemples cite littéralement « Sleep challenges when pregnant » : les conseils non médicaux « provided by people who have personally struggled with this challenge » sont du côté valorisé.
L'absence de diplôme de santé n'est donc pas un handicap E-E-A-T. Le danger n'est pas le manque de diplôme — c'est le glissement de registre vers le conseil médical.
La ligne rouge éditoriale, et la contrainte suisseRègle
Vous êtes en « May be YMYL », pas en « Clear YMYL » — à condition de ne jamais basculer vers le conseil médical (« comment soigner un burn-out », protocole, dosage, diagnostic).
Contrainte suisse qui redouble la contrainte Google
Les titres de « psychologue » et « psychothérapeute » sont protégés par la LPsy. Usage illicite = amende jusqu'à CHF 10 000. S'y ajoute la LCD art. 3 al. 1 let. c, qui sanctionne l'usage de « titres ou dénominations professionnelles inexacts ». Vocabulaire à proscrire : psychologue, psychothérapeute, thérapeute, thérapie, patiente, consultation, soin, traitement, guérison, diagnostic. Vocabulaire sûr : accompagnement, praticienne, journée, participante, cliente, espace, écoute, cheminement.
Bloc à afficher (page d'accueil, pages de prestation, pages de récit) :
Les journées Kaina ne constituent pas une psychothérapie, un traitement médical ni un suivi psychologique. Elles ne remplacent pas une consultation auprès d'un médecin, d'un psychologue ou d'un psychothérapeute reconnu.
Encart d'urgence auto-inséré sur tout contenu tagué burn-out, post-partum, dépression : le 143 (La Main Tendue, 24h/24), le 144 (urgences), et un lien vers les annuaires FSP et ASP. C'est ce qui, aux yeux d'un évaluateur, distingue un acteur responsable — les guidelines exigent « trustworthy, safe ».
⚠️ Témoignages : deux risques, dont un juridiqueRègle
Risque 1 — Balisage. Baliser vos propres témoignages en Review vous rend inéligible et vous expose à une action manuelle. Vous ne le faites pas : c'est la bonne décision.
La solution : requalifier les témoignages en récits d'expérience balisés en Article, avec author = la praticienne (qui a recueilli et publié), et la cliente en about sous forme de Person au prénom seul, sans @id ni sameAs. Aucune note, aucune étoile, nulle part — même en texte brut.
Risque 2 — nLPD : c'est le plus sérieux
Un témoignage sur un burn-out ou un post-partum est par définition une donnée sensible (LPD art. 5 let. c : santé, sphère intime). Publier = communiquer à des tiers, ce qui constitue une atteinte à la personnalité (art. 30 al. 2 let. c). Cette atteinte n'est licite que si justifiée par le consentement (art. 31 al. 1), lequel doit être exprès pour les données sensibles (art. 6 al. 7). Le consentement écrit n'est donc pas une bonne pratique — c'est la condition de licéité. « Le prénom seul, ça anonymise » est faux : « Sophie, 42 ans, Genève » + portrait reconnaissable = personne parfaitement identifiable. La photo annule toute prétention d'anonymisation. Le droit à l'image (art. 28 CC) s'y ajoute, et le consentement est révocable en tout temps.
Conséquence pour le CMS : la dépublication doit être exécutable en heures, pas en semaines — page, images, sitemap, liens internes, cache CDN, et demande de suppression via Search Console.
Votre site
Cinq pages de témoignages avec prénom, âge et portraits. Zéro balisage Review — risque Google écarté. Le point à traiter est le consentement écrit granulaire, à archiver pour chacune des cinq personnes.
Audit : votre site aujourd'hui
Tout ce qui suit a été mesuré sur le site en production, pas déduit.
Ce qui est déjà excellent
| Point | Constat mesuré |
|---|---|
| Rendu | 100 % statique au build — l'avantage structurel n° 1, la file de rendu JS est supprimée |
| Structure Hn | Un seul H1, hiérarchie h1 h2 h3 h3 h3 h2… sans aucun saut. Conforme WCAG 1.3.1 |
| Titles | 46 à 57 caractères sur les 6 pages principales — fenêtre de réécriture minimale |
| Codes HTTP | 404 réel sur les trois versions ; le soft 404 de la version statique a été corrigé |
| Données structurées | LocalBusiness, WebSite, BreadcrumbList, Service — et zéro Review |
| Maillage interne | Chaque récit lie vers les 3 offres, les autres récits et les pages principales. Aucune page orpheline |
| Contraste du socle | Noir/crème 16,89:1 · noir/blanc 18,88:1 · gris-sur-noir 8,03:1 — tous AAA |
| Formulaire | 17 px (pas de zoom iOS), bouton 145×60 px (> 44 px AAA), autocomplete correct |
| Crawlers IA | Googlebot, OAI-SearchBot, PerplexityBot → tous 200. Aucun blocage |
| Pages villes | Aucune — donc aucun risque de doorway aujourd'hui |
Ce qui doit être corrigé
| # | Défaut | Nature | Correctif |
|---|---|---|---|
| 1 | Favicon 88 × 49 px — rectangle | Bloquant SERP | Fichier carré ≥ 96×96 + /favicon.ico à la racine (actuellement 404) |
| 2 | 35 clamp() sans rem — H1 mesuré à 152→79 px au zoom 200 % | Échec WCAG 1.4.4 (AA) | Ajouter la composante rem. Calculable mécaniquement, ratios déjà conformes |
| 3 | 78 textes non éditables (Partenaires, Annuaire) | Fonctionnel | Rattacher au JSON — les 11 autres pages sont intégralement pilotées |
| 4 | 8 × #fff en dur dans le CSS | Fonctionnel | Jeton dédié « blanc sur fond sombre » — sinon le panneau d'apparence ne les touche pas |
| 5 | #6e6e6e sur crème = 4,56:1 | Marge de 0,06 | #5a5a5a (5,8:1) ou #515151 (AAA) |
| 6 | #a9a9a9 utilisable sur fond clair | Bug en attente | Verrouiller ce jeton au thème sombre (2,10:1 sur crème = échec total) |
| 7 | Pipe dans 3 titles | Mesurable | Tiret : 19,7 % de réécriture contre 41 % |
| 8 | Label masqué (left:-9999px) | UX | Label visible au-dessus du champ (transition œil 10× plus rapide) |
| 9 | FAQPage sur l'accueil | Inerte | Sans danger — mais ne produit plus rien depuis mai 2026 |
| 10 | Consentements écrits des 5 témoignages | Juridique — nLPD | Formulaire granulaire + archivage. Condition de licéité, pas bonne pratique |
| 11 | Bloc « ceci n'est pas une thérapie » | Juridique — LPsy | Absent. Amende jusqu'à CHF 10 000 pour usage de titre protégé |
| 12 | Mentions légales, politique de confidentialité | Juridique — LPD art. 19 | Absentes. Amende jusqu'à CHF 250 000, à charge de la personne physique |
| 13 | Formulaire newsletter non branché | Fonctionnel | Démonstration front uniquement |
| 14 | Domaine kaina-experience.ch non rattaché | Bloquant lancement | Le .ch est le signal de géociblage suisse le plus fort — il est inutilisé |
Une remarque sur l'ordre de priorité
Les points 10, 11 et 12 ne sont pas du SEO — ce sont des obligations légales suisses dont le non-respect est sanctionné pénalement. Ils passent avant tout le reste, y compris avant le favicon.Ce que le langage doit rendre impossible
La spécification du CMS : la liste exhaustive de ce qui doit être garanti par construction.
La promesse juste — et pourquoi elle est plus forte que « un bon score SEO »
Un langage à jetons finis ne peut pas garantir un « score SEO élevé », parce que ce score n'existe pas : c'est une invention des outils tiers, sans correspondance chez Google.Ce qu'il peut garantir est plus solide : qu'aucune page produite ne puisse être techniquement défaillante. Le
clamp() sans rem que j'ai trouvé sur votre
site est exactement le genre de faute qu'un vocabulaire fini élimine — parce que le rédacteur n'écrit plus de
clamp() du tout.A · Contraintes bloquantes — la publication échoue si non satisfaites
| # | Contrainte | Fondement |
|---|---|---|
| A1 | <title> unique par page, 30–60 caractères, séparateur tiret | Zyppy — fenêtre de réécriture minimale |
| A2 | Meta description unique, 120–155 caractères, promesse dans les 120 premiers | Troncature mobile ~680 px |
| A3 | Un seul H1, hiérarchie sans saut de niveau | WCAG 1.3.1 (A) — pas pour le SEO |
| A4 | Noyau sémantique du H1 concordant avec le title (mêmes chiffres, même entité) | 97,3 % de conservation vs 74,2 % |
| A5 | alt obligatoire, ou case « image décorative » → alt="" | WCAG 1.1.1 (A) + Google Images |
| A6 | width et height sur toutes les images | Cause n° 1 de CLS évitable |
| A7 | Image LCP : fetchpriority="high", jamais loading="lazy" | 13-15 % de LCP mesurés |
| A8 | Tout clamp() avec composante rem et MAX ≤ 2,5 × MIN | WCAG 1.4.4 (AA), technique F94 |
| A9 | Champs de formulaire ≥ 16 px | Zoom automatique iOS Safari |
| A10 | Cibles interactives ≥ 24 × 24 px (44 visé) | WCAG 2.5.8 (AA) |
| A11 | Contraste ≥ 4,5:1 (texte) / 3:1 (large, UI) — calculé, pas déclaré | WCAG 1.4.3 / 1.4.11 (AA) |
| A12 | Canonical absolu auto-référent sur chaque page | Google — Consolidate duplicate URLs |
| A13 | Favicon carré (1:1), ≥ 96 px, URL stable exclue du hashing | Google — Favicon in Search |
| A14 | <html lang="fr-CH"> sur toutes les pages | WCAG 3.1.1 (A) |
| A15 | Aucun outline: none sans remplacement | WCAG 2.4.7 (AA) |
| A16 | Sur récit : consentement écrit archivé (référence + date) sinon publication bloquée | LPD art. 6 al. 7 — licéité |
| A17 | Bloc « ceci n'est pas une thérapie » non supprimable sur contenu santé | LPsy — CHF 10 000 |
| A18 | Encart urgence 143 / 144 auto-inséré sur tags burn-out, post-partum, dépression | SQRG §3.4.1 « safe » |
B · Interdictions — le langage ne doit pas permettre de les écrire
| # | Interdiction | Conséquence évitée |
|---|---|---|
| B1 | Review / aggregateRating / étoiles sur soi-même — y compris en texte brut | Action manuelle Google |
| B2 | Génération de pages « [service] à [ville] » en série | Doorway — action manuelle |
| B3 | Listes de villes dans le pied de page ou les méta | Keyword stuffing documenté |
| B4 | Vocabulaire protégé : psychologue, psychothérapeute, thérapie, patiente, traitement, diagnostic | LPsy + LCD art. 3 |
| B5 | MedicalBusiness / HealthAndBeautyBusiness | Attire le scrutin « Clear YMYL » |
| B6 | Banque d'images sur pages de prestation et de récit | Détruit le pilier « Experience » |
| B7 | Balisage non visible en HTML | Motif d'action manuelle |
| B8 | user-scalable=no | Échec WCAG 1.4.4 |
| B9 | Injection de contenu au-dessus de la ligne de flottaison après chargement | Cause n° 1 de CLS |
| B10 | Blocage de Googlebot-Image sur le chemin du favicon | Favicon invisible en SERP |
C · À ne surtout PAS implémenter
Ces fonctions figurent dans presque tous les CMS et plugins SEO. Elles sont nuisibles ou fictives :
- Jauge de densité de mots-clés — le concept n'existe pas chez Google, et elle encourage activement le stuffing
- Score SEO sur 100 — aucune correspondance avec le classement réel
- Minimum de mots bloquant la publication — contredit explicitement la doctrine Google
- Champ
meta keywords— ignoré depuis septembre 2009 - « Mot-clé principal à placer dans N emplacements » — encourage l'écriture mécanique
- Suggestion de mise en gras du mot-clé — folklore intégral
- Audit de « backlinks toxiques » — « billable waste of time » (Mueller)
- Fichier
llms.txtcomme levier — « neither harm nor help » (Google) - Découpage du contenu en micro-blocs « pour l'IA » — nommément désavoué
D · Ce que le langage doit produire automatiquement
| # | Génération | Détail |
|---|---|---|
| D1 | sitemap.xml | URLs canoniques uniquement, lastmod honnête — un lastmod menteur détruit la confiance de Google dans vos dates |
| D2 | robots.txt | Distinction entraînement / recherche / utilisateur, Googlebot-Image autorisé |
| D3 | Page 404 | Au design du site, code HTTP 404, noindex,follow — déjà en place |
| D4 | JSON-LD | LocalBusiness + WebSite (accueil uniquement) + BreadcrumbList + Person auteur |
| D5 | Images | AVIF + WebP, variantes responsive, sizes dérivé du conteneur réel, EXIF d'auteur conservés |
| D6 | Polices | Auto-hébergées, font-display: swap, preload des seules graisses visibles |
| D7 | Byline visible | Auteur + date de publication + date de mise à jour, en HTML — pas seulement en JSON-LD |
| D8 | Fil d'Ariane | <nav aria-label> + <ol> + aria-current="page" + JSON-LD |
| D9 | En-têtes de sécurité | HSTS (sans preload), nosniff, Referrer-Policy, X-Frame-Options |
| D10 | Dépublication | En un clic : page, images, sitemap, liens internes, cache — < 48 h |
E · Alertes non bloquantes
| Alerte | Déclencheur |
|---|---|
| Page orpheline | Aucun lien interne entrant |
| Répétition anormale | Une expression répétée bien au-delà du naturel → risque de stuffing |
| Pronom anaphorique en début de section | « Il », « Cela », « Ces » après un H2 → passage non auto-porteur |
| Entité absente d'une section | Ni le nom, ni la ville dans une section H2 |
| Titles ou descriptions dupliqués | Entre deux pages |
| Pages villes trop proches | Similarité > 40 % → risque doorway |
| Contenu sans date visible | Fraîcheur = critère le plus discriminant pour la citation par les IA |
| Section de service sans chiffre | Les passages cités contiennent des faits chiffrés |