Hay pocas cosas más tediosas en SEO que armar el reporte mensual. Abres Search Console, exportas datos, los pegas en Sheets, haces las fórmulas, ajustas los gráficos… y al mes siguiente, todo de nuevo. ¿Y si te dijera que puedes automatizar el 90% de ese proceso?
Con Python, la API de Search Console y la librería gspread, puedes crear un script que haga todo eso por ti. Se ejecuta, extrae los datos, los formatea y los pone en tu Google Sheet listo para compartir. Así de simple.
¿Por qué automatizar reportes SEO?
No es solo por ahorrarte tiempo (que también). Es porque:
- Reduces errores humanos — copiar y pegar datos entre herramientas es una receta para equivocarse
- Tienes consistencia — el reporte siempre tiene la misma estructura, las mismas métricas
- Liberas tiempo para análisis — en vez de gastar 2 horas armando el reporte, gastas 2 horas interpretándolo
- Puedes escalar — si manejas 5 clientes, no quieres armar 5 reportes manualmente cada mes
Qué necesitas
El stack es sencillo:
- Python 3 — si no lo tienes, instálalo con Homebrew (Mac) o desde python.org
- google-auth + google-api-python-client — para conectarte a la API de Search Console
- gspread + oauth2client — para escribir en Google Sheets
- Una cuenta de servicio en Google Cloud — gratis, te toma 5 minutos configurarla
Paso 1: Configura la cuenta de servicio
Ve a Google Cloud Console, crea un proyecto nuevo (o usa uno existente), habilita las APIs de Search Console y Google Sheets, y crea una cuenta de servicio. Descarga el archivo JSON con las credenciales.
Luego comparte tu Google Sheet con el email de la cuenta de servicio (el que termina en @*.iam.gserviceaccount.com). Esto le da permiso de escritura.
Paso 2: El script básico
Aquí va la estructura del script. No es código listo para copiar-pegar, sino la lógica que necesitas implementar:
# 1. Autenticación
# Carga las credenciales del JSON de la cuenta de servicio
# Conecta con la API de Search Console y con gspread
# 2. Extrae datos de Search Console
# Define el sitio, rango de fechas (últimos 28 días)
# Pide métricas: clicks, impressions, ctr, position
# Agrupa por: query, page, o ambos
# 3. Procesa los datos
# Calcula totales, promedios, comparaciones MoM
# Identifica top queries, top pages, mayores caídas
# 4. Escribe en Google Sheets
# Abre la spreadsheet por ID o nombre
# Limpia la hoja de datos crudos
# Escribe los nuevos datos con headers
# Actualiza la hoja de resumen con totales
# 5. (Opcional) Envía notificación
# Un email, un mensaje de Slack, lo que prefieras
Paso 3: Programa la ejecución
Con el script funcionando, puedes programarlo para que se ejecute automáticamente:
- En Mac/Linux: un cron job que corra el script el primer lunes de cada mes
- En la nube: Google Cloud Functions + Cloud Scheduler (gratis en el free tier)
- Low-code: GitHub Actions con un workflow programado
Lo que puedes incluir en el reporte
Una vez que tienes el pipeline, puedes agregar lo que quieras:
- Resumen de métricas principales (clics, impresiones, CTR, posición promedio)
- Comparación mes a mes con variación porcentual
- Top 20 queries por clics
- Top 20 páginas por clics
- URLs con mayor caída de CTR
- Keywords nuevas que entraron al top 10
Empieza simple
Mi consejo: no intentes automatizar todo desde el día uno. Empieza con un script que extraiga las métricas básicas y las ponga en una hoja. Una vez que eso funcione, ve agregando capas: comparaciones MoM, alertas, gráficos automáticos.
La automatización no es un proyecto de un día. Es un proceso iterativo. Pero cada iteración te ahorra horas. Y esas horas las puedes invertir en lo que realmente importa: analizar los datos y tomar decisiones.