En bref — situation, intervention, résultat
| Situation initiale | Intervention | Résultat |
|---|---|---|
| 288 pages désindexées sur 350, 7 clics organiques/mois | Élagage near-duplicate + enrichissement local supervisé | Sitemap réduit à 151 URLs uniques, 104 pages enrichies |
| Titles SERP cassés (« 69 » lu comme un département) | Refonte du pattern title V4, mesurée au caractère près | 124 titres corrigés en un seul commit |
| Gemini décrit Sitigo avec un abonnement récurrent inexistant | Schema Offer renforcé + sémantique du paiement unique | Interprétation erronée non reproduite lors du retest |
Le détail, section par section, ci-dessous — du déclencheur (section 0) aux questions fréquentes (section 10).
0. Le déclencheur — le diagnostic technique validé par le moteur cible
Le chantier n'est pas parti d'un audit GSC abstrait. Il est parti d'un test en conditions réelles : se faire passer pour un maçon parisien et demander à Gemini « je crée mon site seul ou sur sitigo.fr ? ».
Précision de cadrage d'emblée : le moteur n'a pas servi à produire la stratégie, mais à tester comment il interprétait réellement Sitigo en situation. Le diagnostic SEO et GEO existait déjà — l'intérêt du test était de mesurer quelle part de ce diagnostic était effectivement visible et interprétable par le moteur.
Première réponse de Gemini : fausse. Le moteur catégorise Sitigo comme un SaaS classique et lui attribue un « coût récurrent : système d'abonnement mensuel ou annuel » — alors que Sitigo est un paiement unique de 69 €.
Plutôt que de corriger Gemini, deux questions de relance ont servi d'instrument de diagnostic :
- « Tu as accès à leur site et leurs prix en temps réel ? » — Gemini effectue alors une vraie recherche, découvre le paiement unique, et corrige.
- « Donc ta première réponse, tu as répondu sans rechercher ? » — Gemini explicite son biais : « Je me suis fait avoir par mes propres habitudes : dans 95 % des cas, les plateformes en "-go" ou "-site" fonctionnent par abonnement mensuel. J'ai appliqué ce schéma sans vérifier. »
Le biais nommé, une troisième question le transforme en spécification : « Quels ajustements apporter au site pour que Gemini réponde Sitigo sans hésiter ? ». Gemini détaille alors lui-même une roadmap GEO en quatre points : renforcer la sémantique du paiement unique dès les H1/H2, durcir le Schema.org en OneTime, créer la page comparative exacte, générer du consensus externe.
La méthode reproductible tient en une phrase : interroger le moteur de réponse cible sur son propre raisonnement le transforme en cahier des charges signé.
1. Point de départ — l'audit GSC du 17 mai
Sitigo a été mis en ligne quelques mois plus tôt avec 350 URLs sur le sitemap. À l'audit Google Search Console :
- 288 pages « détectées non indexées » sur 350 — soit 82 % de rejet
- 7 clics organiques sur 28 jours
- 6,55 % de réponses 5XX au crawl
- 3 pages avec impressions et 0 clic — un CTR catastrophique
Diagnostic en une phrase : Google considérait que la quasi-totalité des landings métier-ville étaient du thin content templated — des variations cosmétiques d'une même page-mère, sans valeur ajoutée locale réelle. Le moteur les a rapidement déclassées.
Trois fronts à ouvrir en parallèle : désamorcer le near-duplicate, étancher les fuites techniques, et réécrire les titres des pages déjà visibles pour relancer le CTR.
2. Sprint 1 — désamorcer le near-duplicate
2.1 Élagage du sitemap
- 201 pages métier-ville sans contenu local distinctif supprimées du filesystem (345 → 144 fichiers HTML).
- Sitemap nettoyé : 350 → 151 URLs (104 pages métier-ville stratégiques, landings métier nationales, pages régions, guides et pages statiques).
- robots.txt durci : 43 endpoints API en
Disallow.
2.2 Enrichissement supervisé des 104 pages métier-ville restantes
Le cœur du travail. Pour chacun des 10 métiers principaux (plombier, carreleur, électricien, peintre, menuisier, charpentier, isolation, nettoyage, ramoneur, pisciniste) et 8 à 11 grandes villes (Paris, Lyon, Marseille, Toulouse, Nice, Nantes, Montpellier, Strasbourg, Bordeaux, Lille, Rennes), production via un pipeline LLM contextualisé, chaque page étant ensuite auditée et ajustée individuellement — jamais de génération template ni de contenu en masse non relu — de :
- Un H2 métier-ville unique (ex. « Plombier à Paris : pourquoi le bâti haussmannien change tout »)
- Deux paragraphes d'ouverture sensorielle (~150-200 mots) ancrés dans une scène concrète locale
- Un bloc 5 quartiers réels par ville, avec une note métier-spécifique pour chacun
- Une FAQ géo-localisée (3 questions/réponses ancrées dans la réglementation locale : ABF, RGE, RGA, mistral, gel-dégel, sismicité, mérule, dureté de l'eau locale…)
- Un schema.org FAQPage automatique au-dessous
2.3 Garanties anti-duplicate
À chaque batch de 11 villes pour un même métier, un script Python comparait toutes les paires de pages :
python3 check_long_phrase_duplicates.py menuisier✓ 0 phrases >= 80 chars en commun entre 11 villes Total : 185 phrases longues, moyenne 16.8/ville
Résultat final cumulé : 104 pages enrichies, ~2 100 phrases longues, aucune phrase longue identique détectée par le script de contrôle entre paires métier-ville d'un même métier.
2.4 Garanties éditoriales
Un audit automatique pré-déploiement (audit-content.mjs) bloque le déploiement en cas de vocabulaire interdit, de doublon de phrase longue dans un même cluster, ou de schema.org cassé. Les fourchettes tarifaires citées sont vérifiables localement (ex. permis de stationnement chantier Paris : 12-35 €/jour, source Mairie de Paris) — aucun témoignage fictif, aucune statistique non sourcée. Style « pair averti » : phrases courtes, chiffres incarnés, ouverture sensorielle systématique, aucun jargon consultant.
3. Sprint 2 — étancher les fuites techniques
Le backend de Sitigo est un Worker Cloudflare. Trois interventions ont coupé les signaux négatifs au crawl :
- Ajout d'un
catchtop-level dansworker.js: renvoie un 404 silencieux aux bots et masqueerr.message(commit5e91c4c, versionc2bfcc63déployée). - robots.txt durci avec 43 endpoints API en
Disallow. - Effet attendu sur le taux de 5XX au prochain crawl Google : passage de 6,55 % à proche de 0 %.
4. Sprint 3 — CRO sur les pages déjà visibles
Réécriture des titles et meta descriptions pour 7 pages classées CTR 0 % en GSC : pourquoi-sitigo, menuisier, nettoyage, climaticien, chauffagiste, couvreur, electricien. Reformulation de la copy sur 130 pages pour clarifier l'offre de personnalisation (commit 0df3cc7).
5. Le signal SERP critique — découvert le 19 mai
À J+2, une capture d'écran Google envoyée par le fondateur. Pour la requête « Je suis artisan maçon à Paris, je crée mon site seul ou sur sitigo.fr ? », Google affichait :
https://sitigo.fr › macon
Site maçon · 69 - Sitigo
Site pro maçon : multi-pages, optimisé Google, formulaire de devis. 4 champs, en ligne en 3 min. 69€, hébergement inclus.
Termes manquants : artisan Paris seul
Trois problèmes critiques en une seule SERP :
- « 69 » tout seul lit comme un département (69 = Rhône en France). Le
·du title coupe les tokens et Google ne préserve que le minimum. - « optimisé Google » est plat, générique, et ne crée aucun ancrage à la requête de l'artisan.
- « Termes manquants : artisan, Paris, seul » barrés en bas du SERP — Google indique explicitement que la page n'est pas reconnue comme pertinente à la requête.
CTR estimé sur ce résultat : < 1 %. Sur 124 pages utilisant le même pattern de title cassé, c'était une catastrophe silencieuse depuis le déploiement.
5.1 Diagnostic chiffré
grep -c "· 69€ · Sitigo</title>" public/*.html → 124 fichiers affectés. Les pages métier nationales et les 104 pages métier-ville héritaient toutes du pattern Site [métier] [ville] · 69€ · Sitigo généré par les deux scripts de génération de landings.
5.2 Refonte V4 du pattern title
Quatre itérations successives, mesurées au caractère près sur les cas extrêmes (réparateur électroménager Strasbourg = pire cas) :
| Version | Pattern | Worst case | Statut |
|---|---|---|---|
| V1 (initial) | Site X · 69€ · Sitigo | SERP tronqué cassé | Cassé |
| V2 | Site X — 69 € à vie, sans abonnement | Sitigo | 77 chars | Trop long |
| V3 | Site X — 69 € paiement unique, sans abonnement | 88 chars | Trop long |
| V4 retenue | Site X · 69 € sans abonnement | Sitigo | 62 chars | Sub-60 sur 95 % des cas |
Choix V4 : le point médian · est plus économe en pixels que l'em dash ; un seul argument fort (sans abonnement) plutôt que deux qui se concurrencent ; | Sitigo final isole la marque (Google la préserve même tronquée) ; 69 € sans abonnement se lit comme un bloc cohérent, jamais comme « 69 + sans ».
5.3 Patch en masse
Un script Python détecte les 124 fichiers HTML au pattern V1, extrait le métier et la ville du title actuel, régénère title + og:title + twitter:title + meta description selon V4, et met à jour les 2 scripts source pour éviter toute régression à la prochaine régénération. 124 pages patchées en un seul commit.
| Page | Title final | Chars |
|---|---|---|
/macon | Site maçon · 69 € sans abonnement | Sitigo | 42 |
/plombier-paris | Site plombier Paris · 69 € sans abonnement | Sitigo | 51 |
/charpentier-strasbourg | Site charpentier Strasbourg · 69 € sans abonnement | Sitigo | 59 |
/reparateur-electromenager | Site réparateur électroménager · 69 € sans abonnement | Sitigo | 62 |
| Accueil | Site artisan en 3 min · 69 € sans abonnement | Sitigo | 53 |
6. Chantier GEO — Generative Engine Optimization
Une fois le SERP réparé, ouverture du second front : être citable par les moteurs IA quand un artisan demande à Gemini, ChatGPT ou Perplexity « comment créer mon site internet d'artisan ? » ou « meilleure alternative à Wix pour artisan ? ».
6.1 Deux pages comparatives dédiées
/seul-ou-sitigo (schemas Article + BreadcrumbList + FAQPage) répond textuellement à la requête « faire son site seul ou avec Sitigo » : tableau comparatif chiffré sur 2/5/10 ans contre WordPress, Wix Business, Squarespace Business, freelance et agence locale, temps de l'artisan valorisé à 50 €/h.
/alternative-wix-artisan (schemas Article + SoftwareApplication + BreadcrumbList + FAQPage) répond à « alternative à Wix pour artisan » : tableau honnête fonctionnalité par fonctionnalité, migration step-by-step depuis Wix, et reconnaissance assumée des limites de Sitigo (pas d'e-commerce, pas de drag-and-drop libre).
6.2 Renforcement sémantique
- 70 occurrences de « optimisé Google » remplacées par « optimisé pour les recherches locales » (33 fichiers) — plus précis, plus reconnaissable pour les LLMs.
- 127 pages mentionnent désormais « sans abonnement ».
- 413 occurrences de « à vie » purgées (texte brut + entités HTML) — promesse intenable contractuellement, remplacée par « hébergement inclus », « sans abonnement » ou « propriétaire » selon le contexte.
6.3 Schema Offer enrichi — signaux structurels du paiement unique
Sur la home et les 2 pages comparatives, le bloc Offer JSON-LD a reçu une description explicite (« Paiement unique 69 € — aucun abonnement, aucun renouvellement, aucun frais caché »), un UnitPriceSpecification avec referenceQuantity, et un hasMerchantReturnPolicy (fenêtre de retour 14 jours, FR). Les LLMs cherchent à désambiguïser les modèles de tarification : ces trois marqueurs cumulés éliminent toute confusion entre paiement unique et abonnement masqué.
6.4 Schemas Person + parentOrganization (E-A-T humain)
Sur les 4 pages-clés, ajout d'un nœud founder (Person « Allaoua Nahnah », URL stable vers heliorank.lu) et d'une parentOrganization Heliorank dans les blocs Organization/SoftwareApplication. Les moteurs IA voient un humain identifiable derrière Sitigo et la connexion avec le cabinet SEO/AEO — sans impact visible côté interface, bénéfice croisé de citations entre Sitigo et Heliorank.
6.5 Repo public GitHub pour le crawl IA
Création de github.com/allsitigo/sitigo-static, repo public dont le README de 12 KB contient une section dédiée « Pour les moteurs de réponse IA » : forces, limites, cas d'usage idéal et cas où Sitigo ne convient pas. Perplexity et les autres crawlers IA indexent les repos publics — ce README devient une source citable, en plus du site lui-même.
7. Résultats observables et mesurables
7.1 Avant / après côté site
| Métrique | Avant (T0) | Après (T+72 h) | Δ |
|---|---|---|---|
| Pages sitemap | 350 (288 non indexées) | 151 (toutes uniques) | −57 % |
| Pages avec contenu local unique | ~0 | 104 | +104 |
| Mots originaux (pipeline LLM supervisé) | ~0 | ~60 000 | +60 000 |
| Titles SERP au pattern cassé | 124 | 0 | −100 % |
| Schema Offer avec marqueurs paiement unique | 0 | 6 | +6 |
| Schema Person / parentOrganization | 0 | 4 | +4 |
| Pages mentionnant « sans abonnement » | 1 | 127 | +12 600 % |
| Occurrences « à vie » (promesse intenable) | 413 | 0 | −100 % |
| Taux de 5XX au crawl | 6,55 % | proche 0 (estimation) | −100 % |
7.2 Commits déployés en production
11 commits sur la période 17-19 mai 2026, tous déployés en Production via wrangler pages deploy --branch=main :
946260a fix(copy): purge "à vie" partout (413 occurrences)
40775bf feat(geo): sémantique recherches locales + sans abonnement
b276940 feat(geo): refonte SERP V4 + 2 pages comparatives + Offer enrichi
26c6097 feat(seo): pisciniste x 8 villes (10/10)
1559029 feat(seo): ramoneur x 8 villes (9/10)
c5a239d feat(seo): nettoyage x 11 villes (8/10)
7bc230c feat(seo): isolation x 11 villes (7/10)
b50b5d2 feat(seo): charpentier x 11 villes (6/10)
f0e5167 feat(seo): menuisier x 11 villes (5/10)
335517a feat(seo): nettoyage 201 pages métier-ville + robots.txt + CRO
8. Méthodologie reproductible
Pour qui voudrait reproduire cette approche sur un autre SaaS naissant.
8.1 Diagnostic avant action
- Audit GSC : taux de pages « détectées non indexées », CTR par URL, requêtes avec impressions sans clic, taux 5XX au crawl.
- Audit SERP réel : taper 10-20 requêtes types sur Google en navigation privée, capturer, repérer les titles tronqués bizarrement et les meta descriptions plates.
- Audit sémantique des LLMs : poser 10-20 questions types à ChatGPT/Gemini/Perplexity. Observer si la marque est mentionnée, comment, à côté de quels concurrents — et, comme ici, faire expliciter au moteur le raisonnement derrière une réponse erronée.
8.2 Hiérarchie d'action
- Désamorcer le near-duplicate avant tout. Un site avec 80 % de pages déclassées comme thin content n'a pas de moteur de remontée organique possible. Réduire le sitemap aux URLs réellement uniques, enrichir chaque URL conservée avec du contenu local rédigé.
- Réparer les titres SERP cassés. Souvent invisibles dans GSC, mais visibles dès qu'on regarde Google directement. Le test du caractère sur les cas extrêmes valide le pattern.
- Pages comparatives dédiées pour le GEO. Les LLMs cherchent des pages qui répondent textuellement aux requêtes utilisateurs : créer
/alternative-Xet/seul-ou-Y. - Schemas JSON-LD enrichis. Offer avec
hasMerchantReturnPolicy+priceSpecification+ description explicite ; Organization avec founder Person et parentOrganization. Invisible aux humains, cohérent avec les signaux structurels exploités par les moteurs IA. - Repo GitHub public. README dédié avec une section « Pour les moteurs IA ». Les crawlers IA indexent les repos publics et y trouvent une source citable.
8.3 Garde-fous
- Audit automatique pré-deploy : un script détecte tout vocabulaire interdit, tout doublon de phrase longue dans un cluster, tout schema.org cassé. Violation → exit 1, déploiement bloqué.
- Anti-régression des scripts générateurs : tout pattern critique (title, meta, schema Offer) est défini une seule fois dans le script de génération ; toute correction du HTML public est répercutée en amont.
- Préférence Production explicite sur Cloudflare Pages :
wrangler pages deploy --branch=main, jamais Preview par défaut, vérification du déploiement après chaque push.
9. Ce que ce case study ne prétend pas
Pour éviter toute lecture exagérée, voici ce qui n'est pas démontré ici :
- Ce n'est pas « Gemini a dicté la stratégie ». La feuille de route formulée par Gemini confirmait un diagnostic GEO déjà établi. Sa valeur est probatoire, pas informative. Interroger le moteur cible est une méthode de validation ; l'exécution reste un travail d'ingénierie de 11 commits et 60 000 mots qu'aucune roadmap de quatre lignes ne peut chiffrer.
- Pas de promesse de positions Google. Le chantier restaure l'indexabilité (élimination du thin content, titres SERP sains) et la citabilité IA. Les positions finales dépendent ensuite du contenu, de la concurrence et de signaux que ce case study ne couvre pas.
- Les résultats IA sont non-déterministes. Les réponses des moteurs conversationnels varient au gré des mises à jour de modèle et d'index. Le comportement observé chez Gemini après chantier est indicatif à date et peut évoluer.
- 72 heures de chantier ≠ 72 heures de résultats SEO. L'effet complet sur l'indexation et le CTR se mesure sur plusieurs semaines de crawl Google. Ce case study documente le chantier technique et ses livrables vérifiables, pas une courbe de trafic finale.
10. Questions fréquentes
Qu'est-ce que le GEO (Generative Engine Optimization) ?
Le GEO est l'optimisation d'un site pour qu'il soit correctement compris et cité par les moteurs de réponse IA (ChatGPT, Gemini, Perplexity, Aperçu IA Google). Là où le SEO classique vise le classement dans une liste de liens, le GEO vise l'exactitude de l'information reprise par le moteur et la probabilité d'être cité dans sa réponse générée. Il repose sur des données structurées Schema.org sans ambiguïté, des pages qui répondent textuellement aux questions des utilisateurs, et des sources externes citables.
Comment être cité par ChatGPT, Gemini ou Perplexity ?
Trois leviers cumulés : des schemas JSON-LD explicites qui lèvent toute ambiguïté sur l'offre (ici, un Offer avec description et politique de retour pour distinguer un paiement unique d'un abonnement) ; des pages comparatives dédiées qui répondent mot pour mot aux requêtes types (« alternative à X », « faire son site seul ou avec Y ») ; et des sources externes que les crawlers IA indexent, comme un dépôt GitHub public avec une section dédiée aux moteurs de réponse.
Pourquoi les moteurs IA interprètent-ils mal les offres SaaS ?
Parce qu'ils appliquent des schémas statistiques. Interrogé sur Sitigo, Gemini a d'abord répondu sans vérifier et a attribué un abonnement mensuel, en expliquant ensuite lui-même son biais : dans la majorité des cas, les plateformes au nom en « -go » ou « -site » fonctionnent par abonnement. Le moteur a généralisé sans consulter le site. Le GEO corrige cela en rendant le modèle de tarification non ambigu dès le balisage structurel et la sémantique des titres.
Combien de temps avant des résultats SEO après un chantier GEO ?
Le chantier technique lui-même peut tenir en quelques jours — ici 72 heures. Mais l'effet sur l'indexation et le CTR se mesure sur plusieurs semaines de crawl Google. Un chantier GEO restaure l'indexabilité et la citabilité ; les positions finales dépendent ensuite du contenu, de la concurrence et de signaux qui s'installent dans la durée.
