La optimización del motor de IA (AEO) se está volviendo esencial para las marcas que desean aparecer en las respuestas generadas por LLM. La métrica AEO más mensurable en 2026 es el seguimiento de citas de Google AI Overview: monitorear si sus páginas aparecen como fuentes citadas en los resúmenes generados por IA de Google. Este tutorial crea un rastreador automatizado que consulta diariamente las palabras clave objetivo, analiza las citas de AI Overview e informa su porcentaje de citas a lo largo del tiempo.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Una lista de palabras clave objetivo relevantes para su negocio
Guia paso a paso
Paso 1: Defina su lista de palabras clave y su dominio
Enumere las palabras clave que desea monitorear y el dominio para el que realiza el seguimiento de las citas.
import os
API_KEY = os.environ['SCAVIO_API_KEY']
MY_DOMAIN = 'yourdomain.com'
KEYWORDS = [
'best project management tool 2026',
'crm for small business',
'invoice software comparison',
'task management app reviews',
]Paso 2: Consulta el punto final de Google para cada palabra clave
Llame al punto final de búsqueda de Google de Scavio y analice la sección Descripción general de IA de cada respuesta.
import requests
def check_ai_overview(keyword: str) -> dict:
resp = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': keyword}, timeout=10)
data = resp.json()
ai_overview = data.get('ai_overview', {})
sources = ai_overview.get('sources', [])
cited = any(MY_DOMAIN in s.get('link', '') for s in sources)
return {
'keyword': keyword,
'has_ai_overview': bool(ai_overview),
'total_sources': len(sources),
'cited': cited,
'source_domains': [s.get('link', '').split('/')[2] for s in sources if '/' in s.get('link', '')]
}Paso 3: Busque todas las palabras clave y calcule el porcentaje de citas
Procese la lista completa de palabras clave y calcule qué porcentaje de descripciones generales de IA citan su dominio.
def run_aeo_report(keywords: list) -> dict:
results = [check_ai_overview(kw) for kw in keywords]
with_overview = [r for r in results if r['has_ai_overview']]
cited_count = sum(1 for r in with_overview if r['cited'])
return {
'total_keywords': len(keywords),
'with_ai_overview': len(with_overview),
'cited': cited_count,
'citation_share': round(cited_count / max(len(with_overview), 1) * 100, 1),
'details': results
}
report = run_aeo_report(KEYWORDS)
print(f'Citation share: {report["citation_share"]}% ({report["cited"]}/{report["with_ai_overview"]} AI Overviews)')Paso 4: Guarde informes diarios para conocer las tendencias
Almacene cada informe diario como un archivo JSON para que pueda realizar un seguimiento de los cambios en el porcentaje de citas a lo largo del tiempo.
import json, datetime
def save_daily_report(report: dict):
date = datetime.date.today().isoformat()
filename = f'aeo_report_{date}.json'
with open(filename, 'w') as f:
json.dump({'date': date, **report}, f, indent=2)
print(f'Saved to {filename}')
save_daily_report(report)Ejemplo en Python
import requests, os, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
DOMAIN = 'yourdomain.com'
def check_citations(keywords):
results = []
for kw in keywords:
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': kw}, timeout=10).json()
sources = data.get('ai_overview', {}).get('sources', [])
results.append({'keyword': kw, 'cited': any(DOMAIN in s.get('link', '') for s in sources)})
cited = sum(r['cited'] for r in results)
print(f'{cited}/{len(results)} keywords cite {DOMAIN}')
return resultsEjemplo en JavaScript
async function checkCitations(keywords, domain) {
const results = [];
for (const kw of keywords) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'google', query: kw})
}).then(r => r.json());
const sources = data.ai_overview?.sources || [];
results.push({keyword: kw, cited: sources.some(s => s.link?.includes(domain))});
}
return results;
}Salida esperada
A daily AEO citation report showing citation share percentage, which keywords have AI Overviews, and whether your domain appears as a cited source.