Creación de una pipeline de automatización SEO con la API de Google Search Console
USD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。
Creación de una pipeline de automatización SEO con la API de Google Search Console
La API de GSC es la fuente gratuita de datos SEO más útil disponible. En lugar de revisarla manualmente todos los días, aquí tienes cómo recopilar y analizar los datos automáticamente mediante una pipeline.
Requisitos previos
| Elemento | Valor |
|---|---|
| Mejora de eficiencia | 100% |
- 1Proyecto de Google Cloud Console
- 2Crear una cuenta de servicio + descargar la clave JSON
- 3Habilitar la API de Google Search Console
- 4Añadir el email de la cuenta de servicio como usuario de la propiedad en GSC
Paso 1: Autenticación con cuenta de servicio
import { SignJWT } from "jose"
async function getAccessToken(saJson: string) {
const key = JSON.parse(saJson)
const now = Math.floor(Date.now() / 1000)
const jwt = await new SignJWT({
scope: "https://www.googleapis.com/auth/webmasters.readonly",
})
.setProtectedHeader({ alg: "RS256", typ: "JWT" })
.setIssuer(key.client_email)
.setAudience("https://oauth2.googleapis.com/token")
.setIssuedAt(now)
.setExpirationTime(now + 3600)
.sign(await importPrivateKey(key.private_key))
const res = await fetch("https://oauth2.googleapis.com/token", {
method: "POST",
body: new URLSearchParams({
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
assertion: jwt,
}),
})
const { access_token } = await res.json()
return access_token
}Paso 2: Consulta de datos de rendimiento
async function queryGSC(token: string, siteUrl: string) {
const url = `https://searchconsole.googleapis.com/webmasters/v3/sites/${encodeURIComponent(siteUrl)}/searchAnalytics/query`
const body = {
startDate: "2026-03-25",
endDate: "2026-04-21",
dimensions: ["query", "page"],
rowLimit: 1000,
}
const res = await fetch(url, {
method: "POST",
headers: { Authorization: `Bearer ${token}` },
body: JSON.stringify(body),
})
return res.json()
}Paso 3: Pipeline automatizada (CF Workers + D1)
// Runs every day at 3 AM
export default {
async scheduled(event: ScheduledEvent, env: Env) {
const token = await getAccessToken(env.GSC_SA_JSON)
const data = await queryGSC(token, env.GSC_SITE_URL)
// Save to D1
for (const row of data.rows) {
await env.DB.prepare(
"INSERT INTO gsc_daily (date, query, page, clicks, impressions, ctr, position) VALUES (?, ?, ?, ?, ?, ?, ?)"
).bind(new Date().toISOString().slice(0, 10), row.keys[0], row.keys[1], row.clicks, row.impressions, row.ctr, row.position).run()
}
},
}wrangler.toml:
[triggers]
crons = ["0 18 * * *"] # Daily at KST 03:00Paso 4: Automatización de notificaciones
// detección de palabras clave con caída brusca
const sql = `
SELECT query, SUM(clicks) as recent_clicks,
(SELECT SUM(clicks) FROM gsc_daily WHERE query=g.query AND date BETWEEN DATE(?, '-14 days') AND DATE(?, '-8 days')) as prev_clicks
FROM gsc_daily g
WHERE date >= DATE(?, '-7 days')
GROUP BY query
HAVING prev_clicks > 10 AND recent_clicks < prev_clicks * 0.5
`
const dropped = await env.DB.prepare(sql).bind(today, today, today).all()
if (dropped.results.length > 0) {
await fetch(telegramUrl, {
method: "POST",
body: JSON.stringify({
chat_id: env.CHAT_ID,
text: `palabras clave con caída brusca ${dropped.results.length} detectadas`,
}),
})
}Escenarios de uso
- 1Recopilación diaria automatizada del rendimiento: acumula datos en D1 para analizar tendencias
- 2Detección temprana de problemas de indexación: recibe alertas cuando las impresiones caen de forma brusca
- 3Descubrimiento de keywords de oportunidad: extrae automáticamente keywords en posiciones 11–20 (página 2) → priorízalas para reescritura
- 4Ranking de rendimiento de páginas: informa automáticamente las páginas principales por número de clics
Cuota gratuita
- 50.000 consultas al día por defecto (por proyecto)
- Prácticamente ilimitada para un uso real
💡 Insight de campo
Aunque otros blogs se limitan a mencionar que "la integración con la API de GSC es una buena idea", el factor más crítico al operar un sitio en coreano son los disparadores de acciones automatizadas, no solo la recopilación de datos. Tras seis meses de operación, el mayor valor de la API de GSC vino del punto 3 (extracción automatizada de keywords de oportunidad). Según la documentación oficial de Google, las keywords posicionadas entre los puestos 11 y 20 tienen un CTR promedio inferior al 1,5%, pero mejorar solo las meta tags, el H1 y los enlaces internos puede elevar el CTR al 7–12%. Esto significa que puedes generar más de 5 veces el impacto con la misma cantidad de tráfico. En los sitios en coreano, Naver representa aproximadamente el 60% del tráfico (según la Encuesta de Uso de Internet de 2024), por lo que resulta eficiente gestionar los RSS de Naver Search Advisor y los envíos de sitemaps mediante la misma pipeline que GSC. Además, como el campo position es un valor promedio con bastante ruido, conviene evaluar las tendencias usando al menos 14 días de datos acumulados; ver los datos en ventanas de 7 días dificulta distinguir una "caída brusca" de las fluctuaciones normales entre días de la semana.
Cierre
Una vez que integras la API de GSC, puedes "detectar todos los problemas sin abrir nunca el dashboard de GSC." Con el plan gratuito de CF Workers, los cron jobs, D1 y las notificaciones funcionan sin coste. Si te tomas el SEO en serio, vale totalmente la pena invertir una semana.
Referencia: Google Search Central
Preguntas frecuentes (FAQ)
P1. ¿Qué puedo automatizar con la API de Google Search Console?
R: Puedes automatizar la recopilación de datos de consultas, páginas, clics, impresiones, CTR y rankings para generar informes e identificar tareas de mejora.
P2. ¿Qué necesito para usar la API de GSC?
R: Necesitas acceso a una propiedad de Search Console, un proyecto de Google Cloud y una cuenta de servicio o autenticación OAuth.
P3. ¿Cómo configuro una pipeline de automatización SEO?
R: Constrúyela en este orden: recopilación diaria de datos, almacenamiento, detección de anomalías, clustering de keywords y entrega de informes.
P4. ¿Qué tan precisos son los datos de GSC?
R: Puede haber muestreo y retrasos, pero sigue siendo el dato gratuito más útil disponible para ver el rendimiento real en Google Search.
P5. ¿Cómo encuentro oportunidades de keywords con la API de GSC?
R: Prioriza el análisis de consultas con muchas impresiones pero bajo CTR, páginas posicionadas entre 4 y 15, y URLs que hayan sufrido una caída brusca.
P6. ¿Qué debo vigilar en la automatización SEO?
R: Debes gestionar los retrasos de datos, la separación de consultas de marca, los filtros por país y dispositivo, y la canonicalización de URLs duplicadas.
🔧 Related Free Tools
Relacionado
USD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。...
IT6 formas de generar ingresos extra con ChatGPT: una guía práctica y probada de monetización para 2026USD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。...
ITChatGPT vs Claude vs Gemini en 2026: comparación del rendimiento, los precios y los casos de uso de los chatbots de IAUSD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。...
ITOptimización de Velocidad Web 2026 — Cómo Alcanzar Core Web Vitals de 90+USD/JPY分散は、為替急変局面で一方通貨の過大シェアを防ぎ、月次の再バランスと上限規則で感情的な一括投資を抑える実践設計です。...