L'optimisation des moteurs d'IA (AEO) devient essentielle pour les marques souhaitant apparaître dans les réponses générées par les LLM. La métrique AEO la plus mesurable en 2026 est le suivi des citations dans les aperçus IA de Google : surveiller si vos pages apparaissent comme sources citées dans les résumés générés par l'IA de Google. Ce tutoriel construit un suivi automatisé qui interroge vos mots-clés cibles quotidiennement, analyse les citations des aperçus IA et rapporte votre part de citations au fil du temps.
Prérequis
- Python 3.8+ installé
- bibliothèque requests installée
- Une clé API Scavio depuis scavio.dev
- Une liste de mots-clés cibles pertinents pour votre entreprise
Parcours
Étape 1: Définissez votre liste de mots-clés et votre domaine
Listez les mots-clés que vous souhaitez surveiller et le domaine pour lequel vous suivez les citations.
import os
API_KEY = os.environ['SCAVIO_API_KEY']
MY_DOMAIN = 'yourdomain.com'
KEYWORDS = [
'best project management tool 2026',
'crm for small business',
'invoice software comparison',
'task management app reviews',
]Étape 2: Interrogez le point de terminaison Google pour chaque mot-clé
Appelez le point de terminaison de recherche Google de Scavio et analysez la section Aperçu IA de chaque réponse.
import requests
def check_ai_overview(keyword: str) -> dict:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': keyword}, timeout=10)
data = resp.json()
ai_overview = data.get('ai_overview', {})
sources = ai_overview.get('sources', [])
cited = any(MY_DOMAIN in s.get('link', '') for s in sources)
return {
'keyword': keyword,
'has_ai_overview': bool(ai_overview),
'total_sources': len(sources),
'cited': cited,
'source_domains': [s.get('link', '').split('/')[2] for s in sources if '/' in s.get('link', '')]
}Étape 3: Exécutez sur tous les mots-clés et calculez la part de citations
Traitez la liste complète des mots-clés et calculez le pourcentage d'aperçus IA qui citent votre domaine.
def run_aeo_report(keywords: list) -> dict:
results = [check_ai_overview(kw) for kw in keywords]
with_overview = [r for r in results if r['has_ai_overview']]
cited_count = sum(1 for r in with_overview if r['cited'])
return {
'total_keywords': len(keywords),
'with_ai_overview': len(with_overview),
'cited': cited_count,
'citation_share': round(cited_count / max(len(with_overview), 1) * 100, 1),
'details': results
}
report = run_aeo_report(KEYWORDS)
print(f'Citation share: {report["citation_share"]}% ({report["cited"]}/{report["with_ai_overview"]} AI Overviews)')Étape 4: Enregistrez les rapports quotidiens pour suivre les tendances
Stockez chaque rapport quotidien sous forme de fichier JSON afin de pouvoir suivre l'évolution de la part de citations au fil du temps.
import json, datetime
def save_daily_report(report: dict):
date = datetime.date.today().isoformat()
filename = f'aeo_report_{date}.json'
with open(filename, 'w') as f:
json.dump({'date': date, **report}, f, indent=2)
print(f'Saved to {filename}')
save_daily_report(report)Exemple Python
import requests, os, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
DOMAIN = 'yourdomain.com'
def check_citations(keywords):
results = []
for kw in keywords:
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': kw}, timeout=10).json()
sources = data.get('ai_overview', {}).get('sources', [])
results.append({'keyword': kw, 'cited': any(DOMAIN in s.get('link', '') for s in sources)})
cited = sum(r['cited'] for r in results)
print(f'{cited}/{len(results)} keywords cite {DOMAIN}')
return resultsExemple JavaScript
async function checkCitations(keywords, domain) {
const results = [];
for (const kw of keywords) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'google', query: kw})
}).then(r => r.json());
const sources = data.ai_overview?.sources || [];
results.push({keyword: kw, cited: sources.some(s => s.link?.includes(domain))});
}
return results;
}Sortie attendue
A daily AEO citation report showing citation share percentage, which keywords have AI Overviews, and whether your domain appears as a cited source.