Aperçu
Les agences SEO doivent montrer à leurs clients si leur contenu apparaît dans les AI Overviews de Google, mais aucun outil de suivi de classement n'inclut les données AIO. Ce workflow vérifie quotidiennement les mots-clés des clients, extrait la présence des AI Overviews et les sources de citations, et génère un rapport avec les tendances. 100 mots-clés par client coûtent 0,50 $/jour (15 $/mois).
Déclencheur
Cron quotidien à 8h UTC.
Planification
Tous les jours à 8h UTC
Étapes du workflow
Charger les listes de mots-clés des clients
Lire les listes de mots-clés pour chaque client depuis la base de données. Chaque mot-clé possède un domaine cible et un niveau de priorité.
Vérifier la présence des AI Overviews
Pour chaque mot-clé, effectuer une recherche via Scavio et vérifier si un AI Overview est présent. Si oui, extraire les sources de citation.
Suivre les changements de citations
Comparer les citations d'aujourd'hui avec celles d'hier. Marquer les nouvelles citations, les citations perdues et les entrées de concurrents.
Générer le rapport client
Compiler un rapport par client avec le pourcentage de couverture AIO, la tendance des citations, les concurrents les plus cités et les nouvelles opportunités de citation.
Envoyer le rapport par e-mail ou via le tableau de bord
Publier le rapport dans le tableau de bord client ou l'envoyer sous forme de PDF personnalisé par e-mail.
Implémentation Python
import requests, os, json
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
def check_aio(keyword: str, target_domain: str) -> dict:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
json={"query": keyword, "country_code": "us"},
timeout=15,
)
data = resp.json()
aio = data.get("ai_overview")
return {
"keyword": keyword,
"date": str(date.today()),
"has_aio": aio is not None,
"target_cited": any(target_domain in (s.get("domain", "") or "") for s in (aio or {}).get("sources", [])),
"cited_sources": [(s.get("domain", ""), s.get("title", "")) for s in (aio or {}).get("sources", [])],
}
client_keywords = [
{"kw": "best crm for small business", "domain": "example.com"},
{"kw": "how to track seo rankings", "domain": "example.com"},
]
for item in client_keywords:
result = check_aio(item["kw"], item["domain"])
status = "CITED" if result["target_cited"] else ("AIO" if result["has_aio"] else "none")
print(f"[{status}] {item['kw']}")Implémentation JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function checkAio(keyword, targetDomain) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:keyword, country_code:'us'})});
const d = await r.json();
const aio = d.ai_overview;
return {keyword, hasAio:!!aio, targetCited:(aio?.sources||[]).some(s=>(s.domain||'').includes(targetDomain)), sources:(aio?.sources||[]).map(s=>s.domain)};
}
const keywords = [{kw:'best crm for small business',domain:'example.com'}];
for (const k of keywords) {
const r = await checkAio(k.kw, k.domain);
console.log((r.targetCited?'CITED':r.hasAio?'AIO':'none')+' '+k.kw);
}Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA