Un e-commerce de 12 000 pages maintient ses positions moyennes à 4.2 dans Search Console. Pourtant, le trafic organique chute de 23 % en six mois. Le coupable : les AI Overviews captent l'attention au-dessus du fold, les Product Packs aspirent les clics transactionnels, et les rich results historiques (FAQ) ont disparu. Le ranking n'a pas bougé. La visibilité réelle, si.
Le ranking classique est un indicateur cassé
Pendant 20 ans, le SEO s'est construit sur une métrique simple : la position dans les résultats organiques. Position 1, 2, 3 — le reste découlait mécaniquement. Ce modèle reposait sur une hypothèse implicite : les 10 liens bleus occupent la quasi-totalité de la viewport visible.
Cette hypothèse est fausse depuis 2024, et elle est devenue dangereuse en 2026.
L'inflation des SERP features
Une requête transactionnelle comme "chaussures trail Gore-Tex" génère aujourd'hui, selon le device et la localisation, une combinaison de : AI Overview (souvent déplié sur 400-600px de hauteur), Product Packs avec images et prix, People Also Ask, vidéos YouTube en carousel, et — parfois — des liens organiques classiques. Le premier lien bleu apparaît régulièrement sous le fold sur mobile.
Le problème technique est clair : la "position 1" organiqe ne correspond plus à un emplacement physique fixe dans la page. Deux requêtes avec la même position moyenne peuvent avoir des CTR radicalement différents selon les features affichées au-dessus.
Pourquoi la position moyenne de Search Console ment
Google Search Console rapporte la position moyenne du lien organique, pas la position visuelle dans la viewport. Un site en position 3 avec un AI Overview déplié au-dessus se retrouve visuellement en position 8 ou 9 en termes de pixels scrollés. Search Console ne fait aucune distinction.
Pour quantifier ce décalage, vous pouvez extraire les données GSC via l'API et les croiser avec la présence de SERP features par requête :
import requests
import json
# Extraction des données GSC via l'API
def get_gsc_data(site_url, access_token, start_date, end_date):
endpoint = f"https://www.googleapis.com/webmasters/v3/sites/{site_url}/searchAnalytics/query"
payload = {
"startDate": start_date,
"endDate": end_date,
"dimensions": ["query", "page"],
"rowLimit": 5000,
"dimensionFilterGroups": [{
"filters": [{
"dimension": "country",
"expression": "fra"
}]
}]
}
headers = {"Authorization": f"Bearer {access_token}"}
response = requests.post(endpoint, headers=headers, json=payload)
rows = response.json().get("rows", [])
# Identifier les requêtes à fort décalage position/CTR
anomalies = []
for row in rows:
position = row["position"]
ctr = row["ctr"]
clicks = row["clicks"]
impressions = row["impressions"]
# CTR attendu pour la position (courbe historique approximative)
expected_ctr = estimate_expected_ctr(position)
if ctr < expected_ctr * 0.5 and impressions > 100:
anomalies.append({
"query": row["keys"][0],
"page": row["keys"][1],
"position": round(position, 1),
"ctr": round(ctr * 100, 2),
"expected_ctr": round(expected_ctr * 100, 2),
"ctr_deficit": round((1 - ctr / expected_ctr) * 100, 1),
"lost_clicks": round(impressions * (expected_ctr - ctr))
})
return sorted(anomalies, key=lambda x: x["lost_clicks"], reverse=True)
def estimate_expected_ctr(position):
# Courbe CTR/position pré-AI Overviews (données internes)
ctr_curve = {1: 0.28, 2: 0.15, 3: 0.11, 4: 0.08, 5: 0.06,
6: 0.045, 7: 0.035, 8: 0.03, 9: 0.025, 10: 0.02}
pos_rounded = min(max(round(position), 1), 10)
return ctr_curve.get(pos_rounded, 0.015)
Ce script identifie les requêtes où votre CTR réel est inférieur de 50 % ou plus au CTR attendu pour la position. Le champ lost_clicks quantifie le manque à gagner. Sur un site de 12 000 pages avec 800 000 impressions mensuelles, ce type d'analyse révèle généralement entre 15 000 et 40 000 clics "fantômes" — des clics que votre position devrait théoriquement générer mais qui sont captés par les SERP features au-dessus.
Cartographier les AI Overviews : scraping et détection
Pour tracker votre visibilité dans les AI Overviews, la première étape est de détecter quelles requêtes déclenchent une AI Overview et si votre domaine y est cité. Google ne fournit aucune donnée native sur ce sujet dans Search Console (à la date de publication).
Détection automatisée des AI Overviews
Les outils de rank tracking premium (Semrush, Ahrefs, Advanced Web Ranking) ont ajouté le tracking des AI Overviews dans leurs interfaces. Mais pour un contrôle granulaire sur vos propres requêtes prioritaires, un scraping ciblé reste nécessaire.
L'AI Overview injecte du contenu dans un conteneur identifiable dans le DOM. La structure varie, mais le pattern suivant permet une détection fiable :
// Script Puppeteer pour détecter les AI Overviews et extraire les sources citées
const puppeteer = require('puppeteer');
async function detectAIOvierviewForQuery(query, gl = 'fr', hl = 'fr') {
const browser = await puppeteer.launch({
headless: 'new',
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
const page = await browser.newPage();
// User-agent mobile (les AI Overviews apparaissent plus souvent sur mobile)
await page.setUserAgent(
'Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 ' +
'(KHTML, like Gecko) Chrome/125.0.0.0 Mobile Safari/537.36'
);
const searchUrl = `https://www.google.com/search?q=${encodeURIComponent(query)}&gl=${gl}&hl=${hl}`;
await page.goto(searchUrl, { waitUntil: 'networkidle2', timeout: 30000 });
// Attendre le rendu complet (les AI Overviews chargent de manière asynchrone)
await page.waitForTimeout(3000);
// Détection de l'AI Overview via les sélecteurs connus
const aiOverviewData = await page.evaluate(() => {
// Sélecteurs multiples : Google modifie régulièrement le DOM
const selectors = [
'[data-sgrd="true"]', // AI Overview container (2025+)
'#m-x-content', // Ancien conteneur SGE
'[jsname="N760b"]', // Variante récente
'div[data-attrid="wa:/description"]' // Fallback
];
let container = null;
for (const sel of selectors) {
container = document.querySelector(sel);
if (container) break;
}
if (!container) return { hasAIOverview: false };
// Extraire les liens sources cités dans l'AI Overview
const sourceLinks = Array.from(container.querySelectorAll('a[href]'))
.map(a => ({
url: a.href,
domain: new URL(a.href).hostname,
anchorText: a.textContent.trim()
}))
.filter(l => !l.url.includes('google.com'));
// Mesurer la hauteur du bloc AI Overview
const rect = container.getBoundingClientRect();
return {
hasAIOverview: true,
height: Math.round(rect.height),
sourceCount: sourceLinks.length,
sources: sourceLinks,
textLength: container.textContent.length
};
});
await browser.close();
return { query, ...aiOverviewData };
}
// Exécution sur un batch de requêtes prioritaires
async function batchDetect(queries) {
const results = [];
for (const q of queries) {
const result = await detectAIOvierviewForQuery(q);
results.push(result);
// Rate limiting pour éviter les CAPTCHAs
await new Promise(r => setTimeout(r, 5000 + Math.random() * 5000));
}
return results;
}
Attention : ce type de scraping viole les ToS de Google. En production, utilisez les APIs des outils de rank tracking ou les données de SERPs fournies par des providers comme DataForSEO ou ValueSERPs. Le script ci-dessus illustre la mécanique de détection pour comprendre ce que ces outils font sous le capot.
Construire un score de SERP visibility composite
La position organique seule est insuffisante. Un score de visibilité SERP composite doit intégrer :
- Position organique pondérée par le CTR réel (pas le CTR théorique)
- Présence dans l'AI Overview : cité comme source, oui/non, et rang parmi les sources
- Présence dans les SERP features : Product Packs, featured snippets, People Also Ask
- Pixel position : la position en pixels du premier élément visible lié à votre domaine
La disparition des FAQ rich results — un changement que Google a officialisé — illustre parfaitement pourquoi un scoring statique ne fonctionne pas. Un site qui comptait sur les FAQ pour occuper de l'espace visuel dans les SERPs a vu sa "visibility footprint" chuter sans aucun changement de ranking.
Mesurer votre présence dans les réponses IA : au-delà de Google
La visibilité dans l'AI Search ne se limite pas aux AI Overviews de Google. Bing avec ses réponses Copilot, ChatGPT avec sa navigation web, Perplexity, et les intégrations IA dans les navigateurs — chaque canal a sa propre logique de sélection de sources.
Le grounding : le nouveau facteur de visibilité
Le concept de "grounding" — la manière dont les LLMs ancrent leurs réponses dans des sources web — est fondamental pour comprendre la visibilité IA. Bing a explicitement décrit comment le grounding diffère de l'indexation traditionnelle. Un contenu peut être indexé sans jamais servir de source de grounding, et inversement.
Pour tracker votre visibilité dans ces canaux IA, vous devez interroger directement les APIs ou les interfaces :
# Script bash pour tracker les mentions de votre domaine dans Perplexity
# via leur API (nécessite une clé API Pro)
DOMAIN="votredomaine.fr"
QUERIES_FILE="queries_prioritaires.txt"
OUTPUT_FILE="ai_visibility_$(date +%Y%m%d).json"
echo "[" > $OUTPUT_FILE
while IFS= read -r query; do
# Appel API Perplexity
RESPONSE=$(curl -s -X POST "https://api.perplexity.ai/chat/completions" \
-H "Authorization: Bearer $PERPLEXITY_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"model\": \"llama-3.1-sonar-large-128k-online\",
\"messages\": [{
\"role\": \"user\",
\"content\": \"$query\"
}],
\"return_citations\": true
}")
# Extraire les citations et vérifier la présence du domaine
CITATIONS=$(echo $RESPONSE | jq -r '.citations // []')
DOMAIN_CITED=$(echo $CITATIONS | jq "[.[] | select(contains(\"$DOMAIN\"))] | length")
TOTAL_CITATIONS=$(echo $CITATIONS | jq 'length')
echo "{\"query\": \"$query\", \"domain_citations\": $DOMAIN_CITED, \"total_citations\": $TOTAL_CITATIONS, \"cited\": $([ $DOMAIN_CITED -gt 0 ] && echo true || echo false)}," >> $OUTPUT_FILE
sleep 2
done < "$QUERIES_FILE"
# Fermer le JSON
sed -i '$ s/,$//' $OUTPUT_FILE
echo "]" >> $OUTPUT_FILE
echo "Résultats sauvegardés dans $OUTPUT_FILE"
echo "Taux de citation: $(jq '[.[] | select(.cited == true)] | length' $OUTPUT_FILE)/$(jq 'length' $OUTPUT_FILE) requêtes"
Ce script génère un rapport quotidien de votre taux de citation dans les réponses Perplexity. En le combinant avec un tracking similaire sur Bing Copilot et les AI Overviews de Google, vous obtenez une vue trilatérale de votre visibilité IA.
Le problème est la multiplicité des couches à surveiller. Comme le souligne cet article sur les trois couches distinctes de la visibilité IA, traiter l'AI visibility comme un problème unique est une erreur structurelle. Il y a la couche d'indexation, la couche de grounding, et la couche de présentation — et vos leviers sont différents à chaque étage.
Scénario concret : un média de 8 000 pages face à l'érosion invisible
Prenons un cas réaliste. Un média spécialisé dans la tech grand public publie 8 000 articles actifs. En janvier 2026, les métriques GSC montrent :
- Impressions : 2.1M/mois (stable)
- Position moyenne : 6.8 (stable, voire en légère amélioration)
- Clics : 145 000/mois (en baisse de 18 % vs. janvier 2025)
- CTR moyen : 6.9 % (en baisse, était à 8.4 %)
Le diagnostic classique dirait : "les positions sont stables, le CTR baisse probablement à cause de la saisonnalité". Le diagnostic réel est tout autre.
Analyse par cluster de requêtes
En segmentant les requêtes par type d'intent et par présence de SERP features, le tableau change :
Requêtes informationnelles (60 % du volume) : AI Overviews présents sur 72 % d'entre elles. Le CTR passe de 9.1 % à 4.8 % en un an. Sur ces requêtes, le média est cité dans l'AI Overview dans seulement 11 % des cas — alors qu'il ranke dans le top 5 sur 45 % d'entre elles. La majorité du contenu est "consommée" via l'AI Overview sans clic.
Requêtes comparatives ("meilleur smartphone 2026", "X vs Y") : Google affiche systématiquement un AI Overview avec un tableau comparatif. Le média avait historiquement un featured snippet sur 30 % de ces requêtes — ce snippet est désormais remplacé par l'AI Overview dans la moitié des cas.
Requêtes de test/review : les Product Packs apparaissent en haut de SERP. Google traite désormais ces packs comme un canal de vente primaire, repoussant les avis éditoriaux sous le fold.
Plan d'action mis en oeuvre
L'équipe SEO du média a implémenté une stratégie en trois axes :
1. Restructuration du contenu pour le grounding IA
Les articles comparatifs ont été restructurés avec des données tabulaires balisées en <table> sémantique + schema.org ItemList. L'hypothèse : les LLMs extraient plus facilement des données structurées pour alimenter leurs réponses, augmentant la probabilité de citation.
2. Suivi quotidien de la "share of AI voice"
Un dashboard Looker Studio agrège quotidiennement :
- Le taux de citation dans les AI Overviews (via un outil tiers de tracking SERP)
- Le ranking dans la liste des sources de l'AI Overview (source #1, #2, #3)
- Le delta entre CTR attendu et CTR réel par cluster de requêtes
3. Optimisation du contenu pour les requêtes où l'AI Overview cite des concurrents
Pour chaque requête prioritaire où un concurrent est cité dans l'AI Overview mais pas le média, une analyse du contenu concurrent est menée. Les patterns identifiés : réponses directes dans les 100 premiers mots, données factuelles récentes (dates, prix, specs), et structure claire en headings imbriqués.
Après 4 mois, les résultats : le taux de citation dans les AI Overviews passe de 11 % à 24 %. Le CTR global remonte à 7.8 %. Les clics mensuels se stabilisent à 138 000, soit une récupération partielle mais significative.
Les métriques que Google ne vous donne pas (et comment les construire)
Search Console ne fournit ni la présence dans les AI Overviews, ni la pixel position, ni la "share of SERP" de votre domaine. Vous devez construire ces métriques vous-même ou les obtenir via des outils tiers.
Pixel position et "above-the-fold rate"
La pixel position — la distance en pixels entre le haut de la SERP et votre premier résultat visible — est la métrique la plus corrélée au CTR réel en 2026. Un résultat en position organique 1 qui apparaît à 800px du haut (sous un AI Overview de 600px + un bandeau ads de 200px) performe comme un résultat en position 4-5 d'une SERP sans features.
Construire cette métrique en interne exige du scraping de SERPs avec mesure du DOM. Les outils comme Semrush Sensor et Advanced Web Ranking commencent à exposer cette donnée, mais de manière limitée.
Share of SERP : combien d'espace visuel vous occupez
La métrique "share of SERP" mesure le pourcentage de la viewport SERP occupé par votre domaine, toutes features confondues. Si votre domaine apparaît dans un lien organique en position 3 ET dans la section sources de l'AI Overview ET dans un People Also Ask, votre share of SERP est significativement supérieure à celle d'un concurrent qui n'a qu'un lien en position 2.
Le calcul conceptuel :
Share of SERP = (Pixels occupés par votre domaine / Pixels totaux de la SERP visible) × 100
Cette métrique est difficile à automatiser à grande échelle, mais elle peut être approximée en combinant les données de ranking organique, de présence dans les SERP features, et de citation dans les AI Overviews.
Tracking de la perception de marque dans les réponses IA
Un aspect souvent négligé : les AI Overviews et les réponses Copilot/ChatGPT ne citent pas seulement votre contenu — ils reformulent vos informations, parfois de manière déformée. Des données montrent que les AI Overviews exposent des avis négatifs sans intent correspondant de l'utilisateur.
Pour une marque e-commerce, cela signifie qu'un avis négatif isolé peut être extrait et présenté comme la réponse principale à une requête de marque. Tracker cette dimension exige de monitorer non seulement si vous êtes cité, mais comment vous êtes représenté dans les réponses IA.
De la même manière, la propagation d'informations négatives depuis Wikipedia vers les réponses IA démontre que la qualité de vos sources upstream (Wikipedia, forums, sites d'avis) impacte directement votre représentation dans l'AI Search. Le tracking de visibilité SERP doit intégrer cette couche de perception.
Adapter l'audit technique à la visibilité IA
L'audit technique SEO classique vérifie l'indexabilité, le maillage, la vitesse, les canonicals. L'audit technique pour l'ère AI Search ajoute des dimensions spécifiques : la crawlabilité par les bots IA (GPTBot, Bingbot pour Copilot, PerplexityBot), la structure sémantique du contenu pour le grounding, et la fraîcheur des données structurées.
Vérifier l'accès des bots IA à votre contenu
Un point technique que beaucoup de sites négligent : bloquer GPTBot dans robots.txt empêche OpenAI de crawler votre contenu, mais cela ne vous rend pas invisible dans ChatGPT — ChatGPT peut s'appuyer sur le cache Bing. En revanche, bloquer les bots IA réduit la probabilité d'être utilisé comme source de grounding pour les réponses récentes.
Vérifiez votre configuration robots.txt :
# Vérification dans les logs serveur : quels bots IA crawlent votre site ?
# Commande pour extraire les bots IA des access logs Nginx
grep -E "(GPTBot|ChatGPT-User|PerplexityBot|ClaudeBot|Applebot-Extended|Google-Extended)" \
/var/log/nginx/access.log \
| awk '{print $1, $14}' \
| sort | uniq -c | sort -rn | head -20
# Résultat typique :
# 4521 66.249.x.x "Google-Extended"
# 2103 20.15.x.x "GPTBot/1.2"
# 891 52.0.x.x "PerplexityBot/1.0"
# 234 18.x.x.x "ClaudeBot/1.0"
# Vérifier votre robots.txt actuel pour les bots IA
curl -s https://votredomaine.fr/robots.txt | grep -i -E "(gptbot|perplexity|claude|google-extended)"
Si vous ne voyez aucun crawl de ces bots, vérifiez que vous ne les bloquez pas involontairement via un Disallow global ou via Cloudflare/votre WAF.
JavaScript et visibilité IA
Les sites en SPA (React, Vue, Angular) qui dépendent du rendu client posent un problème spécifique pour la visibilité IA. Les bots IA, contrairement à Googlebot, n'exécutent pas toujours le JavaScript. Un contenu rendu uniquement côté client peut être invisible pour GPTBot et PerplexityBot.
Les leçons JavaScript SEO tirées des grands sites e-commerce s'appliquent avec encore plus de force dans le contexte IA. Le SSR n'est plus seulement une bonne pratique pour Google — c'est une condition nécessaire pour exister dans l'écosystème IA au sens large.
Construire un tableau de bord de SERP visibility actionnable
Un dashboard efficace pour 2026 doit présenter cinq couches de données :
Couche 1 — Ranking organique classique : positions GSC par cluster de requêtes, évolution hebdomadaire. C'est la base, mais ce n'est plus suffisant.
Couche 2 — CTR réel vs attendu : le script Python présenté plus haut. Chaque requête où le delta dépasse 40 % est un signal d'alerte.
Couche 3 — Présence AI Overview : pourcentage de vos requêtes top 100 qui déclenchent une AI Overview, et pourcentage de ces AI Overviews où votre domaine est cité. Données issues de votre outil de rank tracking.
Couche 4 — Visibilité multi-canal IA : taux de citation dans Perplexity, Bing Copilot, ChatGPT Search. Données issues d'un tracking hebdomadaire sur vos 50-100 requêtes prioritaires.
Couche 5 — Perception de marque IA : monitoring du sentiment et de la précision des informations vous concernant dans les réponses IA. C'est le plus difficile à automatiser mais potentiellement le plus impactant, surtout pour les marques e-commerce exposées aux avis négatifs amplifiés par les AI Overviews.
Google publie régulièrement des mises à jour sur les liens dans les AI Overviews. Les récentes évolutions des liens dans le mode AI montrent une tendance à exposer davantage de sources — une opportunité pour les sites qui optimisent pour le grounding. Suivre ces évolutions et adapter votre tracking en conséquence est un processus continu, pas un projet ponctuel.
La détection automatique de ces changements — une meta canonical qui disparaît, un SSR qui casse, un bloc de contenu structuré qui ne s'affiche plus — est exactement le type de régression qu'un outil de monitoring comme Seogard détecte en temps réel, avant que l'impact sur votre visibilité SERP ne devienne visible dans vos métriques hebdomadaires.
Le ranking est mort comme métrique unique. La visibilité SERP est un composite multidimensionnel qui exige des outils, des scripts, et surtout une compréhension technique de ce que chaque couche mesure réellement. Les équipes SEO qui construisent cette infrastructure de mesure aujourd'hui auront un avantage structurel sur celles qui continuent à reporter une position moyenne de 4.2 en réunion de direction.