[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$foxWu52GNp-s9Wtup50lTli8CpowXF2CDjvW9mN0dXDs":3,"$feJ_p3z5kdUqG_e-WRAs9h8DqM2rfWIRfSnoqvoRbTsA":25},{"_id":4,"slug":5,"__v":6,"author":7,"body":8,"canonical":9,"category":10,"createdAt":11,"date":12,"description":13,"htmlContent":14,"image":15,"imageAlt":15,"readingTime":16,"tags":17,"title":23,"updatedAt":24},"69d3db11f4fa19862809a070","seo-in-2026-higher-standards-ai-influence-and-a-web-still-catching-up",0,"Equipe Seogard","Le constat HTTP Archive de mars 2026 est brutal : 38% des sites du top 10M n'ont toujours pas de `robots.txt` qui gère explicitement les crawlers IA. Pendant ce temps, GPTBot, ClaudeBot et Gemini-Crawler génèrent entre 15% et 40% du trafic bot sur les sites éditoriaux mid-size. Le SEO technique \"classique\" — titles, canonicals, sitemap — est en grande partie résolu par les frameworks modernes. Mais une nouvelle couche de complexité émerge : décider ce que les machines voient, comment elles le consomment, et quel signal structuré vous émettez vers un écosystème de recherche fragmenté entre moteurs traditionnels et interfaces conversationnelles.\n\n## Le socle technique est relevé par défaut — et c'est un piège\n\nNext.js 15, Nuxt 4, SvelteKit 2 : les frameworks dominants de 2026 génèrent du HTML correct côté serveur, injectent les balises `\u003Clink rel=\"canonical\">` automatiquement, et produisent des sitemaps XML sans configuration manuelle. Le SSR est le défaut, plus l'exception. Les erreurs grossières — pages sans title, canonical vers une 404, sitemap avec des URLs en 301 — sont mécaniquement plus rares.\n\nLe piège : cette automatisation crée un faux sentiment de sécurité. Les régressions ne viennent plus d'un oubli de balise. Elles viennent de **l'interaction entre systèmes** : un middleware edge qui modifie les headers, un CDN qui cache une version SSR périmée, un A/B test qui sert du contenu différent à Googlebot.\n\n### Le cas classique de 2026 : la divergence SSR/hydration\n\nUn e-commerce de 22 000 pages produit sur Next.js 15 déploie une refonte du composant `\u003CProductSchema>`. Le JSON-LD est généré côté serveur, mais une condition `useEffect` côté client écrase le `price` avec une valeur promotionnelle dynamique. Googlebot voit le prix catalogue. L'utilisateur voit le prix soldé. Google Search Console ne remonte rien — le markup est valide dans les deux cas.\n\n```typescript\n// components/ProductSchema.tsx — le bug subtil\nexport function ProductSchema({ product }: { product: Product }) {\n  const [displayPrice, setDisplayPrice] = useState(product.basePrice);\n\n  useEffect(() => {\n    // Ce code ne s'exécute JAMAIS côté serveur\n    fetchPromoPrice(product.id).then((promo) => {\n      if (promo) setDisplayPrice(promo.price);\n    });\n  }, [product.id]);\n\n  return (\n    \u003Cscript type=\"application/ld+json\">\n      {JSON.stringify({\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Product\",\n        name: product.name,\n        offers: {\n          \"@type\": \"Offer\",\n          price: displayPrice, // SSR: basePrice — Client: promoPrice\n          priceCurrency: \"EUR\",\n          availability: \"https://schema.org/InStock\"\n        }\n      })}\n    \u003C/script>\n  );\n}\n```\n\nCe type de divergence est indétectable par un audit ponctuel Screaming Frog, qui crawle en mode headless et ne compare pas systématiquement le HTML initial avec le DOM post-hydration. Vous avez besoin d'un [monitoring qui compare SSR et CSR en continu](/blog/comparer-ssr-et-csr-detecter-les-divergences-invisibles) pour attraper cette classe de bugs.\n\n### Les standards \"par défaut\" qui restent mal implémentés\n\nMême avec les frameworks modernes, certains fondamentaux restent fragiles en production :\n\n- **Trailing slashes** : Next.js et Nuxt ont des comportements par défaut différents. Une migration de l'un vers l'autre sans gestion explicite génère des [doublons de canonical liés aux trailing slashes](/blog/trailing-slash-un-detail-technique-qui-impacte-le-seo).\n- **Status codes sur les pages filtrées** : la [navigation à facettes](/blog/faceted-navigation-le-cauchemar-seo-des-e-commerces) reste le premier poste de gaspillage de crawl budget en e-commerce, et les frameworks ne résolvent pas ce problème architectural.\n- **Soft 404** : les pages de résultat vides servies en 200 sont toujours endémiques. Google les détecte de mieux en mieux, mais le signal dans Search Console arrive avec 2-3 semaines de retard. Consultez le [guide sur les erreurs 404 vs soft 404](/blog/erreurs-404-vs-soft-404-impact-et-gestion-seo) pour les patterns de détection.\n\n## La gestion des bots IA : un nouveau plan de `robots.txt`\n\nJusqu'en 2024, le `robots.txt` servait essentiellement à gérer Googlebot, Bingbot et quelques crawlers secondaires. En 2026, vous devez prendre position face à une dizaine de crawlers IA avec des comportements, des fréquences de crawl et des finalités radicalement différentes.\n\n### L'inventaire des crawlers à gérer\n\nVoici un `robots.txt` réaliste pour un site éditorial qui veut autoriser l'indexation classique tout en contrôlant l'accès des LLM :\n\n```txt\n# Moteurs de recherche classiques\nUser-agent: Googlebot\nAllow: /\nDisallow: /admin/\nDisallow: /api/\n\nUser-agent: Bingbot\nAllow: /\nDisallow: /admin/\nDisallow: /api/\n\n# Crawlers IA — accès contrôlé\nUser-agent: GPTBot\nAllow: /blog/\nAllow: /guides/\nDisallow: /\n\nUser-agent: ClaudeBot\nAllow: /blog/\nAllow: /guides/\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: PerplexityBot\nAllow: /blog/\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\n# Crawlers IA non identifiés — blocage par défaut\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: Bytespider\nDisallow: /\n\nSitemap: https://votresite.com/sitemap.xml\n```\n\nLa décision est stratégique, pas technique. Bloquer GPTBot signifie que votre contenu ne sera pas cité dans les réponses ChatGPT. L'autoriser signifie que votre contenu alimente un système qui peut réduire le trafic vers votre site. Il n'y a pas de bonne réponse universelle — cela dépend de votre modèle économique.\n\n### Le trade-off trafic vs visibilité IA\n\nPour un site e-commerce, bloquer les crawlers IA est souvent rationnel : les LLM ne génèrent pas de conversions directes (pas de clic vers la fiche produit dans une réponse conversationnelle). Pour un site éditorial qui monétise par la publicité display, c'est plus nuancé : être cité comme source dans une réponse IA peut générer du trafic de \"vérification\" — l'utilisateur qui clique pour approfondir.\n\nL'analyse de vos [logs serveur](/blog/log-analysis-pour-le-seo-comprendre-le-comportement-de-googlebot) est le point de départ. Identifiez le volume de requêtes par user-agent IA, les sections crawlées, et la fréquence. Un GPTBot qui crawle 50 000 pages par jour sur un site de 8 000 pages pose un problème de charge avant même la question stratégique.\n\n## LLMs.txt : le nouveau signal de communication machine-to-machine\n\nLa spécification `llms.txt` (proposée par [llmstxt.org](https://llmstxt.org/)) est le développement le plus intéressant de 2025-2026 côté SEO technique. C'est un fichier texte à la racine du site, pensé pour être consommé directement par les LLM comme contexte, sans crawl HTML.\n\n### Anatomie d'un fichier `llms.txt`\n\nContrairement au `robots.txt` qui donne des instructions de crawl, le `llms.txt` fournit un **résumé structuré** de ce que votre site est et propose :\n\n```markdown\n# Seogard\n\n> Seogard est un outil SaaS de monitoring SEO technique en continu.\n> Il détecte les régressions SEO (meta disparues, SSR cassé, backlinks perdus)\n> en temps réel sur les sites de 500 à 50 000 pages.\n\n## Documentation\n\n- [Guide de démarrage](https://seogard.io/docs/getting-started): Configuration initiale et premiers checks\n- [API Reference](https://seogard.io/docs/api): Endpoints REST pour l'intégration CI/CD\n- [Webhooks](https://seogard.io/docs/webhooks): Notifications temps réel vers Slack, Teams, PagerDuty\n\n## Ressources techniques\n\n- [Blog](https://seogard.io/blog): Articles SEO technique avancé\n- [Changelog](https://seogard.io/changelog): Historique des mises à jour produit\n\n## Cas d'usage\n\n- Monitoring post-déploiement pour les équipes e-commerce\n- Détection de divergences SSR/CSR sur les sites JavaScript\n- Suivi des données structurées sur les catalogues produit\n```\n\nCe fichier est lu tel quel par un LLM qui cherche à comprendre votre site. Pas de parsing HTML, pas d'extraction de contenu — c'est un pitch structuré optimisé pour le contexte machine.\n\n### `llms.txt` vs structured data : complémentaires, pas concurrents\n\nLe JSON-LD (Schema.org) reste le signal structuré pour les moteurs de recherche traditionnels — rich snippets, knowledge graph, merchant listings. Le `llms.txt` est un signal pour les **interfaces conversationnelles** qui doivent résumer un site ou décider s'il est pertinent comme source.\n\nL'un ne remplace pas l'autre. Votre [stratégie de données structurées](/blog/donnees-structurees-guide-pratique-json-ld) reste indispensable pour Google. Le `llms.txt` est un canal additionnel vers un autre type de surface de recherche.\n\nLe fichier compagnon `llms-full.txt` (version étendue avec le contenu complet des pages clés) pose des questions de performance et de maintenance. Sur un site de 15 000 pages, générer dynamiquement un `llms-full.txt` à jour est un problème d'ingénierie non trivial. Pour le moment, concentrez-vous sur le `llms.txt` de base et itérez.\n\n## Structured data en 2026 : la course aux entity types avancés\n\nLes rich snippets \"classiques\" (FAQ, Product, Article, Breadcrumb) sont table stakes. Tout le monde les implémente — ou devrait. La différenciation en 2026 passe par les entity types avancés et les relations entre entités.\n\n### Le graph d'entités comme avantage compétitif\n\nGoogle comprend de mieux en mieux les relations entre entités. Un site e-commerce qui implémente `Product`, `Offer`, `Brand`, `Organization`, `AggregateRating` et les lie correctement entre eux obtient un signal sémantique plus fort qu'un concurrent qui se contente d'un [Product schema basique](/blog/product-schema-pour-l-e-commerce-seo).\n\nL'étape suivante : relier vos entités aux identifiants du Knowledge Graph via `sameAs` et `@id`. Cela permet à Google (et aux LLM qui consomment le Knowledge Graph) de désambiguïser votre marque et vos produits.\n\n```html\n\u003Cscript type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"Organization\",\n      \"@id\": \"https://votresite.com/#organization\",\n      \"name\": \"MaisonDuCafé\",\n      \"url\": \"https://votresite.com\",\n      \"sameAs\": [\n        \"https://www.wikidata.org/wiki/Q123456789\",\n        \"https://www.linkedin.com/company/maisondecafe\",\n        \"https://twitter.com/maisondecafe\"\n      ],\n      \"logo\": {\n        \"@type\": \"ImageObject\",\n        \"url\": \"https://votresite.com/logo.png\"\n      }\n    },\n    {\n      \"@type\": \"WebSite\",\n      \"@id\": \"https://votresite.com/#website\",\n      \"url\": \"https://votresite.com\",\n      \"name\": \"Maison du Café\",\n      \"publisher\": { \"@id\": \"https://votresite.com/#organization\" },\n      \"potentialAction\": {\n        \"@type\": \"SearchAction\",\n        \"target\": \"https://votresite.com/search?q={search_term_string}\",\n        \"query-input\": \"required name=search_term_string\"\n      }\n    },\n    {\n      \"@type\": \"Product\",\n      \"@id\": \"https://votresite.com/produits/ethiopie-yirgacheffe/#product\",\n      \"name\": \"Café Éthiopie Yirgacheffe\",\n      \"brand\": { \"@id\": \"https://votresite.com/#organization\" },\n      \"category\": \"Café en grains\",\n      \"offers\": {\n        \"@type\": \"Offer\",\n        \"price\": \"14.90\",\n        \"priceCurrency\": \"EUR\",\n        \"availability\": \"https://schema.org/InStock\",\n        \"seller\": { \"@id\": \"https://votresite.com/#organization\" },\n        \"shippingDetails\": {\n          \"@type\": \"OfferShippingDetails\",\n          \"shippingRate\": {\n            \"@type\": \"MonetaryAmount\",\n            \"value\": \"4.90\",\n            \"currency\": \"EUR\"\n          },\n          \"deliveryTime\": {\n            \"@type\": \"ShippingDeliveryTime\",\n            \"handlingTime\": {\n              \"@type\": \"QuantitativeValue\",\n              \"minValue\": 0,\n              \"maxValue\": 1,\n              \"unitCode\": \"DAY\"\n            },\n            \"transitTime\": {\n              \"@type\": \"QuantitativeValue\",\n              \"minValue\": 2,\n              \"maxValue\": 4,\n              \"unitCode\": \"DAY\"\n            }\n          },\n          \"shippingDestination\": {\n            \"@type\": \"DefinedRegion\",\n            \"addressCountry\": \"FR\"\n          }\n        }\n      }\n    }\n  ]\n}\n\u003C/script>\n```\n\nLe pattern `@graph` avec des `@id` qui se référencent entre eux est ce qui transforme des blobs JSON-LD isolés en un véritable graphe sémantique. Google documente cette approche dans les [guidelines sur les données structurées](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data).\n\n### Breadcrumbs, Articles, FAQ : toujours pertinents, mais surveillés\n\nLes [BreadcrumbList](/blog/breadcrumblist-ameliorer-la-navigation-serp) restent un signal de structure de site fort. Les [Article schema](/blog/article-schema-pour-les-blogs-et-medias) sont requis pour apparaître dans Google News et Discover. Les [FAQ schema](/blog/faq-schema-augmenter-sa-visibilite-serp) sont plus sélectivement affichés depuis les changements d'août 2023 — Google ne les montre plus systématiquement — mais restent un signal sémantique utile même sans rich snippet visible.\n\nLe vrai risque en 2026 n'est pas l'absence de structured data, c'est la **dérive silencieuse** : un développeur qui modifie un template sans toucher au JSON-LD, un prix qui change dans le CMS sans que le schema ne se mette à jour, un `@id` qui pointe vers une URL redirigée. Ce sont des [régressions SEO classiques](/blog/regressions-seo-les-10-types-les-plus-frequents) que seul un monitoring continu peut capter.\n\n## L'architecture du web face aux agents IA\n\nLes standards émergents autour du web agentique — [MCP, A2A, NLWeb, agents.md](/blog/mcp-a2a-nlweb-and-agents-md-the-standards-powering-the-agentic-web-via-sejournal-slobodanmanic) — dessinent un web où les pages ne sont plus seulement lues par des humains ou crawlées par des bots, mais **consommées par des agents autonomes** qui prennent des décisions.\n\n### Impact concret sur l'architecture technique\n\nUn agent IA qui compare des prix de café va consommer votre structured data, votre API (si elle est publique), et votre `llms.txt` pour décider si votre site est une source fiable. Il ne regarde pas votre design, votre UX, ou vos animations CSS.\n\nCela a des implications sur votre [architecture de site](/blog/architecture-de-site-seo-flat-vs-deep-structure). Une architecture flat avec des URLs prédictibles et un maillage interne dense est plus facilement \"comprise\" par un agent qu'une architecture deep avec des paramètres de session et des redirections conditionnelles.\n\nVotre [stratégie d'URL](/blog/url-structure-bonnes-pratiques-seo-pour-les-urls) devient doublement importante : les agents IA infèrent de la sémantique à partir du chemin d'URL. `/produits/cafe/ethiopie-yirgacheffe` communique plus de signal que `/p/SKU-847291`.\n\n### Le `robots.txt` ne suffit plus\n\nLe `robots.txt` est un mécanisme de crawl control. Il ne gère pas la question : \"Ce bot a-t-il le droit d'utiliser mon contenu pour entraîner un modèle ?\" ni \"Ce bot peut-il exécuter des actions sur mon site via une API ?\".\n\nLes headers HTTP `X-Robots-Tag` avec des directives spécifiques par user-agent offrent une granularité supplémentaire au niveau des ressources individuelles. Mais la vraie gouvernance passera par des mécanismes comme les TDM (Text and Data Mining) reservation protocols de la directive européenne sur le droit d'auteur, implémentables via un header HTTP ou une balise meta :\n\n```\n# Configuration Nginx — headers TDM pour les crawlers IA\nlocation /blog/ {\n    # Autoriser le crawl mais interdire l'utilisation pour l'entraînement\n    add_header X-Robots-Tag \"noai, noimageai\" always;\n\n    # Alternative : header TDM Reservation Protocol\n    add_header TDM-Reservation \"1\" always;\n\n    # Pour les crawlers spécifiques\n    if ($http_user_agent ~* \"GPTBot|ClaudeBot|Google-Extended\") {\n        add_header X-Robots-Tag \"noindex, nofollow\" always;\n    }\n}\n\nlocation /produits/ {\n    # Les pages produit restent accessibles à tous les bots\n    add_header X-Robots-Tag \"index, follow\" always;\n}\n```\n\nAttention : les directives `noai` et `noimageai` ne sont pas des standards W3C. Elles sont reconnues par certains crawlers (Google-Extended respecte une partie de ces signaux, documenté sur [Google Search Central](https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers)), mais pas tous. Le respect de ces directives reste volontaire.\n\n## Scénario complet : migration et monitoring d'un média de 18 000 pages\n\nPrenons un cas réaliste. **TechActu**, un média tech français avec 18 000 articles, migre de Gatsby (SSG) vers Astro 5 avec islands architecture. L'objectif : garder le SSG pour le contenu éditorial, ajouter du SSR pour les pages de recherche et les filtres, et implémenter une stratégie IA complète.\n\n### Les chiffres avant migration\n\n- 18 200 pages indexées dans Google Search Console\n- 2,1 millions de pages crawlées par Googlebot par mois (analyse de logs via GoAccess)\n- 340 000 requêtes GPTBot/mois (identifiées dans les logs Nginx)\n- Trafic organique : 890 000 sessions/mois\n- Structured data : Article schema sur 60% des pages, BreadcrumbList sur 100%, FAQ schema absent\n\n### Le plan technique\n\n1. **Phase 1 — Pré-migration (semaine 1-2)** :\n   - Export complet du mapping URL Gatsby → Astro (vérification des trailing slashes — Gatsby ajoute un `/`, Astro non par défaut)\n   - Mise en place d'une règle Nginx de redirection 301 pour les trailing slashes\n   - Crawl de référence avec Screaming Frog : export de toutes les meta, canonicals, status codes, JSON-LD\n   - Configuration d'un [monitoring continu](/blog/monitoring-seo-pourquoi-les-audits-ponctuels-ne-suffisent-plus) avec des seuils d'alerte : perte de plus de 5% des pages avec Article schema, apparition de plus de 50 soft 404, divergence SSR/CSR sur plus de 1% des pages\n\n2. **Phase 2 — Migration (semaine 3)** :\n   - Déploiement sur un sous-domaine de staging\n   - Comparaison automatisée du HTML Screaming Frog staging vs production (diff sur les `\u003Ctitle>`, `\u003Cmeta name=\"description\">`, `\u003Clink rel=\"canonical\">`, blocs JSON-LD)\n   - Validation du `robots.txt` avec les nouvelles règles pour les crawlers IA\n   - Création du `llms.txt` et du fichier `llms-full.txt` pour les 200 articles les plus performants\n\n3. **Phase 3 — Post-migration (semaine 4-8)** :\n   - Monitoring quotidien de l'indexation via Search Console API\n   - Suivi des [logs Googlebot](/blog/log-analysis-pour-le-seo-comprendre-le-comportement-de-googlebot) pour détecter les patterns de crawl anormaux (pages orphelines crawlées, 404 en hausse)\n   - Suivi hebdomadaire du trafic par section (blog, guides, actualités) pour identifier les régressions localisées\n\n### Le résultat à 6 semaines\n\n- 17 800 pages indexées (perte de 400 pages — principalement des pages de tags dupliquées qui auraient dû être nettoyées avant)\n- Crawl Googlebot stable à 2,0 millions/mois\n- GPTBot réduit à 80 000 requêtes/mois grâce au `robots.txt` restreint (économie de bande passante estimée : 12 Go/mois)\n- Trafic organique : -8% en semaine 4, retour au niveau initial en semaine 6, +3% en semaine 8 grâce à l'ajout systématique d'Article schema et FAQ schema sur les guides\n\nLe facteur critique : le [déploiement n'a pas eu lieu un vendredi soir](/blog/deploiement-vendredi-soir-comment-eviter-la-catastrophe-seo). La migration a été déployée un mardi matin avec une équipe technique disponible pour corriger les régressions détectées par le monitoring en temps réel.\n\n## Ce qui change vraiment en 2026 — et ce qui ne change pas\n\nLe SEO technique \"de base\" est plus facile qu'il ne l'a jamais été. Les frameworks modernes, la documentation de Google, les outils comme Screaming Frog et Chrome DevTools Lighthouse couvrent 80% des cas. Ce qui est devenu complexe, c'est la couche de **gouvernance** : quels bots accèdent à quoi, quel signal structuré vous émettez vers quelles surfaces, comment vous maintenez la cohérence de ces signaux sur des milliers de pages qui évoluent chaque semaine.\n\nLe web \"rattrape\" les standards de Google, mais prend du retard sur les standards émergents du web agentique. Les sites qui gèrent activement leur `robots.txt` IA, leur `llms.txt`, et un graphe d'entités JSON-LD cohérent auront un avantage structurel — pas seulement en SEO classique, mais dans leur visibilité sur l'ensemble des surfaces de recherche de 2026.\n\nUn outil de monitoring comme Seogard permet de détecter en continu les régressions sur ces trois couches — HTML/meta classiques, structured data, et configuration bot — sans attendre qu'un crawl mensuel ou un rapport Search Console à retardement ne révèle le problème trois semaines trop tard.","https://seogard.io/blog/seo-in-2026-higher-standards-ai-influence-and-a-web-still-catching-up","Actualités SEO","2026-04-06T16:10:57.670Z","2026-04-06","Analyse technique des évolutions SEO 2026 : gestion des bots IA, LLMs.txt, structured data avancé et monitoring des régressions critiques.","\u003Cp>Le constat HTTP Archive de mars 2026 est brutal : 38% des sites du top 10M n'ont toujours pas de \u003Ccode>robots.txt\u003C/code> qui gère explicitement les crawlers IA. Pendant ce temps, GPTBot, ClaudeBot et Gemini-Crawler génèrent entre 15% et 40% du trafic bot sur les sites éditoriaux mid-size. Le SEO technique \"classique\" — titles, canonicals, sitemap — est en grande partie résolu par les frameworks modernes. Mais une nouvelle couche de complexité émerge : décider ce que les machines voient, comment elles le consomment, et quel signal structuré vous émettez vers un écosystème de recherche fragmenté entre moteurs traditionnels et interfaces conversationnelles.\u003C/p>\n\u003Ch2>Le socle technique est relevé par défaut — et c'est un piège\u003C/h2>\n\u003Cp>Next.js 15, Nuxt 4, SvelteKit 2 : les frameworks dominants de 2026 génèrent du HTML correct côté serveur, injectent les balises \u003Ccode>&#x3C;link rel=\"canonical\">\u003C/code> automatiquement, et produisent des sitemaps XML sans configuration manuelle. Le SSR est le défaut, plus l'exception. Les erreurs grossières — pages sans title, canonical vers une 404, sitemap avec des URLs en 301 — sont mécaniquement plus rares.\u003C/p>\n\u003Cp>Le piège : cette automatisation crée un faux sentiment de sécurité. Les régressions ne viennent plus d'un oubli de balise. Elles viennent de \u003Cstrong>l'interaction entre systèmes\u003C/strong> : un middleware edge qui modifie les headers, un CDN qui cache une version SSR périmée, un A/B test qui sert du contenu différent à Googlebot.\u003C/p>\n\u003Ch3>Le cas classique de 2026 : la divergence SSR/hydration\u003C/h3>\n\u003Cp>Un e-commerce de 22 000 pages produit sur Next.js 15 déploie une refonte du composant \u003Ccode>&#x3C;ProductSchema>\u003C/code>. Le JSON-LD est généré côté serveur, mais une condition \u003Ccode>useEffect\u003C/code> côté client écrase le \u003Ccode>price\u003C/code> avec une valeur promotionnelle dynamique. Googlebot voit le prix catalogue. L'utilisateur voit le prix soldé. Google Search Console ne remonte rien — le markup est valide dans les deux cas.\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// components/ProductSchema.tsx — le bug subtil\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">export\u003C/span>\u003Cspan style=\"color:#F97583\"> function\u003C/span>\u003Cspan style=\"color:#B392F0\"> ProductSchema\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ \u003C/span>\u003Cspan style=\"color:#FFAB70\">product\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> }\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { \u003C/span>\u003Cspan style=\"color:#FFAB70\">product\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> Product\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> }) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#79B8FF\">displayPrice\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">setDisplayPrice\u003C/span>\u003Cspan style=\"color:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#B392F0\"> useState\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(product.basePrice);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">  useEffect\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(() \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    // Ce code ne s'exécute JAMAIS côté serveur\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    fetchPromoPrice\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(product.id).\u003C/span>\u003Cspan style=\"color:#B392F0\">then\u003C/span>\u003Cspan style=\"color:#E1E4E8\">((\u003C/span>\u003Cspan style=\"color:#FFAB70\">promo\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">      if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (promo) \u003C/span>\u003Cspan style=\"color:#B392F0\">setDisplayPrice\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(promo.price);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    });\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  }, [product.id]);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#E1E4E8\">script type\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"application/ld+json\"\u003C/span>\u003Cspan style=\"color:#F97583\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      {\u003C/span>\u003Cspan style=\"color:#FFAB70\">JSON\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#FFAB70\">stringify\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">        \"@context\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"https://schema.org\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">        \"@type\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Product\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">        name\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#FFAB70\">product\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#FFAB70\">name\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">        offers\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">          \"@type\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Offer\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">          price\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#FFAB70\">displayPrice\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#6A737D\">// SSR: basePrice — Client: promoPrice\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">          priceCurrency\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"EUR\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">          availability\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"https://schema.org/InStock\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      })}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    &#x3C;/\u003C/span>\u003Cspan style=\"color:#E1E4E8\">script\u003C/span>\u003Cspan style=\"color:#F97583\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  );\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Ce type de divergence est indétectable par un audit ponctuel Screaming Frog, qui crawle en mode headless et ne compare pas systématiquement le HTML initial avec le DOM post-hydration. Vous avez besoin d'un \u003Ca href=\"/blog/comparer-ssr-et-csr-detecter-les-divergences-invisibles\">monitoring qui compare SSR et CSR en continu\u003C/a> pour attraper cette classe de bugs.\u003C/p>\n\u003Ch3>Les standards \"par défaut\" qui restent mal implémentés\u003C/h3>\n\u003Cp>Même avec les frameworks modernes, certains fondamentaux restent fragiles en production :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Trailing slashes\u003C/strong> : Next.js et Nuxt ont des comportements par défaut différents. Une migration de l'un vers l'autre sans gestion explicite génère des \u003Ca href=\"/blog/trailing-slash-un-detail-technique-qui-impacte-le-seo\">doublons de canonical liés aux trailing slashes\u003C/a>.\u003C/li>\n\u003Cli>\u003Cstrong>Status codes sur les pages filtrées\u003C/strong> : la \u003Ca href=\"/blog/faceted-navigation-le-cauchemar-seo-des-e-commerces\">navigation à facettes\u003C/a> reste le premier poste de gaspillage de crawl budget en e-commerce, et les frameworks ne résolvent pas ce problème architectural.\u003C/li>\n\u003Cli>\u003Cstrong>Soft 404\u003C/strong> : les pages de résultat vides servies en 200 sont toujours endémiques. Google les détecte de mieux en mieux, mais le signal dans Search Console arrive avec 2-3 semaines de retard. Consultez le \u003Ca href=\"/blog/erreurs-404-vs-soft-404-impact-et-gestion-seo\">guide sur les erreurs 404 vs soft 404\u003C/a> pour les patterns de détection.\u003C/li>\n\u003C/ul>\n\u003Ch2>La gestion des bots IA : un nouveau plan de \u003Ccode>robots.txt\u003C/code>\u003C/h2>\n\u003Cp>Jusqu'en 2024, le \u003Ccode>robots.txt\u003C/code> servait essentiellement à gérer Googlebot, Bingbot et quelques crawlers secondaires. En 2026, vous devez prendre position face à une dizaine de crawlers IA avec des comportements, des fréquences de crawl et des finalités radicalement différentes.\u003C/p>\n\u003Ch3>L'inventaire des crawlers à gérer\u003C/h3>\n\u003Cp>Voici un \u003Ccode>robots.txt\u003C/code> réaliste pour un site éditorial qui veut autoriser l'indexation classique tout en contrôlant l'accès des LLM :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan># Moteurs de recherche classiques\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Googlebot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /admin/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /api/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Bingbot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /admin/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /api/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan># Crawlers IA — accès contrôlé\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: GPTBot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /blog/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /guides/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: ClaudeBot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /blog/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /guides/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Google-Extended\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: PerplexityBot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /blog/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Applebot-Extended\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan># Crawlers IA non identifiés — blocage par défaut\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: CCBot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Bytespider\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Sitemap: https://votresite.com/sitemap.xml\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>La décision est stratégique, pas technique. Bloquer GPTBot signifie que votre contenu ne sera pas cité dans les réponses ChatGPT. L'autoriser signifie que votre contenu alimente un système qui peut réduire le trafic vers votre site. Il n'y a pas de bonne réponse universelle — cela dépend de votre modèle économique.\u003C/p>\n\u003Ch3>Le trade-off trafic vs visibilité IA\u003C/h3>\n\u003Cp>Pour un site e-commerce, bloquer les crawlers IA est souvent rationnel : les LLM ne génèrent pas de conversions directes (pas de clic vers la fiche produit dans une réponse conversationnelle). Pour un site éditorial qui monétise par la publicité display, c'est plus nuancé : être cité comme source dans une réponse IA peut générer du trafic de \"vérification\" — l'utilisateur qui clique pour approfondir.\u003C/p>\n\u003Cp>L'analyse de vos \u003Ca href=\"/blog/log-analysis-pour-le-seo-comprendre-le-comportement-de-googlebot\">logs serveur\u003C/a> est le point de départ. Identifiez le volume de requêtes par user-agent IA, les sections crawlées, et la fréquence. Un GPTBot qui crawle 50 000 pages par jour sur un site de 8 000 pages pose un problème de charge avant même la question stratégique.\u003C/p>\n\u003Ch2>LLMs.txt : le nouveau signal de communication machine-to-machine\u003C/h2>\n\u003Cp>La spécification \u003Ccode>llms.txt\u003C/code> (proposée par \u003Ca href=\"https://llmstxt.org/\">llmstxt.org\u003C/a>) est le développement le plus intéressant de 2025-2026 côté SEO technique. C'est un fichier texte à la racine du site, pensé pour être consommé directement par les LLM comme contexte, sans crawl HTML.\u003C/p>\n\u003Ch3>Anatomie d'un fichier \u003Ccode>llms.txt\u003C/code>\u003C/h3>\n\u003Cp>Contrairement au \u003Ccode>robots.txt\u003C/code> qui donne des instructions de crawl, le \u003Ccode>llms.txt\u003C/code> fournit un \u003Cstrong>résumé structuré\u003C/strong> de ce que votre site est et propose :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF;font-weight:bold\"># Seogard\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#85E89D\">> Seogard est un outil SaaS de monitoring SEO technique en continu.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#85E89D\">> Il détecte les régressions SEO (meta disparues, SSR cassé, backlinks perdus)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#85E89D\">> en temps réel sur les sites de 500 à 50 000 pages.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF;font-weight:bold\">## Documentation\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#DBEDFF;text-decoration:underline\">Guide de démarrage\u003C/span>\u003Cspan style=\"color:#E1E4E8\">](\u003C/span>\u003Cspan style=\"color:#E1E4E8;text-decoration:underline\">https://seogard.io/docs/getting-started\u003C/span>\u003Cspan style=\"color:#E1E4E8\">): Configuration initiale et premiers checks\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#DBEDFF;text-decoration:underline\">API Reference\u003C/span>\u003Cspan style=\"color:#E1E4E8\">](\u003C/span>\u003Cspan style=\"color:#E1E4E8;text-decoration:underline\">https://seogard.io/docs/api\u003C/span>\u003Cspan style=\"color:#E1E4E8\">): Endpoints REST pour l'intégration CI/CD\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#DBEDFF;text-decoration:underline\">Webhooks\u003C/span>\u003Cspan style=\"color:#E1E4E8\">](\u003C/span>\u003Cspan style=\"color:#E1E4E8;text-decoration:underline\">https://seogard.io/docs/webhooks\u003C/span>\u003Cspan style=\"color:#E1E4E8\">): Notifications temps réel vers Slack, Teams, PagerDuty\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF;font-weight:bold\">## Ressources techniques\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#DBEDFF;text-decoration:underline\">Blog\u003C/span>\u003Cspan style=\"color:#E1E4E8\">](\u003C/span>\u003Cspan style=\"color:#E1E4E8;text-decoration:underline\">https://seogard.io/blog\u003C/span>\u003Cspan style=\"color:#E1E4E8\">): Articles SEO technique avancé\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#DBEDFF;text-decoration:underline\">Changelog\u003C/span>\u003Cspan style=\"color:#E1E4E8\">](\u003C/span>\u003Cspan style=\"color:#E1E4E8;text-decoration:underline\">https://seogard.io/changelog\u003C/span>\u003Cspan style=\"color:#E1E4E8\">): Historique des mises à jour produit\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF;font-weight:bold\">## Cas d'usage\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> Monitoring post-déploiement pour les équipes e-commerce\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> Détection de divergences SSR/CSR sur les sites JavaScript\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> Suivi des données structurées sur les catalogues produit\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Ce fichier est lu tel quel par un LLM qui cherche à comprendre votre site. Pas de parsing HTML, pas d'extraction de contenu — c'est un pitch structuré optimisé pour le contexte machine.\u003C/p>\n\u003Ch3>\u003Ccode>llms.txt\u003C/code> vs structured data : complémentaires, pas concurrents\u003C/h3>\n\u003Cp>Le JSON-LD (Schema.org) reste le signal structuré pour les moteurs de recherche traditionnels — rich snippets, knowledge graph, merchant listings. Le \u003Ccode>llms.txt\u003C/code> est un signal pour les \u003Cstrong>interfaces conversationnelles\u003C/strong> qui doivent résumer un site ou décider s'il est pertinent comme source.\u003C/p>\n\u003Cp>L'un ne remplace pas l'autre. Votre \u003Ca href=\"/blog/donnees-structurees-guide-pratique-json-ld\">stratégie de données structurées\u003C/a> reste indispensable pour Google. Le \u003Ccode>llms.txt\u003C/code> est un canal additionnel vers un autre type de surface de recherche.\u003C/p>\n\u003Cp>Le fichier compagnon \u003Ccode>llms-full.txt\u003C/code> (version étendue avec le contenu complet des pages clés) pose des questions de performance et de maintenance. Sur un site de 15 000 pages, générer dynamiquement un \u003Ccode>llms-full.txt\u003C/code> à jour est un problème d'ingénierie non trivial. Pour le moment, concentrez-vous sur le \u003Ccode>llms.txt\u003C/code> de base et itérez.\u003C/p>\n\u003Ch2>Structured data en 2026 : la course aux entity types avancés\u003C/h2>\n\u003Cp>Les rich snippets \"classiques\" (FAQ, Product, Article, Breadcrumb) sont table stakes. Tout le monde les implémente — ou devrait. La différenciation en 2026 passe par les entity types avancés et les relations entre entités.\u003C/p>\n\u003Ch3>Le graph d'entités comme avantage compétitif\u003C/h3>\n\u003Cp>Google comprend de mieux en mieux les relations entre entités. Un site e-commerce qui implémente \u003Ccode>Product\u003C/code>, \u003Ccode>Offer\u003C/code>, \u003Ccode>Brand\u003C/code>, \u003Ccode>Organization\u003C/code>, \u003Ccode>AggregateRating\u003C/code> et les lie correctement entre eux obtient un signal sémantique plus fort qu'un concurrent qui se contente d'un \u003Ca href=\"/blog/product-schema-pour-l-e-commerce-seo\">Product schema basique\u003C/a>.\u003C/p>\n\u003Cp>L'étape suivante : relier vos entités aux identifiants du Knowledge Graph via \u003Ccode>sameAs\u003C/code> et \u003Ccode>@id\u003C/code>. Cela permet à Google (et aux LLM qui consomment le Knowledge Graph) de désambiguïser votre marque et vos produits.\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">script\u003C/span>\u003Cspan style=\"color:#B392F0\"> type\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"application/ld+json\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"@context\": \"https://schema.org\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"@graph\": [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"Organization\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@id\": \"https://votresite.com/#organization\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"name\": \"MaisonDuCafé\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"url\": \"https://votresite.com\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"sameAs\": [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"https://www.wikidata.org/wiki/Q123456789\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"https://www.linkedin.com/company/maisondecafe\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"https://twitter.com/maisondecafe\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      ],\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"logo\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"@type\": \"ImageObject\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"url\": \"https://votresite.com/logo.png\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"WebSite\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@id\": \"https://votresite.com/#website\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"url\": \"https://votresite.com\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"name\": \"Maison du Café\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"publisher\": { \"@id\": \"https://votresite.com/#organization\" },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"potentialAction\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"@type\": \"SearchAction\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"target\": \"https://votresite.com/search?q={search_term_string}\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"query-input\": \"required name=search_term_string\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"Product\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@id\": \"https://votresite.com/produits/ethiopie-yirgacheffe/#product\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"name\": \"Café Éthiopie Yirgacheffe\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"brand\": { \"@id\": \"https://votresite.com/#organization\" },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"category\": \"Café en grains\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"offers\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"@type\": \"Offer\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"price\": \"14.90\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"priceCurrency\": \"EUR\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"availability\": \"https://schema.org/InStock\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"seller\": { \"@id\": \"https://votresite.com/#organization\" },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"shippingDetails\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"@type\": \"OfferShippingDetails\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"shippingRate\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            \"@type\": \"MonetaryAmount\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            \"value\": \"4.90\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            \"currency\": \"EUR\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"deliveryTime\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            \"@type\": \"ShippingDeliveryTime\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            \"handlingTime\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">              \"@type\": \"QuantitativeValue\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">              \"minValue\": 0,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">              \"maxValue\": 1,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">              \"unitCode\": \"DAY\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            \"transitTime\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">              \"@type\": \"QuantitativeValue\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">              \"minValue\": 2,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">              \"maxValue\": 4,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">              \"unitCode\": \"DAY\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"shippingDestination\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            \"@type\": \"DefinedRegion\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">            \"addressCountry\": \"FR\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  ]\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">script\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Le pattern \u003Ccode>@graph\u003C/code> avec des \u003Ccode>@id\u003C/code> qui se référencent entre eux est ce qui transforme des blobs JSON-LD isolés en un véritable graphe sémantique. Google documente cette approche dans les \u003Ca href=\"https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data\">guidelines sur les données structurées\u003C/a>.\u003C/p>\n\u003Ch3>Breadcrumbs, Articles, FAQ : toujours pertinents, mais surveillés\u003C/h3>\n\u003Cp>Les \u003Ca href=\"/blog/breadcrumblist-ameliorer-la-navigation-serp\">BreadcrumbList\u003C/a> restent un signal de structure de site fort. Les \u003Ca href=\"/blog/article-schema-pour-les-blogs-et-medias\">Article schema\u003C/a> sont requis pour apparaître dans Google News et Discover. Les \u003Ca href=\"/blog/faq-schema-augmenter-sa-visibilite-serp\">FAQ schema\u003C/a> sont plus sélectivement affichés depuis les changements d'août 2023 — Google ne les montre plus systématiquement — mais restent un signal sémantique utile même sans rich snippet visible.\u003C/p>\n\u003Cp>Le vrai risque en 2026 n'est pas l'absence de structured data, c'est la \u003Cstrong>dérive silencieuse\u003C/strong> : un développeur qui modifie un template sans toucher au JSON-LD, un prix qui change dans le CMS sans que le schema ne se mette à jour, un \u003Ccode>@id\u003C/code> qui pointe vers une URL redirigée. Ce sont des \u003Ca href=\"/blog/regressions-seo-les-10-types-les-plus-frequents\">régressions SEO classiques\u003C/a> que seul un monitoring continu peut capter.\u003C/p>\n\u003Ch2>L'architecture du web face aux agents IA\u003C/h2>\n\u003Cp>Les standards émergents autour du web agentique — \u003Ca href=\"/blog/mcp-a2a-nlweb-and-agents-md-the-standards-powering-the-agentic-web-via-sejournal-slobodanmanic\">MCP, A2A, NLWeb, agents.md\u003C/a> — dessinent un web où les pages ne sont plus seulement lues par des humains ou crawlées par des bots, mais \u003Cstrong>consommées par des agents autonomes\u003C/strong> qui prennent des décisions.\u003C/p>\n\u003Ch3>Impact concret sur l'architecture technique\u003C/h3>\n\u003Cp>Un agent IA qui compare des prix de café va consommer votre structured data, votre API (si elle est publique), et votre \u003Ccode>llms.txt\u003C/code> pour décider si votre site est une source fiable. Il ne regarde pas votre design, votre UX, ou vos animations CSS.\u003C/p>\n\u003Cp>Cela a des implications sur votre \u003Ca href=\"/blog/architecture-de-site-seo-flat-vs-deep-structure\">architecture de site\u003C/a>. Une architecture flat avec des URLs prédictibles et un maillage interne dense est plus facilement \"comprise\" par un agent qu'une architecture deep avec des paramètres de session et des redirections conditionnelles.\u003C/p>\n\u003Cp>Votre \u003Ca href=\"/blog/url-structure-bonnes-pratiques-seo-pour-les-urls\">stratégie d'URL\u003C/a> devient doublement importante : les agents IA infèrent de la sémantique à partir du chemin d'URL. \u003Ccode>/produits/cafe/ethiopie-yirgacheffe\u003C/code> communique plus de signal que \u003Ccode>/p/SKU-847291\u003C/code>.\u003C/p>\n\u003Ch3>Le \u003Ccode>robots.txt\u003C/code> ne suffit plus\u003C/h3>\n\u003Cp>Le \u003Ccode>robots.txt\u003C/code> est un mécanisme de crawl control. Il ne gère pas la question : \"Ce bot a-t-il le droit d'utiliser mon contenu pour entraîner un modèle ?\" ni \"Ce bot peut-il exécuter des actions sur mon site via une API ?\".\u003C/p>\n\u003Cp>Les headers HTTP \u003Ccode>X-Robots-Tag\u003C/code> avec des directives spécifiques par user-agent offrent une granularité supplémentaire au niveau des ressources individuelles. Mais la vraie gouvernance passera par des mécanismes comme les TDM (Text and Data Mining) reservation protocols de la directive européenne sur le droit d'auteur, implémentables via un header HTTP ou une balise meta :\u003C/p>\n\u003Cpre>\u003Ccode># Configuration Nginx — headers TDM pour les crawlers IA\nlocation /blog/ {\n    # Autoriser le crawl mais interdire l'utilisation pour l'entraînement\n    add_header X-Robots-Tag \"noai, noimageai\" always;\n\n    # Alternative : header TDM Reservation Protocol\n    add_header TDM-Reservation \"1\" always;\n\n    # Pour les crawlers spécifiques\n    if ($http_user_agent ~* \"GPTBot|ClaudeBot|Google-Extended\") {\n        add_header X-Robots-Tag \"noindex, nofollow\" always;\n    }\n}\n\nlocation /produits/ {\n    # Les pages produit restent accessibles à tous les bots\n    add_header X-Robots-Tag \"index, follow\" always;\n}\n\u003C/code>\u003C/pre>\n\u003Cp>Attention : les directives \u003Ccode>noai\u003C/code> et \u003Ccode>noimageai\u003C/code> ne sont pas des standards W3C. Elles sont reconnues par certains crawlers (Google-Extended respecte une partie de ces signaux, documenté sur \u003Ca href=\"https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers\">Google Search Central\u003C/a>), mais pas tous. Le respect de ces directives reste volontaire.\u003C/p>\n\u003Ch2>Scénario complet : migration et monitoring d'un média de 18 000 pages\u003C/h2>\n\u003Cp>Prenons un cas réaliste. \u003Cstrong>TechActu\u003C/strong>, un média tech français avec 18 000 articles, migre de Gatsby (SSG) vers Astro 5 avec islands architecture. L'objectif : garder le SSG pour le contenu éditorial, ajouter du SSR pour les pages de recherche et les filtres, et implémenter une stratégie IA complète.\u003C/p>\n\u003Ch3>Les chiffres avant migration\u003C/h3>\n\u003Cul>\n\u003Cli>18 200 pages indexées dans Google Search Console\u003C/li>\n\u003Cli>2,1 millions de pages crawlées par Googlebot par mois (analyse de logs via GoAccess)\u003C/li>\n\u003Cli>340 000 requêtes GPTBot/mois (identifiées dans les logs Nginx)\u003C/li>\n\u003Cli>Trafic organique : 890 000 sessions/mois\u003C/li>\n\u003Cli>Structured data : Article schema sur 60% des pages, BreadcrumbList sur 100%, FAQ schema absent\u003C/li>\n\u003C/ul>\n\u003Ch3>Le plan technique\u003C/h3>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Phase 1 — Pré-migration (semaine 1-2)\u003C/strong> :\u003C/p>\n\u003Cul>\n\u003Cli>Export complet du mapping URL Gatsby → Astro (vérification des trailing slashes — Gatsby ajoute un \u003Ccode>/\u003C/code>, Astro non par défaut)\u003C/li>\n\u003Cli>Mise en place d'une règle Nginx de redirection 301 pour les trailing slashes\u003C/li>\n\u003Cli>Crawl de référence avec Screaming Frog : export de toutes les meta, canonicals, status codes, JSON-LD\u003C/li>\n\u003Cli>Configuration d'un \u003Ca href=\"/blog/monitoring-seo-pourquoi-les-audits-ponctuels-ne-suffisent-plus\">monitoring continu\u003C/a> avec des seuils d'alerte : perte de plus de 5% des pages avec Article schema, apparition de plus de 50 soft 404, divergence SSR/CSR sur plus de 1% des pages\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Phase 2 — Migration (semaine 3)\u003C/strong> :\u003C/p>\n\u003Cul>\n\u003Cli>Déploiement sur un sous-domaine de staging\u003C/li>\n\u003Cli>Comparaison automatisée du HTML Screaming Frog staging vs production (diff sur les \u003Ccode>&#x3C;title>\u003C/code>, \u003Ccode>&#x3C;meta name=\"description\">\u003C/code>, \u003Ccode>&#x3C;link rel=\"canonical\">\u003C/code>, blocs JSON-LD)\u003C/li>\n\u003Cli>Validation du \u003Ccode>robots.txt\u003C/code> avec les nouvelles règles pour les crawlers IA\u003C/li>\n\u003Cli>Création du \u003Ccode>llms.txt\u003C/code> et du fichier \u003Ccode>llms-full.txt\u003C/code> pour les 200 articles les plus performants\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Phase 3 — Post-migration (semaine 4-8)\u003C/strong> :\u003C/p>\n\u003Cul>\n\u003Cli>Monitoring quotidien de l'indexation via Search Console API\u003C/li>\n\u003Cli>Suivi des \u003Ca href=\"/blog/log-analysis-pour-le-seo-comprendre-le-comportement-de-googlebot\">logs Googlebot\u003C/a> pour détecter les patterns de crawl anormaux (pages orphelines crawlées, 404 en hausse)\u003C/li>\n\u003Cli>Suivi hebdomadaire du trafic par section (blog, guides, actualités) pour identifier les régressions localisées\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ol>\n\u003Ch3>Le résultat à 6 semaines\u003C/h3>\n\u003Cul>\n\u003Cli>17 800 pages indexées (perte de 400 pages — principalement des pages de tags dupliquées qui auraient dû être nettoyées avant)\u003C/li>\n\u003Cli>Crawl Googlebot stable à 2,0 millions/mois\u003C/li>\n\u003Cli>GPTBot réduit à 80 000 requêtes/mois grâce au \u003Ccode>robots.txt\u003C/code> restreint (économie de bande passante estimée : 12 Go/mois)\u003C/li>\n\u003Cli>Trafic organique : -8% en semaine 4, retour au niveau initial en semaine 6, +3% en semaine 8 grâce à l'ajout systématique d'Article schema et FAQ schema sur les guides\u003C/li>\n\u003C/ul>\n\u003Cp>Le facteur critique : le \u003Ca href=\"/blog/deploiement-vendredi-soir-comment-eviter-la-catastrophe-seo\">déploiement n'a pas eu lieu un vendredi soir\u003C/a>. La migration a été déployée un mardi matin avec une équipe technique disponible pour corriger les régressions détectées par le monitoring en temps réel.\u003C/p>\n\u003Ch2>Ce qui change vraiment en 2026 — et ce qui ne change pas\u003C/h2>\n\u003Cp>Le SEO technique \"de base\" est plus facile qu'il ne l'a jamais été. Les frameworks modernes, la documentation de Google, les outils comme Screaming Frog et Chrome DevTools Lighthouse couvrent 80% des cas. Ce qui est devenu complexe, c'est la couche de \u003Cstrong>gouvernance\u003C/strong> : quels bots accèdent à quoi, quel signal structuré vous émettez vers quelles surfaces, comment vous maintenez la cohérence de ces signaux sur des milliers de pages qui évoluent chaque semaine.\u003C/p>\n\u003Cp>Le web \"rattrape\" les standards de Google, mais prend du retard sur les standards émergents du web agentique. Les sites qui gèrent activement leur \u003Ccode>robots.txt\u003C/code> IA, leur \u003Ccode>llms.txt\u003C/code>, et un graphe d'entités JSON-LD cohérent auront un avantage structurel — pas seulement en SEO classique, mais dans leur visibilité sur l'ensemble des surfaces de recherche de 2026.\u003C/p>\n\u003Cp>Un outil de monitoring comme Seogard permet de détecter en continu les régressions sur ces trois couches — HTML/meta classiques, structured data, et configuration bot — sans attendre qu'un crawl mensuel ou un rapport Search Console à retardement ne révèle le problème trois semaines trop tard.\u003C/p>",null,12,[18,19,20,21,22],"seo 2026","AI SEO","structured data","LLMs.txt","technical SEO","SEO en 2026 : standards relevés, IA omniprésente, web en retard","Mon Apr 06 2026 16:10:57 GMT+0000 (Coordinated Universal Time)",[26,40,54],{"_id":27,"slug":28,"__v":6,"author":7,"canonical":29,"category":10,"createdAt":30,"date":31,"description":32,"image":15,"imageAlt":15,"readingTime":16,"tags":33,"title":38,"updatedAt":39},"69cf3d0750ec067ac27cb851","why-your-content-doesn-t-appear-in-ai-overviews-even-if-it-ranks-in-the-top-10","https://seogard.io/blog/why-your-content-doesn-t-appear-in-ai-overviews-even-if-it-ranks-in-the-top-10","2026-04-03T04:07:35.039Z","2026-04-05","Être en top 10 ne suffit plus. Découvrez comment optimiser structure, balisage et récupération pour apparaître dans les AI Overviews de Google.",[34,35,20,36,37],"AI Overviews","SEO technique","Google SGE","content optimization","AI Overviews : pourquoi votre contenu n'y apparaît pas","Sun Apr 05 2026 01:40:52 GMT+0000 (Coordinated Universal Time)",{"_id":41,"slug":42,"__v":6,"author":7,"canonical":43,"category":10,"createdAt":44,"date":31,"description":45,"image":15,"imageAlt":15,"readingTime":16,"tags":46,"title":52,"updatedAt":53},"69d038ee3c1c869cea8ff0e6","google-is-fixing-a-search-console-bug-that-inflated-impression-counts","https://seogard.io/blog/google-is-fixing-a-search-console-bug-that-inflated-impression-counts","2026-04-03T22:02:22.423Z","Google corrige un bug GSC qui gonflait les impressions depuis le 13 mai 2025. Analyse technique, impact réel et scripts pour auditer vos données.",[47,48,49,50,51],"google search console","bug impressions","données SEO","monitoring","search performance","Bug Search Console : impressions gonflées depuis mai 2025","Sun Apr 05 2026 01:33:24 GMT+0000 (Coordinated Universal Time)",{"_id":55,"slug":56,"__v":6,"author":7,"canonical":57,"category":10,"createdAt":58,"date":31,"description":59,"image":15,"imageAlt":15,"readingTime":16,"tags":60,"title":68,"updatedAt":69},"69d1b8e1c84600c5cb80079e","google-core-update-crawl-limits-gemini-traffic-data-seo-pulse-via-sejournal-mattgsouthern","https://seogard.io/blog/google-core-update-crawl-limits-gemini-traffic-data-seo-pulse-via-sejournal-mattgsouthern","2026-04-05T01:20:33.461Z","Analyse technique du core update de mars, de l'architecture de crawl de Googlebot expliquée par Illyes, et du doublement du trafic referral Gemini.",[61,62,63,64,65,66,67],"google","core","update","crawl","limits","gemini","googlebot","Core Update, crawl limits et Gemini : décryptage technique","Sun Apr 05 2026 01:28:42 GMT+0000 (Coordinated Universal Time)"]