Saltar al contenido

/ APRENDEOPEN SOURCE[06/12]

Mis scripts open-source para Indexing API en batch

Cómo indexo 500 URLs/día sin tocar Search Console a mano. Scripts en Python, gotchas reales y por qué Google los procesa aunque oficialmente solo sea para JobPosting.

PROFESIONAL4 min lectura720 palabrasJesús Porres

La Indexing API de Google está oficialmente restringida a páginas de tipo JobPosting y BroadcastEvent. Eso es lo que dice la documentación. Lo que pasa en la práctica es que Google procesa cualquier URL que le mandes (con rate limit razonable) y, si la página es nueva y tiene contenido decente, la indexa entre 2 y 48 horas. Para clientes con sitemaps enormes (5k+ URLs) eso cambia la velocidad de cualquier migración o lanzamiento.

El stack mínimo

Una cuenta de servicio en Google Cloud con el rol «Owner» del Search Console del dominio, el SDK de Python de Google y una llave JSON. Nada más.

# requirements.txt
google-auth==2.30.0
google-auth-oauthlib==1.2.0
google-api-python-client==2.140.0

# Uso típico
python ping_urls.py urls.txt --rate-limit 30 --concurrency 4

El script recorre urls.txt, llama al endpoint publishing/indexing/v3/urlNotifications:publish con tipo URL_UPDATED para cada URL, respeta un rate limit razonable (yo uso 30 req/min) y registra la respuesta en un CSV local para auditoría.

Tres gotchas que aprendí por las malas

  • Cuota diaria real ≠ documentada. Google dice 200/día por proyecto. En la práctica acepta 600-800 con cuenta de servicio bien autorizada y vuelve a aceptar tras 24h si has tocado techo. No abuses: si te pasas dos días seguidos te tira un 429 que dura una semana.
  • El error 403 «Permission denied» casi siempre es de Search Console, no de la API. La cuenta de servicio tiene que estar añadida como «Owner» (no «Full») del dominio en Search Console. Es un menú escondido tres niveles dentro de la configuración.
  • URL_DELETED funciona, pero con matices. Si mandas URL_DELETED sobre una URL que todavía devuelve 200, Google ignora la petición. Tienes que asegurarte de que la URL ya devuelve 404 o 410 antes de mandar la notificación.

Cuándo merece la pena

No siempre. Para una web de 30 páginas, el sitemap normal y una petición de indexación manual por Search Console son suficientes. La Indexing API tiene sentido cuando:

  • Migración de dominio o cambio masivo de URLs (500+ a indexar de golpe).
  • Sitios con contenido nuevo diario (medios, portales de empleo, marketplaces).
  • Recuperación de URLs desindexadas tras un cambio técnico (canonical mal puesto, robots.txt accidental).

Los scripts están en mi GitHub público, bajo MIT. No son bonitos —son scripts de trabajo, con prints y todo— pero funcionan en producción todos los días. Si los usas y encuentras un edge case, mándame un PR; los reviso en menos de una semana.

[[ ¿RESUELVE TU CASO? ]]

Hablamos sin compromiso.

Diagnóstico inicial gratuito de treinta minutos. Te digo qué veo, qué cambiarías, y si tiene sentido o no que trabajemos juntos. Sin packs cerrados.

[email protected]

[ SEGUIR LEYENDO ]

Mis scripts open-source para Indexing API en batch — Jesús Porres · Jesús Porres