Dashboards inteligentes para SEO: Looker Studio + IA para detectar oportunidades antes que tu competencia
Cómo construir dashboards SEO con Looker Studio + IA que detectan caídas, oportunidades y patrones que un humano no vería. Con caso real y plantilla lista.
Un dashboard SEO sin IA es como un termómetro sin enfermero: te dice la temperatura pero no te dice qué hacer. Un dashboard con IA detecta patrones, predice problemas y recomienda acciones.
En este artículo te explico cómo construir dashboards SEO que no solo muestren datos, sino que detecten oportunidades antes que tu competencia y te avisen cuando algo va mal.
Si quieres el contexto completo, lee nuestro pilar MLOps aplicado a SEO: automatiza el keyword research y el monitoreo de contenido con IA y la guía de Pipeline de keyword research automatizado.
Qué debe tener un dashboard SEO moderno (no solo gráficos)
Dashboard viejo: muestra números. CTR, posiciones, clics. Dashboard moderno: muestra qué hacer al respecto.
5 elementos que separan un dashboard útil de uno decorativo:
- Estado actual: ¿estoy ganando o perdiendo tráfico?
- Anomalías: ¿algo cayó/subió de forma inesperada?
- Tendencias: ¿hacia dónde voy si nada cambia?
- Oportunidades: ¿qué keywords/content está listo para escalar?
- Acciones: ¿qué hago concretamente esta semana?
Insight: un dashboard sin acción es un reporte impreso que nadie lee. Cada métrica debe llevar a una decisión.
Arquitectura del dashboard con IA
FUENTES DE DATOS
├── Google Search Console (queries, páginas, posiciones)
├── Google Analytics 4 (tráfico, conversiones)
├── DataForSEO / Ahrefs / Semrush (SERP, backlinks)
└── Tu CMS / logs internos (publicación, refresh)
↓
PROCESAMIENTO IA (BigQuery + LLM)
├── Detección de anomalías (Isolation Forest, Prophet)
├── Predicción de tendencia (time series forecasting)
├── Análisis de oportunidades (LLM con embeddings)
└── Recomendaciones de acción (LLM con contexto)
↓
DASHBOARD (Looker Studio + alertas)
├── Visualizaciones (estado actual, tendencias)
├── Anomalías detectadas (en rojo, con alerta)
├── Top oportunidades (con plan de acción)
└── Recomendaciones semanales (vía Slack o email)
Paso 1: Conectar fuentes de datos
Necesitas 4 fuentes mínimo:
Google Search Console + GA4
Looker Studio se conecta directo (sin código):
- Crear nuevo reporte en Looker Studio
- Agregar fuente: Google Search Console
- Agregar fuente: Google Analytics 4
- Conectar (autorización OAuth)
DataForSEO / Ahrefs / Semrush
Opción A: API directa a BigQuery (con script Python).
Opción B: Looker Studio tiene conector nativo para algunos (Ahrefs vía partner connector).
Tu CMS / logs
Exportar CSV desde el CMS o usar la API (WordPress, Ghost, etc.).
Unificación en BigQuery
Para que Looker Studio pueda cruzar datos, deben estar en el mismo almacén:
from google.cloud import bigquery
import pandas as pd
client = bigquery.Client()
# Subir GSC a BigQuery
gsc_data.to_gbq('proyecto.dataset.gsc_data', if_exists='replace')
# Subir GA4
ga4_data.to_gbq('proyecto.dataset.ga4_data', if_exists='replace')
# Subir SERP data
serp_data.to_gbq('proyecto.dataset.serp_data', if_exists='replace')
Costo: BigQuery es gratis hasta 1TB de procesamiento/mes. Para dashboards de SEO pequeños, $0-$20/mes.
Paso 2: Las 6 visualizaciones mínimas
No necesitas 30 gráficos. Necesitas 6 visualizaciones que respondan preguntas concretas:
Visualización 1: Tráfico orgánico vs tiempo (línea)
Pregunta que responde: ¿estoy creciendo o cayendo en general?
Métrica: sesiones orgánicas por día (últimos 90 días)
Looker Studio: Gráfico de líneas con dimensión “Fecha” y métrica “Sesiones”
Bonus: línea de tendencia predicha por IA (Prophet) que muestra el forecast a 30 días.
Visualización 2: Top páginas por clics (tabla)
Pregunta: ¿qué páginas me están dando más tráfico?
Métrica: clics, impresiones, CTR, posición promedio
Looker Studio: Tabla con dimensión “Página” y métricas ordenable
Filtro útil: posición 4-20 (páginas que están cerca de subir a Top 3)
Visualización 3: Distribución de keywords por intención (pie)
Pregunta: ¿tengo balance entre contenido informativo, comercial y transaccional?
Métrica: % de tráfico por categoría de intención
Looker Studio: Pie chart con dimensión “Intención”
Valor: si 90% es informativo, falta contenido transaccional (que convierte mejor).
Visualización 4: CTR vs posición (scatter)
Pregunta: ¿hay páginas con CTR bajo para su posición (oportunidad de optimizar title/meta)?
Métrica: posición X CTR, con línea de “CTR esperado” según benchmarks
Looker Studio: Scatter plot
Insight: si tu CTR es 30% menor al esperado, tienes una oportunidad de optimización on-page.
Visualización 5: Anomalías detectadas (tabla con alertas)
Pregunta: ¿qué páginas/keywords tuvieron cambios inusuales en los últimos 7 días?
Métrica: cambio % en clics vs promedio 30 días
Looker Studio: Tabla con filtro “anomalía = sí”
Origen: tabla en BigQuery alimentada por Isolation Forest (ver paso 3).
Visualización 6: Top oportunidades de la semana (tabla)
Pregunta: ¿qué debería atacar esta semana?
Métrica: score combinado (volumen × competencia × relevancia × intención)
Looker Studio: Tabla ordenada por score, top 20
Origen: output del pipeline de keyword research automatizado.
Paso 3: Detección de anomalías con IA
El dashboard muestra “estado actual”. La IA detecta “qué cambió raro”.
from sklearn.ensemble import IsolationForest
import pandas as pd
import numpy as np
def detect_anomalies(df, metric_col='clicks', window=30):
"""Detecta anomalías comparando últimos 7 días vs promedio de los últimos 30 días."""
# Calcular promedio móvil
df['rolling_avg'] = df[metric_col].rolling(window=window).mean()
df['rolling_std'] = df[metric_col].rolling(window=window).std()
# Para cada keyword/página, calcular z-score
df['z_score'] = (df[metric_col] - df['rolling_avg']) / df['rolling_std']
# Marcar anomalías (z > 3 o z < -3)
df['is_anomaly'] = np.abs(df['z_score']) > 3
df['anomaly_type'] = df['z_score'].apply(
lambda z: 'SPIKE' if z > 3 else 'DROP' if z < -3 else 'NORMAL'
)
return df[df['is_anomaly']]
# Aplicar a GSC data
gsc_anomalies = detect_anomalies(gsc_data)
print(f"Encontradas {len(gsc_anomalies)} anomalías en los últimos 7 días")
Output: tabla con páginas/keywords que tuvieron cambios > 3 desviaciones estándar.
Paso 4: Predicción de tendencia
El dashboard muestra “hoy”. La IA predice “mañana”.
from prophet import Prophet
import pandas as pd
def forecast_traffic(historical_data, days_ahead=30):
"""Predice tráfico orgánico para los próximos N días."""
# Preparar datos para Prophet
df = historical_data.rename(columns={'date': 'ds', 'sessions': 'y'})[['ds', 'y']]
# Entrenar modelo
model = Prophet(
yearly_seasonality=True,
weekly_seasonality=True,
changepoint_prior_scale=0.05
)
model.fit(df)
# Predecir
future = model.make_future_dataframe(periods=days_ahead)
forecast = model.predict(future)
# Retornar solo el forecast futuro
return forecast.tail(days_ahead)[['ds', 'yhat', 'yhat_lower', 'yhat_upper']]
Uso en Looker Studio: agregar la predicción como segunda línea en el gráfico de tráfico.
Paso 5: Recomendaciones con LLM
El dashboard muestra “qué pasa”. La IA sugiere “qué hacer”.
def generate_recommendations(anomalies, top_opportunities):
"""Genera recomendaciones semanales con LLM."""
prompt = f"""Eres un experto en SEO. Analiza estos datos del último mes:
ANOMALÍAS DETECTADAS:
{anomalies.to_string()}
TOP OPORTUNIDADES DE KEYWORDS:
{top_opportunities.to_string()}
Genera 5 recomendaciones ACCIONABLES para esta semana:
- Qué hacer al respecto (específico)
- Por qué (causa probable)
- Quién debería hacerlo (escritor, dev, SEO)
- Cuándo (esta semana)
Formato: lista numerada, máximo 80 palabras por item."""
response = openai.chat.completions.create(
model="gpt-5-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0.3
)
return response.choices[0].message.content
recommendations = generate_recommendations(gsc_anomalies, top_opportunities)
Output: 5 acciones concretas para la semana.
Paso 6: Alertas automáticas a Slack
No quieres tener que mirar el dashboard. Las alertas importantes te llegan.
import requests
SLACK_WEBHOOK = 'https://hooks.slack.com/services/...'
def send_weekly_digest():
"""Cada lunes a las 9am, envía el resumen semanal."""
# Recolectar datos
anomalies = detect_anomalies(gsc_data)
opportunities = get_top_opportunities(limit=10)
recommendations = generate_recommendations(anomalies, opportunities)
# Formatear mensaje
message = f"""
*📊 Resumen SEO semanal*
*🚨 Anomalías ({len(anomalies)}):*
{format_anomalies(anomalies.head(5))}
*🎯 Top oportunidades:*
{format_opportunities(opportunities.head(5))}
*💡 Recomendaciones IA:*
{recommendations}
"""
requests.post(SLACK_WEBHOOK, json={"text": message})
Paso 7: Looker Studio en acción
Conectar Looker Studio a BigQuery:
- Ve a lookerstudio.google.com
- Crear nuevo reporte
- Agregar fuente: BigQuery
- Selecciona el proyecto y dataset
- Crear visualizaciones (los 6 gráficos de arriba)
Costo: Looker Studio es gratis (la versión básica). Solo pagas por BigQuery si procesas más de 1TB/mes.
Caso real: dashboard de SEO para ecommerce
Cliente: tienda de ropa online en Colombia con 5.000 productos Stack: GSC + GA4 + DataForSEO + BigQuery + Looker Studio + Slack
Dashboard implementado:
-
Vista ejecutiva (CEO ve esto):
- Tráfico orgánico vs mes anterior
- Ingresos atribuidos a SEO
- Top 5 oportunidades de la semana
- 3 recomendaciones con LLM
-
Vista operativa (equipo SEO ve esto):
- Top 100 keywords por oportunidad
- Anomalías detectadas en las últimas 24h
- Páginas con CTR bajo para su posición
- Distribución de keywords por intención
-
Alertas Slack:
- Lunes 9am: resumen semanal
- Diario 8am: anomalías significativas
- Bajo demanda: top 10 oportunidades
Resultado en 6 meses:
- Detección de caídas: de 15 días a menos de 24 horas
- Oportunidades detectadas y atacadas: 180 (vs 12 antes)
- Tráfico orgánico: +120%
- Tiempo del equipo SEO en “mirar datos”: -60%
Insight: el equipo pasó de revisar reportes a tomar decisiones. El dashboard no reemplazó el análisis humano, lo aceleró.
Los 4 errores comunes
❌ Poner demasiados gráficos — si tu dashboard tiene 30 visualizaciones, nadie lo mira. Máximo 6-8 vistas ejecutivas + 6-8 operativas.
❌ No conectar alertas — un dashboard sin notificaciones es como una alarma sin sonido. La mitad del valor está en las alertas.
❌ Mostrar todo en tiempo real — para SEO, datos diarios bastan. Tiempo real solo para alertas críticas.
❌ Ignorar la acción — cada métrica debe llevar a “¿qué hago?”. Si no, es vanity metric.
Checklist: ¿está listo tu dashboard?
Marca ✅ lo que ya tienes:
- Google Search Console conectado
- Google Analytics 4 conectado
- Datos de SERP/keywords de tu herramienta (Ahrefs/Semrush/DataForSEO)
- Datos en almacén unificado (BigQuery, PostgreSQL, etc.)
- 6 visualizaciones mínimas (tráfico, top páginas, intención, CTR vs posición, anomalías, oportunidades)
- Detección de anomalías automatizada (diario)
- Predicción de tendencia (semanal o mensual)
- Alertas a Slack/email cuando hay anomalías significativas
- Recomendaciones generadas con LLM (semanal)
- Top oportunidades actualizadas (semanal)
Puntaje:
- 0-3: estás empezando, está bien
- 4-7: tienes un dashboard funcional
- 8-10: tienes un dashboard inteligente
Cuándo NO vale la pena este dashboard
- < 50 artículos y < 1.000 visitas/mes: Looker Studio conectado a GSC directamente, sin IA
- Negocio nuevo sin histórico: necesitas 6 meses de datos antes de detectar patrones
- Sin equipo técnico: Looker Studio requiere configuración inicial. Si no hay quien lo mantenga, muere
Regla práctica: empieza con Looker Studio + GSC (gratis, 30 minutos). Agrega IA cuando el volumen justifique la inversión.
Siguiente paso
¿Quieres construir un dashboard SEO con IA para tu negocio? En Codify Tech diseñamos dashboards a medida. Hacemos una auditoría + prototipo donde te mostramos:
- Qué visualizaciones necesitas según tu tamaño
- Qué automatizaciones tienen sentido
- Arquitectura técnica recomendada
- Estimación de costos y tiempo
Sin compromiso. Sin venta forzada.
👉 Solicita tu auditoría de dashboard SEO o escríbenos a [email protected].
Otros artículos del cluster MLOps para SEO que te van a servir: