Le problème
L'analyse des écarts de contenu nécessite de comparer les classements de mots-clés de votre site à ceux de vos concurrents pour trouver des sujets qu'ils classent mais que vous ne classez pas. Le faire manuellement dans Ahrefs ou Semrush fonctionne pour une poignée de mots-clés, mais passer à l'échelle de milliers de mots-clés nécessite des plans entreprise coûteux (400 $+/mois) et des heures d'analyse manuelle. Les équipes paient soit trop cher pour des outils SEO, soit effectuent l'analyse des écarts trop rarement pour saisir les opportunités.
La solution Scavio
Construisez un pipeline automatisé d'analyse des écarts SERP en utilisant le point de terminaison Google de Scavio. Pour chaque mot-clé cible, vérifiez si votre domaine apparaît dans les 20 premiers résultats et quels domaines concurrents se classent. Agréguez sur des centaines de mots-clés pour identifier les écarts systématiques : les mots-clés où les concurrents se classent et vous non. Exécutez-le chaque semaine pour saisir les nouvelles opportunités dès qu'elles émergent.
Avant
Avant : Une équipe de contenu effectuait une analyse des écarts trimestrielle avec Semrush à 400 $/mois. Chaque analyse couvrait 200 mots-clés et nécessitait 4 heures de travail manuel. Les écarts identifiés en janvier n'étaient traités qu'en mars, moment où les concurrents avaient renforcé leurs positions.
Après
Après : Un pipeline automatisé exécute une analyse des écarts chaque semaine sur 500 mots-clés pour 10 $/semaine (40 $/mois). Les nouveaux écarts sont signalés dans les 7 jours suivant le classement d'un concurrent. L'équipe de contenu comble les écarts 4 fois plus rapidement qu'avant, tout en dépensant 10 fois moins en outils.
À qui cela s'adresse
Stratèges de contenu et responsables SEO qui ont besoin d'une analyse des écarts de contenu fréquente et abordable. Toute personne dépensant 400 $+/mois pour des outils SEO entreprise principalement pour l'analyse des écarts.
Avantages clés
- Analysez 500 mots-clés par semaine pour 40 $/mois contre 400 $/mois pour les outils SEO entreprise
- Détectez les nouveaux classements concurrents en 7 jours au lieu de trimestriellement
- Le score automatisé priorise les écarts en fonction du volume de recherche et de la force des concurrents
- Analyse personnalisée sur n'importe quel ensemble de mots-clés sans limitations d'outils
- Économisez 4+ heures de travail d'analyse manuelle des écarts par semaine
Exemple Python
import requests
from collections import defaultdict
API_KEY = "your_scavio_api_key"
MY_DOMAIN = "mysite.com"
COMPETITORS = ["competitor-a.com", "competitor-b.com"]
def analyze_gap(keyword: str) -> dict:
r = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": keyword},
timeout=10,
)
data = r.json()
rankings = {}
for item in data.get("organic", [])[:20]:
domain = item.get("link", "").split("/")[2] if "link" in item else ""
if domain == MY_DOMAIN:
rankings["me"] = item["position"]
for comp in COMPETITORS:
if comp in domain:
rankings[comp] = item["position"]
is_gap = "me" not in rankings and any(c in rankings for c in COMPETITORS)
return {"keyword": keyword, "rankings": rankings, "is_gap": is_gap}
keywords = ["search api for ai agents", "llm grounding api", "structured serp data"]
gaps = []
for kw in keywords:
result = analyze_gap(kw)
if result["is_gap"]:
gaps.append(result)
print(f"GAP: {result["keyword"]} (competitors rank: {result["rankings"]})")
print(f"\nFound {len(gaps)} content gaps from {len(keywords)} keywords")Exemple JavaScript
const API_KEY = "your_scavio_api_key";
const MY_DOMAIN = "mysite.com";
const COMPETITORS = ["competitor-a.com", "competitor-b.com"];
async function analyzeGap(keyword) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query: keyword }),
});
const data = await res.json();
const rankings = {};
for (const item of (data.organic || []).slice(0, 20)) {
const domain = item.link ? new URL(item.link).hostname : "";
if (domain === MY_DOMAIN) rankings.me = item.position;
for (const comp of COMPETITORS) {
if (domain.includes(comp)) rankings[comp] = item.position;
}
}
const isGap = !rankings.me && COMPETITORS.some(c => c in rankings);
return { keyword, rankings, isGap };
}
const keywords = ["search api for ai agents", "llm grounding api", "structured serp data"];
const gaps = [];
for (const kw of keywords) {
const result = await analyzeGap(kw);
if (result.isGap) {
gaps.push(result);
console.log(`GAP: ${result.keyword} (competitors rank: ${JSON.stringify(result.rankings)})`);
}
}
console.log(`\nFound ${gaps.length} content gaps from ${keywords.length} keywords`);Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA