[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fX-B5A0M-jEWYB7CHHoyVpK9l_N9568AYw4Eel1VNRIQ":3,"$ff_FupOKi2kT3PA6STOOO2IJqmZpUQpSHsfD8V-rtEUE":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},"69d8764caa6b273b0c062b8c","google-sge-ai-overviews-quel-impact-sur-le-seo-technique",0,"Equipe Seogard","En mars 2026, AI Overviews apparaît sur plus de 30 % des requêtes informationnelles en France. Le bloc IA push les premiers résultats organiques 400 à 500 pixels plus bas. Pour un e-commerce de 18 000 pages produit qui dépend du trafic informationnel, ça représente un shift brutal — pas une évolution douce.\n\nLe réflexe éditorial (\"il faut écrire pour l'IA\") est partout. Ce qui manque, c'est l'angle technique : comment votre architecture, votre balisage, votre rendu serveur et vos données structurées déterminent si le pipeline IA de Google peut extraire, comprendre et citer votre contenu.\n\n## Comment AI Overviews consomme votre contenu\n\nAI Overviews ne fonctionne pas comme le ranking classique. Le système ne se contente pas d'indexer une page et de la positionner — il extrait des passages, les reformule, et les assemble en une réponse synthétique. La source originale apparaît en lien latéral, mais le texte affiché est une réécriture.\n\nCette mécanique repose sur deux pipelines distincts qui interagissent :\n\n1. **Le pipeline d'indexation classique** (Googlebot → rendering → indexation → ranking) qui détermine si votre page est connue et considérée comme autoritaire.\n2. **Le pipeline de génération IA** qui, au moment de la requête, sélectionne des passages dans l'index, les score pour leur pertinence factuelle, et les injecte dans le modèle de langage.\n\nLe point critique : si votre contenu est mal rendu, partiellement indexé, ou dépourvu de signaux structurels clairs, le pipeline IA ne peut pas extraire efficacement vos passages. Vous êtes invisible dans les AI Overviews même si vous rankez en position 3 dans les résultats classiques.\n\n### Ce que le pipeline IA privilégie\n\nL'analyse des sources citées dans AI Overviews révèle des patterns techniques récurrents. [Les résultats montrent environ 90 % de précision mais des millions d'erreurs subsistent](/blog/google-ai-overviews-90-accurate-yet-millions-of-errors-remain-analysis) — ce qui signifie que Google sélectionne des contenus qu'il peut parser avec confiance structurelle élevée.\n\nLes signaux techniques qui favorisent la citation :\n\n- **Structure sémantique HTML explicite** : des `\u003Ch2>`/`\u003Ch3>` qui encadrent des blocs de réponse autonomes, pas du texte en flux continu dans un seul `\u003Cdiv>`.\n- **Données structurées riches** : `FAQPage`, `HowTo`, `Article` avec `speakable` — des schémas qui découpent votre contenu en unités extractibles.\n- **Rendu serveur complet** : le contenu doit être dans le HTML initial, pas injecté par JavaScript côté client après hydration.\n- **Freshness signals** : `dateModified` dans le schema `Article`, headers HTTP `Last-Modified` cohérents avec le contenu.\n\n## Balisage sémantique : structurer pour l'extraction IA\n\nLa structure HTML de vos pages détermine directement la capacité du modèle IA à découper votre contenu en passages citables. Un article monolithique dans un `\u003Cdiv class=\"content\">` avec des `\u003Cbr>` comme seule structuration est un cauchemar pour l'extraction.\n\n### Le pattern \"réponse autonome\"\n\nChaque section H2/H3 doit fonctionner comme une unité de réponse indépendante. Imaginez que Google extrait uniquement le bloc entre votre `\u003Ch2>` et le `\u003Ch2>` suivant — ce passage doit répondre à une question sans contexte extérieur.\n\n```html\n\u003Carticle itemscope itemtype=\"https://schema.org/TechArticle\">\n  \u003Ch1 itemprop=\"headline\">Optimiser les Core Web Vitals sur un site Next.js\u003C/h1>\n  \n  \u003Csection>\n    \u003Ch2 id=\"lcp-images\">Réduire le LCP causé par les images hero\u003C/h2>\n    \u003Cp>Le Largest Contentful Paint sur Next.js dépasse fréquemment \n       les 2,5 secondes quand l'image hero est chargée via le \n       composant \u003Ccode>next/image\u003C/code> sans priorité explicite.\u003C/p>\n    \u003Cp>La correction consiste à ajouter l'attribut \u003Ccode>priority\u003C/code> \n       au composant Image pour les éléments above-the-fold, ce qui \n       déclenche un \u003Ccode>preload\u003C/code> dans le \u003Ccode>&lt;head&gt;\u003C/code>.\u003C/p>\n    \u003Cpre>\u003Ccode class=\"language-tsx\">\nimport Image from 'next/image';\n\nexport function HeroBanner({ src, alt }: { src: string; alt: string }) {\n  return (\n    \u003CImage\n      src={src}\n      alt={alt}\n      width={1200}\n      height={630}\n      priority={true}\n      sizes=\"100vw\"\n    />\n  );\n}\n    \u003C/code>\u003C/pre>\n    \u003Cp>Cette modification réduit typiquement le LCP de 800 ms à \n       1,2 seconde sur une connexion 4G simulée.\u003C/p>\n  \u003C/section>\n  \n  \u003Csection>\n    \u003Ch2 id=\"cls-fonts\">Éliminer le CLS causé par le chargement des polices\u003C/h2>\n    \u003C!-- Bloc autonome suivant -->\n  \u003C/section>\n\u003C/article>\n```\n\nCe pattern fait trois choses pour le pipeline IA :\n- Le heading identifie le sujet du passage.\n- Le paragraphe suivant formule la réponse de manière concise.\n- Le code apporte la preuve technique.\n\nL'IA peut extraire \"Le LCP sur Next.js dépasse fréquemment 2,5 secondes quand l'image hero est chargée sans priorité. L'ajout de l'attribut `priority` déclenche un preload et réduit le LCP de 800 ms à 1,2 s.\" — un passage citable, factuel, avec une source claire.\n\n### Le piège du contenu sans hiérarchie\n\n[Le thin content ne nuit pas qu'au ranking classique](/blog/thin-content-quand-vos-pages-nuisent-au-seo-global) — il est structurellement inutilisable par le pipeline IA. Une page de 200 mots sans heading intermédiaire, sans données structurées, n'offre aucun passage extractible avec confiance.\n\nC'est d'autant plus critique pour [le contenu généré automatiquement](/blog/contenu-genere-automatiquement-et-seo-ce-que-google-accepte) : si vous utilisez de la génération IA pour produire des pages, assurez-vous que le template de sortie impose une structure sémantique stricte — headings, paragraphes de réponse, blocs de code quand pertinent.\n\n## Données structurées : speakable, FAQPage et au-delà\n\nLes données structurées ont toujours été un signal fort pour les featured snippets. Avec AI Overviews, leur rôle change : elles ne déclenchent plus un affichage spécifique (l'encadré FAQ a disparu des SERPs en 2024), mais elles servent de **métadonnées d'extraction** pour le pipeline IA.\n\n### Speakable : le schema que personne n'utilise\n\nLe schema [`speakable`](https://developers.google.com/search/docs/appearance/structured-data/speakable) a été conçu initialement pour les assistants vocaux. En pratique, il indique à Google quelles parties de votre page sont les plus adaptées à la synthèse vocale — et par extension, à l'extraction IA.\n\n```html\n\u003Cscript type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Optimiser les Core Web Vitals sur un site Next.js\",\n  \"datePublished\": \"2026-04-08\",\n  \"dateModified\": \"2026-04-10\",\n  \"author\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Seogard\",\n    \"url\": \"https://seogard.io\"\n  },\n  \"speakable\": {\n    \"@type\": \"SpeakableSpecification\",\n    \"cssSelector\": [\n      \"article > section:nth-of-type(1) > p:first-of-type\",\n      \"article > section:nth-of-type(2) > p:first-of-type\",\n      \"article > section:nth-of-type(3) > p:first-of-type\"\n    ]\n  }\n}\n\u003C/script>\n```\n\nLe `cssSelector` pointe vers le premier paragraphe de chaque section — celui qui contient typiquement la réponse condensée. Ce pattern dit au pipeline IA : \"voici les passages les plus extractibles de cette page\".\n\nLe trade-off : `speakable` n'est officiellement supporté que pour les sites d'actualité aux États-Unis selon la [documentation Google](https://developers.google.com/search/docs/appearance/structured-data/speakable). Mais les `cssSelector` sont des métadonnées que le crawler peut exploiter indépendamment du support officiel complet. Le risque est nul, le gain potentiel non trivial.\n\n### FAQPage et HowTo : toujours utiles comme signaux d'extraction\n\nGoogle a retiré l'affichage rich result des FAQ en août 2023 pour la plupart des sites. Beaucoup de SEO ont supprimé le balisage. Erreur technique.\n\nLe schema `FAQPage` continue d'être parsé par le crawler. Il structure votre contenu en paires question/réponse — exactement le format que le pipeline AI Overviews exploite. Le fait qu'il n'affiche plus de rich result ne signifie pas qu'il ne sert plus de signal d'extraction.\n\nMême logique pour `HowTo` : le step-by-step structuré en JSON-LD reste un format d'extraction idéal pour les requêtes procédurales.\n\n## SSR et rendu : le contenu invisible pour l'IA\n\nGooglebot exécute JavaScript. C'est documenté, testé, prouvé. Mais le pipeline d'extraction IA a des contraintes de latence plus strictes que le pipeline d'indexation classique. Un contenu qui met 8 secondes à se rendre après hydration côté client est indexé (éventuellement), mais il est peu probable qu'il soit sélectionné pour extraction IA en temps réel.\n\n### Scénario concret : migration d'une base de connaissances SaaS\n\nPrenez une base de connaissances SaaS — 4 200 articles, construite sur Gatsby avec rendering CSR pour les blocs de contenu dynamiques (tabs, accordéons, code snippets interactifs). Le contenu principal est dans le DOM après hydration, pas dans le HTML statique initial.\n\nSituation initiale :\n- **Pages indexées** : 3 850 / 4 200 (92 %) — Googlebot finit par rendre le JS.\n- **Pages citées dans AI Overviews** : 12 sur 4 200.\n- **Temps de rendu moyen** (mesuré via Chrome DevTools en throttling \"Slow 4G\") : 4,8 secondes pour le contenu complet.\n\nAprès migration vers Astro avec rendu statique (SSG) pour tout le contenu textuel, et islands d'hydration uniquement pour les composants interactifs :\n\n- **Pages indexées** : 4 150 / 4 200 (99 %).\n- **Pages citées dans AI Overviews** (3 mois après migration) : 89.\n- **Temps de rendu** : contenu dans le HTML initial, 0 ms d'attente JS.\n\nLe facteur x7 sur les citations IA n'est pas uniquement lié au SSR — la migration a aussi amélioré la structure sémantique. Mais le SSR est le prérequis technique sans lequel le reste ne compte pas.\n\n### Vérifier le rendu effectif\n\nPour auditer si votre contenu est visible dans le HTML initial sans exécution JavaScript :\n\n```bash\n# Récupérer le HTML brut sans exécution JS\ncurl -s -A \"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\" \\\n  https://docs.votresaas.com/guides/core-web-vitals \\\n  | pup 'article text{}' \\\n  | head -50\n\n# Comparer avec le rendu complet via Puppeteer\nnpx puppeteer-cli screenshot \\\n  --url \"https://docs.votresaas.com/guides/core-web-vitals\" \\\n  --wait-until networkidle0 \\\n  --full-page \\\n  --output rendered.png\n```\n\nSi le `curl` retourne un `\u003Cdiv id=\"app\">\u003C/div>` vide et que le contenu n'apparaît qu'après rendu Puppeteer, votre contenu est techniquement invisible pour le pipeline d'extraction rapide.\n\n[Chrome DevTools offre des techniques avancées](/blog/chrome-devtools-pour-le-seo-astuces-avancees) pour diagnostiquer ces problèmes de rendu directement dans le navigateur — désactivation JS, analyse du DOM initial versus DOM hydraté.\n\nPour un [site headless CMS](/blog/headless-cms-et-seo-avantages-et-risques-techniques), le pattern optimal est clair : rendu statique ou SSR pour le contenu textuel, hydration partielle pour les composants interactifs. Les frameworks comme Astro, Qwik, ou le mode `app` de Next.js avec React Server Components facilitent cette séparation.\n\n## Crawlabilité et budget de crawl à l'ère de l'IA\n\nLe budget de crawl n'est pas un concept nouveau, mais AI Overviews ajoute une couche : votre contenu doit non seulement être crawlé et indexé, mais crawlé **fréquemment** pour maintenir des signaux de fraîcheur que le pipeline IA valorise.\n\n### Freshness comme signal d'extraction\n\nAI Overviews semble surpondérer les contenus récemment mis à jour pour les requêtes informationnelles évolutives. Un article daté de 2023 sur un sujet qui a évolué sera moins souvent cité qu'un article mis à jour en 2026, même si le contenu de fond est similaire.\n\nLes signaux de fraîcheur que Google exploite :\n\n- `dateModified` dans le schema `Article` (le signal le plus explicite).\n- Header HTTP `Last-Modified` (le signal côté serveur).\n- Changements détectés dans le contenu lors du recrawl.\n\nLa cohérence entre ces trois signaux est critique. Si votre `dateModified` dit \"2026-04-10\" mais que le header `Last-Modified` renvoie \"2024-01-15\" et que le contenu n'a pas changé, c'est un signal contradictoire.\n\nConfiguration Nginx pour des headers `Last-Modified` dynamiques basés sur la date de modification réelle du fichier :\n\n```nginx\nlocation /blog/ {\n    # Pour du contenu statique (SSG), Last-Modified est \n    # automatiquement basé sur la date du fichier\n    try_files $uri $uri/index.html =404;\n    \n    # Désactiver etag si vous utilisez Last-Modified\n    # pour éviter les signaux contradictoires\n    etag off;\n    \n    # Cache court pour permettre la re-validation fréquente\n    add_header Cache-Control \"public, max-age=3600, must-revalidate\";\n    \n    # Pour du contenu SSR (proxy vers Node.js),\n    # s'assurer que le backend envoie Last-Modified\n    location ~ ^/blog/.*$ {\n        proxy_pass http://127.0.0.1:3000;\n        proxy_set_header Host $host;\n        \n        # Ne pas écraser le Last-Modified du backend\n        proxy_pass_header Last-Modified;\n    }\n}\n```\n\n### Impact sur les bots IA tiers\n\nAu-delà de Googlebot, votre site est désormais crawlé par les bots d'entraînement IA (GPTBot, ClaudeBot, etc.) et les bots de réponse en temps réel (ChatGPT-User, PerplexityBot). [Le trafic des bots IA a explosé de 300 %](/blog/ai-bot-traffic-surged-300-hitting-publishers-hardest-report), consommant du budget serveur sans bénéfice SEO direct.\n\nLa stratégie technique : autoriser Googlebot (qui alimente AI Overviews) et filtrer sélectivement les bots IA tiers via `robots.txt` en fonction de votre stratégie de visibilité IA.\n\n```\n# robots.txt - stratégie sélective IA\nUser-agent: Googlebot\nAllow: /\n\nUser-agent: GPTBot\nAllow: /blog/\nDisallow: /pricing/\nDisallow: /app/\n\nUser-agent: PerplexityBot\nAllow: /blog/\nDisallow: /\n\nUser-agent: ClaudeBot\nDisallow: /\n```\n\nCe n'est pas un dogme — si votre stratégie inclut la visibilité dans ChatGPT ou Perplexity, vous ouvrez les vannes. Mais vous devez faire ce choix consciemment, pas par défaut.\n\n## Mesurer votre visibilité dans AI Overviews\n\nVous ne pouvez pas optimiser ce que vous ne mesurez pas. Le problème : Google Search Console ne segmente pas (encore) clairement le trafic provenant des clics sur les liens de citation AI Overviews.\n\n### Ce que Search Console montre (et ne montre pas)\n\nDans le rapport de performance, les impressions et clics liés à AI Overviews sont agrégés avec les résultats organiques classiques. Vous pouvez observer des variations d'impressions et de CTR, mais vous ne pouvez pas isoler \"cette page a été citée dans AI Overviews 847 fois ce mois-ci\".\n\n[Les rapports Search Console que la plupart des SEO ignorent](/blog/google-search-console-les-rapports-que-vous-ignorez) incluent cependant des signaux indirects : le rapport \"Apparence dans les résultats de recherche\" peut montrer des types de résultats spécifiques, et l'[API Search Console](/blog/search-console-api-automatiser-le-reporting-seo) permet d'extraire des données granulaires par type de recherche.\n\n### Tracking côté serveur des citations IA\n\nUne approche complémentaire : identifier les patterns de trafic caractéristiques des clics AI Overviews. Les utilisateurs qui cliquent sur une source dans un AI Overview ont un comportement différent — ils arrivent avec une intention de vérification, pas de découverte.\n\nLe referer HTTP depuis un clic AI Overview est identique à un clic organique classique (`https://www.google.com/`), mais le parcours utilisateur diffère : temps sur page plus court, taux de rebond plus élevé, mais engagement plus profond quand l'utilisateur reste (scroll depth supérieur).\n\n[Mesurer l'impact SEO technique via des KPIs adaptés](/blog/mesurer-l-impact-seo-technique-quels-kpis-suivre) est essentiel — vous devez suivre non seulement le trafic global mais aussi les métriques comportementales qui distinguent le trafic IA du trafic organique classique.\n\n### Monitoring automatisé des régressions\n\nLe risque le plus insidieux avec AI Overviews est la **régression silencieuse**. Votre page est citée dans AI Overviews pendant 3 semaines, puis un déploiement casse le SSR, le schema JSON-LD contient une erreur de syntaxe, ou un `noindex` est ajouté par erreur sur un template. Vous perdez vos citations IA sans signal d'alerte dans Search Console.\n\nC'est exactement le type de régression qu'un outil de monitoring comme Seogard détecte automatiquement : disparition de données structurées, changement de rendu (SSR → CSR), meta robots modifiées, headers HTTP incohérents. Sans monitoring continu, vous ne découvrez le problème que 4 à 6 semaines plus tard, quand la baisse de trafic devient visible dans vos dashboards.\n\n[Automatiser les checks SEO dans votre CI/CD](/blog/automatiser-les-checks-seo-dans-le-ci-cd) est la première ligne de défense : valider le schema JSON-LD, vérifier la présence du contenu dans le HTML initial, et tester les headers HTTP à chaque déploiement.\n\n## Stratégie de contenu technique pour l'extraction IA\n\nOptimiser pour AI Overviews ne signifie pas écrire différemment. Ça signifie structurer votre expertise existante pour la rendre extractible.\n\n### Le pattern \"définition + preuve + nuance\"\n\nLes passages les plus cités dans AI Overviews suivent un pattern récurrent :\n\n1. **Définition ou affirmation factuelle** (1-2 phrases).\n2. **Preuve ou exemple** (code, donnée, référence).\n3. **Nuance ou limitation** (quand ça ne s'applique pas).\n\nCe pattern fonctionne parce que le modèle IA cherche des réponses complètes mais concises. Un passage qui affirme sans preuve est moins fiable. Un passage qui affirme sans nuance est moins complet qu'un passage concurrent qui mentionne les exceptions.\n\n[L'IA décide ce que votre contenu signifie](/blog/how-ai-decides-what-your-content-means-and-why-it-gets-you-wrong) — et elle se trompe souvent quand le contenu est ambigu. La structure explicite réduit l'ambiguïté et augmente la probabilité que votre passage soit correctement interprété et cité.\n\n### Product feeds et contenu transactionnel\n\nPour les e-commerces, [les product feeds nécessitent une stratégie organique spécifique pour la recherche IA](/blog/why-product-feeds-need-an-organic-strategy-for-ai-search). AI Overviews sur les requêtes transactionnelles (\"meilleur aspirateur robot 2026\") agrège des données produit — prix, caractéristiques, avis — depuis des sources structurées.\n\nSi votre catalogue produit n'a pas de schema `Product` complet avec `offers`, `aggregateRating`, et `review`, vous êtes invisible sur ces requêtes IA transactionnelles, même si vos pages produit rankent en première page.\n\n### Le cas du multilingue\n\nPour les sites multilingues, [l'architecture technique optimale](/blog/seo-multilingue-architecture-technique-optimale) prend une dimension supplémentaire avec AI Overviews. Google peut générer des AI Overviews dans une langue en citant des sources dans une autre langue. [La pertinence de marché pour la recherche IA va au-delà du hreflang](/blog/how-ai-search-defines-market-relevance-beyond-hreflang) — votre contenu français peut être cité dans un AI Overview en anglais si Google le juge plus autoritaire sur le sujet.\n\nCela renforce l'importance d'avoir du contenu technique profond dans chaque langue servie, pas des traductions automatiques superficielles.\n\n## L'évolution vers l'agent manager\n\n[Sundar Pichai voit Google Search évoluer vers un gestionnaire d'agents](/blog/sundar-pichai-sees-google-search-evolving-into-an-agent-manager). AI Overviews n'est qu'une étape. La direction est claire : Google veut transformer la recherche en un système qui non seulement répond aux questions, mais exécute des tâches — comparer des produits, remplir des formulaires, prendre des rendez-vous.\n\nPour le SEO technique, cela signifie que les données structurées et les APIs deviennent des vecteurs de trafic à part entière. Un [site API-first qui sert du contenu crawlable](/blog/api-first-et-seo-servir-du-contenu-crawlable-depuis-une-api) est mieux positionné pour cette évolution qu'un site monolithique avec du HTML statique.\n\nLes actions concrètes dès maintenant :\n- Schema `Action` sur les pages de service (réservation, achat, inscription).\n- Endpoints API documentés et crawlables pour les données produit.\n- Contenu structuré en unités atomiques extractibles, pas en prose monolithique.\n\n---\n\nAI Overviews redistribue la visibilité organique, mais les fondamentaux techniques n'ont pas changé — ils se sont intensifiés. Rendu serveur complet, balisage sémantique strict, données structurées riches, signaux de fraîcheur cohérents : ce qui était \"bien à avoir\" est devenu le minimum pour rester dans le jeu. Le monitoring continu de ces signaux techniques est la seule façon de détecter les régressions avant qu'elles ne coûtent des semaines de visibilité IA.\n```","https://seogard.io/blog/google-sge-ai-overviews-quel-impact-sur-le-seo-technique","IA & SEO","2026-04-10T04:02:20.160Z","2026-04-10","Comment adapter votre architecture technique pour que Google SGE et AI Overviews exploitent correctement votre contenu. Code, config et stratégie.","\u003Cp>En mars 2026, AI Overviews apparaît sur plus de 30 % des requêtes informationnelles en France. Le bloc IA push les premiers résultats organiques 400 à 500 pixels plus bas. Pour un e-commerce de 18 000 pages produit qui dépend du trafic informationnel, ça représente un shift brutal — pas une évolution douce.\u003C/p>\n\u003Cp>Le réflexe éditorial (\"il faut écrire pour l'IA\") est partout. Ce qui manque, c'est l'angle technique : comment votre architecture, votre balisage, votre rendu serveur et vos données structurées déterminent si le pipeline IA de Google peut extraire, comprendre et citer votre contenu.\u003C/p>\n\u003Ch2>Comment AI Overviews consomme votre contenu\u003C/h2>\n\u003Cp>AI Overviews ne fonctionne pas comme le ranking classique. Le système ne se contente pas d'indexer une page et de la positionner — il extrait des passages, les reformule, et les assemble en une réponse synthétique. La source originale apparaît en lien latéral, mais le texte affiché est une réécriture.\u003C/p>\n\u003Cp>Cette mécanique repose sur deux pipelines distincts qui interagissent :\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Le pipeline d'indexation classique\u003C/strong> (Googlebot → rendering → indexation → ranking) qui détermine si votre page est connue et considérée comme autoritaire.\u003C/li>\n\u003Cli>\u003Cstrong>Le pipeline de génération IA\u003C/strong> qui, au moment de la requête, sélectionne des passages dans l'index, les score pour leur pertinence factuelle, et les injecte dans le modèle de langage.\u003C/li>\n\u003C/ol>\n\u003Cp>Le point critique : si votre contenu est mal rendu, partiellement indexé, ou dépourvu de signaux structurels clairs, le pipeline IA ne peut pas extraire efficacement vos passages. Vous êtes invisible dans les AI Overviews même si vous rankez en position 3 dans les résultats classiques.\u003C/p>\n\u003Ch3>Ce que le pipeline IA privilégie\u003C/h3>\n\u003Cp>L'analyse des sources citées dans AI Overviews révèle des patterns techniques récurrents. \u003Ca href=\"/blog/google-ai-overviews-90-accurate-yet-millions-of-errors-remain-analysis\">Les résultats montrent environ 90 % de précision mais des millions d'erreurs subsistent\u003C/a> — ce qui signifie que Google sélectionne des contenus qu'il peut parser avec confiance structurelle élevée.\u003C/p>\n\u003Cp>Les signaux techniques qui favorisent la citation :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Structure sémantique HTML explicite\u003C/strong> : des \u003Ccode>&#x3C;h2>\u003C/code>/\u003Ccode>&#x3C;h3>\u003C/code> qui encadrent des blocs de réponse autonomes, pas du texte en flux continu dans un seul \u003Ccode>&#x3C;div>\u003C/code>.\u003C/li>\n\u003Cli>\u003Cstrong>Données structurées riches\u003C/strong> : \u003Ccode>FAQPage\u003C/code>, \u003Ccode>HowTo\u003C/code>, \u003Ccode>Article\u003C/code> avec \u003Ccode>speakable\u003C/code> — des schémas qui découpent votre contenu en unités extractibles.\u003C/li>\n\u003Cli>\u003Cstrong>Rendu serveur complet\u003C/strong> : le contenu doit être dans le HTML initial, pas injecté par JavaScript côté client après hydration.\u003C/li>\n\u003Cli>\u003Cstrong>Freshness signals\u003C/strong> : \u003Ccode>dateModified\u003C/code> dans le schema \u003Ccode>Article\u003C/code>, headers HTTP \u003Ccode>Last-Modified\u003C/code> cohérents avec le contenu.\u003C/li>\n\u003C/ul>\n\u003Ch2>Balisage sémantique : structurer pour l'extraction IA\u003C/h2>\n\u003Cp>La structure HTML de vos pages détermine directement la capacité du modèle IA à découper votre contenu en passages citables. Un article monolithique dans un \u003Ccode>&#x3C;div class=\"content\">\u003C/code> avec des \u003Ccode>&#x3C;br>\u003C/code> comme seule structuration est un cauchemar pour l'extraction.\u003C/p>\n\u003Ch3>Le pattern \"réponse autonome\"\u003C/h3>\n\u003Cp>Chaque section H2/H3 doit fonctionner comme une unité de réponse indépendante. Imaginez que Google extrait uniquement le bloc entre votre \u003Ccode>&#x3C;h2>\u003C/code> et le \u003Ccode>&#x3C;h2>\u003C/code> suivant — ce passage doit répondre à une question sans contexte extérieur.\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\">article\u003C/span>\u003Cspan style=\"color:#B392F0\"> itemscope\u003C/span>\u003Cspan style=\"color:#B392F0\"> itemtype\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"https://schema.org/TechArticle\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\u003C/span>\u003Cspan style=\"color:#B392F0\"> itemprop\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"headline\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Optimiser les Core Web Vitals sur un site Next.js&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\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\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">section\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">h2\u003C/span>\u003Cspan style=\"color:#B392F0\"> id\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"lcp-images\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Réduire le LCP causé par les images hero&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">h2\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Le Largest Contentful Paint sur Next.js dépasse fréquemment \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">       les 2,5 secondes quand l'image hero est chargée via le \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">       composant &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>next/image&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">> sans priorité explicite.&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>La correction consiste à ajouter l'attribut &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>priority&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">> \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">       au composant Image pour les éléments above-the-fold, ce qui \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">       déclenche un &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>preload&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">> dans le &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003Cspan style=\"color:#79B8FF\">&#x26;lt;\u003C/span>\u003Cspan style=\"color:#E1E4E8\">head\u003C/span>\u003Cspan style=\"color:#79B8FF\">&#x26;gt;\u003C/span>\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>.&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">pre\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">code\u003C/span>\u003Cspan style=\"color:#B392F0\"> class\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"language-tsx\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">import Image from 'next/image';\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">export function HeroBanner({ src, alt }: { src: string; alt: string }) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  return (\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#FDAEB7;font-style:italic\">Image\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">      src\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">{src}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">      alt\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">{alt}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">      width\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">{1200}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">      height\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">{630}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">      priority\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">{true}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">      sizes\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"100vw\"\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\">code\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">pre\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Cette modification réduit typiquement le LCP de 800 ms à \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">       1,2 seconde sur une connexion 4G simulée.&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">section\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\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">section\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">h2\u003C/span>\u003Cspan style=\"color:#B392F0\"> id\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"cls-fonts\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Éliminer le CLS causé par le chargement des polices&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">h2\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    &#x3C;!-- Bloc autonome suivant -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">section\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">article\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Ce pattern fait trois choses pour le pipeline IA :\u003C/p>\n\u003Cul>\n\u003Cli>Le heading identifie le sujet du passage.\u003C/li>\n\u003Cli>Le paragraphe suivant formule la réponse de manière concise.\u003C/li>\n\u003Cli>Le code apporte la preuve technique.\u003C/li>\n\u003C/ul>\n\u003Cp>L'IA peut extraire \"Le LCP sur Next.js dépasse fréquemment 2,5 secondes quand l'image hero est chargée sans priorité. L'ajout de l'attribut \u003Ccode>priority\u003C/code> déclenche un preload et réduit le LCP de 800 ms à 1,2 s.\" — un passage citable, factuel, avec une source claire.\u003C/p>\n\u003Ch3>Le piège du contenu sans hiérarchie\u003C/h3>\n\u003Cp>\u003Ca href=\"/blog/thin-content-quand-vos-pages-nuisent-au-seo-global\">Le thin content ne nuit pas qu'au ranking classique\u003C/a> — il est structurellement inutilisable par le pipeline IA. Une page de 200 mots sans heading intermédiaire, sans données structurées, n'offre aucun passage extractible avec confiance.\u003C/p>\n\u003Cp>C'est d'autant plus critique pour \u003Ca href=\"/blog/contenu-genere-automatiquement-et-seo-ce-que-google-accepte\">le contenu généré automatiquement\u003C/a> : si vous utilisez de la génération IA pour produire des pages, assurez-vous que le template de sortie impose une structure sémantique stricte — headings, paragraphes de réponse, blocs de code quand pertinent.\u003C/p>\n\u003Ch2>Données structurées : speakable, FAQPage et au-delà\u003C/h2>\n\u003Cp>Les données structurées ont toujours été un signal fort pour les featured snippets. Avec AI Overviews, leur rôle change : elles ne déclenchent plus un affichage spécifique (l'encadré FAQ a disparu des SERPs en 2024), mais elles servent de \u003Cstrong>métadonnées d'extraction\u003C/strong> pour le pipeline IA.\u003C/p>\n\u003Ch3>Speakable : le schema que personne n'utilise\u003C/h3>\n\u003Cp>Le schema \u003Ca href=\"https://developers.google.com/search/docs/appearance/structured-data/speakable\">\u003Ccode>speakable\u003C/code>\u003C/a> a été conçu initialement pour les assistants vocaux. En pratique, il indique à Google quelles parties de votre page sont les plus adaptées à la synthèse vocale — et par extension, à l'extraction IA.\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\">  \"@type\": \"Article\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"headline\": \"Optimiser les Core Web Vitals sur un site Next.js\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"datePublished\": \"2026-04-08\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"dateModified\": \"2026-04-10\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"author\": {\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\">    \"name\": \"Seogard\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"url\": \"https://seogard.io\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"speakable\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"@type\": \"SpeakableSpecification\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"cssSelector\": [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"article > section:nth-of-type(1) > p:first-of-type\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"article > section:nth-of-type(2) > p:first-of-type\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"article > section:nth-of-type(3) > p:first-of-type\"\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 \u003Ccode>cssSelector\u003C/code> pointe vers le premier paragraphe de chaque section — celui qui contient typiquement la réponse condensée. Ce pattern dit au pipeline IA : \"voici les passages les plus extractibles de cette page\".\u003C/p>\n\u003Cp>Le trade-off : \u003Ccode>speakable\u003C/code> n'est officiellement supporté que pour les sites d'actualité aux États-Unis selon la \u003Ca href=\"https://developers.google.com/search/docs/appearance/structured-data/speakable\">documentation Google\u003C/a>. Mais les \u003Ccode>cssSelector\u003C/code> sont des métadonnées que le crawler peut exploiter indépendamment du support officiel complet. Le risque est nul, le gain potentiel non trivial.\u003C/p>\n\u003Ch3>FAQPage et HowTo : toujours utiles comme signaux d'extraction\u003C/h3>\n\u003Cp>Google a retiré l'affichage rich result des FAQ en août 2023 pour la plupart des sites. Beaucoup de SEO ont supprimé le balisage. Erreur technique.\u003C/p>\n\u003Cp>Le schema \u003Ccode>FAQPage\u003C/code> continue d'être parsé par le crawler. Il structure votre contenu en paires question/réponse — exactement le format que le pipeline AI Overviews exploite. Le fait qu'il n'affiche plus de rich result ne signifie pas qu'il ne sert plus de signal d'extraction.\u003C/p>\n\u003Cp>Même logique pour \u003Ccode>HowTo\u003C/code> : le step-by-step structuré en JSON-LD reste un format d'extraction idéal pour les requêtes procédurales.\u003C/p>\n\u003Ch2>SSR et rendu : le contenu invisible pour l'IA\u003C/h2>\n\u003Cp>Googlebot exécute JavaScript. C'est documenté, testé, prouvé. Mais le pipeline d'extraction IA a des contraintes de latence plus strictes que le pipeline d'indexation classique. Un contenu qui met 8 secondes à se rendre après hydration côté client est indexé (éventuellement), mais il est peu probable qu'il soit sélectionné pour extraction IA en temps réel.\u003C/p>\n\u003Ch3>Scénario concret : migration d'une base de connaissances SaaS\u003C/h3>\n\u003Cp>Prenez une base de connaissances SaaS — 4 200 articles, construite sur Gatsby avec rendering CSR pour les blocs de contenu dynamiques (tabs, accordéons, code snippets interactifs). Le contenu principal est dans le DOM après hydration, pas dans le HTML statique initial.\u003C/p>\n\u003Cp>Situation initiale :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Pages indexées\u003C/strong> : 3 850 / 4 200 (92 %) — Googlebot finit par rendre le JS.\u003C/li>\n\u003Cli>\u003Cstrong>Pages citées dans AI Overviews\u003C/strong> : 12 sur 4 200.\u003C/li>\n\u003Cli>\u003Cstrong>Temps de rendu moyen\u003C/strong> (mesuré via Chrome DevTools en throttling \"Slow 4G\") : 4,8 secondes pour le contenu complet.\u003C/li>\n\u003C/ul>\n\u003Cp>Après migration vers Astro avec rendu statique (SSG) pour tout le contenu textuel, et islands d'hydration uniquement pour les composants interactifs :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Pages indexées\u003C/strong> : 4 150 / 4 200 (99 %).\u003C/li>\n\u003Cli>\u003Cstrong>Pages citées dans AI Overviews\u003C/strong> (3 mois après migration) : 89.\u003C/li>\n\u003Cli>\u003Cstrong>Temps de rendu\u003C/strong> : contenu dans le HTML initial, 0 ms d'attente JS.\u003C/li>\n\u003C/ul>\n\u003Cp>Le facteur x7 sur les citations IA n'est pas uniquement lié au SSR — la migration a aussi amélioré la structure sémantique. Mais le SSR est le prérequis technique sans lequel le reste ne compte pas.\u003C/p>\n\u003Ch3>Vérifier le rendu effectif\u003C/h3>\n\u003Cp>Pour auditer si votre contenu est visible dans le HTML initial sans exécution JavaScript :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Récupérer le HTML brut sans exécution JS\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">curl\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -s\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -A\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">  https://docs.votresaas.com/guides/core-web-vitals\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> pup\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> 'article text{}'\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> head\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -50\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Comparer avec le rendu complet via Puppeteer\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">npx\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> puppeteer-cli\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> screenshot\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  --url\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"https://docs.votresaas.com/guides/core-web-vitals\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  --wait-until\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> networkidle0\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  --full-page\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  --output\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> rendered.png\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Si le \u003Ccode>curl\u003C/code> retourne un \u003Ccode>&#x3C;div id=\"app\">&#x3C;/div>\u003C/code> vide et que le contenu n'apparaît qu'après rendu Puppeteer, votre contenu est techniquement invisible pour le pipeline d'extraction rapide.\u003C/p>\n\u003Cp>\u003Ca href=\"/blog/chrome-devtools-pour-le-seo-astuces-avancees\">Chrome DevTools offre des techniques avancées\u003C/a> pour diagnostiquer ces problèmes de rendu directement dans le navigateur — désactivation JS, analyse du DOM initial versus DOM hydraté.\u003C/p>\n\u003Cp>Pour un \u003Ca href=\"/blog/headless-cms-et-seo-avantages-et-risques-techniques\">site headless CMS\u003C/a>, le pattern optimal est clair : rendu statique ou SSR pour le contenu textuel, hydration partielle pour les composants interactifs. Les frameworks comme Astro, Qwik, ou le mode \u003Ccode>app\u003C/code> de Next.js avec React Server Components facilitent cette séparation.\u003C/p>\n\u003Ch2>Crawlabilité et budget de crawl à l'ère de l'IA\u003C/h2>\n\u003Cp>Le budget de crawl n'est pas un concept nouveau, mais AI Overviews ajoute une couche : votre contenu doit non seulement être crawlé et indexé, mais crawlé \u003Cstrong>fréquemment\u003C/strong> pour maintenir des signaux de fraîcheur que le pipeline IA valorise.\u003C/p>\n\u003Ch3>Freshness comme signal d'extraction\u003C/h3>\n\u003Cp>AI Overviews semble surpondérer les contenus récemment mis à jour pour les requêtes informationnelles évolutives. Un article daté de 2023 sur un sujet qui a évolué sera moins souvent cité qu'un article mis à jour en 2026, même si le contenu de fond est similaire.\u003C/p>\n\u003Cp>Les signaux de fraîcheur que Google exploite :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>dateModified\u003C/code> dans le schema \u003Ccode>Article\u003C/code> (le signal le plus explicite).\u003C/li>\n\u003Cli>Header HTTP \u003Ccode>Last-Modified\u003C/code> (le signal côté serveur).\u003C/li>\n\u003Cli>Changements détectés dans le contenu lors du recrawl.\u003C/li>\n\u003C/ul>\n\u003Cp>La cohérence entre ces trois signaux est critique. Si votre \u003Ccode>dateModified\u003C/code> dit \"2026-04-10\" mais que le header \u003Ccode>Last-Modified\u003C/code> renvoie \"2024-01-15\" et que le contenu n'a pas changé, c'est un signal contradictoire.\u003C/p>\n\u003Cp>Configuration Nginx pour des headers \u003Ccode>Last-Modified\u003C/code> dynamiques basés sur la date de modification réelle du fichier :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">location\u003C/span>\u003Cspan style=\"color:#B392F0\"> /blog/ \u003C/span>\u003Cspan style=\"color:#E1E4E8\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # Pour du contenu statique (SSG), Last-Modified est \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # automatiquement basé sur la date du fichier\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    try_files \u003C/span>\u003Cspan style=\"color:#E1E4E8\">$uri $uri/index.html \u003C/span>\u003Cspan style=\"color:#79B8FF\">=404\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:#6A737D\">    # Désactiver etag si vous utilisez Last-Modified\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # pour éviter les signaux contradictoires\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    etag \u003C/span>\u003Cspan style=\"color:#79B8FF\">off\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:#6A737D\">    # Cache court pour permettre la re-validation fréquente\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    add_header \u003C/span>\u003Cspan style=\"color:#E1E4E8\">Cache-Control \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"public, max-age=3600, must-revalidate\"\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:#6A737D\">    # Pour du contenu SSR (proxy vers Node.js),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # s'assurer que le backend envoie Last-Modified\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    location\u003C/span>\u003Cspan style=\"color:#F97583\"> ~\u003C/span>\u003Cspan style=\"color:#DBEDFF\"> ^/blog/.*$ \u003C/span>\u003Cspan style=\"color:#E1E4E8\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        proxy_pass \u003C/span>\u003Cspan style=\"color:#E1E4E8\">http://127.0.0.1:3000;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        proxy_set_header \u003C/span>\u003Cspan style=\"color:#E1E4E8\">Host $host;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        # Ne pas écraser le Last-Modified du backend\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        proxy_pass_header \u003C/span>\u003Cspan style=\"color:#E1E4E8\">Last-Modified;\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\u003Ch3>Impact sur les bots IA tiers\u003C/h3>\n\u003Cp>Au-delà de Googlebot, votre site est désormais crawlé par les bots d'entraînement IA (GPTBot, ClaudeBot, etc.) et les bots de réponse en temps réel (ChatGPT-User, PerplexityBot). \u003Ca href=\"/blog/ai-bot-traffic-surged-300-hitting-publishers-hardest-report\">Le trafic des bots IA a explosé de 300 %\u003C/a>, consommant du budget serveur sans bénéfice SEO direct.\u003C/p>\n\u003Cp>La stratégie technique : autoriser Googlebot (qui alimente AI Overviews) et filtrer sélectivement les bots IA tiers via \u003Ccode>robots.txt\u003C/code> en fonction de votre stratégie de visibilité IA.\u003C/p>\n\u003Cpre>\u003Ccode># robots.txt - stratégie sélective IA\nUser-agent: Googlebot\nAllow: /\n\nUser-agent: GPTBot\nAllow: /blog/\nDisallow: /pricing/\nDisallow: /app/\n\nUser-agent: PerplexityBot\nAllow: /blog/\nDisallow: /\n\nUser-agent: ClaudeBot\nDisallow: /\n\u003C/code>\u003C/pre>\n\u003Cp>Ce n'est pas un dogme — si votre stratégie inclut la visibilité dans ChatGPT ou Perplexity, vous ouvrez les vannes. Mais vous devez faire ce choix consciemment, pas par défaut.\u003C/p>\n\u003Ch2>Mesurer votre visibilité dans AI Overviews\u003C/h2>\n\u003Cp>Vous ne pouvez pas optimiser ce que vous ne mesurez pas. Le problème : Google Search Console ne segmente pas (encore) clairement le trafic provenant des clics sur les liens de citation AI Overviews.\u003C/p>\n\u003Ch3>Ce que Search Console montre (et ne montre pas)\u003C/h3>\n\u003Cp>Dans le rapport de performance, les impressions et clics liés à AI Overviews sont agrégés avec les résultats organiques classiques. Vous pouvez observer des variations d'impressions et de CTR, mais vous ne pouvez pas isoler \"cette page a été citée dans AI Overviews 847 fois ce mois-ci\".\u003C/p>\n\u003Cp>\u003Ca href=\"/blog/google-search-console-les-rapports-que-vous-ignorez\">Les rapports Search Console que la plupart des SEO ignorent\u003C/a> incluent cependant des signaux indirects : le rapport \"Apparence dans les résultats de recherche\" peut montrer des types de résultats spécifiques, et l'\u003Ca href=\"/blog/search-console-api-automatiser-le-reporting-seo\">API Search Console\u003C/a> permet d'extraire des données granulaires par type de recherche.\u003C/p>\n\u003Ch3>Tracking côté serveur des citations IA\u003C/h3>\n\u003Cp>Une approche complémentaire : identifier les patterns de trafic caractéristiques des clics AI Overviews. Les utilisateurs qui cliquent sur une source dans un AI Overview ont un comportement différent — ils arrivent avec une intention de vérification, pas de découverte.\u003C/p>\n\u003Cp>Le referer HTTP depuis un clic AI Overview est identique à un clic organique classique (\u003Ccode>https://www.google.com/\u003C/code>), mais le parcours utilisateur diffère : temps sur page plus court, taux de rebond plus élevé, mais engagement plus profond quand l'utilisateur reste (scroll depth supérieur).\u003C/p>\n\u003Cp>\u003Ca href=\"/blog/mesurer-l-impact-seo-technique-quels-kpis-suivre\">Mesurer l'impact SEO technique via des KPIs adaptés\u003C/a> est essentiel — vous devez suivre non seulement le trafic global mais aussi les métriques comportementales qui distinguent le trafic IA du trafic organique classique.\u003C/p>\n\u003Ch3>Monitoring automatisé des régressions\u003C/h3>\n\u003Cp>Le risque le plus insidieux avec AI Overviews est la \u003Cstrong>régression silencieuse\u003C/strong>. Votre page est citée dans AI Overviews pendant 3 semaines, puis un déploiement casse le SSR, le schema JSON-LD contient une erreur de syntaxe, ou un \u003Ccode>noindex\u003C/code> est ajouté par erreur sur un template. Vous perdez vos citations IA sans signal d'alerte dans Search Console.\u003C/p>\n\u003Cp>C'est exactement le type de régression qu'un outil de monitoring comme Seogard détecte automatiquement : disparition de données structurées, changement de rendu (SSR → CSR), meta robots modifiées, headers HTTP incohérents. Sans monitoring continu, vous ne découvrez le problème que 4 à 6 semaines plus tard, quand la baisse de trafic devient visible dans vos dashboards.\u003C/p>\n\u003Cp>\u003Ca href=\"/blog/automatiser-les-checks-seo-dans-le-ci-cd\">Automatiser les checks SEO dans votre CI/CD\u003C/a> est la première ligne de défense : valider le schema JSON-LD, vérifier la présence du contenu dans le HTML initial, et tester les headers HTTP à chaque déploiement.\u003C/p>\n\u003Ch2>Stratégie de contenu technique pour l'extraction IA\u003C/h2>\n\u003Cp>Optimiser pour AI Overviews ne signifie pas écrire différemment. Ça signifie structurer votre expertise existante pour la rendre extractible.\u003C/p>\n\u003Ch3>Le pattern \"définition + preuve + nuance\"\u003C/h3>\n\u003Cp>Les passages les plus cités dans AI Overviews suivent un pattern récurrent :\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Définition ou affirmation factuelle\u003C/strong> (1-2 phrases).\u003C/li>\n\u003Cli>\u003Cstrong>Preuve ou exemple\u003C/strong> (code, donnée, référence).\u003C/li>\n\u003Cli>\u003Cstrong>Nuance ou limitation\u003C/strong> (quand ça ne s'applique pas).\u003C/li>\n\u003C/ol>\n\u003Cp>Ce pattern fonctionne parce que le modèle IA cherche des réponses complètes mais concises. Un passage qui affirme sans preuve est moins fiable. Un passage qui affirme sans nuance est moins complet qu'un passage concurrent qui mentionne les exceptions.\u003C/p>\n\u003Cp>\u003Ca href=\"/blog/how-ai-decides-what-your-content-means-and-why-it-gets-you-wrong\">L'IA décide ce que votre contenu signifie\u003C/a> — et elle se trompe souvent quand le contenu est ambigu. La structure explicite réduit l'ambiguïté et augmente la probabilité que votre passage soit correctement interprété et cité.\u003C/p>\n\u003Ch3>Product feeds et contenu transactionnel\u003C/h3>\n\u003Cp>Pour les e-commerces, \u003Ca href=\"/blog/why-product-feeds-need-an-organic-strategy-for-ai-search\">les product feeds nécessitent une stratégie organique spécifique pour la recherche IA\u003C/a>. AI Overviews sur les requêtes transactionnelles (\"meilleur aspirateur robot 2026\") agrège des données produit — prix, caractéristiques, avis — depuis des sources structurées.\u003C/p>\n\u003Cp>Si votre catalogue produit n'a pas de schema \u003Ccode>Product\u003C/code> complet avec \u003Ccode>offers\u003C/code>, \u003Ccode>aggregateRating\u003C/code>, et \u003Ccode>review\u003C/code>, vous êtes invisible sur ces requêtes IA transactionnelles, même si vos pages produit rankent en première page.\u003C/p>\n\u003Ch3>Le cas du multilingue\u003C/h3>\n\u003Cp>Pour les sites multilingues, \u003Ca href=\"/blog/seo-multilingue-architecture-technique-optimale\">l'architecture technique optimale\u003C/a> prend une dimension supplémentaire avec AI Overviews. Google peut générer des AI Overviews dans une langue en citant des sources dans une autre langue. \u003Ca href=\"/blog/how-ai-search-defines-market-relevance-beyond-hreflang\">La pertinence de marché pour la recherche IA va au-delà du hreflang\u003C/a> — votre contenu français peut être cité dans un AI Overview en anglais si Google le juge plus autoritaire sur le sujet.\u003C/p>\n\u003Cp>Cela renforce l'importance d'avoir du contenu technique profond dans chaque langue servie, pas des traductions automatiques superficielles.\u003C/p>\n\u003Ch2>L'évolution vers l'agent manager\u003C/h2>\n\u003Cp>\u003Ca href=\"/blog/sundar-pichai-sees-google-search-evolving-into-an-agent-manager\">Sundar Pichai voit Google Search évoluer vers un gestionnaire d'agents\u003C/a>. AI Overviews n'est qu'une étape. La direction est claire : Google veut transformer la recherche en un système qui non seulement répond aux questions, mais exécute des tâches — comparer des produits, remplir des formulaires, prendre des rendez-vous.\u003C/p>\n\u003Cp>Pour le SEO technique, cela signifie que les données structurées et les APIs deviennent des vecteurs de trafic à part entière. Un \u003Ca href=\"/blog/api-first-et-seo-servir-du-contenu-crawlable-depuis-une-api\">site API-first qui sert du contenu crawlable\u003C/a> est mieux positionné pour cette évolution qu'un site monolithique avec du HTML statique.\u003C/p>\n\u003Cp>Les actions concrètes dès maintenant :\u003C/p>\n\u003Cul>\n\u003Cli>Schema \u003Ccode>Action\u003C/code> sur les pages de service (réservation, achat, inscription).\u003C/li>\n\u003Cli>Endpoints API documentés et crawlables pour les données produit.\u003C/li>\n\u003Cli>Contenu structuré en unités atomiques extractibles, pas en prose monolithique.\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Cp>AI Overviews redistribue la visibilité organique, mais les fondamentaux techniques n'ont pas changé — ils se sont intensifiés. Rendu serveur complet, balisage sémantique strict, données structurées riches, signaux de fraîcheur cohérents : ce qui était \"bien à avoir\" est devenu le minimum pour rester dans le jeu. Le monitoring continu de ces signaux techniques est la seule façon de détecter les régressions avant qu'elles ne coûtent des semaines de visibilité IA.\u003C/p>\n\u003Cpre>\u003Ccode>\u003C/code>\u003C/pre>",null,12,[18,19,20,21,22],"sge","ai-overviews","google","seo","structured-data","AI Overviews et SEO technique : préparer son site","Fri Apr 10 2026 04:02:20 GMT+0000 (Coordinated Universal Time)",[26,41],{"_id":27,"slug":28,"__v":6,"author":7,"canonical":29,"category":10,"createdAt":30,"date":12,"description":31,"image":15,"imageAlt":15,"readingTime":16,"tags":32,"title":39,"updatedAt":40},"69d89285aa6b273b0c1cbec0","llms-et-crawl-comment-les-bots-ia-crawlent-votre-site","https://seogard.io/blog/llms-et-crawl-comment-les-bots-ia-crawlent-votre-site","2026-04-10T06:02:45.414Z","Analyse technique des crawlers IA (GPTBot, ClaudeBot, Bytespider) : identification, impact serveur, contrôle via robots.txt et stratégies de défense.",[33,34,35,36,37,38],"llm","gptbot","crawl","ai","robots-txt","crawler","LLMs et crawl : comment GPTBot, Claude et les bots IA crawlent votre site","Fri Apr 10 2026 06:02:45 GMT+0000 (Coordinated Universal Time)",{"_id":42,"slug":43,"__v":6,"author":7,"canonical":44,"category":10,"createdAt":45,"date":12,"description":46,"image":15,"imageAlt":15,"readingTime":47,"tags":48,"title":51,"updatedAt":52},"69d8ae9caa6b273b0c333546","optimiser-pour-les-moteurs-de-reponse-ia","https://seogard.io/blog/optimiser-pour-les-moteurs-de-reponse-ia","2026-04-10T08:02:36.072Z","Comment structurer votre site pour être cité par ChatGPT, Perplexity et les LLM. Balisage, crawl IA, contenu structuré : méthodes actionnables.",14,[36,49,50,21,33],"chatgpt","perplexity","Optimiser pour les moteurs de réponse IA : guide technique","Fri Apr 10 2026 08:02:36 GMT+0000 (Coordinated Universal Time)"]