[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fjjp2X1t-u3Gk04KQoRTW7Yh4_OiuNrH8ljkosK7sg_E":3,"$fK-z_6XaZGyfCBnFRDSF5phOux0z2eB5RQCc93-7g6Ec":25,"$fcTFjTaPPT1sVcnh1wWEGoTWMSaOD4bwmwntkMae6w5s":116},{"_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},"6a205036aa6b273b0c9cf532","google-tests-dedicated-ai-search-reports-in-search-console-via-sejournal-mattgsouthern",0,"Equipe Seogard","Un nouveau type de rapport apparaît dans la Search Console de certains sites britanniques : des métriques d'impressions spécifiques à l'AI Search, séparées des résultats organiques classiques. C'est la première fois que Google fournit des données structurées sur la visibilité dans ses réponses générées par IA. Et ça change fondamentalement la façon dont vous allez mesurer — et défendre — votre trafic organique.\n\n## Ce que Google teste exactement\n\nD'après les captures rapportées par [Search Engine Journal](https://www.searchenginejournal.com/google-tests-dedicated-ai-search-reports-in-search-console/577793/), le test introduit deux éléments dans Search Console :\n\n1. **Un filtre \"AI Search\"** dans le rapport Performance, permettant d'isoler les impressions générées par les AI Overviews (AIOs) des impressions organiques traditionnelles.\n2. **Un rapport dédié** avec des métriques spécifiques : impressions AI, clics depuis les blocs AI, et potentiellement un CTR distinct.\n\nLe test est limité à un sous-ensemble de sites UK. Pas de déploiement global annoncé.\n\n### Pourquoi c'est structurellement différent des données actuelles\n\nJusqu'à maintenant, les impressions dans Search Console mélangeaient tout. Si votre page était citée dans un AI Overview, l'impression était comptabilisée dans le même bucket que vos résultats position 1-10. Vous n'aviez aucun moyen de distinguer :\n\n- Une impression \"classique\" en position 3 sur une SERP traditionnelle\n- Une citation dans un bloc AI Overview sans lien cliquable direct\n- Une apparition dans un panneau AI avec lien vers votre page\n\nCette opacité rendait impossible toute analyse sérieuse de l'impact des AIOs sur le trafic. Vous voyiez vos impressions monter sur certaines requêtes, mais votre CTR s'effondrait — sans pouvoir attribuer la cause.\n\nLe nouveau rapport corrige ce problème. En séparant les métriques AI des métriques organiques classiques, vous pouvez enfin calculer un CTR AI distinct et le comparer au CTR organique traditionnel sur les mêmes requêtes.\n\n### Ce que le rapport ne dit probablement pas (encore)\n\nSoyons lucides sur les limites. Le test actuel semble se concentrer sur les impressions et clics. Il ne fournit vraisemblablement pas :\n\n- La **position exacte** de votre citation dans le bloc AI (premier lien cité vs. cinquième source)\n- Le **taux de citation** : combien de fois votre contenu est utilisé par le modèle sans être crédité\n- La **cannibalisation** : le delta entre le trafic que vous auriez reçu via le résultat organique classique et celui que vous recevez via l'AIO\n\nC'est un premier pas. Pas la solution complète. Google a tout intérêt à montrer que l'AI Search génère de la valeur pour les éditeurs — [leur guidance officielle sur le sujet est d'ailleurs déjà critiquable](/blog/google-s-ai-search-guidance-is-naive-and-self-serving).\n\n## Implications techniques pour le tracking et le reporting\n\nSi ce rapport se déploie globalement, il va falloir adapter vos pipelines de données SEO. Voici les changements concrets à anticiper.\n\n### Mise à jour de vos scripts d'extraction Search Console\n\nLa plupart des équipes SEO avancées utilisent l'API Search Console pour alimenter des dashboards custom. L'API expose le endpoint `searchAnalytics.query` avec un paramètre `type` qui accepte actuellement `web`, `image`, `video`, `news`, `discover`, et `googleNews`.\n\nSi Google ajoute un type `aiSearch` (ou équivalent), vos scripts doivent être mis à jour. Voici un exemple de ce que pourrait donner l'extraction avec le client Python officiel :\n\n```python\nfrom googleapiclient.discovery import build\nfrom google.oauth2 import service_account\n\nSCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']\nSERVICE_ACCOUNT_FILE = '/path/to/service-account.json'\n\ncredentials = service_account.Credentials.from_service_account_file(\n    SERVICE_ACCOUNT_FILE, scopes=SCOPES)\nservice = build('searchconsole', 'v1', credentials=credentials)\n\n# Requête actuelle (trafic web classique)\nrequest_web = {\n    'startDate': '2026-05-01',\n    'endDate': '2026-05-31',\n    'dimensions': ['query', 'page'],\n    'type': 'web',\n    'rowLimit': 25000\n}\n\n# Requête hypothétique pour AI Search (type à confirmer au déploiement)\nrequest_ai = {\n    'startDate': '2026-05-01',\n    'endDate': '2026-05-31',\n    'dimensions': ['query', 'page'],\n    'type': 'aiSearch',  # nom hypothétique — surveiller la doc API\n    'rowLimit': 25000\n}\n\nresponse_web = service.searchanalytics().query(\n    siteUrl='https://www.votre-ecommerce.fr',\n    body=request_web\n).execute()\n\nresponse_ai = service.searchanalytics().query(\n    siteUrl='https://www.votre-ecommerce.fr',\n    body=request_ai\n).execute()\n\n# Fusion et calcul du delta CTR\nfor row_ai in response_ai.get('rows', []):\n    query = row_ai['keys'][0]\n    page = row_ai['keys'][1]\n    ctr_ai = row_ai['ctr']\n    \n    # Trouver le CTR web correspondant\n    matching_web = next(\n        (r for r in response_web.get('rows', [])\n         if r['keys'][0] == query and r['keys'][1] == page),\n        None\n    )\n    if matching_web:\n        ctr_delta = ctr_ai - matching_web['ctr']\n        if ctr_delta \u003C -0.05:  # Alerte si le CTR AI est 5 points sous le CTR web\n            print(f\"⚠ Cannibalisation probable: {query} | {page} | \"\n                  f\"CTR web: {matching_web['ctr']:.2%} → CTR AI: {ctr_ai:.2%}\")\n```\n\nCe script est évidemment spéculatif sur le nom exact du type API. Mais la logique de comparaison web vs. AI est celle que vous devrez implémenter dès le déploiement. Surveillez la [documentation officielle de l'API Search Console](https://developers.google.com/webmaster-tools/v1/api_reference_index) pour le nom exact du paramètre.\n\n### Segmentation dans vos dashboards Looker Studio / BigQuery\n\nSi vous exportez vos données Search Console vers BigQuery (via le bulk export natif ou un pipeline custom), vous allez devoir créer des vues segmentées. Exemple de requête SQL pour isoler les requêtes où l'AI Search cannibalise le trafic organique :\n\n```sql\nWITH web_data AS (\n    SELECT\n        query,\n        page,\n        SUM(impressions) AS web_impressions,\n        SUM(clicks) AS web_clicks,\n        SAFE_DIVIDE(SUM(clicks), SUM(impressions)) AS web_ctr\n    FROM `project.dataset.search_console_web`\n    WHERE data_date BETWEEN '2026-05-01' AND '2026-05-31'\n    GROUP BY query, page\n),\nai_data AS (\n    SELECT\n        query,\n        page,\n        SUM(impressions) AS ai_impressions,\n        SUM(clicks) AS ai_clicks,\n        SAFE_DIVIDE(SUM(clicks), SUM(impressions)) AS ai_ctr\n    FROM `project.dataset.search_console_ai_search`\n    WHERE data_date BETWEEN '2026-05-01' AND '2026-05-31'\n    GROUP BY query, page\n)\nSELECT\n    w.query,\n    w.page,\n    w.web_impressions,\n    w.web_ctr,\n    a.ai_impressions,\n    a.ai_ctr,\n    (a.ai_ctr - w.web_ctr) AS ctr_delta,\n    -- Estimation de la perte de clics\n    CAST(w.web_impressions * (w.web_ctr - COALESCE(a.ai_ctr, 0)) AS INT64) AS estimated_lost_clicks\nFROM web_data w\nLEFT JOIN ai_data a ON w.query = a.query AND w.page = a.page\nWHERE a.ai_impressions > 100  -- Filtre sur les requêtes avec volume AI significatif\n  AND (a.ai_ctr - w.web_ctr) \u003C -0.03  -- CTR AI inférieur de 3+ points\nORDER BY estimated_lost_clicks DESC\nLIMIT 200;\n```\n\nCe type de requête vous donne une liste priorisée des pages où l'AI Search vous coûte du trafic. C'est la base d'un plan d'action : faut-il optimiser le contenu pour mieux apparaître dans les AIOs, ou faut-il cibler des requêtes où les AIOs ne se déclenchent pas ?\n\n## Scénario concret : un e-commerce mode de 8 000 pages\n\nPrenons un cas réaliste. Vous gérez le SEO d'un e-commerce mode français avec 8 000 pages indexées : 3 500 fiches produit, 2 000 pages catégorie/sous-catégorie, 1 200 articles blog, et le reste en pages institutionnelles.\n\n### Situation avant les rapports AI Search\n\nDepuis le déploiement massif des AI Overviews en France (début 2026), vous observez sur Search Console :\n\n- **Impressions globales** : +18% sur les requêtes informationnelles (\"comment choisir une veste en lin\", \"taille jean Levi's 501 femme\")\n- **CTR moyen** : passé de 3,2% à 2,1% sur ces mêmes requêtes\n- **Clics** : -12% net malgré la hausse d'impressions\n\nVous suspectez une cannibalisation AI, mais impossible de le prouver. Votre direction marketing veut des chiffres. \"Le SEO perd du terrain\" est tout ce que vous pouvez dire.\n\n### Situation avec les rapports AI Search\n\nAvec la segmentation AI, vous pouvez enfin produire ce type d'analyse :\n\n- Sur la requête \"comment choisir une veste en lin\" :\n  - **Web classique** : 4 200 impressions/mois, CTR 4,8%, 202 clics\n  - **AI Search** : 6 800 impressions/mois, CTR 0,9%, 61 clics\n  - **Total clics** : 263 (vs. ~320 estimés avant les AIOs)\n  - **Perte nette** : ~57 clics/mois sur cette seule requête\n\nExtrapolé sur vos 1 200 articles blog (qui captent l'essentiel des requêtes informationnelles), vous pouvez estimer une perte de 2 500 à 4 000 clics/mois attribuable spécifiquement aux AI Overviews.\n\nMais — et c'est là que ça devient intéressant — vous découvrez aussi que sur certaines requêtes transactionnelles (\"veste en lin homme pas cher\"), votre CTR AI est supérieur au CTR web classique. Pourquoi ? Parce que l'AIO cite votre fiche produit avec le prix, et l'utilisateur clique directement sans passer par les 10 liens bleus. Sur ces requêtes, l'AI Search vous fait **gagner** du trafic.\n\n### Le plan d'action qui en découle\n\n1. **Requêtes informationnelles** : restructurer le contenu pour maximiser la citation dans les AIOs (réponses directes en haut d'article, données structurées FAQ, paragraphes concis). C'est [exactement le type de contenu qu'il faut optimiser pour la visibilité AI](/blog/5-places-to-find-faq-content-that-improves-ai-visibility).\n\n2. **Requêtes transactionnelles** : renforcer le balisage structuré Product, Offer, AggregateRating pour que l'AIO affiche vos produits avec prix et avis.\n\n3. **Requêtes où les AIOs ne se déclenchent pas** : identifier ces requêtes (souvent très longue traîne, très locales, ou très récentes) et les prioriser dans votre calendrier éditorial.\n\n## Préparer votre balisage structuré pour l'AI Search\n\nLes AI Overviews ne citent pas les sources au hasard. L'extraction repose sur la capacité du modèle à identifier des réponses fiables et structurées. Le balisage structuré joue un rôle croissant dans cette sélection.\n\n### Schema.org étendu pour la lisibilité machine\n\nAllez au-delà du balisage de base. Sur vos pages produit, un balisage Product complet avec `offers`, `review`, `brand` et `hasMerchantReturnPolicy` donne au modèle les signaux nécessaires pour extraire une réponse riche :\n\n```html\n\u003Cscript type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Veste en lin homme – Coupe droite\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"Maison Textile\"\n  },\n  \"description\": \"Veste en lin lavé, coupe droite, doublure coton. Fabriquée au Portugal.\",\n  \"sku\": \"VLH-2026-042\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"129.00\",\n    \"priceCurrency\": \"EUR\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"priceValidUntil\": \"2026-09-30\",\n    \"hasMerchantReturnPolicy\": {\n      \"@type\": \"MerchantReturnPolicy\",\n      \"returnPolicyCategory\": \"https://schema.org/MerchantReturnFiniteReturnWindow\",\n      \"merchantReturnDays\": 30,\n      \"returnMethod\": \"https://schema.org/ReturnByMail\"\n    },\n    \"shippingDetails\": {\n      \"@type\": \"OfferShippingDetails\",\n      \"shippingDestination\": {\n        \"@type\": \"DefinedRegion\",\n        \"addressCountry\": \"FR\"\n      },\n      \"deliveryTime\": {\n        \"@type\": \"ShippingDeliveryTime\",\n        \"handlingTime\": {\n          \"@type\": \"QuantitativeValue\",\n          \"minValue\": 1,\n          \"maxValue\": 2,\n          \"unitCode\": \"DAY\"\n        },\n        \"transitTime\": {\n          \"@type\": \"QuantitativeValue\",\n          \"minValue\": 2,\n          \"maxValue\": 4,\n          \"unitCode\": \"DAY\"\n        }\n      }\n    }\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.6\",\n    \"reviewCount\": \"238\"\n  },\n  \"material\": \"Lin lavé\",\n  \"countryOfOrigin\": {\n    \"@type\": \"Country\",\n    \"name\": \"Portugal\"\n  }\n}\n\u003C/script>\n```\n\nCe niveau de détail (politique de retour, délais de livraison, matière, pays de fabrication) est ce qui différencie un balisage que le modèle peut exploiter d'un balisage minimal qui ne sert qu'à afficher des rich snippets classiques. La question de la lisibilité machine de votre marque [va bien au-delà du simple schema.org](/blog/what-makes-a-brand-machine-readable-in-ai-search).\n\n### Identifier les pages citées dans les AIOs\n\nEn attendant le déploiement global du rapport AI Search, vous pouvez déjà traquer quelles pages sont citées dans les AI Overviews. Une approche programmatique avec Puppeteer ou Playwright :\n\n```typescript\nimport { chromium } from 'playwright';\n\ninterface AIOResult {\n  query: string;\n  cited: boolean;\n  citedUrl: string | null;\n  aioPresent: boolean;\n}\n\nasync function checkAIOCitation(\n  queries: string[],\n  targetDomain: string\n): Promise\u003CAIOResult[]> {\n  const browser = await chromium.launch({ headless: true });\n  const context = await browser.newContext({\n    locale: 'fr-FR',\n    geolocation: { latitude: 48.8566, longitude: 2.3522 },\n    userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\n  });\n\n  const results: AIOResult[] = [];\n\n  for (const query of queries) {\n    const page = await context.newPage();\n    await page.goto(\n      `https://www.google.fr/search?q=${encodeURIComponent(query)}`,\n      { waitUntil: 'networkidle' }\n    );\n\n    // Attendre le chargement éventuel du bloc AI Overview\n    await page.waitForTimeout(3000);\n\n    // Sélecteur du conteneur AI Overview (à adapter — Google change régulièrement)\n    const aioContainer = await page.$('[data-attrid=\"ai-overview\"]');\n    // Alternative : chercher le conteneur SGE/AIO par d'autres attributs\n    const aioAlt = await page.$('.kp-wholepage .aiOverview, .M8OgIe');\n\n    const aioPresent = !!(aioContainer || aioAlt);\n    let cited = false;\n    let citedUrl: string | null = null;\n\n    if (aioPresent) {\n      const container = aioContainer || aioAlt;\n      const links = await container!.$$('a[href]');\n      for (const link of links) {\n        const href = await link.getAttribute('href');\n        if (href && href.includes(targetDomain)) {\n          cited = true;\n          citedUrl = href;\n          break;\n        }\n      }\n    }\n\n    results.push({ query, cited, citedUrl, aioPresent });\n    await page.close();\n    \n    // Respecter un délai pour éviter le blocage\n    await new Promise(r => setTimeout(r, 5000 + Math.random() * 5000));\n  }\n\n  await browser.close();\n  return results;\n}\n\n// Usage\nconst queries = [\n  'comment choisir veste en lin homme',\n  'meilleure veste lin été 2026',\n  'veste lin homme pas cher livraison rapide'\n];\n\ncheckAIOCitation(queries, 'votre-ecommerce.fr').then(results => {\n  results.forEach(r => {\n    console.log(`${r.query}: AIO=${r.aioPresent}, Cité=${r.cited}, URL=${r.citedUrl}`);\n  });\n});\n```\n\nQuelques précautions : ce scraping est fragile (les sélecteurs CSS de Google changent constamment), il viole les ToS de Google, et il ne scale pas au-delà de quelques dizaines de requêtes sans risque de CAPTCHA. Utilisez-le pour un échantillon représentatif, pas pour un audit exhaustif.\n\n## Comment les données AI Search changent la stratégie de contenu\n\nL'arrivée de ces métriques force une refonte de la façon dont les équipes SEO priorisent le contenu.\n\n### La fin du \"trafic informationnel gratuit\"\n\nDepuis 15 ans, le contenu informationnel (guides, tutos, comparatifs) était le pilier de l'acquisition SEO. Vous publiez un guide exhaustif, vous captez du trafic informationnel, vous convertissez une fraction en clients.\n\nLes AI Overviews changent cette équation. Sur les requêtes informationnelles, l'AIO fournit souvent une réponse suffisante. L'utilisateur n'a plus besoin de cliquer. Vos impressions montent (votre page est \"citée\"), mais vos clics baissent.\n\nLes nouveaux rapports AI Search vont rendre cette réalité mesurable et indiscutable. Attendez-vous à des conversations difficiles avec les équipes content : \"Votre guide à 3 000 mots génère 12 000 impressions AI mais seulement 85 clics.\"\n\n### Trois catégories de requêtes à segmenter\n\nAvec les données AI Search, vous pouvez construire une matrice de priorisation :\n\n**Catégorie 1 — AI-positive** : requêtes où votre CTR AI est supérieur à votre CTR web. Typiquement des requêtes transactionnelles où l'AIO met en avant votre produit avec prix. Stratégie : maximiser le balisage structuré, enrichir les données produit.\n\n**Catégorie 2 — AI-neutre** : requêtes où l'AIO ne se déclenche pas (encore). Souvent des requêtes longue traîne, locales, ou très récentes. Stratégie : investir massivement sur ce segment, c'est votre trafic organique \"classique\" préservé.\n\n**Catégorie 3 — AI-cannibale** : requêtes où l'AIO répond à la place de votre page. CTR AI très bas, impressions AI élevées. Stratégie : soit vous optimisez pour être la source citée n°1 (avec un lien cliquable), soit vous réallouez vos efforts vers les catégories 1 et 2.\n\nCette segmentation n'était pas possible sans les rapports dédiés. C'est ce qui rend ce test structurellement important — bien au-delà d'une simple mise à jour d'interface Search Console.\n\n## Ce que Google ne dit pas : les enjeux politiques derrière ce test\n\nCe test n'arrive pas par hasard. Il s'inscrit dans un contexte de pression croissante des éditeurs et des régulateurs sur la transparence des AI Overviews.\n\n### Le problème du \"zero-click AI\"\n\nLes éditeurs de contenu — médias, e-commerce, SaaS — se plaignent depuis le lancement des AIOs que Google utilise leur contenu pour générer des réponses sans renvoyer de trafic. C'est le problème du zero-click poussé à l'extrême.\n\nEn fournissant des métriques AI séparées, Google fait deux choses :\n\n1. **Il se protège juridiquement** : \"Regardez, nous donnons aux éditeurs les outils pour mesurer leur visibilité AI.\" C'est un argument défensif face aux régulateurs européens (DMA, DSA) et aux procédures antitrust US.\n\n2. **Il cadre le narratif** : en ne fournissant que les impressions et clics AI (sans le delta de cannibalisation), Google peut mettre en avant les cas où l'AI Search *ajoute* de la visibilité. Les cas de cannibalisation restent à la charge de l'éditeur pour les calculer.\n\nC'est exactement ce qui s'est passé lors des annonces I/O 2026 — les démos officielles mettent en avant les gains, [pas les pertes](/blog/google-s-i-o-demos-reveal-the-new-business-visibility-problem-via-sejournal-mattgsouthern).\n\n### La question des agents AI\n\nAu-delà des AI Overviews dans la SERP, la vision de Google — telle que [décrite par Sundar Pichai](/blog/sundar-pichai-google-search-ai-agents-and-tools-will-become-one) — est celle d'agents AI qui interagissent avec les sites. La question de la visibilité dans ces agents est encore plus opaque que celle des AIOs.\n\nLes rapports AI Search dans Search Console pourraient évoluer vers un tracking des interactions agents (Gemini, Google Assistant avancé) avec votre contenu. Mais pour l'instant, on n'en est pas là. Le test actuel se limite à l'AI Search dans la SERP.\n\nParallèlement, [des initiatives comme le Agent Readiness Score de Cloudflare](/blog/all-you-need-to-know-about-cloudflare-s-agent-readiness-score-via-sejournal-slobodanmanic) montrent que l'écosystème se structure pour mesurer la compatibilité des sites avec les agents AI. Les rapports Google s'inscrivent dans cette tendance plus large.\n\n## Actions immédiates : que faire maintenant\n\nLe rapport n'est pas encore disponible globalement. Mais vous pouvez vous préparer.\n\n### 1. Auditer votre visibilité AI actuelle\n\nAvant d'avoir les données officielles, établissez votre baseline. Utilisez Screaming Frog pour exporter la liste de vos pages indexées avec leurs requêtes principales (via l'intégration Search Console de Screaming Frog), puis croisez manuellement un échantillon de 50-100 requêtes avec les SERPs réelles pour identifier la présence d'AIOs.\n\n### 2. Structurer votre pipeline de données\n\nPréparez vos tables BigQuery / votre dashboard Looker Studio pour accueillir une nouvelle dimension \"search_type = ai_search\". Si vous utilisez un outil de monitoring SEO comme Seogard, vérifiez qu'il peut ingérer et segmenter les nouvelles métriques dès leur disponibilité API — la détection de régressions sur le CTR AI sera aussi critique que la surveillance des meta ou des canonicals.\n\n### 3. Cartographier vos contenus par vulnérabilité AI\n\nClassez vos pages en trois buckets :\n\n- **Haute vulnérabilité** : contenu informationnel pur, réponse facilement synthétisable par un LLM (définitions, comparatifs simples, FAQ)\n- **Vulnérabilité moyenne** : contenu mixte info/transactionnel, partiellement substituable\n- **Faible vulnérabilité** : contenu transactionnel, expérientiel, ou nécessitant une interaction (configurateur produit, outil interactif, contenu communautaire)\n\nCette cartographie vous permettra de réagir rapidement dès que les données AI Search seront disponibles. Au lieu de découvrir la cannibalisation, vous l'aurez anticipée.\n\n### 4. Surveiller les régressions de balisage structuré\n\nSi le balisage structuré influence la citation dans les AIOs, une régression silencieuse (schema.org cassé après un déploiement, données structurées invalidées après une migration de CMS) peut faire disparaître vos pages des AI Overviews sans que vous le remarquiez. Ce type de casse arrive constamment — [les migrations de framework sont un terrain miné](/blog/migration-next-js-pages-router-vers-app-router-les-metadata-ignorees-sur-les-pages-client) pour les meta et les données structurées.\n\n## Ce test est un point d'inflexion, pas une feature\n\nGoogle ne teste pas un nouveau bouton dans Search Console. Il commence à rendre mesurable ce qui était jusqu'ici une boîte noire. Les équipes SEO qui auront préparé leur infrastructure de données, cartographié leur vulnérabilité AI, et adapté leur stratégie de contenu seront celles qui transformeront ces métriques en avantage concurrentiel. Les autres découvriront l'ampleur de la cannibalisation six mois trop tard. Un outil de monitoring continu comme Seogard, configuré pour alerter sur les variations de CTR AI vs. CTR organique dès que l'API le permettra, fera la différence entre réaction et anticipation.\n```","https://seogard.io/blog/google-tests-dedicated-ai-search-reports-in-search-console-via-sejournal-mattgsouthern","Actualités SEO","2026-06-03T16:03:02.029Z","2026-06-03","Google teste des rapports dédiés AI Search dans Search Console. Analyse technique des données, impacts SEO et stratégies d'adaptation pour les sites 500+ pages.","\u003Cp>Un nouveau type de rapport apparaît dans la Search Console de certains sites britanniques : des métriques d'impressions spécifiques à l'AI Search, séparées des résultats organiques classiques. C'est la première fois que Google fournit des données structurées sur la visibilité dans ses réponses générées par IA. Et ça change fondamentalement la façon dont vous allez mesurer — et défendre — votre trafic organique.\u003C/p>\n\u003Ch2>Ce que Google teste exactement\u003C/h2>\n\u003Cp>D'après les captures rapportées par \u003Ca href=\"https://www.searchenginejournal.com/google-tests-dedicated-ai-search-reports-in-search-console/577793/\">Search Engine Journal\u003C/a>, le test introduit deux éléments dans Search Console :\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Un filtre \"AI Search\"\u003C/strong> dans le rapport Performance, permettant d'isoler les impressions générées par les AI Overviews (AIOs) des impressions organiques traditionnelles.\u003C/li>\n\u003Cli>\u003Cstrong>Un rapport dédié\u003C/strong> avec des métriques spécifiques : impressions AI, clics depuis les blocs AI, et potentiellement un CTR distinct.\u003C/li>\n\u003C/ol>\n\u003Cp>Le test est limité à un sous-ensemble de sites UK. Pas de déploiement global annoncé.\u003C/p>\n\u003Ch3>Pourquoi c'est structurellement différent des données actuelles\u003C/h3>\n\u003Cp>Jusqu'à maintenant, les impressions dans Search Console mélangeaient tout. Si votre page était citée dans un AI Overview, l'impression était comptabilisée dans le même bucket que vos résultats position 1-10. Vous n'aviez aucun moyen de distinguer :\u003C/p>\n\u003Cul>\n\u003Cli>Une impression \"classique\" en position 3 sur une SERP traditionnelle\u003C/li>\n\u003Cli>Une citation dans un bloc AI Overview sans lien cliquable direct\u003C/li>\n\u003Cli>Une apparition dans un panneau AI avec lien vers votre page\u003C/li>\n\u003C/ul>\n\u003Cp>Cette opacité rendait impossible toute analyse sérieuse de l'impact des AIOs sur le trafic. Vous voyiez vos impressions monter sur certaines requêtes, mais votre CTR s'effondrait — sans pouvoir attribuer la cause.\u003C/p>\n\u003Cp>Le nouveau rapport corrige ce problème. En séparant les métriques AI des métriques organiques classiques, vous pouvez enfin calculer un CTR AI distinct et le comparer au CTR organique traditionnel sur les mêmes requêtes.\u003C/p>\n\u003Ch3>Ce que le rapport ne dit probablement pas (encore)\u003C/h3>\n\u003Cp>Soyons lucides sur les limites. Le test actuel semble se concentrer sur les impressions et clics. Il ne fournit vraisemblablement pas :\u003C/p>\n\u003Cul>\n\u003Cli>La \u003Cstrong>position exacte\u003C/strong> de votre citation dans le bloc AI (premier lien cité vs. cinquième source)\u003C/li>\n\u003Cli>Le \u003Cstrong>taux de citation\u003C/strong> : combien de fois votre contenu est utilisé par le modèle sans être crédité\u003C/li>\n\u003Cli>La \u003Cstrong>cannibalisation\u003C/strong> : le delta entre le trafic que vous auriez reçu via le résultat organique classique et celui que vous recevez via l'AIO\u003C/li>\n\u003C/ul>\n\u003Cp>C'est un premier pas. Pas la solution complète. Google a tout intérêt à montrer que l'AI Search génère de la valeur pour les éditeurs — \u003Ca href=\"/blog/google-s-ai-search-guidance-is-naive-and-self-serving\">leur guidance officielle sur le sujet est d'ailleurs déjà critiquable\u003C/a>.\u003C/p>\n\u003Ch2>Implications techniques pour le tracking et le reporting\u003C/h2>\n\u003Cp>Si ce rapport se déploie globalement, il va falloir adapter vos pipelines de données SEO. Voici les changements concrets à anticiper.\u003C/p>\n\u003Ch3>Mise à jour de vos scripts d'extraction Search Console\u003C/h3>\n\u003Cp>La plupart des équipes SEO avancées utilisent l'API Search Console pour alimenter des dashboards custom. L'API expose le endpoint \u003Ccode>searchAnalytics.query\u003C/code> avec un paramètre \u003Ccode>type\u003C/code> qui accepte actuellement \u003Ccode>web\u003C/code>, \u003Ccode>image\u003C/code>, \u003Ccode>video\u003C/code>, \u003Ccode>news\u003C/code>, \u003Ccode>discover\u003C/code>, et \u003Ccode>googleNews\u003C/code>.\u003C/p>\n\u003Cp>Si Google ajoute un type \u003Ccode>aiSearch\u003C/code> (ou équivalent), vos scripts doivent être mis à jour. Voici un exemple de ce que pourrait donner l'extraction avec le client Python officiel :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">from\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> googleapiclient.discovery \u003C/span>\u003Cspan style=\"color:#F97583\">import\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> build\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">from\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> google.oauth2 \u003C/span>\u003Cspan style=\"color:#F97583\">import\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> service_account\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">SCOPES\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'https://www.googleapis.com/auth/webmasters.readonly'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">]\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">SERVICE_ACCOUNT_FILE\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '/path/to/service-account.json'\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">credentials \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> service_account.Credentials.from_service_account_file(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    SERVICE_ACCOUNT_FILE\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">scopes\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\">SCOPES\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">service \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> build(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'searchconsole'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'v1'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">credentials\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\">credentials)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Requête actuelle (trafic web classique)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">request_web \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    'startDate'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'2026-05-01'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    'endDate'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'2026-05-31'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    'dimensions'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: [\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'query'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'page'\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\">'web'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    'rowLimit'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#79B8FF\">25000\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Requête hypothétique pour AI Search (type à confirmer au déploiement)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">request_ai \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    'startDate'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'2026-05-01'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    'endDate'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'2026-05-31'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    'dimensions'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: [\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'query'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'page'\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\">'aiSearch'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,  \u003C/span>\u003Cspan style=\"color:#6A737D\"># nom hypothétique — surveiller la doc API\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    'rowLimit'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#79B8FF\">25000\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">response_web \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> service.searchanalytics().query(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">    siteUrl\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'https://www.votre-ecommerce.fr'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">    body\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\">request_web\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">).execute()\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">response_ai \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> service.searchanalytics().query(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">    siteUrl\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'https://www.votre-ecommerce.fr'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">    body\u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\">request_ai\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">).execute()\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Fusion et calcul du delta CTR\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">for\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> row_ai \u003C/span>\u003Cspan style=\"color:#F97583\">in\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> response_ai.get(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'rows'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, []):\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    query \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> row_ai[\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'keys'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">][\u003C/span>\u003Cspan style=\"color:#79B8FF\">0\u003C/span>\u003Cspan style=\"color:#E1E4E8\">]\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    page \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> row_ai[\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'keys'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">][\u003C/span>\u003Cspan style=\"color:#79B8FF\">1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">]\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    ctr_ai \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> row_ai[\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'ctr'\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\">    # Trouver le CTR web correspondant\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    matching_web \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> next\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        (r \u003C/span>\u003Cspan style=\"color:#F97583\">for\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> r \u003C/span>\u003Cspan style=\"color:#F97583\">in\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> response_web.get(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'rows'\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\"> r[\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'keys'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">][\u003C/span>\u003Cspan style=\"color:#79B8FF\">0\u003C/span>\u003Cspan style=\"color:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#F97583\">==\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> query \u003C/span>\u003Cspan style=\"color:#F97583\">and\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> r[\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'keys'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">][\u003C/span>\u003Cspan style=\"color:#79B8FF\">1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#F97583\">==\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> page),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        None\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    )\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> matching_web:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        ctr_delta \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ctr_ai \u003C/span>\u003Cspan style=\"color:#F97583\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> matching_web[\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'ctr'\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\"> ctr_delta \u003C/span>\u003Cspan style=\"color:#F97583\">&#x3C;\u003C/span>\u003Cspan style=\"color:#F97583\"> -\u003C/span>\u003Cspan style=\"color:#79B8FF\">0.05\u003C/span>\u003Cspan style=\"color:#E1E4E8\">:  \u003C/span>\u003Cspan style=\"color:#6A737D\"># Alerte si le CTR AI est 5 points sous le CTR web\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">            print\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#F97583\">f\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"⚠ Cannibalisation probable: \u003C/span>\u003Cspan style=\"color:#79B8FF\">{\u003C/span>\u003Cspan style=\"color:#E1E4E8\">query\u003C/span>\u003Cspan style=\"color:#79B8FF\">}\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> | \u003C/span>\u003Cspan style=\"color:#79B8FF\">{\u003C/span>\u003Cspan style=\"color:#E1E4E8\">page\u003C/span>\u003Cspan style=\"color:#79B8FF\">}\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> | \"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">                  f\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"CTR web: \u003C/span>\u003Cspan style=\"color:#79B8FF\">{\u003C/span>\u003Cspan style=\"color:#E1E4E8\">matching_web[\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'ctr'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">]\u003C/span>\u003Cspan style=\"color:#F97583\">:.2%\u003C/span>\u003Cspan style=\"color:#79B8FF\">}\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> → CTR AI: \u003C/span>\u003Cspan style=\"color:#79B8FF\">{\u003C/span>\u003Cspan style=\"color:#E1E4E8\">ctr_ai\u003C/span>\u003Cspan style=\"color:#F97583\">:.2%\u003C/span>\u003Cspan style=\"color:#79B8FF\">}\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Ce script est évidemment spéculatif sur le nom exact du type API. Mais la logique de comparaison web vs. AI est celle que vous devrez implémenter dès le déploiement. Surveillez la \u003Ca href=\"https://developers.google.com/webmaster-tools/v1/api_reference_index\">documentation officielle de l'API Search Console\u003C/a> pour le nom exact du paramètre.\u003C/p>\n\u003Ch3>Segmentation dans vos dashboards Looker Studio / BigQuery\u003C/h3>\n\u003Cp>Si vous exportez vos données Search Console vers BigQuery (via le bulk export natif ou un pipeline custom), vous allez devoir créer des vues segmentées. Exemple de requête SQL pour isoler les requêtes où l'AI Search cannibalise le trafic organique :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">WITH\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> web_data \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    SELECT\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        query,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        page\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        SUM\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(impressions) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> web_impressions,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        SUM\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(clicks) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> web_clicks,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        SAFE_DIVIDE(\u003C/span>\u003Cspan style=\"color:#79B8FF\">SUM\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(clicks), \u003C/span>\u003Cspan style=\"color:#79B8FF\">SUM\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(impressions)) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> web_ctr\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    FROM\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> `project.dataset.search_console_web`\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    WHERE\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> data_date \u003C/span>\u003Cspan style=\"color:#F97583\">BETWEEN\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '2026-05-01'\u003C/span>\u003Cspan style=\"color:#F97583\"> AND\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '2026-05-31'\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    GROUP BY\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> query, \u003C/span>\u003Cspan style=\"color:#F97583\">page\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">ai_data \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    SELECT\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        query,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        page\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        SUM\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(impressions) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ai_impressions,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">        SUM\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(clicks) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ai_clicks,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        SAFE_DIVIDE(\u003C/span>\u003Cspan style=\"color:#79B8FF\">SUM\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(clicks), \u003C/span>\u003Cspan style=\"color:#79B8FF\">SUM\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(impressions)) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ai_ctr\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    FROM\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> `project.dataset.search_console_ai_search`\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    WHERE\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> data_date \u003C/span>\u003Cspan style=\"color:#F97583\">BETWEEN\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '2026-05-01'\u003C/span>\u003Cspan style=\"color:#F97583\"> AND\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '2026-05-31'\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    GROUP BY\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> query, \u003C/span>\u003Cspan style=\"color:#F97583\">page\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">SELECT\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">query\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">page\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">web_impressions\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">web_ctr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">ai_impressions\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">ai_ctr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    (\u003C/span>\u003Cspan style=\"color:#79B8FF\">a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">ai_ctr\u003C/span>\u003Cspan style=\"color:#F97583\"> -\u003C/span>\u003Cspan style=\"color:#79B8FF\"> w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">web_ctr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ctr_delta,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    -- Estimation de la perte de clics\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    CAST\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#79B8FF\">w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">web_impressions\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#79B8FF\">w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">web_ctr\u003C/span>\u003Cspan style=\"color:#F97583\"> -\u003C/span>\u003Cspan style=\"color:#79B8FF\"> COALESCE\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#79B8FF\">a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">ai_ctr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">0\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> INT64) \u003C/span>\u003Cspan style=\"color:#F97583\">AS\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> estimated_lost_clicks\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">FROM\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> web_data w\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">LEFT JOIN\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ai_data a \u003C/span>\u003Cspan style=\"color:#F97583\">ON\u003C/span>\u003Cspan style=\"color:#79B8FF\"> w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">query\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#79B8FF\"> a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">query\u003C/span>\u003Cspan style=\"color:#F97583\"> AND\u003C/span>\u003Cspan style=\"color:#79B8FF\"> w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">page\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#79B8FF\"> a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">page\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">WHERE\u003C/span>\u003Cspan style=\"color:#79B8FF\"> a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">ai_impressions\u003C/span>\u003Cspan style=\"color:#F97583\"> >\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 100\u003C/span>\u003Cspan style=\"color:#6A737D\">  -- Filtre sur les requêtes avec volume AI significatif\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  AND\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#79B8FF\">a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">ai_ctr\u003C/span>\u003Cspan style=\"color:#F97583\"> -\u003C/span>\u003Cspan style=\"color:#79B8FF\"> w\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">web_ctr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">&#x3C;\u003C/span>\u003Cspan style=\"color:#F97583\"> -\u003C/span>\u003Cspan style=\"color:#79B8FF\">0\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#79B8FF\">03\u003C/span>\u003Cspan style=\"color:#6A737D\">  -- CTR AI inférieur de 3+ points\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">ORDER BY\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> estimated_lost_clicks \u003C/span>\u003Cspan style=\"color:#F97583\">DESC\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">LIMIT\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 200\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Ce type de requête vous donne une liste priorisée des pages où l'AI Search vous coûte du trafic. C'est la base d'un plan d'action : faut-il optimiser le contenu pour mieux apparaître dans les AIOs, ou faut-il cibler des requêtes où les AIOs ne se déclenchent pas ?\u003C/p>\n\u003Ch2>Scénario concret : un e-commerce mode de 8 000 pages\u003C/h2>\n\u003Cp>Prenons un cas réaliste. Vous gérez le SEO d'un e-commerce mode français avec 8 000 pages indexées : 3 500 fiches produit, 2 000 pages catégorie/sous-catégorie, 1 200 articles blog, et le reste en pages institutionnelles.\u003C/p>\n\u003Ch3>Situation avant les rapports AI Search\u003C/h3>\n\u003Cp>Depuis le déploiement massif des AI Overviews en France (début 2026), vous observez sur Search Console :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Impressions globales\u003C/strong> : +18% sur les requêtes informationnelles (\"comment choisir une veste en lin\", \"taille jean Levi's 501 femme\")\u003C/li>\n\u003Cli>\u003Cstrong>CTR moyen\u003C/strong> : passé de 3,2% à 2,1% sur ces mêmes requêtes\u003C/li>\n\u003Cli>\u003Cstrong>Clics\u003C/strong> : -12% net malgré la hausse d'impressions\u003C/li>\n\u003C/ul>\n\u003Cp>Vous suspectez une cannibalisation AI, mais impossible de le prouver. Votre direction marketing veut des chiffres. \"Le SEO perd du terrain\" est tout ce que vous pouvez dire.\u003C/p>\n\u003Ch3>Situation avec les rapports AI Search\u003C/h3>\n\u003Cp>Avec la segmentation AI, vous pouvez enfin produire ce type d'analyse :\u003C/p>\n\u003Cul>\n\u003Cli>Sur la requête \"comment choisir une veste en lin\" :\n\u003Cul>\n\u003Cli>\u003Cstrong>Web classique\u003C/strong> : 4 200 impressions/mois, CTR 4,8%, 202 clics\u003C/li>\n\u003Cli>\u003Cstrong>AI Search\u003C/strong> : 6 800 impressions/mois, CTR 0,9%, 61 clics\u003C/li>\n\u003Cli>\u003Cstrong>Total clics\u003C/strong> : 263 (vs. ~320 estimés avant les AIOs)\u003C/li>\n\u003Cli>\u003Cstrong>Perte nette\u003C/strong> : ~57 clics/mois sur cette seule requête\u003C/li>\n\u003C/ul>\n\u003C/li>\n\u003C/ul>\n\u003Cp>Extrapolé sur vos 1 200 articles blog (qui captent l'essentiel des requêtes informationnelles), vous pouvez estimer une perte de 2 500 à 4 000 clics/mois attribuable spécifiquement aux AI Overviews.\u003C/p>\n\u003Cp>Mais — et c'est là que ça devient intéressant — vous découvrez aussi que sur certaines requêtes transactionnelles (\"veste en lin homme pas cher\"), votre CTR AI est supérieur au CTR web classique. Pourquoi ? Parce que l'AIO cite votre fiche produit avec le prix, et l'utilisateur clique directement sans passer par les 10 liens bleus. Sur ces requêtes, l'AI Search vous fait \u003Cstrong>gagner\u003C/strong> du trafic.\u003C/p>\n\u003Ch3>Le plan d'action qui en découle\u003C/h3>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Requêtes informationnelles\u003C/strong> : restructurer le contenu pour maximiser la citation dans les AIOs (réponses directes en haut d'article, données structurées FAQ, paragraphes concis). C'est \u003Ca href=\"/blog/5-places-to-find-faq-content-that-improves-ai-visibility\">exactement le type de contenu qu'il faut optimiser pour la visibilité AI\u003C/a>.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Requêtes transactionnelles\u003C/strong> : renforcer le balisage structuré Product, Offer, AggregateRating pour que l'AIO affiche vos produits avec prix et avis.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Requêtes où les AIOs ne se déclenchent pas\u003C/strong> : identifier ces requêtes (souvent très longue traîne, très locales, ou très récentes) et les prioriser dans votre calendrier éditorial.\u003C/p>\n\u003C/li>\n\u003C/ol>\n\u003Ch2>Préparer votre balisage structuré pour l'AI Search\u003C/h2>\n\u003Cp>Les AI Overviews ne citent pas les sources au hasard. L'extraction repose sur la capacité du modèle à identifier des réponses fiables et structurées. Le balisage structuré joue un rôle croissant dans cette sélection.\u003C/p>\n\u003Ch3>Schema.org étendu pour la lisibilité machine\u003C/h3>\n\u003Cp>Allez au-delà du balisage de base. Sur vos pages produit, un balisage Product complet avec \u003Ccode>offers\u003C/code>, \u003Ccode>review\u003C/code>, \u003Ccode>brand\u003C/code> et \u003Ccode>hasMerchantReturnPolicy\u003C/code> donne au modèle les signaux nécessaires pour extraire une réponse riche :\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\": \"Product\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"name\": \"Veste en lin homme – Coupe droite\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"brand\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"@type\": \"Brand\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"name\": \"Maison Textile\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"description\": \"Veste en lin lavé, coupe droite, doublure coton. Fabriquée au Portugal.\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"sku\": \"VLH-2026-042\",\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\": \"129.00\",\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\">    \"priceValidUntil\": \"2026-09-30\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"hasMerchantReturnPolicy\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"MerchantReturnPolicy\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"returnPolicyCategory\": \"https://schema.org/MerchantReturnFiniteReturnWindow\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"merchantReturnDays\": 30,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"returnMethod\": \"https://schema.org/ReturnByMail\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    },\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\">      \"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\">      \"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\": 1,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"maxValue\": 2,\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\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"aggregateRating\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"@type\": \"AggregateRating\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"ratingValue\": \"4.6\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"reviewCount\": \"238\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"material\": \"Lin lavé\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"countryOfOrigin\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"@type\": \"Country\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"name\": \"Portugal\"\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>Ce niveau de détail (politique de retour, délais de livraison, matière, pays de fabrication) est ce qui différencie un balisage que le modèle peut exploiter d'un balisage minimal qui ne sert qu'à afficher des rich snippets classiques. La question de la lisibilité machine de votre marque \u003Ca href=\"/blog/what-makes-a-brand-machine-readable-in-ai-search\">va bien au-delà du simple schema.org\u003C/a>.\u003C/p>\n\u003Ch3>Identifier les pages citées dans les AIOs\u003C/h3>\n\u003Cp>En attendant le déploiement global du rapport AI Search, vous pouvez déjà traquer quelles pages sont citées dans les AI Overviews. Une approche programmatique avec Puppeteer ou Playwright :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">import\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { chromium } \u003C/span>\u003Cspan style=\"color:#F97583\">from\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> 'playwright'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">interface\u003C/span>\u003Cspan style=\"color:#B392F0\"> AIOResult\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  query\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  cited\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> boolean\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  citedUrl\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#F97583\"> |\u003C/span>\u003Cspan style=\"color:#79B8FF\"> null\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  aioPresent\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> boolean\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\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">async\u003C/span>\u003Cspan style=\"color:#F97583\"> function\u003C/span>\u003Cspan style=\"color:#B392F0\"> checkAIOCitation\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  queries\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">[],\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  targetDomain\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">)\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> Promise\u003C/span>\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#B392F0\">AIOResult\u003C/span>\u003Cspan style=\"color:#E1E4E8\">[]> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> browser\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> chromium.\u003C/span>\u003Cspan style=\"color:#B392F0\">launch\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ headless: \u003C/span>\u003Cspan style=\"color:#79B8FF\">true\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> });\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> context\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> browser.\u003C/span>\u003Cspan style=\"color:#B392F0\">newContext\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    locale: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'fr-FR'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    geolocation: { latitude: \u003C/span>\u003Cspan style=\"color:#79B8FF\">48.8566\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, longitude: \u003C/span>\u003Cspan style=\"color:#79B8FF\">2.3522\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    userAgent: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  });\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> results\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> AIOResult\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\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  for\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#F97583\">const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> query\u003C/span>\u003Cspan style=\"color:#F97583\"> of\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> queries) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> page\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> context.\u003C/span>\u003Cspan style=\"color:#B392F0\">newPage\u003C/span>\u003Cspan style=\"color:#E1E4E8\">();\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> page.\u003C/span>\u003Cspan style=\"color:#B392F0\">goto\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">      `https://www.google.fr/search?q=${\u003C/span>\u003Cspan style=\"color:#B392F0\">encodeURIComponent\u003C/span>\u003Cspan style=\"color:#9ECBFF\">(\u003C/span>\u003Cspan style=\"color:#E1E4E8\">query\u003C/span>\u003Cspan style=\"color:#9ECBFF\">)\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}`\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      { waitUntil: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'networkidle'\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\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    // Attendre le chargement éventuel du bloc AI Overview\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> page.\u003C/span>\u003Cspan style=\"color:#B392F0\">waitForTimeout\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#79B8FF\">3000\u003C/span>\u003Cspan style=\"color:#E1E4E8\">);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    // Sélecteur du conteneur AI Overview (à adapter — Google change régulièrement)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> aioContainer\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> page.\u003C/span>\u003Cspan style=\"color:#B392F0\">$\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'[data-attrid=\"ai-overview\"]'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    // Alternative : chercher le conteneur SGE/AIO par d'autres attributs\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> aioAlt\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> page.\u003C/span>\u003Cspan style=\"color:#B392F0\">$\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'.kp-wholepage .aiOverview, .M8OgIe'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> aioPresent\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> !!\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(aioContainer \u003C/span>\u003Cspan style=\"color:#F97583\">||\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> aioAlt);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    let\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> cited \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> false\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    let\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> citedUrl\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#F97583\"> |\u003C/span>\u003Cspan style=\"color:#79B8FF\"> null\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#79B8FF\"> null\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (aioPresent) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">      const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> container\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> aioContainer \u003C/span>\u003Cspan style=\"color:#F97583\">||\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> aioAlt;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">      const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> links\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> container\u003C/span>\u003Cspan style=\"color:#F97583\">!\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#B392F0\">$$\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'a[href]'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">      for\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#F97583\">const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> link\u003C/span>\u003Cspan style=\"color:#F97583\"> of\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> links) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> href\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> link.\u003C/span>\u003Cspan style=\"color:#B392F0\">getAttribute\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'href'\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\"> (href \u003C/span>\u003Cspan style=\"color:#F97583\">&#x26;&#x26;\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> href.\u003C/span>\u003Cspan style=\"color:#B392F0\">includes\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(targetDomain)) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          cited \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#79B8FF\"> true\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          citedUrl \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> href;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">          break\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\">      }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    results.\u003C/span>\u003Cspan style=\"color:#B392F0\">push\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ query, cited, citedUrl, aioPresent });\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> page.\u003C/span>\u003Cspan style=\"color:#B392F0\">close\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\">    // Respecter un délai pour éviter le blocage\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    await\u003C/span>\u003Cspan style=\"color:#F97583\"> new\u003C/span>\u003Cspan style=\"color:#79B8FF\"> Promise\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#FFAB70\">r\u003C/span>\u003Cspan style=\"color:#F97583\"> =>\u003C/span>\u003Cspan style=\"color:#B392F0\"> setTimeout\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(r, \u003C/span>\u003Cspan style=\"color:#79B8FF\">5000\u003C/span>\u003Cspan style=\"color:#F97583\"> +\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> Math.\u003C/span>\u003Cspan style=\"color:#B392F0\">random\u003C/span>\u003Cspan style=\"color:#E1E4E8\">() \u003C/span>\u003Cspan style=\"color:#F97583\">*\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 5000\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\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> browser.\u003C/span>\u003Cspan style=\"color:#B392F0\">close\u003C/span>\u003Cspan style=\"color:#E1E4E8\">();\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> results;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// Usage\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> queries\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">  'comment choisir veste en lin homme'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">  'meilleure veste lin été 2026'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">  'veste lin homme pas cher livraison rapide'\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">];\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">checkAIOCitation\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(queries, \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'votre-ecommerce.fr'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">).\u003C/span>\u003Cspan style=\"color:#B392F0\">then\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#FFAB70\">results\u003C/span>\u003Cspan style=\"color:#F97583\"> =>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  results.\u003C/span>\u003Cspan style=\"color:#B392F0\">forEach\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#FFAB70\">r\u003C/span>\u003Cspan style=\"color:#F97583\"> =>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    console.\u003C/span>\u003Cspan style=\"color:#B392F0\">log\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">`${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">r\u003C/span>\u003Cspan style=\"color:#9ECBFF\">.\u003C/span>\u003Cspan style=\"color:#E1E4E8\">query\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}: AIO=${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">r\u003C/span>\u003Cspan style=\"color:#9ECBFF\">.\u003C/span>\u003Cspan style=\"color:#E1E4E8\">aioPresent\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}, Cité=${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">r\u003C/span>\u003Cspan style=\"color:#9ECBFF\">.\u003C/span>\u003Cspan style=\"color:#E1E4E8\">cited\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}, URL=${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">r\u003C/span>\u003Cspan style=\"color:#9ECBFF\">.\u003C/span>\u003Cspan style=\"color:#E1E4E8\">citedUrl\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}`\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\">});\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Quelques précautions : ce scraping est fragile (les sélecteurs CSS de Google changent constamment), il viole les ToS de Google, et il ne scale pas au-delà de quelques dizaines de requêtes sans risque de CAPTCHA. Utilisez-le pour un échantillon représentatif, pas pour un audit exhaustif.\u003C/p>\n\u003Ch2>Comment les données AI Search changent la stratégie de contenu\u003C/h2>\n\u003Cp>L'arrivée de ces métriques force une refonte de la façon dont les équipes SEO priorisent le contenu.\u003C/p>\n\u003Ch3>La fin du \"trafic informationnel gratuit\"\u003C/h3>\n\u003Cp>Depuis 15 ans, le contenu informationnel (guides, tutos, comparatifs) était le pilier de l'acquisition SEO. Vous publiez un guide exhaustif, vous captez du trafic informationnel, vous convertissez une fraction en clients.\u003C/p>\n\u003Cp>Les AI Overviews changent cette équation. Sur les requêtes informationnelles, l'AIO fournit souvent une réponse suffisante. L'utilisateur n'a plus besoin de cliquer. Vos impressions montent (votre page est \"citée\"), mais vos clics baissent.\u003C/p>\n\u003Cp>Les nouveaux rapports AI Search vont rendre cette réalité mesurable et indiscutable. Attendez-vous à des conversations difficiles avec les équipes content : \"Votre guide à 3 000 mots génère 12 000 impressions AI mais seulement 85 clics.\"\u003C/p>\n\u003Ch3>Trois catégories de requêtes à segmenter\u003C/h3>\n\u003Cp>Avec les données AI Search, vous pouvez construire une matrice de priorisation :\u003C/p>\n\u003Cp>\u003Cstrong>Catégorie 1 — AI-positive\u003C/strong> : requêtes où votre CTR AI est supérieur à votre CTR web. Typiquement des requêtes transactionnelles où l'AIO met en avant votre produit avec prix. Stratégie : maximiser le balisage structuré, enrichir les données produit.\u003C/p>\n\u003Cp>\u003Cstrong>Catégorie 2 — AI-neutre\u003C/strong> : requêtes où l'AIO ne se déclenche pas (encore). Souvent des requêtes longue traîne, locales, ou très récentes. Stratégie : investir massivement sur ce segment, c'est votre trafic organique \"classique\" préservé.\u003C/p>\n\u003Cp>\u003Cstrong>Catégorie 3 — AI-cannibale\u003C/strong> : requêtes où l'AIO répond à la place de votre page. CTR AI très bas, impressions AI élevées. Stratégie : soit vous optimisez pour être la source citée n°1 (avec un lien cliquable), soit vous réallouez vos efforts vers les catégories 1 et 2.\u003C/p>\n\u003Cp>Cette segmentation n'était pas possible sans les rapports dédiés. C'est ce qui rend ce test structurellement important — bien au-delà d'une simple mise à jour d'interface Search Console.\u003C/p>\n\u003Ch2>Ce que Google ne dit pas : les enjeux politiques derrière ce test\u003C/h2>\n\u003Cp>Ce test n'arrive pas par hasard. Il s'inscrit dans un contexte de pression croissante des éditeurs et des régulateurs sur la transparence des AI Overviews.\u003C/p>\n\u003Ch3>Le problème du \"zero-click AI\"\u003C/h3>\n\u003Cp>Les éditeurs de contenu — médias, e-commerce, SaaS — se plaignent depuis le lancement des AIOs que Google utilise leur contenu pour générer des réponses sans renvoyer de trafic. C'est le problème du zero-click poussé à l'extrême.\u003C/p>\n\u003Cp>En fournissant des métriques AI séparées, Google fait deux choses :\u003C/p>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Il se protège juridiquement\u003C/strong> : \"Regardez, nous donnons aux éditeurs les outils pour mesurer leur visibilité AI.\" C'est un argument défensif face aux régulateurs européens (DMA, DSA) et aux procédures antitrust US.\u003C/p>\n\u003C/li>\n\u003Cli>\n\u003Cp>\u003Cstrong>Il cadre le narratif\u003C/strong> : en ne fournissant que les impressions et clics AI (sans le delta de cannibalisation), Google peut mettre en avant les cas où l'AI Search \u003Cem>ajoute\u003C/em> de la visibilité. Les cas de cannibalisation restent à la charge de l'éditeur pour les calculer.\u003C/p>\n\u003C/li>\n\u003C/ol>\n\u003Cp>C'est exactement ce qui s'est passé lors des annonces I/O 2026 — les démos officielles mettent en avant les gains, \u003Ca href=\"/blog/google-s-i-o-demos-reveal-the-new-business-visibility-problem-via-sejournal-mattgsouthern\">pas les pertes\u003C/a>.\u003C/p>\n\u003Ch3>La question des agents AI\u003C/h3>\n\u003Cp>Au-delà des AI Overviews dans la SERP, la vision de Google — telle que \u003Ca href=\"/blog/sundar-pichai-google-search-ai-agents-and-tools-will-become-one\">décrite par Sundar Pichai\u003C/a> — est celle d'agents AI qui interagissent avec les sites. La question de la visibilité dans ces agents est encore plus opaque que celle des AIOs.\u003C/p>\n\u003Cp>Les rapports AI Search dans Search Console pourraient évoluer vers un tracking des interactions agents (Gemini, Google Assistant avancé) avec votre contenu. Mais pour l'instant, on n'en est pas là. Le test actuel se limite à l'AI Search dans la SERP.\u003C/p>\n\u003Cp>Parallèlement, \u003Ca href=\"/blog/all-you-need-to-know-about-cloudflare-s-agent-readiness-score-via-sejournal-slobodanmanic\">des initiatives comme le Agent Readiness Score de Cloudflare\u003C/a> montrent que l'écosystème se structure pour mesurer la compatibilité des sites avec les agents AI. Les rapports Google s'inscrivent dans cette tendance plus large.\u003C/p>\n\u003Ch2>Actions immédiates : que faire maintenant\u003C/h2>\n\u003Cp>Le rapport n'est pas encore disponible globalement. Mais vous pouvez vous préparer.\u003C/p>\n\u003Ch3>1. Auditer votre visibilité AI actuelle\u003C/h3>\n\u003Cp>Avant d'avoir les données officielles, établissez votre baseline. Utilisez Screaming Frog pour exporter la liste de vos pages indexées avec leurs requêtes principales (via l'intégration Search Console de Screaming Frog), puis croisez manuellement un échantillon de 50-100 requêtes avec les SERPs réelles pour identifier la présence d'AIOs.\u003C/p>\n\u003Ch3>2. Structurer votre pipeline de données\u003C/h3>\n\u003Cp>Préparez vos tables BigQuery / votre dashboard Looker Studio pour accueillir une nouvelle dimension \"search_type = ai_search\". Si vous utilisez un outil de monitoring SEO comme Seogard, vérifiez qu'il peut ingérer et segmenter les nouvelles métriques dès leur disponibilité API — la détection de régressions sur le CTR AI sera aussi critique que la surveillance des meta ou des canonicals.\u003C/p>\n\u003Ch3>3. Cartographier vos contenus par vulnérabilité AI\u003C/h3>\n\u003Cp>Classez vos pages en trois buckets :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Haute vulnérabilité\u003C/strong> : contenu informationnel pur, réponse facilement synthétisable par un LLM (définitions, comparatifs simples, FAQ)\u003C/li>\n\u003Cli>\u003Cstrong>Vulnérabilité moyenne\u003C/strong> : contenu mixte info/transactionnel, partiellement substituable\u003C/li>\n\u003Cli>\u003Cstrong>Faible vulnérabilité\u003C/strong> : contenu transactionnel, expérientiel, ou nécessitant une interaction (configurateur produit, outil interactif, contenu communautaire)\u003C/li>\n\u003C/ul>\n\u003Cp>Cette cartographie vous permettra de réagir rapidement dès que les données AI Search seront disponibles. Au lieu de découvrir la cannibalisation, vous l'aurez anticipée.\u003C/p>\n\u003Ch3>4. Surveiller les régressions de balisage structuré\u003C/h3>\n\u003Cp>Si le balisage structuré influence la citation dans les AIOs, une régression silencieuse (schema.org cassé après un déploiement, données structurées invalidées après une migration de CMS) peut faire disparaître vos pages des AI Overviews sans que vous le remarquiez. Ce type de casse arrive constamment — \u003Ca href=\"/blog/migration-next-js-pages-router-vers-app-router-les-metadata-ignorees-sur-les-pages-client\">les migrations de framework sont un terrain miné\u003C/a> pour les meta et les données structurées.\u003C/p>\n\u003Ch2>Ce test est un point d'inflexion, pas une feature\u003C/h2>\n\u003Cp>Google ne teste pas un nouveau bouton dans Search Console. Il commence à rendre mesurable ce qui était jusqu'ici une boîte noire. Les équipes SEO qui auront préparé leur infrastructure de données, cartographié leur vulnérabilité AI, et adapté leur stratégie de contenu seront celles qui transformeront ces métriques en avantage concurrentiel. Les autres découvriront l'ampleur de la cannibalisation six mois trop tard. Un outil de monitoring continu comme Seogard, configuré pour alerter sur les variations de CTR AI vs. CTR organique dès que l'API le permettra, fera la différence entre réaction et anticipation.\u003C/p>\n\u003Cpre>\u003Ccode>\u003C/code>\u003C/pre>",null,12,[18,19,20,21,22],"google","search console","AI search","AI overviews","reports","AI Search Reports dans Search Console : analyse technique","Wed Jun 03 2026 16:03:02 GMT+0000 (Coordinated Universal Time)",[26,40,55,71,86,101],{"_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},"6a1e720eaa6b273b0c11b618","entitymap-the-open-standard-that-gives-ai-systems-a-structured-view-of-your-business-via-sejournal-dixon-jones","https://seogard.io/blog/entitymap-the-open-standard-that-gives-ai-systems-a-structured-view-of-your-business-via-sejournal-dixon-jones","2026-06-02T06:02:54.612Z","2026-06-02","Analyse technique d'EntityMap, le fichier JSON-LD qui expose vos entités aux LLM. Implémentation, déploiement, limites et monitoring.",[34,35,20,36,37],"entitymap","structured-data","knowledge-graph","JSON-LD","EntityMap : le standard ouvert qui structure votre marque pour l'IA","Tue Jun 02 2026 06:02:54 GMT+0000 (Coordinated Universal Time)",{"_id":41,"slug":42,"__v":6,"author":7,"canonical":43,"category":10,"createdAt":44,"date":45,"description":46,"image":15,"imageAlt":15,"readingTime":16,"tags":47,"title":53,"updatedAt":54},"6a1c5bbfaa6b273b0c57e754","google-s-i-o-demos-reveal-the-new-business-visibility-problem-via-sejournal-mattgsouthern","https://seogard.io/blog/google-s-i-o-demos-reveal-the-new-business-visibility-problem-via-sejournal-mattgsouthern","2026-05-31T16:03:11.265Z","2026-05-31","Les démos Google I/O finalisent des transactions sans jamais montrer de site. Analyse technique du nouveau problème de visibilité business et comment s'y préparer.",[48,49,50,51,52],"google i/o","ai search","business visibility","structured data","answer engine optimization","Google I/O 2026 : le problème de visibilité business que les démos révèlent","Sun May 31 2026 16:03:11 GMT+0000 (Coordinated Universal Time)",{"_id":56,"slug":57,"__v":6,"author":7,"canonical":58,"category":10,"createdAt":59,"date":60,"description":61,"image":15,"imageAlt":15,"readingTime":16,"tags":62,"title":69,"updatedAt":70},"6a1a7d89aa6b273b0ccd1780","google-serp-layout-shift-position-1-now-appears-halfway-down-the-page-via-sejournal-lorenbaker","https://seogard.io/blog/google-serp-layout-shift-position-1-now-appears-halfway-down-the-page-via-sejournal-lorenbaker","2026-05-30T06:02:49.607Z","2026-05-30","La position 1 organique recule à 800px+ du haut de page. Analyse technique du SERP layout shift Google et stratégies pour maintenir la visibilité réelle.",[18,63,64,65,66,67,68],"serp","layout","shift","position","visibilité","above-the-fold","SERP Layout Shift : pourquoi la position 1 ne vaut plus rien","Sat May 30 2026 06:02:49 GMT+0000 (Coordinated Universal Time)",{"_id":72,"slug":73,"__v":6,"author":7,"canonical":74,"category":10,"createdAt":75,"date":76,"description":77,"image":15,"imageAlt":15,"readingTime":16,"tags":78,"title":84,"updatedAt":85},"6a18674aaa6b273b0c1406eb","5-places-to-find-faq-content-that-improves-ai-visibility","https://seogard.io/blog/5-places-to-find-faq-content-that-improves-ai-visibility","2026-05-28T16:03:22.185Z","2026-05-28","GSC, Reddit, People Also Ask, insights clients et prompts IA : 5 méthodes concrètes pour trouver le FAQ content qui améliore votre visibilité dans les réponses IA.",[79,80,81,82,83],"FAQ content","AI visibility","People Also Ask","Google Search Console","AEO","5 sources de FAQ content qui boostent votre visibilité IA","Thu May 28 2026 16:03:22 GMT+0000 (Coordinated Universal Time)",{"_id":87,"slug":88,"__v":6,"author":7,"canonical":89,"category":10,"createdAt":90,"date":91,"description":92,"image":15,"imageAlt":15,"readingTime":16,"tags":93,"title":99,"updatedAt":100},"6a168914aa6b273b0c89481b","sundar-pichai-google-search-ai-agents-and-tools-will-become-one","https://seogard.io/blog/sundar-pichai-google-search-ai-agents-and-tools-will-become-one","2026-05-27T06:03:00.506Z","2026-05-27","Google Search devient un système d'exécution de tâches par agents IA. Analyse technique des impacts sur le crawl, le trafic organique et l'architecture des sites.",[94,95,96,97,98],"google search","ai agents","sundar pichai","seo technique","agentic search","Pichai fusionne Search, agents IA et outils : impact SEO technique","Wed May 27 2026 06:03:00 GMT+0000 (Coordinated Universal Time)",{"_id":102,"slug":103,"__v":6,"author":7,"canonical":104,"category":10,"createdAt":105,"date":106,"description":107,"image":15,"imageAlt":15,"readingTime":16,"tags":108,"title":114,"updatedAt":115},"6a13e60baa6b273b0c5c113f","all-you-need-to-know-about-cloudflare-s-agent-readiness-score-via-sejournal-slobodanmanic","https://seogard.io/blog/all-you-need-to-know-about-cloudflare-s-agent-readiness-score-via-sejournal-slobodanmanic","2026-05-25T06:02:51.630Z","2026-05-25","Analyse technique du score Agent Readiness de Cloudflare. Quels checks comptent selon votre type de site, et comment améliorer ce qui a un impact réel.",[109,110,111,112,113],"cloudflare","agent readiness","AI agents","crawl","SEO technique","Cloudflare Agent Readiness Score : ce que le chiffre signifie vraiment","Mon May 25 2026 06:02:51 GMT+0000 (Coordinated Universal Time)",{"categories":117},[118,121,125,129,132,135,137,140,144,148,151,153,157,160,163,166,170],{"category":10,"slug":119,"count":120},"actualites-seo",160,{"category":122,"slug":123,"count":124},"Migration","migration",18,{"category":126,"slug":127,"count":128},"Performance","performance",7,{"category":130,"slug":131,"count":128},"Rendering","rendering",{"category":133,"slug":134,"count":128},"SEO Technique","seo-technique",{"category":136,"slug":112,"count":128},"Crawl",{"category":138,"slug":139,"count":128},"Meta Tags","meta-tags",{"category":141,"slug":142,"count":143},"Architecture","architecture",6,{"category":145,"slug":146,"count":147},"Monitoring","monitoring",5,{"category":149,"slug":150,"count":147},"JavaScript SEO","javascript-seo",{"category":152,"slug":35,"count":147},"Structured Data",{"category":154,"slug":155,"count":156},"Redirections","redirections",4,{"category":158,"slug":159,"count":156},"Avancé","avance",{"category":161,"slug":162,"count":156},"Outils","outils",{"category":164,"slug":165,"count":156},"E-commerce","e-commerce",{"category":167,"slug":168,"count":169},"Contenu","contenu",3,{"category":171,"slug":172,"count":169},"IA & SEO","ia-seo"]