ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment suivre les citations dans les aperçus IA avec un budget limité
Tutoriel

Comment suivre les citations dans les aperçus IA avec un budget limité

Surveillez quels sites sont cités dans les aperçus IA de Google sans outils coûteux de suivi de position. Script Python utilisant une API de recherche à 0,005 $/requête.

Obtenez une clé API gratuiteDocumentation API

Les aperçus IA de Google apparaissent désormais pour une grande partie des requêtes informatives, et être cité dedans génère un trafic significatif. Les outils de suivi de position traditionnels facturent des centaines de dollars pour surveiller les citations dans les aperçus IA. Vous pouvez construire votre propre outil de suivi avec une API de recherche qui renvoie les données des aperçus IA dans sa réponse SERP. Ce tutoriel construit un pipeline de surveillance des citations qui vérifie vos mots-clés cibles, enregistre quels domaines sont cités et suit votre part de citations au fil du temps. Chaque vérification coûte 0,005 $ via l'API Scavio.

Prérequis

  • Python 3.9+ installé
  • Bibliothèque requests installée
  • Une clé API Scavio depuis scavio.dev
  • Une liste de mots-clés pour lesquels vous attendez des aperçus IA

Parcours

Étape 1: Vérifier si une requête déclenche un aperçu IA

Recherchez un mot-clé et vérifiez si la réponse SERP inclut une section d'aperçu IA. Toutes les requêtes n'en déclenchent pas, donc cette étape filtre votre liste de mots-clés.

Python
import requests, os

API_KEY = os.environ['SCAVIO_API_KEY']

def check_ai_overview(query: str) -> dict:
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
        json={'query': query, 'country_code': 'us'})
    data = resp.json()
    ai_overview = data.get('ai_overview', {})
    has_overview = bool(ai_overview and ai_overview.get('text'))
    citations = ai_overview.get('citations', []) if has_overview else []
    return {
        'query': query,
        'has_ai_overview': has_overview,
        'citation_count': len(citations),
        'cited_domains': [c.get('domain', '') for c in citations]
    }

result = check_ai_overview('what is the best crm for startups')
print(f'AI Overview: {result["has_ai_overview"]}, Citations: {result["citation_count"]}')

Étape 2: Vérifier les mots-clés par lot et trouver des modèles de citation

Parcourez votre liste de mots-clés et collectez les données de citation. Identifiez les domaines les plus fréquemment cités pour vos mots-clés cibles.

Python
import time
from collections import Counter

def batch_citation_check(keywords: list) -> dict:
    results = []
    domain_counts = Counter()
    for kw in keywords:
        data = check_ai_overview(kw)
        results.append(data)
        for domain in data['cited_domains']:
            domain_counts[domain] += 1
        time.sleep(0.3)
    return {
        'total_keywords': len(keywords),
        'with_ai_overview': sum(1 for r in results if r['has_ai_overview']),
        'top_cited_domains': domain_counts.most_common(10),
        'details': results
    }

keywords = [
    'what is the best crm for startups',
    'how to choose a crm 2026',
    'crm software comparison',
    'best free crm tools'
]
report = batch_citation_check(keywords)
print(f'{report["with_ai_overview"]}/{report["total_keywords"]} keywords have AI Overviews')

Étape 3: Suivre la part de citation de votre domaine

Calculez la fréquence à laquelle votre domaine apparaît dans les citations des aperçus IA par rapport aux concurrents. C'est votre part de voix dans les aperçus IA.

Python
def citation_share(report: dict, your_domain: str) -> dict:
    total_citations = sum(count for _, count in report['top_cited_domains'])
    your_citations = sum(count for domain, count in report['top_cited_domains']
                         if your_domain in domain)
    share = (your_citations / max(total_citations, 1)) * 100
    # Find keywords where you are cited
    your_keywords = [r['query'] for r in report['details']
                     if any(your_domain in d for d in r['cited_domains'])]
    # Find keywords where you are NOT cited
    missing_keywords = [r['query'] for r in report['details']
                        if r['has_ai_overview'] and
                        not any(your_domain in d for d in r['cited_domains'])]
    return {
        'your_domain': your_domain,
        'citation_share': round(share, 1),
        'your_citations': your_citations,
        'total_citations': total_citations,
        'cited_keywords': your_keywords,
        'missing_keywords': missing_keywords
    }

share = citation_share(report, 'yoursite.com')
print(f'Citation share: {share["citation_share"]}% ({share["your_citations"]}/{share["total_citations"]})')
print(f'Missing from: {share["missing_keywords"]}')

Étape 4: Stocker les données historiques pour le suivi des tendances

Enregistrez les données de citation quotidiennes pour suivre si vos efforts d'AEO (optimisation pour les réponses IA) portent leurs fruits au fil du temps. Un simple fichier JSON stocke la série temporelle.

Python
import json
from datetime import date

def save_citation_history(report: dict, your_domain: str) -> None:
    history_file = 'citation_history.json'
    try:
        with open(history_file) as f:
            history = json.load(f)
    except FileNotFoundError:
        history = []
    share = citation_share(report, your_domain)
    history.append({
        'date': date.today().isoformat(),
        'citation_share': share['citation_share'],
        'your_citations': share['your_citations'],
        'total_citations': share['total_citations'],
        'keywords_checked': report['total_keywords'],
        'keywords_with_overview': report['with_ai_overview']
    })
    with open(history_file, 'w') as f:
        json.dump(history, f, indent=2)
    print(f'Saved citation data for {date.today()}')
    if len(history) > 1:
        prev = history[-2]['citation_share']
        curr = share['citation_share']
        delta = curr - prev
        print(f'Trend: {prev}% -> {curr}% ({delta:+.1f}%)')

Étape 5: Calculer les coûts de surveillance

Budgétisez votre surveillance des aperçus IA en fonction du nombre de mots-clés et de la fréquence de vérification. Des vérifications quotidiennes de 100 mots-clés coûtent 15 $/mois.

Python
def monitoring_budget(num_keywords: int, checks_per_day: int = 1) -> dict:
    daily_credits = num_keywords * checks_per_day
    monthly_credits = daily_credits * 30
    monthly_cost = monthly_credits * 0.005
    return {
        'keywords': num_keywords,
        'daily_checks': checks_per_day,
        'monthly_credits': monthly_credits,
        'monthly_cost': f'${monthly_cost:.2f}',
        'plan': '$30/7K' if monthly_credits <= 7000
            else '$100/28K' if monthly_credits <= 28000
            else '$250/85K',
        'vs_semrush': f'Semrush Position Tracking: $139.95+/mo'
    }

for n in [50, 100, 500]:
    b = monitoring_budget(n)
    print(f'{b["keywords"]} keywords: {b["monthly_cost"]}/mo ({b["plan"]} plan)')
print(f'Comparison: Semrush starts at $139.95/mo for similar tracking')

Exemple Python

Python
import os, requests, time, json
from collections import Counter
from datetime import date

API_KEY = os.environ['SCAVIO_API_KEY']

def check_ai_overview(query):
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY, 'Content-Type': 'application/json'},
        json={'query': query, 'country_code': 'us'})
    data = resp.json()
    aio = data.get('ai_overview', {})
    citations = aio.get('citations', []) if aio.get('text') else []
    return {'query': query, 'has_aio': bool(aio.get('text')),
            'domains': [c.get('domain', '') for c in citations]}

def main():
    keywords = ['best crm startups', 'crm comparison 2026', 'free crm tools']
    domain_counts = Counter()
    for kw in keywords:
        result = check_ai_overview(kw)
        print(f'{"+AIO" if result["has_aio"] else "-AIO"} {kw}: {len(result["domains"])} citations')
        for d in result['domains']:
            domain_counts[d] += 1
        time.sleep(0.3)
    print(f'\nTop cited domains:')
    for domain, count in domain_counts.most_common(5):
        print(f'  {domain}: {count}')
    print(f'Cost: ${len(keywords) * 0.005:.3f}')

if __name__ == '__main__':
    main()

Exemple JavaScript

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;

async function checkAiOverview(query) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query, country_code: 'us' })
  });
  const data = await resp.json();
  const aio = data.ai_overview || {};
  return {
    query,
    hasAio: Boolean(aio.text),
    domains: (aio.citations || []).map(c => c.domain || '')
  };
}

async function main() {
  const keywords = ['best crm startups', 'crm comparison 2026'];
  const domainCounts = {};
  for (const kw of keywords) {
    const r = await checkAiOverview(kw);
    console.log(`${r.hasAio ? '+AIO' : '-AIO'} ${kw}: ${r.domains.length} citations`);
    r.domains.forEach(d => { domainCounts[d] = (domainCounts[d] || 0) + 1; });
  }
  console.log('Top domains:', Object.entries(domainCounts).sort((a,b) => b[1]-a[1]).slice(0,5));
}

main().catch(console.error);

Sortie attendue

JSON
+AIO what is the best crm for startups: 4 citations
+AIO how to choose a crm 2026: 3 citations
+AIO crm software comparison: 5 citations
-AIO best free crm tools: 0 citations

3/4 keywords have AI Overviews
Citation share: 8.3% (1/12)
Missing from: ['crm software comparison']

50 keywords: $7.50/mo ($30/7K plan)
100 keywords: $15.00/mo ($30/7K plan)
500 keywords: $75.00/mo ($100/28K plan)

Tutoriels associés

  • Comment construire un tableau de bord AEO d'agence avec une API de recherche
  • Comment effectuer des vérifications de classement SEO par lot la nuit avec une API
  • Comment remplacer la consommation de crédits API Semrush par une alternative légère

Questions fréquentes

La plupart des développeurs terminent ce tutoriel en 15 à 30 minutes. Vous aurez besoin d'une clé API Scavio (l'offre gratuite suffit) et d'un environnement Python ou JavaScript fonctionnel.

Python 3.9+ installé. Bibliothèque requests installée. Une clé API Scavio depuis scavio.dev. Une liste de mots-clés pour lesquels vous attendez des aperçus IA. Une clé API Scavio vous donne 50 crédits gratuits à l'inscription.

Oui. L'offre gratuite comprend 50 crédits à l'inscription, ce qui est largement suffisant pour terminer ce tutoriel et prototyper une solution fonctionnelle.

Scavio dispose d'un package natif LangChain (langchain-scavio), d'un serveur MCP et d'une API REST simple qui fonctionne avec tout client HTTP. Ce tutoriel utilise the raw REST API, mais vous pouvez l'adapter à votre framework de prédilection.

Ressources connexes

Use Case

Suivi des citations AI Overview

Read more
Workflow

Workflow de vérification de la confiance des citations AI Overview

Read more
Best Of

Meilleurs traceurs de citations AI Overview en 2026

Read more
Solution

Surveillance des citations dans les AI Overviews

Read more
Use Case

Suivi des citations IA vs classements Google

Read more
Glossary

Suivi des citations AI Overview

Read more

Commencer

Surveillez quels sites sont cités dans les aperçus IA de Google sans outils coûteux de suivi de position. Script Python utilisant une API de recherche à 0,005 $/requête.

Obtenez une clé API gratuiteLire la documentation
ScavioScavio

API de recherche en temps réel pour agents IA. Recherchez sur toutes les plateformes, pas seulement Google.

Produit

  • Fonctionnalités
  • Tarifs
  • Tableau de bord
  • Affiliés

Développeurs

  • Documentation
  • Référence API
  • Démarrage rapide
  • Intégration MCP
  • SDK Python

Alternatives

  • Alternative à Tavily
  • Alternative à SerpAPI
  • Alternative à Firecrawl
  • Alternative à Exa

Outils

  • Formateur JSON
  • cURL vers code
  • Compteur de jetons
  • Tous les outils

© 2026 Scavio. Tous droits réservés.

Featured on TAAFT
Conditions d'utilisationPolitique de confidentialité