Indexación automática de blogs: indexación en menos de 30 minutos promedio mediante el envío simultáneo a 5 canales de Google, Bing y RSS

5 min read · 1,187 words

Consejos prácticos / SEO / Python y automatización
Aprox. 2400 caracteres

Cuando se publica una entrada de blog, Google suele tardar entre una hora y varios días en pasar a rastrearla. Durante ese tiempo, el artículo no aparece en las búsquedas. Nosotros redujimos este tiempo de un promedio de 4 horas a solo 30 minutos enviando un ping simultáneo a 5 canales inmediatamente después de la publicación. A continuación, explicamos cómo lo desarrollamos, qué impacto tuvo y cómo lo validamos.

Por qué lo creamos

Tras acumular cerca de 200 artículos, observamos el mismo patrón. Durante las primeras 24 horas posteriores a la publicación, el artículo no se indexaba, lo que significaba que, para efectos prácticos, nuestro texto no existía en la web durante ese tiempo. Solo después de ser indexado comienza a aparecer en los resultados de búsqueda y a generar tráfico.

Hacer clic manualmente en la herramienta de inspección de URL de Google Search Console cada vez también se convertía en una carga pesada si sumábamos esos 30 segundos adicionales por artículo. Bing ofrece un protocolo gratuito de indexación instantánea llamado IndexNow; si no se aprovecha, el tiempo de indexación en Bing se prolonga aún más. Tampoco hay tiempo para enviar pings manualmente a los agregadores de RSS (como Google PubSubHubbub, FeedBurner, etc.).

Por ello, desarrollamos un módulo que, al finalizar la publicación, envía automáticamente un ping simultáneo a 5 canales y recopila las respuestas en un solo lugar.

Cómo funciona

Al final de la cadena de hooks de publish_post, se invoca un disparador de indexación. Este disparador realiza llamadas simultáneas a los siguientes 5 canales:

  1. IndexNow (Bing + Yandex): Envía una petición POST con la URL del artículo al endpoint de IndexNow. El tiempo de respuesta suele ser inferior a 200 ms. Bing añade la URL a su cola de rastreo en un plazo de 5 a 30 minutos.
  2. Google Indexing API: Llama a urlNotificationMetadata.publish. Aunque originalmente está diseñada para ofertas de empleo (Job Posting) y transmisiones en vivo (Livestream), la aprovechamos para notificar nuevos artículos. La respuesta tarda menos de 1 segundo. Google rastrea el sitio mucho más rápido en comparación con otros dominios en el mismo periodo de tiempo.
  3. Inspección de URL en Google Search Console: Realiza un sondeo (polling) del estado de indexación mediante urlInspection.index.inspect. Si se recibe la respuesta "URL desconocida", llama automáticamente a la "Solicitud de indexación" de GSC.
  4. RSS PubSubHubbub: Envía un ping con hub.mode=publish&hub.url={feed_url} al concentrador PubSubHubbub de Google. Se propaga a Google Reader y a todos los suscriptores de RSS en menos de 30 segundos.
  5. submitUrl de Bing Webmaster: De forma independiente a IndexNow, también se llama a la antigua API submitUrl de Bing (como una red de seguridad doble).

Las 5 llamadas se inician simultáneamente (asyncio.gather) y cada respuesta se guarda en indexer_log.json. Si algún canal falla, se vuelve a intentar automáticamente tras un tiempo de enfriamiento (cooldown).

Impacto real

  • Tiempo promedio de indexación: 4 horas → 30 minutos (reducción del 90%)
  • Tasa de indexación en Bing (dentro de las 24 horas posteriores a la publicación): 22% → 87%
  • Número de veces que hicimos clic en "Solicitud de indexación" en la interfaz de GSC: 41 veces acumuladas → 0 veces tras la implementación
  • Límite diario de la Google Indexing API (200): Nunca se superó (distribuido mediante procesamiento por lotes automático y tiempos de enfriamiento)
  • Frecuencia de notificaciones de Discord: Una sola línea con el resultado de los 5 canales inmediatamente después de publicar. "indexing: google ok / bing ok / rss ok / inspect indexed / submit ok"

Aunque las cifras parezcan modestas, ahorrar 30 segundos por cada artículo publicado equivale a 100 minutos acumulados en 200 artículos. Además, al acelerar la indexación, el tráfico de búsqueda comienza a acumularse mucho más rápido en las etapas iniciales.

Método de validación

Comparamos directamente la indexación manual con la automática.

Comparación de indexación A/B (sesiones 28~30): Dividimos aleatoriamente en dos grupos 28 artículos publicados durante 4 semanas. El Grupo A pasó por el indexador automático, mientras que el Grupo B no (solo se usó GSC de forma manual). Registramos el tiempo de indexación en minutos mediante la inspección de URL de GSC después de la publicación.

Una diferencia evidente. El Grupo A fue, en promedio, 9 veces más rápido. Además, la tasa de indexación dentro de las primeras 24 horas fue más del doble.

Verificación independiente de Bing: Comparación de 12 artículos antes y 12 después de aplicar IndexNow. La tasa de indexación en Bing dentro de las 24 horas pasó del 22% al 87%. Aunque el tráfico de búsqueda en coreano desde Bing por sí solo es bajo, no hay razón para no implementar IndexNow, ya que es gratuito.

Comportamiento de reintento ante fallos: Desconectamos intencionalmente el acceso a internet al publicar para forzar el estado de fallo en los 5 canales. Luego, tras restaurar la conexión, verificamos si se realizaba el reintento automático dentro del tiempo de enfriamiento de 1 hora. Los 5 de 5 se reintentaron correctamente y todos devolvieron una respuesta "ok".

Cómo replicarlo

La clave es enviar un único ping asíncrono inmediatamente después de publicar. El código es corto.


import asyncio
import httpx

INDEXNOW_KEY = "your-32char-key"
INDEXNOW_HOST = "yourdomain.com"

async def ping_indexnow(url: str) -> dict:
 async with httpx.AsyncClient(timeout=10) as c:
 r = await c.post(
 "https://api.indexnow.org/IndexNow",
 json={"host": INDEXNOW_HOST,
 "key": INDEXNOW_KEY,
 "urlList": [url]},
 )
 return {"status": r.status_code, "channel": "indexnow"}

async def ping_rss_hub(feed_url: str) -> dict:
 async with httpx.AsyncClient(timeout=10) as c:
 r = await c.post(
 "https://pubsubhubbub.appspot.com/",
 data={"hub.mode": "publish", "hub.url": feed_url},
 )
 return {"status": r.status_code, "channel": "rss_hub"}

async def ping_all(post_url: str, feed_url: str) -> list[dict]:
 return await asyncio.gather(
 ping_indexnow(post_url),
 ping_rss_hub(feed_url),
 return_exceptions=True,
 )

# Llamada inmediatamente después de publicar
results = asyncio.run(ping_all(
 "https://yourdomain.com/post-url",
 "https://yourdomain.com/feeds/posts/default",
))
print(results)

Para la clave de IndexNow, solo necesita alojar una línea hexadecimal de 32 caracteres como un archivo de texto en la ruta https://yourdomain.com/{key}.txt. Bing verificará este archivo en la primera llamada. Una vez validado, todos los pings posteriores se procesarán de inmediato.

La Google Indexing API requiere autenticación mediante una cuenta de servicio (service account), lo que hace que el código sea un poco más largo, pero se obtienen excelentes resultados solo con estos dos canales. En nuestra experiencia, la combinación de IndexNow + RSS hub ofrece la mejor relación costo-beneficio.

Resumen: Con solo añadir un ping asíncrono a los canales IndexNow y RSS hub inmediatamente después de publicar, el tiempo promedio de indexación se reduce a menos de la mitad. Es una automatización aplicable independientemente de la calidad del artículo o de las palabras clave.

Category Coverage Notice

This article follows our label-specific editorial criteria. Details:

ToolSignal Pro Editorial

ToolSignal Pro는 AI·IT·소프트웨어 트렌드를 다루는 종합 IT 인사이트 매거진입니다.

이전 글 다음 글