La plupart des équipes de contenu écrivent d'abord et vérifient le potentiel de classement plus tard, perdant des heures sur des articles qui ne peuvent pas se classer. Un contrôle Scavio pré-écriture de 60 secondes révèle la difficulté SERP, la présence de l'AI Overview et l'écart d'autorité de domaine avant de commencer. Ce tutoriel intègre ce contrôle dans votre processus éditorial.
Prérequis
- Python 3.10+
- Une clé API Scavio
- Un titre d'article proposé ou un mot-clé cible
Parcours
Étape 1: Interroger le mot-clé cible
Extraire SERP + AI Overview.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def pre_check(keyword):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': keyword, 'include': ['ai_overview', 'paa']})
return r.json()Étape 2: Noter l'autorité du top 10
Compter les domaines DR>50 dans le top 10. Nombre élevé = SERP difficile.
HIGH_AUTH = {'wikipedia.org', 'forbes.com', 'techcrunch.com', 'nytimes.com'}
def authority_score(results):
top10 = results.get('organic_results', [])[:10]
return sum(1 for r in top10 if any(d in r['link'] for d in HIGH_AUTH))Étape 3: Vérifier la présence de l'AI Overview
Si une synthèse existe déjà, le classement est plus difficile mais précieux pour le GEO.
def has_overview(r):
return bool(r.get('ai_overview'))Étape 4: Rapporter une décision go/no-go
Règles pratiques intégrées dans un scorer de 30 lignes.
def verdict(r):
auth = authority_score(r)
if auth >= 6: return 'NO-GO: top 10 dominated by DR>50'
if auth >= 4: return 'MAYBE: hard but possible with unique angle'
return 'GO: top 10 has room'Étape 5: Ajouter à votre CMS éditorial
Déposer la décision sur chaque nouveau ticket de brouillon.
# Notion/Linear webhook example:
POST /webhook { "verdict": "MAYBE", "keyword": "..." }Exemple Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
HIGH = {'wikipedia.org', 'forbes.com', 'techcrunch.com'}
def check(kw):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': kw, 'include': ['ai_overview']}).json()
top = r.get('organic_results', [])[:10]
auth = sum(1 for x in top if any(d in x['link'] for d in HIGH))
return {'authority_count': auth, 'ai_overview': bool(r.get('ai_overview')), 'verdict': 'NO-GO' if auth >= 6 else 'GO'}
print(check('how to build an ai agent'))Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const HIGH = ['wikipedia.org', 'forbes.com', 'techcrunch.com'];
export async function check(kw) {
const r = 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: kw, include: ['ai_overview'] })
});
const d = await r.json();
const top = (d.organic_results || []).slice(0, 10);
const auth = top.filter(x => HIGH.some(h => x.link.includes(h))).length;
return { authority_count: auth, ai_overview: !!d.ai_overview, verdict: auth >= 6 ? 'NO-GO' : 'GO' };
}Sortie attendue
Per-keyword verdict in under 5 seconds. Typical team saves 20-40 hours/month skipping no-go topics.