[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fYhg_N6ojT5nLhRsrjHd8OL0_4E85meoEUH7LwBlIjdQ":3,"$fIlLyLxzwi6_qfLcCjBL0Tu7td3dgnD2pQJ1yt0_dzVQ":25,"$fcTFjTaPPT1sVcnh1wWEGoTWMSaOD4bwmwntkMae6w5s":112},{"_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},"6a3238a5aa6b273b0c4e69eb","bing-rolls-out-ai-citation-share-in-webmaster-tools-via-sejournal-mattgsouthern",0,"Equipe Seogard","Microsoft vient d'activer quatre nouvelles métriques dans le dashboard AI Performance de Bing Webmaster Tools : Citation Share, Intents, Topics et Compare. C'est la première fois qu'un moteur de recherche majeur donne aux webmasters une visibilité granulaire sur la manière dont leurs contenus sont cités dans les réponses générées par l'IA. Google, de son côté, [teste encore des rapports AI dédiés dans Search Console](/blog/google-tests-dedicated-ai-search-reports-in-search-console-via-sejournal-mattgsouthern) sans date de déploiement ferme.\n\n## Ce que mesure réellement le Citation Share\n\nLe Citation Share est un ratio. Il représente la part de citations que votre domaine obtient dans les réponses AI de Bing (Copilot, réponses conversationnelles dans les SERP) par rapport à l'ensemble des citations générées pour un ensemble de requêtes.\n\nCe n'est pas un CTR. Ce n'est pas un taux d'impression classique. C'est une métrique de **share of voice dans le contexte AI** — quelque chose qui n'existait dans aucun outil de webmaster jusqu'ici.\n\n### La différence avec les impressions classiques\n\nDans le reporting SEO traditionnel de Bing Webmaster Tools, vous aviez :\n- **Impressions** : nombre de fois où votre URL apparaît dans les résultats organiques\n- **Clicks** : nombre de clics reçus\n- **CTR** : ratio clicks/impressions\n- **Position moyenne** : rang dans les résultats classiques\n\nLe Citation Share fonctionne sur une logique différente. Quand Copilot génère une réponse à une requête conversationnelle, il cite plusieurs sources. Votre Citation Share est le pourcentage de ces citations qui pointent vers votre domaine. Si Copilot cite 5 sources dans une réponse et que 2 d'entre elles sont des pages de votre site, votre Citation Share pour cette requête est de 40%.\n\n### Intents, Topics et Compare\n\nLes trois autres métriques déployées complètent le tableau :\n\n- **Intents** : les intentions de recherche détectées par Bing pour lesquelles vos pages sont citées dans les réponses AI. Pas les requêtes exactes — les clusters d'intention. C'est une granularité qu'on ne retrouve pas dans les rapports standard.\n- **Topics** : les thématiques sémantiques associées à vos citations AI. Cela permet de voir si Bing vous associe aux bons sujets ou si votre contenu est cité dans des contextes inattendus.\n- **Compare** : un outil de benchmarking qui permet de comparer votre Citation Share à celui de domaines concurrents sur les mêmes topics/intents.\n\nLa combinaison de ces quatre métriques constitue le premier vrai framework de mesure pour le SEO dans un monde de réponses génératives.\n\n## Impact concret : scénario d'un e-commerce de 8 000 pages\n\nPrenons un cas réaliste. Un e-commerce français spécialisé en matériel de randonnée — 8 200 pages produit, 350 articles de blog, 45 guides d'achat. Le site reçoit 12% de son trafic organique depuis Bing (ce qui est dans la fourchette habituelle pour un site français avec une audience desktop significative).\n\n### Avant Citation Share : navigation à l'aveugle\n\nAvant cette mise à jour, l'équipe SEO de ce site n'avait aucune visibilité sur la part de trafic Copilot. Bing Webmaster Tools reportait des impressions et des clics, mais sans distinction entre résultats organiques classiques et citations AI. Impossible de savoir si les guides d'achat étaient cités par Copilot, ni pour quelles requêtes.\n\n### Après activation : les données révèlent un déséquilibre\n\nAvec le dashboard AI Performance, l'équipe découvre :\n- **Citation Share global** : 3.2% sur le topic \"équipement randonnée\"\n- **Citation Share sur les intents transactionnels** (\"meilleur sac à dos randonnée 50L\") : 1.1%\n- **Citation Share sur les intents informationnels** (\"comment choisir ses chaussures de randonnée\") : 8.7%\n\nLe site est fortement cité pour les requêtes informationnelles mais quasi absent des réponses AI transactionnelles — alors que c'est là que la conversion se joue. Le Compare montre que deux concurrents captent respectivement 15% et 12% du Citation Share transactionnel.\n\n### L'action technique qui en découle\n\nL'équipe identifie que les pages catégories (les plus pertinentes pour les intents transactionnels) manquent de contenu structuré que Copilot peut extraire et citer. Les fiches produit ont des descriptions fournisseur dupliquées. Les guides d'achat, eux, ont du contenu original riche — d'où leur meilleur Citation Share.\n\nLe plan d'action : enrichir les pages catégories avec des blocs de contenu structuré citables.\n\n```html\n\u003C!-- Avant : page catégorie minimale -->\n\u003Ch1>Sacs à dos de randonnée\u003C/h1>\n\u003Cdiv class=\"product-grid\">\n  \u003C!-- 48 fiches produit en grille -->\n\u003C/div>\n\n\u003C!-- Après : contenu structuré citable ajouté -->\n\u003Ch1>Sacs à dos de randonnée\u003C/h1>\n\u003Csection class=\"category-guide\" itemscope itemtype=\"https://schema.org/Article\">\n  \u003Ch2 itemprop=\"headline\">Comment choisir un sac à dos de randonnée en 2026\u003C/h2>\n  \u003Cdiv itemprop=\"articleBody\">\n    \u003Cp>Le volume idéal dépend de la durée de votre trek : \n    20-35L pour la journée, 35-50L pour 2-3 jours, \n    50-70L pour les treks de plus de 4 jours.\u003C/p>\n    \n    \u003Ch3>Critères de sélection par usage\u003C/h3>\n    \u003Ctable>\n      \u003Cthead>\n        \u003Ctr>\n          \u003Cth>Durée\u003C/th>\n          \u003Cth>Volume recommandé\u003C/th>\n          \u003Cth>Poids à vide max\u003C/th>\n          \u003Cth>Budget moyen\u003C/th>\n        \u003C/tr>\n      \u003C/thead>\n      \u003Ctbody>\n        \u003Ctr>\u003Ctd>Journée\u003C/td>\u003Ctd>20-35L\u003C/td>\u003Ctd>800g\u003C/td>\u003Ctd>60-120€\u003C/td>\u003C/tr>\n        \u003Ctr>\u003Ctd>2-3 jours\u003C/td>\u003Ctd>35-50L\u003C/td>\u003Ctd>1.4kg\u003C/td>\u003Ctd>120-200€\u003C/td>\u003C/tr>\n        \u003Ctr>\u003Ctd>4+ jours\u003C/td>\u003Ctd>50-70L\u003C/td>\u003Ctd>1.8kg\u003C/td>\u003Ctd>180-350€\u003C/td>\u003C/tr>\n      \u003C/tbody>\n    \u003C/table>\n  \u003C/div>\n\u003C/section>\n\u003Cdiv class=\"product-grid\">\n  \u003C!-- 48 fiches produit en grille -->\n\u003C/div>\n```\n\nCe type de contenu structuré avec des données tabulaires est exactement ce que les LLM extraient et citent dans leurs réponses. L'idée n'est pas d'écrire pour le robot, mais de rendre les informations factuelles immédiatement extractibles.\n\n## Exploiter l'API Bing Webmaster Tools pour le monitoring\n\nBing Webmaster Tools expose une API qui permettait déjà de récupérer les données de performance classiques. Avec le déploiement progressif du dashboard AI Performance, les endpoints correspondants devraient suivre. En attendant, vous pouvez déjà automatiser la récupération des données existantes et préparer votre infrastructure de monitoring.\n\n### Authentification et récupération des données de trafic\n\n```typescript\n// bing-webmaster-api.ts\n// Client pour l'API Bing Webmaster Tools\n// Documentation : https://learn.microsoft.com/en-us/bingwebmaster/\n\ninterface BingTrafficData {\n  date: string;\n  page: string;\n  impressions: number;\n  clicks: number;\n  position: number;\n}\n\ninterface BingApiConfig {\n  apiKey: string;\n  siteUrl: string;\n}\n\nasync function fetchBingTrafficStats(\n  config: BingApiConfig,\n  startDate: string,\n  endDate: string\n): Promise\u003CBingTrafficData[]> {\n  const encodedSite = encodeURIComponent(config.siteUrl);\n  const endpoint = `https://ssl.bing.com/webmaster/api.svc/json/GetPageTrafficStats`;\n\n  const response = await fetch(\n    `${endpoint}?siteUrl=${encodedSite}&startDate=${startDate}&endDate=${endDate}`,\n    {\n      headers: {\n        'Content-Type': 'application/json',\n        'Ocp-Apim-Subscription-Key': config.apiKey,\n      },\n    }\n  );\n\n  if (!response.ok) {\n    throw new Error(\n      `Bing API error: ${response.status} ${response.statusText}`\n    );\n  }\n\n  const data = await response.json();\n  return data.d as BingTrafficData[];\n}\n\n// Identifier les pages dont le trafic Bing baisse\n// alors qu'elles pourraient être cannibalisées par les réponses AI\nasync function detectAICannibalization(config: BingApiConfig) {\n  const now = new Date();\n  const thirtyDaysAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);\n  const sixtyDaysAgo = new Date(now.getTime() - 60 * 24 * 60 * 60 * 1000);\n\n  const recentStats = await fetchBingTrafficStats(\n    config,\n    thirtyDaysAgo.toISOString().split('T')[0],\n    now.toISOString().split('T')[0]\n  );\n\n  const previousStats = await fetchBingTrafficStats(\n    config,\n    sixtyDaysAgo.toISOString().split('T')[0],\n    thirtyDaysAgo.toISOString().split('T')[0]\n  );\n\n  // Agréger par page\n  const aggregate = (stats: BingTrafficData[]) => {\n    const map = new Map\u003Cstring, { impressions: number; clicks: number }>();\n    for (const s of stats) {\n      const existing = map.get(s.page) || { impressions: 0, clicks: 0 };\n      existing.impressions += s.impressions;\n      existing.clicks += s.clicks;\n      map.set(s.page, existing);\n    }\n    return map;\n  };\n\n  const recent = aggregate(recentStats);\n  const previous = aggregate(previousStats);\n\n  const cannibalizationCandidates: Array\u003C{\n    page: string;\n    clickDrop: number;\n    impressionChange: number;\n  }> = [];\n\n  for (const [page, recentData] of recent) {\n    const prevData = previous.get(page);\n    if (!prevData) continue;\n\n    const clickDrop =\n      ((prevData.clicks - recentData.clicks) / prevData.clicks) * 100;\n    const impressionChange =\n      ((recentData.impressions - prevData.impressions) / prevData.impressions) *\n      100;\n\n    // Impressions stables ou en hausse mais clics en baisse forte\n    // = signal que Copilot répond directement avec le contenu\n    if (clickDrop > 25 && impressionChange > -10) {\n      cannibalizationCandidates.push({\n        page,\n        clickDrop: Math.round(clickDrop),\n        impressionChange: Math.round(impressionChange),\n      });\n    }\n  }\n\n  return cannibalizationCandidates.sort((a, b) => b.clickDrop - a.clickDrop);\n}\n```\n\nCe script détecte un pattern spécifique : les pages qui gardent leurs impressions (elles sont toujours visibles/citées) mais perdent des clics (les utilisateurs obtiennent leur réponse directement via Copilot). Quand le Citation Share sera disponible via l'API, vous pourrez croiser cette donnée pour confirmer l'hypothèse.\n\n## Structurer vos données pour maximiser le Citation Share\n\nLe Citation Share dépend fondamentalement de la capacité de Copilot à extraire des informations fiables et citables de vos pages. Les trois leviers techniques principaux sont : le balisage sémantique, les données structurées, et ce qu'on peut appeler le « contenu extractible ».\n\n### Schema.org et les entités nommées\n\nLes LLM qui alimentent Copilot s'appuient sur les knowledge graphs et les données structurées pour valider la fiabilité d'une source. Plus votre balisage est précis, plus vous avez de chances d'être cité.\n\nL'initiative [EntityMap](/blog/entitymap-the-open-standard-that-gives-ai-systems-a-structured-view-of-your-business-via-sejournal-dixon-jones) va exactement dans ce sens : fournir aux systèmes AI une vue structurée de votre activité. Bing, qui investit massivement dans l'AI search via Copilot, est naturellement réceptif à ces signaux.\n\nLa clé est d'aller au-delà du Schema.org basique. Ne vous contentez pas du minimum `Article` ou `Product`. Exploitez les types spécifiques et les propriétés qui établissent l'expertise :\n\n```html\n\u003C!-- Schema.org enrichi pour maximiser la citabilité -->\n\u003Cscript type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"TechArticle\",\n  \"headline\": \"Guide technique : configuration Nginx pour le SSR Next.js\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Marie Dupont\",\n    \"jobTitle\": \"Lead Infrastructure Engineer\",\n    \"worksFor\": {\n      \"@type\": \"Organization\",\n      \"name\": \"Acme SaaS\"\n    },\n    \"sameAs\": [\n      \"https://github.com/mariedupont\",\n      \"https://linkedin.com/in/mariedupont\"\n    ]\n  },\n  \"datePublished\": \"2026-06-15\",\n  \"dateModified\": \"2026-06-17\",\n  \"proficiencyLevel\": \"Expert\",\n  \"dependencies\": \"Next.js 15, Nginx 1.27, Node.js 22\",\n  \"about\": [\n    {\n      \"@type\": \"Thing\",\n      \"name\": \"Server-Side Rendering\",\n      \"sameAs\": \"https://en.wikipedia.org/wiki/Server-side_scripting\"\n    },\n    {\n      \"@type\": \"SoftwareApplication\",\n      \"name\": \"Next.js\",\n      \"applicationCategory\": \"Web Framework\",\n      \"operatingSystem\": \"Cross-platform\"\n    }\n  ],\n  \"citation\": [\n    {\n      \"@type\": \"WebPage\",\n      \"url\": \"https://nextjs.org/docs/app/building-your-application/rendering/server-components\",\n      \"name\": \"Next.js Server Components Documentation\"\n    }\n  ]\n}\n\u003C/script>\n```\n\nNotez l'utilisation de `TechArticle` au lieu de `Article`, la propriété `proficiencyLevel`, et surtout la propriété `citation` qui établit explicitement les sources de votre contenu. Ce sont des signaux de fiabilité que les systèmes AI exploitent pour décider quelles sources citer.\n\n### Contenu extractible : la règle des « paragraphes autonomes »\n\nLes LLM citent préférentiellement des passages qui sont compréhensibles hors contexte. Un paragraphe qui commence par \"Comme nous l'avons vu plus haut...\" n'est jamais cité. Un paragraphe qui contient une affirmation factuelle complète, auto-portante, avec des données, l'est régulièrement.\n\nStructurez vos contenus avec cette logique. Chaque paragraphe clé doit pouvoir être extrait et présenté seul dans une réponse Copilot tout en restant compréhensible et utile.\n\n## Bing vs Google : deux approches divergentes du reporting AI\n\nLa sortie du Citation Share chez Bing met en lumière le retard de Google Search Console dans ce domaine. Google a [commencé à tester des rapports AI dédiés](/blog/google-tests-dedicated-ai-search-reports-in-search-console-via-sejournal-mattgsouthern), mais aucune métrique comparable au Citation Share n'a été annoncée.\n\n### Ce que Google donne aujourd'hui\n\nGoogle Search Console reporte les clics depuis les AI Overviews dans le rapport de performance standard, mais sans distinction granulaire. Vous voyez une augmentation ou une baisse de clics, mais vous ne savez pas :\n- Quelle part des AI Overviews cite votre site\n- Pour quels intents vous êtes cité vs ignoré\n- Comment vous vous situez par rapport aux concurrents dans le contexte AI\n\nLes données sur le [comportement des clics depuis les AI Overviews](/blog/ai-overview-click-data-reveals-unexpected-user-behavior-patterns-for-marketers-via-sejournal-gregjarboe) montrent des patterns complexes. Sans les métriques de citation, vous ne pouvez que constater les effets sans comprendre les causes.\n\n### L'avantage stratégique de Bing pour les early adopters\n\nBing représente entre 3% et 15% du trafic organique selon les marchés et les verticales. C'est minoritaire. Mais le Citation Share de Bing peut servir de proxy pour comprendre comment les systèmes AI en général traitent votre contenu.\n\nLa logique est la suivante : si Copilot (alimenté par les modèles OpenAI) vous cite fortement sur un topic, il est probable que d'autres systèmes AI — y compris ceux qui alimentent des réponses conversationnelles hors moteurs de recherche — vous citent aussi. C'est particulièrement vrai quand on sait que les [opinions que l'AI se forge sur votre marque](/blog/how-ai-forms-opinions-about-your-brand) dépendent de signaux structurels similaires.\n\nLe Citation Share de Bing devient un indicateur avancé de votre visibilité AI globale. Et contrairement aux outils tiers qui estiment cette visibilité avec des méthodologies opaques, ici ce sont les données first-party du moteur lui-même.\n\n## Auditer votre citabilité avec les outils existants\n\nEn attendant que les données Citation Share soient pleinement disponibles dans votre compte, vous pouvez déjà auditer les facteurs qui influencent la citabilité de vos contenus.\n\n### Screaming Frog : vérifier la structure sémantique à l'échelle\n\nLancez un crawl Screaming Frog en activant l'extraction personnalisée pour identifier les pages qui manquent de contenu structuré citable :\n\n```\n# Configuration Screaming Frog - Custom Extraction\n# Mode : CSSPath\n\n# 1. Vérifier la présence de tableaux de données\ntable > thead                    # Extraction: \"Has Data Table\"\n\n# 2. Vérifier la présence de listes structurées \narticle ol, article ul           # Extraction: \"Has Structured List\"\n\n# 3. Vérifier la longueur du premier paragraphe après H2\narticle h2 + p                  # Extraction: \"First P After H2\"\n\n# 4. Détecter les Schema.org de type TechArticle/HowTo/FAQ\nscript[type=\"application/ld+json\"]  # Extraction: \"JSON-LD Content\"\n\n# Ensuite, filtrer dans l'export :\n# - Pages avec 0 tableaux ET 0 listes structurées = faible citabilité\n# - Pages avec JSON-LD vide ou de type basique = à enrichir\n# - Pages avec premier paragraphe \u003C 50 caractères = pas de contenu extractible\n```\n\nExportez les résultats et croisez-les avec vos données Bing Webmaster Tools. Les pages qui ont à la fois un trafic Bing et une faible structure sémantique sont vos quick wins pour améliorer le Citation Share.\n\n### Chrome DevTools : simuler ce que Copilot \"voit\"\n\nCopilot n'exécute pas votre JavaScript côté client de la même manière que Googlebot. Pour vérifier que votre contenu est accessible au crawler de Bing :\n\n1. Ouvrez Chrome DevTools > Network > filtrez sur `bingbot` dans les conditions de throttling\n2. Désactivez JavaScript complètement (Settings > Debugger > Disable JavaScript)\n3. Rechargez votre page\n\nSi votre contenu principal disparaît quand JavaScript est désactivé, vous avez un problème de SSR qui impacte directement votre citabilité. Les pages rendues côté client avec un [hero H1 dans une section conditionnelle](/blog/lazy-load-du-hero-h1-dans-une-section-v-if-invisible-au-fetch-http-brut) invisible au fetch HTTP brut ne seront jamais citées par Copilot.\n\nVérifiez aussi avec un fetch direct :\n\n```bash\n# Simuler le user-agent de BingBot et vérifier le contenu SSR\ncurl -s -A \"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)\" \\\n  https://votre-site.fr/guide/choisir-sac-randonnee \\\n  | grep -c \"\u003Ctable\"\n\n# Résultat attendu : >= 1 (au moins un tableau de données dans le HTML brut)\n# Si 0 : le tableau est rendu côté client, invisible pour BingBot\n\n# Vérifier que le contenu principal est dans le HTML initial\ncurl -s -A \"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)\" \\\n  https://votre-site.fr/guide/choisir-sac-randonnee \\\n  | grep -oi \"\u003Ch2[^>]*>.*\u003C/h2>\" | head -5\n\n# Comparer avec le nombre de H2 visibles dans le navigateur\n# Si le curl retourne moins de H2, du contenu est rendu client-side uniquement\n```\n\nC'est un diagnostic basique mais redoutablement efficace. De nombreux sites en SSR partiel (Next.js avec des composants client, Nuxt avec `v-if` sur des sections) servent un HTML initial appauvri aux crawlers — ce qui détruit leur citabilité AI.\n\n## Les limites et les questions ouvertes\n\nLe Citation Share est une avancée significative, mais il faut garder un regard critique.\n\n### Ce que le Citation Share ne dit pas\n\n- **Pas de données de conversion** : vous savez que vous êtes cité, mais vous ne savez pas si les utilisateurs qui voient la citation cliquent ensuite vers votre site. Le CTR post-citation n'est pas (encore) reporté.\n- **Pas de granularité par URL** : dans la version actuelle du dashboard, le Citation Share semble être reporté au niveau domaine, pas au niveau page individuelle. C'est une limite majeure pour l'optimisation granulaire.\n- **Pas de corrélation avec le trafic** : une hausse du Citation Share ne signifie pas nécessairement une hausse du trafic. Si Copilot répond complètement à la requête en citant votre source, l'utilisateur peut ne jamais visiter votre site.\n\n### Le risque de la \"citation sans clic\"\n\nC'est le paradoxe central de l'AI search : être cité est bon pour la notoriété, mais peut réduire le trafic direct. Les [données sur les comportements de clic dans les AI Overviews](/blog/what-ai-overview-click-data-reveals-about-consumer-search-behavior-5-strategic-insights-for-cmos-via-sejournal-gregjarboe) de Google montrent que les taux de clic varient massivement selon l'intent. Les requêtes informationnelles simples génèrent peu de clics post-citation. Les requêtes transactionnelles et de comparaison en génèrent davantage.\n\nVotre stratégie de Citation Share doit donc être alignée avec vos objectifs business. Si votre modèle repose sur le trafic (display ads, affiliation), maximiser le Citation Share sur des requêtes informationnelles peut être contre-productif. Si votre modèle repose sur la notoriété de marque (SaaS, B2B), c'est un levier puissant.\n\n### La question du user-agent AI\n\nBing a été plus transparent que Google sur les [visiteurs AI et leur identification](/blog/your-next-ai-visitor-will-know-who-sent-it-via-sejournal-slobodanmanic). Mais la question de la distinction entre le crawl classique de BingBot et le crawl spécifique pour l'alimentation de Copilot reste floue. Les deux utilisent le même user-agent. Côté serveur, vous ne pouvez pas (pour l'instant) distinguer un crawl destiné à l'index classique d'un crawl destiné à alimenter les réponses AI.\n\nCela signifie que vous ne pouvez pas servir un contenu différent aux deux — ce qui est probablement voulu par Microsoft pour éviter le cloaking. Mais cela complique aussi le diagnostic quand vous voyez des patterns de crawl inhabituels.\n\n## Préparer votre stack de monitoring\n\nLe déploiement du Citation Share marque un changement structurel dans la manière de mesurer la performance SEO. Les métriques traditionnelles (position, impressions, clics) restent nécessaires mais ne suffisent plus. Vous devez intégrer les métriques AI dans votre reporting.\n\nL'approche recommandée est de superposer trois couches de données :\n\n1. **Bing Webmaster Tools** : Citation Share, Intents, Topics (données first-party Bing)\n2. **Google Search Console** : rapport AI Overviews quand il sera disponible (données first-party Google)\n3. **Monitoring technique continu** : vérification automatisée que vos pages restent crawlables, que le SSR fonctionne, que les données structurées sont valides, que les meta ne disparaissent pas après un déploiement\n\nC'est sur cette troisième couche qu'un outil de monitoring comme Seogard prend tout son sens. Une régression SSR après un déploiement — un [composant mal configuré](/blog/design-system-composant-heading-qui-rend-div-selon-la-prop-as-mal-configuree) qui casse le rendu d'un H1, une [mise à jour de plugin qui vide les meta](/blog/yoast-seo-desactive-par-un-update-plugin-fallback-meta-vides-sur-80-du-blog) — peut faire chuter votre Citation Share en quelques jours sans que vous le remarquiez dans les métriques hebdomadaires.\n\nLe Citation Share de Bing est la première métrique AI actionable pour les SEO techniques. Elle ne remplace pas les fondamentaux, mais elle ajoute une dimension qui va devenir incontournable. Commencez par auditer la citabilité de vos pages clés, structurez vos contenus pour l'extraction, et mettez en place un monitoring qui détecte les régressions avant qu'elles n'impactent vos métriques AI.\n```","https://seogard.io/blog/bing-rolls-out-ai-citation-share-in-webmaster-tools-via-sejournal-mattgsouthern","Actualités SEO","2026-06-17T06:03:17.202Z","2026-06-17","Analyse technique du nouveau Citation Share dans Bing Webmaster Tools. Métriques AI, impact sur le trafic, et stratégies d'optimisation concrètes.","\u003Cp>Microsoft vient d'activer quatre nouvelles métriques dans le dashboard AI Performance de Bing Webmaster Tools : Citation Share, Intents, Topics et Compare. C'est la première fois qu'un moteur de recherche majeur donne aux webmasters une visibilité granulaire sur la manière dont leurs contenus sont cités dans les réponses générées par l'IA. Google, de son côté, \u003Ca href=\"/blog/google-tests-dedicated-ai-search-reports-in-search-console-via-sejournal-mattgsouthern\">teste encore des rapports AI dédiés dans Search Console\u003C/a> sans date de déploiement ferme.\u003C/p>\n\u003Ch2>Ce que mesure réellement le Citation Share\u003C/h2>\n\u003Cp>Le Citation Share est un ratio. Il représente la part de citations que votre domaine obtient dans les réponses AI de Bing (Copilot, réponses conversationnelles dans les SERP) par rapport à l'ensemble des citations générées pour un ensemble de requêtes.\u003C/p>\n\u003Cp>Ce n'est pas un CTR. Ce n'est pas un taux d'impression classique. C'est une métrique de \u003Cstrong>share of voice dans le contexte AI\u003C/strong> — quelque chose qui n'existait dans aucun outil de webmaster jusqu'ici.\u003C/p>\n\u003Ch3>La différence avec les impressions classiques\u003C/h3>\n\u003Cp>Dans le reporting SEO traditionnel de Bing Webmaster Tools, vous aviez :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Impressions\u003C/strong> : nombre de fois où votre URL apparaît dans les résultats organiques\u003C/li>\n\u003Cli>\u003Cstrong>Clicks\u003C/strong> : nombre de clics reçus\u003C/li>\n\u003Cli>\u003Cstrong>CTR\u003C/strong> : ratio clicks/impressions\u003C/li>\n\u003Cli>\u003Cstrong>Position moyenne\u003C/strong> : rang dans les résultats classiques\u003C/li>\n\u003C/ul>\n\u003Cp>Le Citation Share fonctionne sur une logique différente. Quand Copilot génère une réponse à une requête conversationnelle, il cite plusieurs sources. Votre Citation Share est le pourcentage de ces citations qui pointent vers votre domaine. Si Copilot cite 5 sources dans une réponse et que 2 d'entre elles sont des pages de votre site, votre Citation Share pour cette requête est de 40%.\u003C/p>\n\u003Ch3>Intents, Topics et Compare\u003C/h3>\n\u003Cp>Les trois autres métriques déployées complètent le tableau :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Intents\u003C/strong> : les intentions de recherche détectées par Bing pour lesquelles vos pages sont citées dans les réponses AI. Pas les requêtes exactes — les clusters d'intention. C'est une granularité qu'on ne retrouve pas dans les rapports standard.\u003C/li>\n\u003Cli>\u003Cstrong>Topics\u003C/strong> : les thématiques sémantiques associées à vos citations AI. Cela permet de voir si Bing vous associe aux bons sujets ou si votre contenu est cité dans des contextes inattendus.\u003C/li>\n\u003Cli>\u003Cstrong>Compare\u003C/strong> : un outil de benchmarking qui permet de comparer votre Citation Share à celui de domaines concurrents sur les mêmes topics/intents.\u003C/li>\n\u003C/ul>\n\u003Cp>La combinaison de ces quatre métriques constitue le premier vrai framework de mesure pour le SEO dans un monde de réponses génératives.\u003C/p>\n\u003Ch2>Impact concret : scénario d'un e-commerce de 8 000 pages\u003C/h2>\n\u003Cp>Prenons un cas réaliste. Un e-commerce français spécialisé en matériel de randonnée — 8 200 pages produit, 350 articles de blog, 45 guides d'achat. Le site reçoit 12% de son trafic organique depuis Bing (ce qui est dans la fourchette habituelle pour un site français avec une audience desktop significative).\u003C/p>\n\u003Ch3>Avant Citation Share : navigation à l'aveugle\u003C/h3>\n\u003Cp>Avant cette mise à jour, l'équipe SEO de ce site n'avait aucune visibilité sur la part de trafic Copilot. Bing Webmaster Tools reportait des impressions et des clics, mais sans distinction entre résultats organiques classiques et citations AI. Impossible de savoir si les guides d'achat étaient cités par Copilot, ni pour quelles requêtes.\u003C/p>\n\u003Ch3>Après activation : les données révèlent un déséquilibre\u003C/h3>\n\u003Cp>Avec le dashboard AI Performance, l'équipe découvre :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Citation Share global\u003C/strong> : 3.2% sur le topic \"équipement randonnée\"\u003C/li>\n\u003Cli>\u003Cstrong>Citation Share sur les intents transactionnels\u003C/strong> (\"meilleur sac à dos randonnée 50L\") : 1.1%\u003C/li>\n\u003Cli>\u003Cstrong>Citation Share sur les intents informationnels\u003C/strong> (\"comment choisir ses chaussures de randonnée\") : 8.7%\u003C/li>\n\u003C/ul>\n\u003Cp>Le site est fortement cité pour les requêtes informationnelles mais quasi absent des réponses AI transactionnelles — alors que c'est là que la conversion se joue. Le Compare montre que deux concurrents captent respectivement 15% et 12% du Citation Share transactionnel.\u003C/p>\n\u003Ch3>L'action technique qui en découle\u003C/h3>\n\u003Cp>L'équipe identifie que les pages catégories (les plus pertinentes pour les intents transactionnels) manquent de contenu structuré que Copilot peut extraire et citer. Les fiches produit ont des descriptions fournisseur dupliquées. Les guides d'achat, eux, ont du contenu original riche — d'où leur meilleur Citation Share.\u003C/p>\n\u003Cp>Le plan d'action : enrichir les pages catégories avec des blocs de contenu structuré citables.\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">&#x3C;!-- Avant : page catégorie minimale -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Sacs à dos de randonnée&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#B392F0\"> class\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"product-grid\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  &#x3C;!-- 48 fiches produit en grille -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">&#x3C;!-- Après : contenu structuré citable ajouté -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Sacs à dos de randonnée&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">h1\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">section\u003C/span>\u003Cspan style=\"color:#B392F0\"> class\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"category-guide\"\u003C/span>\u003Cspan style=\"color:#B392F0\"> itemscope\u003C/span>\u003Cspan style=\"color:#B392F0\"> itemtype\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"https://schema.org/Article\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">h2\u003C/span>\u003Cspan style=\"color:#B392F0\"> itemprop\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"headline\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Comment choisir un sac à dos de randonnée en 2026&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">h2\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#B392F0\"> itemprop\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"articleBody\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Le volume idéal dépend de la durée de votre trek : \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    20-35L pour la journée, 35-50L pour 2-3 jours, \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    50-70L pour les treks de plus de 4 jours.&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">p\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">h3\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Critères de sélection par usage&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">h3\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">table\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">thead\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">tr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">th\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Durée&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">th\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">th\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Volume recommandé&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">th\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">th\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Poids à vide max&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">th\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">th\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Budget moyen&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">th\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        &#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">tr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      &#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">thead\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">tbody\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">tr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>Journée&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>20-35L&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>800g&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>60-120€&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">tr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">tr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>2-3 jours&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>35-50L&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>1.4kg&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>120-200€&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">tr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        &#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">tr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>4+ jours&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>50-70L&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>1.8kg&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>180-350€&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">td\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">tr\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      &#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">tbody\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    &#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">table\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  &#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">section\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#B392F0\"> class\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"product-grid\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  &#x3C;!-- 48 fiches produit en grille -->\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">div\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Ce type de contenu structuré avec des données tabulaires est exactement ce que les LLM extraient et citent dans leurs réponses. L'idée n'est pas d'écrire pour le robot, mais de rendre les informations factuelles immédiatement extractibles.\u003C/p>\n\u003Ch2>Exploiter l'API Bing Webmaster Tools pour le monitoring\u003C/h2>\n\u003Cp>Bing Webmaster Tools expose une API qui permettait déjà de récupérer les données de performance classiques. Avec le déploiement progressif du dashboard AI Performance, les endpoints correspondants devraient suivre. En attendant, vous pouvez déjà automatiser la récupération des données existantes et préparer votre infrastructure de monitoring.\u003C/p>\n\u003Ch3>Authentification et récupération des données de trafic\u003C/h3>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// bing-webmaster-api.ts\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// Client pour l'API Bing Webmaster Tools\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// Documentation : https://learn.microsoft.com/en-us/bingwebmaster/\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\"> BingTrafficData\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  date\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\">  page\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\">  impressions\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> number\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  clicks\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> number\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  position\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> number\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\">interface\u003C/span>\u003Cspan style=\"color:#B392F0\"> BingApiConfig\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  apiKey\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\">  siteUrl\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:#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\"> fetchBingTrafficStats\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  config\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> BingApiConfig\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  startDate\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\">  endDate\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\">BingTrafficData\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\"> encodedSite\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#B392F0\"> encodeURIComponent\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(config.siteUrl);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> endpoint\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> `https://ssl.bing.com/webmaster/api.svc/json/GetPageTrafficStats`\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\"> response\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#B392F0\"> fetch\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    `${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">endpoint\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}?siteUrl=${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">encodedSite\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}&#x26;startDate=${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">startDate\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}&#x26;endDate=${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">endDate\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\">      headers: {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">        'Content-Type'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: \u003C/span>\u003Cspan style=\"color:#9ECBFF\">'application/json'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">        'Ocp-Apim-Subscription-Key'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">: config.apiKey,\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:#F97583\">  if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#F97583\">!\u003C/span>\u003Cspan style=\"color:#E1E4E8\">response.ok) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    throw\u003C/span>\u003Cspan style=\"color:#F97583\"> new\u003C/span>\u003Cspan style=\"color:#B392F0\"> Error\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">      `Bing API error: ${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">response\u003C/span>\u003Cspan style=\"color:#9ECBFF\">.\u003C/span>\u003Cspan style=\"color:#E1E4E8\">status\u003C/span>\u003Cspan style=\"color:#9ECBFF\">} ${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">response\u003C/span>\u003Cspan style=\"color:#9ECBFF\">.\u003C/span>\u003Cspan style=\"color:#E1E4E8\">statusText\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}`\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:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> data\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> response.\u003C/span>\u003Cspan style=\"color:#B392F0\">json\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\"> data.d \u003C/span>\u003Cspan style=\"color:#F97583\">as\u003C/span>\u003Cspan style=\"color:#B392F0\"> BingTrafficData\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\">// Identifier les pages dont le trafic Bing baisse\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// alors qu'elles pourraient être cannibalisées par les réponses AI\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">async\u003C/span>\u003Cspan style=\"color:#F97583\"> function\u003C/span>\u003Cspan style=\"color:#B392F0\"> detectAICannibalization\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#FFAB70\">config\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> BingApiConfig\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\"> now\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> new\u003C/span>\u003Cspan style=\"color:#B392F0\"> Date\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\"> thirtyDaysAgo\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> new\u003C/span>\u003Cspan style=\"color:#B392F0\"> Date\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(now.\u003C/span>\u003Cspan style=\"color:#B392F0\">getTime\u003C/span>\u003Cspan style=\"color:#E1E4E8\">() \u003C/span>\u003Cspan style=\"color:#F97583\">-\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 30\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 24\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 60\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 60\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 1000\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\"> sixtyDaysAgo\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> new\u003C/span>\u003Cspan style=\"color:#B392F0\"> Date\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(now.\u003C/span>\u003Cspan style=\"color:#B392F0\">getTime\u003C/span>\u003Cspan style=\"color:#E1E4E8\">() \u003C/span>\u003Cspan style=\"color:#F97583\">-\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 60\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 24\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 60\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 60\u003C/span>\u003Cspan style=\"color:#F97583\"> *\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 1000\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\"> recentStats\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#B392F0\"> fetchBingTrafficStats\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    config,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    thirtyDaysAgo.\u003C/span>\u003Cspan style=\"color:#B392F0\">toISOString\u003C/span>\u003Cspan style=\"color:#E1E4E8\">().\u003C/span>\u003Cspan style=\"color:#B392F0\">split\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'T'\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\">    now.\u003C/span>\u003Cspan style=\"color:#B392F0\">toISOString\u003C/span>\u003Cspan style=\"color:#E1E4E8\">().\u003C/span>\u003Cspan style=\"color:#B392F0\">split\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'T'\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\">  );\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\"> previousStats\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#B392F0\"> fetchBingTrafficStats\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    config,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    sixtyDaysAgo.\u003C/span>\u003Cspan style=\"color:#B392F0\">toISOString\u003C/span>\u003Cspan style=\"color:#E1E4E8\">().\u003C/span>\u003Cspan style=\"color:#B392F0\">split\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'T'\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\">    thirtyDaysAgo.\u003C/span>\u003Cspan style=\"color:#B392F0\">toISOString\u003C/span>\u003Cspan style=\"color:#E1E4E8\">().\u003C/span>\u003Cspan style=\"color:#B392F0\">split\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'T'\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\">  );\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  // Agréger par page\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#B392F0\"> aggregate\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#FFAB70\">stats\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> BingTrafficData\u003C/span>\u003Cspan style=\"color:#E1E4E8\">[]) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> map\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#F97583\"> new\u003C/span>\u003Cspan style=\"color:#B392F0\"> Map\u003C/span>\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#79B8FF\">string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, { \u003C/span>\u003Cspan style=\"color:#FFAB70\">impressions\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> number\u003C/span>\u003Cspan style=\"color:#E1E4E8\">; \u003C/span>\u003Cspan style=\"color:#FFAB70\">clicks\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> number\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\"> s\u003C/span>\u003Cspan style=\"color:#F97583\"> of\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> stats) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">      const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> existing\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> map.\u003C/span>\u003Cspan style=\"color:#B392F0\">get\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(s.page) \u003C/span>\u003Cspan style=\"color:#F97583\">||\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { impressions: \u003C/span>\u003Cspan style=\"color:#79B8FF\">0\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, clicks: \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\">      existing.impressions \u003C/span>\u003Cspan style=\"color:#F97583\">+=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> s.impressions;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      existing.clicks \u003C/span>\u003Cspan style=\"color:#F97583\">+=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> s.clicks;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      map.\u003C/span>\u003Cspan style=\"color:#B392F0\">set\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(s.page, existing);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> map;\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\"> recent\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#B392F0\"> aggregate\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(recentStats);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> previous\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#B392F0\"> aggregate\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(previousStats);\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\"> cannibalizationCandidates\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> Array\u003C/span>\u003Cspan style=\"color:#E1E4E8\">&#x3C;{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">    page\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\">    clickDrop\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> number\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">    impressionChange\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#79B8FF\"> number\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\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:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#79B8FF\">page\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">recentData\u003C/span>\u003Cspan style=\"color:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#F97583\">of\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> recent) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> prevData\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> previous.\u003C/span>\u003Cspan style=\"color:#B392F0\">get\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(page);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#F97583\">!\u003C/span>\u003Cspan style=\"color:#E1E4E8\">prevData) \u003C/span>\u003Cspan style=\"color:#F97583\">continue\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\"> clickDrop\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      ((prevData.clicks \u003C/span>\u003Cspan style=\"color:#F97583\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> recentData.clicks) \u003C/span>\u003Cspan style=\"color:#F97583\">/\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> prevData.clicks) \u003C/span>\u003Cspan style=\"color:#F97583\">*\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 100\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\"> impressionChange\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      ((recentData.impressions \u003C/span>\u003Cspan style=\"color:#F97583\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> prevData.impressions) \u003C/span>\u003Cspan style=\"color:#F97583\">/\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> prevData.impressions) \u003C/span>\u003Cspan style=\"color:#F97583\">*\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">      100\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    // Impressions stables ou en hausse mais clics en baisse forte\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    // = signal que Copilot répond directement avec le contenu\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (clickDrop \u003C/span>\u003Cspan style=\"color:#F97583\">>\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 25\u003C/span>\u003Cspan style=\"color:#F97583\"> &#x26;&#x26;\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> impressionChange \u003C/span>\u003Cspan style=\"color:#F97583\">>\u003C/span>\u003Cspan style=\"color:#F97583\"> -\u003C/span>\u003Cspan style=\"color:#79B8FF\">10\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      cannibalizationCandidates.\u003C/span>\u003Cspan style=\"color:#B392F0\">push\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        page,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        clickDrop: Math.\u003C/span>\u003Cspan style=\"color:#B392F0\">round\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(clickDrop),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        impressionChange: Math.\u003C/span>\u003Cspan style=\"color:#B392F0\">round\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(impressionChange),\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:#F97583\">  return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> cannibalizationCandidates.\u003C/span>\u003Cspan style=\"color:#B392F0\">sort\u003C/span>\u003Cspan style=\"color:#E1E4E8\">((\u003C/span>\u003Cspan style=\"color:#FFAB70\">a\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">b\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> b.clickDrop \u003C/span>\u003Cspan style=\"color:#F97583\">-\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> a.clickDrop);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Ce script détecte un pattern spécifique : les pages qui gardent leurs impressions (elles sont toujours visibles/citées) mais perdent des clics (les utilisateurs obtiennent leur réponse directement via Copilot). Quand le Citation Share sera disponible via l'API, vous pourrez croiser cette donnée pour confirmer l'hypothèse.\u003C/p>\n\u003Ch2>Structurer vos données pour maximiser le Citation Share\u003C/h2>\n\u003Cp>Le Citation Share dépend fondamentalement de la capacité de Copilot à extraire des informations fiables et citables de vos pages. Les trois leviers techniques principaux sont : le balisage sémantique, les données structurées, et ce qu'on peut appeler le « contenu extractible ».\u003C/p>\n\u003Ch3>Schema.org et les entités nommées\u003C/h3>\n\u003Cp>Les LLM qui alimentent Copilot s'appuient sur les knowledge graphs et les données structurées pour valider la fiabilité d'une source. Plus votre balisage est précis, plus vous avez de chances d'être cité.\u003C/p>\n\u003Cp>L'initiative \u003Ca href=\"/blog/entitymap-the-open-standard-that-gives-ai-systems-a-structured-view-of-your-business-via-sejournal-dixon-jones\">EntityMap\u003C/a> va exactement dans ce sens : fournir aux systèmes AI une vue structurée de votre activité. Bing, qui investit massivement dans l'AI search via Copilot, est naturellement réceptif à ces signaux.\u003C/p>\n\u003Cp>La clé est d'aller au-delà du Schema.org basique. Ne vous contentez pas du minimum \u003Ccode>Article\u003C/code> ou \u003Ccode>Product\u003C/code>. Exploitez les types spécifiques et les propriétés qui établissent l'expertise :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">&#x3C;!-- Schema.org enrichi pour maximiser la citabilité -->\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:#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\": \"TechArticle\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"headline\": \"Guide technique : configuration Nginx pour le SSR Next.js\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"author\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"@type\": \"Person\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"name\": \"Marie Dupont\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"jobTitle\": \"Lead Infrastructure Engineer\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"worksFor\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"Organization\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"name\": \"Acme SaaS\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"sameAs\": [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"https://github.com/mariedupont\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"https://linkedin.com/in/mariedupont\"\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\">  \"datePublished\": \"2026-06-15\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"dateModified\": \"2026-06-17\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"proficiencyLevel\": \"Expert\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"dependencies\": \"Next.js 15, Nginx 1.27, Node.js 22\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"about\": [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"Thing\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"name\": \"Server-Side Rendering\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"sameAs\": \"https://en.wikipedia.org/wiki/Server-side_scripting\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"SoftwareApplication\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"name\": \"Next.js\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"applicationCategory\": \"Web Framework\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"operatingSystem\": \"Cross-platform\"\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\">  \"citation\": [\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"WebPage\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"url\": \"https://nextjs.org/docs/app/building-your-application/rendering/server-components\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"name\": \"Next.js Server Components Documentation\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  ]\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">script\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Notez l'utilisation de \u003Ccode>TechArticle\u003C/code> au lieu de \u003Ccode>Article\u003C/code>, la propriété \u003Ccode>proficiencyLevel\u003C/code>, et surtout la propriété \u003Ccode>citation\u003C/code> qui établit explicitement les sources de votre contenu. Ce sont des signaux de fiabilité que les systèmes AI exploitent pour décider quelles sources citer.\u003C/p>\n\u003Ch3>Contenu extractible : la règle des « paragraphes autonomes »\u003C/h3>\n\u003Cp>Les LLM citent préférentiellement des passages qui sont compréhensibles hors contexte. Un paragraphe qui commence par \"Comme nous l'avons vu plus haut...\" n'est jamais cité. Un paragraphe qui contient une affirmation factuelle complète, auto-portante, avec des données, l'est régulièrement.\u003C/p>\n\u003Cp>Structurez vos contenus avec cette logique. Chaque paragraphe clé doit pouvoir être extrait et présenté seul dans une réponse Copilot tout en restant compréhensible et utile.\u003C/p>\n\u003Ch2>Bing vs Google : deux approches divergentes du reporting AI\u003C/h2>\n\u003Cp>La sortie du Citation Share chez Bing met en lumière le retard de Google Search Console dans ce domaine. Google a \u003Ca href=\"/blog/google-tests-dedicated-ai-search-reports-in-search-console-via-sejournal-mattgsouthern\">commencé à tester des rapports AI dédiés\u003C/a>, mais aucune métrique comparable au Citation Share n'a été annoncée.\u003C/p>\n\u003Ch3>Ce que Google donne aujourd'hui\u003C/h3>\n\u003Cp>Google Search Console reporte les clics depuis les AI Overviews dans le rapport de performance standard, mais sans distinction granulaire. Vous voyez une augmentation ou une baisse de clics, mais vous ne savez pas :\u003C/p>\n\u003Cul>\n\u003Cli>Quelle part des AI Overviews cite votre site\u003C/li>\n\u003Cli>Pour quels intents vous êtes cité vs ignoré\u003C/li>\n\u003Cli>Comment vous vous situez par rapport aux concurrents dans le contexte AI\u003C/li>\n\u003C/ul>\n\u003Cp>Les données sur le \u003Ca href=\"/blog/ai-overview-click-data-reveals-unexpected-user-behavior-patterns-for-marketers-via-sejournal-gregjarboe\">comportement des clics depuis les AI Overviews\u003C/a> montrent des patterns complexes. Sans les métriques de citation, vous ne pouvez que constater les effets sans comprendre les causes.\u003C/p>\n\u003Ch3>L'avantage stratégique de Bing pour les early adopters\u003C/h3>\n\u003Cp>Bing représente entre 3% et 15% du trafic organique selon les marchés et les verticales. C'est minoritaire. Mais le Citation Share de Bing peut servir de proxy pour comprendre comment les systèmes AI en général traitent votre contenu.\u003C/p>\n\u003Cp>La logique est la suivante : si Copilot (alimenté par les modèles OpenAI) vous cite fortement sur un topic, il est probable que d'autres systèmes AI — y compris ceux qui alimentent des réponses conversationnelles hors moteurs de recherche — vous citent aussi. C'est particulièrement vrai quand on sait que les \u003Ca href=\"/blog/how-ai-forms-opinions-about-your-brand\">opinions que l'AI se forge sur votre marque\u003C/a> dépendent de signaux structurels similaires.\u003C/p>\n\u003Cp>Le Citation Share de Bing devient un indicateur avancé de votre visibilité AI globale. Et contrairement aux outils tiers qui estiment cette visibilité avec des méthodologies opaques, ici ce sont les données first-party du moteur lui-même.\u003C/p>\n\u003Ch2>Auditer votre citabilité avec les outils existants\u003C/h2>\n\u003Cp>En attendant que les données Citation Share soient pleinement disponibles dans votre compte, vous pouvez déjà auditer les facteurs qui influencent la citabilité de vos contenus.\u003C/p>\n\u003Ch3>Screaming Frog : vérifier la structure sémantique à l'échelle\u003C/h3>\n\u003Cp>Lancez un crawl Screaming Frog en activant l'extraction personnalisée pour identifier les pages qui manquent de contenu structuré citable :\u003C/p>\n\u003Cpre>\u003Ccode># Configuration Screaming Frog - Custom Extraction\n# Mode : CSSPath\n\n# 1. Vérifier la présence de tableaux de données\ntable > thead                    # Extraction: \"Has Data Table\"\n\n# 2. Vérifier la présence de listes structurées \narticle ol, article ul           # Extraction: \"Has Structured List\"\n\n# 3. Vérifier la longueur du premier paragraphe après H2\narticle h2 + p                  # Extraction: \"First P After H2\"\n\n# 4. Détecter les Schema.org de type TechArticle/HowTo/FAQ\nscript[type=\"application/ld+json\"]  # Extraction: \"JSON-LD Content\"\n\n# Ensuite, filtrer dans l'export :\n# - Pages avec 0 tableaux ET 0 listes structurées = faible citabilité\n# - Pages avec JSON-LD vide ou de type basique = à enrichir\n# - Pages avec premier paragraphe &#x3C; 50 caractères = pas de contenu extractible\n\u003C/code>\u003C/pre>\n\u003Cp>Exportez les résultats et croisez-les avec vos données Bing Webmaster Tools. Les pages qui ont à la fois un trafic Bing et une faible structure sémantique sont vos quick wins pour améliorer le Citation Share.\u003C/p>\n\u003Ch3>Chrome DevTools : simuler ce que Copilot \"voit\"\u003C/h3>\n\u003Cp>Copilot n'exécute pas votre JavaScript côté client de la même manière que Googlebot. Pour vérifier que votre contenu est accessible au crawler de Bing :\u003C/p>\n\u003Col>\n\u003Cli>Ouvrez Chrome DevTools > Network > filtrez sur \u003Ccode>bingbot\u003C/code> dans les conditions de throttling\u003C/li>\n\u003Cli>Désactivez JavaScript complètement (Settings > Debugger > Disable JavaScript)\u003C/li>\n\u003Cli>Rechargez votre page\u003C/li>\n\u003C/ol>\n\u003Cp>Si votre contenu principal disparaît quand JavaScript est désactivé, vous avez un problème de SSR qui impacte directement votre citabilité. Les pages rendues côté client avec un \u003Ca href=\"/blog/lazy-load-du-hero-h1-dans-une-section-v-if-invisible-au-fetch-http-brut\">hero H1 dans une section conditionnelle\u003C/a> invisible au fetch HTTP brut ne seront jamais citées par Copilot.\u003C/p>\n\u003Cp>Vérifiez aussi avec un fetch direct :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Simuler le user-agent de BingBot et vérifier le contenu SSR\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">curl\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -s\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -A\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">  https://votre-site.fr/guide/choisir-sac-randonnee\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> grep\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -c\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"&#x3C;table\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Résultat attendu : >= 1 (au moins un tableau de données dans le HTML brut)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Si 0 : le tableau est rendu côté client, invisible pour BingBot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Vérifier que le contenu principal est dans le HTML initial\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">curl\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -s\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -A\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">  https://votre-site.fr/guide/choisir-sac-randonnee\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> grep\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -oi\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"&#x3C;h2[^>]*>.*&#x3C;/h2>\"\u003C/span>\u003Cspan style=\"color:#F97583\"> |\u003C/span>\u003Cspan style=\"color:#B392F0\"> head\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -5\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Comparer avec le nombre de H2 visibles dans le navigateur\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Si le curl retourne moins de H2, du contenu est rendu client-side uniquement\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>C'est un diagnostic basique mais redoutablement efficace. De nombreux sites en SSR partiel (Next.js avec des composants client, Nuxt avec \u003Ccode>v-if\u003C/code> sur des sections) servent un HTML initial appauvri aux crawlers — ce qui détruit leur citabilité AI.\u003C/p>\n\u003Ch2>Les limites et les questions ouvertes\u003C/h2>\n\u003Cp>Le Citation Share est une avancée significative, mais il faut garder un regard critique.\u003C/p>\n\u003Ch3>Ce que le Citation Share ne dit pas\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Pas de données de conversion\u003C/strong> : vous savez que vous êtes cité, mais vous ne savez pas si les utilisateurs qui voient la citation cliquent ensuite vers votre site. Le CTR post-citation n'est pas (encore) reporté.\u003C/li>\n\u003Cli>\u003Cstrong>Pas de granularité par URL\u003C/strong> : dans la version actuelle du dashboard, le Citation Share semble être reporté au niveau domaine, pas au niveau page individuelle. C'est une limite majeure pour l'optimisation granulaire.\u003C/li>\n\u003Cli>\u003Cstrong>Pas de corrélation avec le trafic\u003C/strong> : une hausse du Citation Share ne signifie pas nécessairement une hausse du trafic. Si Copilot répond complètement à la requête en citant votre source, l'utilisateur peut ne jamais visiter votre site.\u003C/li>\n\u003C/ul>\n\u003Ch3>Le risque de la \"citation sans clic\"\u003C/h3>\n\u003Cp>C'est le paradoxe central de l'AI search : être cité est bon pour la notoriété, mais peut réduire le trafic direct. Les \u003Ca href=\"/blog/what-ai-overview-click-data-reveals-about-consumer-search-behavior-5-strategic-insights-for-cmos-via-sejournal-gregjarboe\">données sur les comportements de clic dans les AI Overviews\u003C/a> de Google montrent que les taux de clic varient massivement selon l'intent. Les requêtes informationnelles simples génèrent peu de clics post-citation. Les requêtes transactionnelles et de comparaison en génèrent davantage.\u003C/p>\n\u003Cp>Votre stratégie de Citation Share doit donc être alignée avec vos objectifs business. Si votre modèle repose sur le trafic (display ads, affiliation), maximiser le Citation Share sur des requêtes informationnelles peut être contre-productif. Si votre modèle repose sur la notoriété de marque (SaaS, B2B), c'est un levier puissant.\u003C/p>\n\u003Ch3>La question du user-agent AI\u003C/h3>\n\u003Cp>Bing a été plus transparent que Google sur les \u003Ca href=\"/blog/your-next-ai-visitor-will-know-who-sent-it-via-sejournal-slobodanmanic\">visiteurs AI et leur identification\u003C/a>. Mais la question de la distinction entre le crawl classique de BingBot et le crawl spécifique pour l'alimentation de Copilot reste floue. Les deux utilisent le même user-agent. Côté serveur, vous ne pouvez pas (pour l'instant) distinguer un crawl destiné à l'index classique d'un crawl destiné à alimenter les réponses AI.\u003C/p>\n\u003Cp>Cela signifie que vous ne pouvez pas servir un contenu différent aux deux — ce qui est probablement voulu par Microsoft pour éviter le cloaking. Mais cela complique aussi le diagnostic quand vous voyez des patterns de crawl inhabituels.\u003C/p>\n\u003Ch2>Préparer votre stack de monitoring\u003C/h2>\n\u003Cp>Le déploiement du Citation Share marque un changement structurel dans la manière de mesurer la performance SEO. Les métriques traditionnelles (position, impressions, clics) restent nécessaires mais ne suffisent plus. Vous devez intégrer les métriques AI dans votre reporting.\u003C/p>\n\u003Cp>L'approche recommandée est de superposer trois couches de données :\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Bing Webmaster Tools\u003C/strong> : Citation Share, Intents, Topics (données first-party Bing)\u003C/li>\n\u003Cli>\u003Cstrong>Google Search Console\u003C/strong> : rapport AI Overviews quand il sera disponible (données first-party Google)\u003C/li>\n\u003Cli>\u003Cstrong>Monitoring technique continu\u003C/strong> : vérification automatisée que vos pages restent crawlables, que le SSR fonctionne, que les données structurées sont valides, que les meta ne disparaissent pas après un déploiement\u003C/li>\n\u003C/ol>\n\u003Cp>C'est sur cette troisième couche qu'un outil de monitoring comme Seogard prend tout son sens. Une régression SSR après un déploiement — un \u003Ca href=\"/blog/design-system-composant-heading-qui-rend-div-selon-la-prop-as-mal-configuree\">composant mal configuré\u003C/a> qui casse le rendu d'un H1, une \u003Ca href=\"/blog/yoast-seo-desactive-par-un-update-plugin-fallback-meta-vides-sur-80-du-blog\">mise à jour de plugin qui vide les meta\u003C/a> — peut faire chuter votre Citation Share en quelques jours sans que vous le remarquiez dans les métriques hebdomadaires.\u003C/p>\n\u003Cp>Le Citation Share de Bing est la première métrique AI actionable pour les SEO techniques. Elle ne remplace pas les fondamentaux, mais elle ajoute une dimension qui va devenir incontournable. Commencez par auditer la citabilité de vos pages clés, structurez vos contenus pour l'extraction, et mettez en place un monitoring qui détecte les régressions avant qu'elles n'impactent vos métriques AI.\u003C/p>\n\u003Cpre>\u003Ccode>\u003C/code>\u003C/pre>",null,12,[18,19,20,21,22],"bing","citation share","webmaster tools","AI search","SEO technique","Bing AI Citation Share : ce que ça change pour le SEO technique","Wed Jun 17 2026 06:03:17 GMT+0000 (Coordinated Universal Time)",[26,41,56,69,84,99],{"_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":39,"updatedAt":40},"6a30222eaa6b273b0ca1e7dc","what-ai-overview-click-data-reveals-about-consumer-search-behavior-5-strategic-insights-for-cmos-via-sejournal-gregjarboe","https://seogard.io/blog/what-ai-overview-click-data-reveals-about-consumer-search-behavior-5-strategic-insights-for-cmos-via-sejournal-gregjarboe","2026-06-15T16:02:54.519Z","2026-06-15","Les utilisateurs quotidiens d'AI Overview cliquent 3.5x plus sur les sources. Analyse technique des données et stratégies d'optimisation concrètes.",[34,35,36,37,38],"AI Overview","click data","search behavior","SGE","structured data","AI Overview Click Data : ce que les clics révèlent vraiment","Mon Jun 15 2026 16:02:54 GMT+0000 (Coordinated Universal Time)",{"_id":42,"slug":43,"__v":6,"author":7,"canonical":44,"category":10,"createdAt":45,"date":46,"description":47,"image":15,"imageAlt":15,"readingTime":16,"tags":48,"title":54,"updatedAt":55},"6a2e441caa6b273b0c22bc85","what-apple-s-gemini-powered-siri-means-for-search-visibility-via-sejournal-mattgsouthern","https://seogard.io/blog/what-apple-s-gemini-powered-siri-means-for-search-visibility-via-sejournal-mattgsouthern","2026-06-14T06:03:08.037Z","2026-06-14","Apple intègre Gemini dans Siri. Analyse technique des conséquences pour le crawl, le rendering, le structured data et la visibilité organique de vos pages.",[49,50,51,52,53],"siri","gemini","apple-intelligence","llm-seo","search-visibility","Siri + Gemini : impact concret sur la visibilité SEO","Sun Jun 14 2026 06:03:08 GMT+0000 (Coordinated Universal Time)",{"_id":57,"slug":58,"__v":6,"author":7,"canonical":59,"category":10,"createdAt":60,"date":61,"description":62,"image":15,"imageAlt":15,"readingTime":16,"tags":63,"title":67,"updatedAt":68},"6a2c2decaa6b273b0c6a5308","ai-overview-click-data-reveals-unexpected-user-behavior-patterns-for-marketers-via-sejournal-gregjarboe","https://seogard.io/blog/ai-overview-click-data-reveals-unexpected-user-behavior-patterns-for-marketers-via-sejournal-gregjarboe","2026-06-12T16:03:56.058Z","2026-06-12","Les utilisateurs quotidiens d'AI Overviews cliquent 3,5x plus sur les sources. Analyse technique des opportunités d'optimisation pour les sites à fort volume.",[64,35,65,66,38],"ai overview","seo technique","google search","AI Overviews : les données de clics révèlent un comportement inattendu","Fri Jun 12 2026 16:03:56 GMT+0000 (Coordinated Universal Time)",{"_id":70,"slug":71,"__v":6,"author":7,"canonical":72,"category":10,"createdAt":73,"date":74,"description":75,"image":15,"imageAlt":15,"readingTime":16,"tags":76,"title":82,"updatedAt":83},"6a2a4fa0aa6b273b0cdf1eab","schema-org-now-shows-you-how-many-sites-are-using-each-schema-type","https://seogard.io/blog/schema-org-now-shows-you-how-many-sites-are-using-each-schema-type","2026-06-11T06:03:12.448Z","2026-06-11","Schema.org expose désormais le nombre de sites utilisant chaque type. Analyse technique, requêtes SPARQL et stratégies pour exploiter ces données d'adoption.",[77,78,79,80,81],"schema","structured-data","schema.org","json-ld","seo-technique","Schema.org affiche l'adoption réelle de chaque type : exploitez ces données","Thu Jun 11 2026 06:03:12 GMT+0000 (Coordinated Universal Time)",{"_id":85,"slug":86,"__v":6,"author":7,"canonical":87,"category":10,"createdAt":88,"date":89,"description":90,"image":15,"imageAlt":15,"readingTime":91,"tags":92,"title":97,"updatedAt":98},"6a283936aa6b273b0c255fdd","how-ai-forms-opinions-about-your-brand","https://seogard.io/blog/how-ai-forms-opinions-about-your-brand","2026-06-09T16:03:02.486Z","2026-06-09","Construisez une empreinte numérique que les LLMs comprennent : structured data, entités, corpus de citations. Guide technique pour Lead SEO.",14,[93,94,38,95,96],"AI visibility","brand authority","LLM optimization","entity SEO","Comment l'IA se forge une opinion sur votre marque","Tue Jun 09 2026 16:03:02 GMT+0000 (Coordinated Universal Time)",{"_id":100,"slug":101,"__v":6,"author":7,"canonical":102,"category":10,"createdAt":103,"date":104,"description":105,"image":15,"imageAlt":15,"readingTime":16,"tags":106,"title":110,"updatedAt":111},"6a265b17aa6b273b0c9a6fff","your-next-ai-visitor-will-know-who-sent-it-via-sejournal-slobodanmanic","https://seogard.io/blog/your-next-ai-visitor-will-know-who-sent-it-via-sejournal-slobodanmanic","2026-06-08T06:03:03.429Z","2026-06-08","Les agents AI arrivent avec le contexte utilisateur. Comment adapter votre contenu pour rester utile face au blended retrieval.",[107,108,22,109,38],"AI agents","blended retrieval","crawl AI","AI Visitors contextuels : préparer vos pages au blended retrieval","Mon Jun 08 2026 06:03:03 GMT+0000 (Coordinated Universal Time)",{"categories":113},[114,117,121,125,129,132,136,138,141,145,149,152,154,158,161,164,167,170,174,177],{"category":10,"slug":115,"count":116},"actualites-seo",169,{"category":118,"slug":119,"count":120},"Migration","migration",18,{"category":122,"slug":123,"count":124},"Rendering","rendering",9,{"category":126,"slug":127,"count":128},"Performance","performance",8,{"category":130,"slug":131,"count":128},"Framework","framework",{"category":133,"slug":134,"count":135},"Crawl","crawl",7,{"category":137,"slug":81,"count":135},"SEO Technique",{"category":139,"slug":140,"count":135},"Meta Tags","meta-tags",{"category":142,"slug":143,"count":144},"Architecture","architecture",6,{"category":146,"slug":147,"count":148},"JavaScript SEO","javascript-seo",5,{"category":150,"slug":151,"count":148},"Monitoring","monitoring",{"category":153,"slug":78,"count":148},"Structured Data",{"category":155,"slug":156,"count":157},"Refonte","refonte",4,{"category":159,"slug":160,"count":157},"Redirections","redirections",{"category":162,"slug":163,"count":157},"Outils","outils",{"category":165,"slug":166,"count":157},"E-commerce","e-commerce",{"category":168,"slug":169,"count":157},"Avancé","avance",{"category":171,"slug":172,"count":173},"Contenu","contenu",3,{"category":175,"slug":176,"count":173},"Headless","headless",{"category":178,"slug":179,"count":173},"IA & SEO","ia-seo"]