El problema
Las auditorías manuales de SEO verifican la clasificación de las palabras clave, la presencia de la descripción general de la IA y las posiciones de la competencia, una palabra clave a la vez. Auditar 50 palabras clave lleva entre 2 y 3 horas. Los resultados ya están desactualizados en el momento en que se entrega el informe.
La solucion de Scavio
Un script de Python o un agente de Claude Code consulta la API de Scavio para cada palabra clave, extrae posiciones para su dominio y competidores, verifica la presencia de AI Overview y genera un informe de auditoría de rebajas en minutos.
Antes
El consultor SEO abre Google para cada una de las 50 palabras clave. Registra la posición manualmente. Comprueba si aparece la descripción general de AI. Estima las posiciones de la competencia. Escribe informe en Google Docs. Total: 3 horas por sitio por auditoría.
Después
El script busca 50 palabras clave a través de API, extrae la posición de su dominio, las posiciones de la competencia y el estado general de AI para cada una. Genera una tabla de rebajas y un plan de acción en menos de 5 minutos.
Para quien es
Consultores de SEO, equipos de SEO internos y agencias que realizan auditorías periódicas de palabras clave y desean eliminar la recopilación manual de datos.
Beneficios clave
- 50 palabras clave auditadas en menos de 5 minutos
- Presencia de descripción general de IA y detección de citas incluidas
- Comparación de la posición de los competidores en el mismo pase
- Repetible y programable: se ejecuta semanalmente
Ejemplo en Python
import requests
from datetime import date
API_KEY = "your-scavio-api-key"
def audit_keyword(keyword: str, your_domain: str, competitor_domains: list = []) -> dict:
r = requests.post(
"https://api.scavio.dev/api/v1/search",
json={"query": keyword, "include_ai_overview": True, "num_results": 20},
headers={"x-api-key": API_KEY}, timeout=20
)
r.raise_for_status()
data = r.json()
results = data.get("organic_results", [])
your_pos = next((i+1 for i, res in enumerate(results) if your_domain in res.get("link","")), None)
comp_pos = {d: next((i+1 for i, res in enumerate(results) if d in res.get("link","")), None) for d in competitor_domains}
ao = data.get("ai_overview")
aio_cited = bool(ao and any(your_domain in s.get("link","") for s in ao.get("sources", [])))
return {"keyword": keyword, "your_position": your_pos, "competitors": comp_pos, "has_aio": bool(ao), "aio_cited": aio_cited}
# Example
result = audit_keyword("project management software", "yoursite.com", ["asana.com", "monday.com"])
print(result)Ejemplo en JavaScript
async function auditKeyword(keyword, yourDomain, competitors = []) {
const res = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': 'your-scavio-api-key' },
body: JSON.stringify({ query: keyword, include_ai_overview: true, num_results: 20 })
});
const data = await res.json();
const results = data.organic_results ?? [];
const yourPos = results.findIndex(r => r.link?.includes(yourDomain)) + 1 || null;
const ao = data.ai_overview;
return { keyword, yourPos, hasAio: !!ao, aioCited: (ao?.sources ?? []).some(s => s.link?.includes(yourDomain)) };
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA