El problema
Es imposible realizar un seguimiento manual a escala de qué sitios web se citan en las descripciones generales de IA de Google. Cada palabra clave requiere una búsqueda por separado, leer la descripción general de la IA, anotar las fuentes citadas y registrar los datos en una hoja de cálculo. Para 200 palabras clave objetivo, esto requiere un día entero de trabajo manual y produce una instantánea que está obsoleta cuando se completa la hoja de cálculo. No hay seguimiento histórico, ni alertas cuando cambian las citas, ni forma de medir las tendencias de visibilidad GEO a lo largo del tiempo.
La solucion de Scavio
Cree una canalización automatizada utilizando el parámetro include_ai_overview de Scavio que consulta a Google para cada palabra clave objetivo, extrae datos de citas de descripción general de AI de la respuesta JSON estructurada, almacena instantáneas diarias y compara instantáneas anteriores para detectar cambios. La canalización se ejecuta diariamente a través de cron, cuesta $0,005/palabra clave/día y produce alertas cuando su dominio gana o pierde citas de AI Overview. Los datos históricos se acumulan automáticamente para el análisis de tendencias.
Antes
Antes de su lanzamiento, las auditorías GEO eran proyectos manuales trimestrales que requerían un día completo de trabajo por cada 200 palabras clave. No existían datos históricos, los cambios en las citas no se detectaron durante semanas y el equipo no pudo responder si la visibilidad GEO estaba mejorando o disminuyendo.
Después
Después de construir el canal, se realiza un seguimiento diario de la visibilidad de GEO en 500 palabras clave por $2,50 al día. Los cambios en las citas activan alertas de Slack dentro de las 24 horas. Los informes de tendencias mensuales muestran la tasa de citas, la frecuencia de citas de la competencia y la tasa de aparición de la descripción general de IA por grupo de palabras clave.
Para quien es
Equipos de SEO que rastrean las citas de AI Overview a escala. Los equipos de contenido miden si sus esfuerzos de optimización se traducen en visibilidad GEO. Agencias que ofrecen servicios de auditoría GEO a clientes.
Beneficios clave
- Seguimiento diario de citas de la descripción general de IA en cientos de palabras clave
- Alertas automáticas cuando las citas aparecen, desaparecen o cambian
- Series temporales históricas para el análisis de tendencias de visibilidad GEO
- Monitoreo de citas de la competencia junto con su propio dominio
- Costo total inferior a $75/mes para 500 palabras clave rastreadas diariamente
Ejemplo en Python
import requests
import json
from pathlib import Path
from datetime import datetime
API_KEY = "your_scavio_api_key"
MY_DOMAIN = "scavio.dev"
def audit_keyword(keyword: str) -> dict:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": keyword, "ai_overview": True},
timeout=15,
)
res.raise_for_status()
data = res.json()
ai = data.get("ai_overview")
return {
"keyword": keyword,
"has_ai_overview": ai is not None,
"citations": [c.get("source", "") for c in (ai or {}).get("citations", [])],
"my_domain_cited": any(MY_DOMAIN in c.get("source", "") for c in (ai or {}).get("citations", [])),
"ai_text_preview": (ai or {}).get("text", "")[:200],
}
def daily_audit(keywords: list[str]) -> dict:
results = [audit_keyword(kw) for kw in keywords]
date = datetime.utcnow().strftime("%Y-%m-%d")
report = {
"date": date,
"total_keywords": len(keywords),
"ai_overviews_present": sum(1 for r in results if r["has_ai_overview"]),
"my_domain_cited": sum(1 for r in results if r["my_domain_cited"]),
"results": results,
}
Path(f"geo_audit_{date}.json").write_text(json.dumps(report, indent=2))
return report
keywords = ["best search api", "serp api pricing", "google ai overview api"]
report = daily_audit(keywords)
print(f"AI Overviews: {report['ai_overviews_present']}/{report['total_keywords']}")
print(f"My domain cited: {report['my_domain_cited']} times")Ejemplo en JavaScript
const API_KEY = "your_scavio_api_key";
const MY_DOMAIN = "scavio.dev";
async function auditKeyword(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, ai_overview: true }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
const ai = data.ai_overview;
return {
keyword,
hasAiOverview: !!ai,
citations: (ai?.citations ?? []).map((c) => c.source ?? ""),
myDomainCited: (ai?.citations ?? []).some((c) => (c.source ?? "").includes(MY_DOMAIN)),
};
}
const keywords = ["best search api", "serp api pricing"];
const results = await Promise.all(keywords.map(auditKeyword));
const cited = results.filter((r) => r.myDomainCited).length;
console.log(`AI Overviews: ${results.filter((r) => r.hasAiOverview).length}/${keywords.length}`);
console.log(`My domain cited: ${cited} times`);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA