El problema
El análisis de brechas de contenido requiere comparar los rankings de palabras clave de tu sitio con los de los competidores para encontrar temas en los que ellos posicionan y tú no. Hacerlo manualmente en Ahrefs o Semrush funciona para un puñado de palabras clave, pero escalar a miles requiere planes empresariales costosos ($400+/mes) y horas de análisis manual. Los equipos terminan pagando demasiado por herramientas SEO o realizan el análisis de brechas con poca frecuencia para detectar oportunidades.
La solucion de Scavio
Construye un pipeline automatizado de análisis de brechas SERP usando el endpoint de Google de Scavio. Para cada palabra clave objetivo, verifica si tu dominio aparece en los primeros 20 resultados y qué dominios competidores posicionan. Agrega los datos de cientos de palabras clave para identificar brechas sistemáticas: palabras clave donde los competidores posicionan y tú no. Ejecútalo semanalmente para detectar nuevas oportunidades a medida que surgen.
Antes
Antes: Un equipo de contenido realizaba análisis de brechas trimestralmente usando Semrush a $400/mes. Cada análisis cubría 200 palabras clave y tomaba 4 horas de trabajo manual. Las brechas identificadas en enero no se abordaban hasta marzo, momento en que los competidores ya habían fortalecido sus posiciones.
Después
Después: Un pipeline automatizado ejecuta el análisis de brechas semanalmente para 500 palabras clave por $10/semana ($40/mes). Las nuevas brechas se detectan en 7 días desde que un competidor posiciona. El equipo de contenido aborda las brechas 4 veces más rápido que antes, gastando 10 veces menos en herramientas.
Para quien es
Estrategas de contenido y responsables de SEO que necesitan un análisis de brechas de contenido asequible y frecuente. Cualquiera que gaste $400+/mes en herramientas SEO empresariales principalmente para análisis de brechas.
Beneficios clave
- Analiza 500 palabras clave semanalmente por $40/mes vs $400/mes en herramientas SEO empresariales
- Detecta nuevos rankings de competidores en 7 días en lugar de trimestralmente
- Puntuación automatizada que prioriza brechas por volumen de búsqueda y fortaleza del competidor
- Análisis personalizado en cualquier conjunto de palabras clave sin limitaciones de herramientas
- Ahorra más de 4 horas semanales de trabajo manual de análisis de brechas
Ejemplo en 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")Ejemplo en 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`);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA