Indexação automática de blog — Envio simultâneo para 5 canais (Google, Bing, RSS) reduz tempo de indexação para 30 minutos em média

5 min read · 1,113 words

Dicas práticas / SEO / Python · Automação
Cerca de 2.400 caracteres

Quando você publica um post no blog, o Google geralmente leva de uma hora a alguns dias para rastreá-lo. Durante esse tempo, o post não aparece nas buscas. Nós reduzimos esse tempo de uma média de 4 horas para apenas 30 minutos enviando pings simultâneos para 5 canais imediatamente após a publicação. Explicamos aqui como desenvolvemos isso, quais foram os resultados e como validamos o processo.

Por que criamos isso

Com quase 200 posts acumulados, percebemos o mesmo padrão. Durante as primeiras 24 horas após a publicação, os posts não eram indexados e, nesse período, o conteúdo que escrevemos era praticamente inexistente para a web. Somente após a indexação é que ele finalmente aparece nos resultados de busca e o tráfego começa.

Usar manualmente a ferramenta de inspeção de URL do Google Search Console toda vez também se tornava um grande fardo quando somávamos 30 segundos por post. O Bing oferece um protocolo gratuito de indexação instantânea chamado IndexNow, e não aproveitá-lo tornava o tempo de indexação do Bing ainda mais longo. Também não tínhamos tempo para enviar pings manualmente para agregadores de RSS (como Google Pubsubhubbub, FeedBurner, etc.).

Por isso, criamos um módulo que, assim que a publicação é concluída, envia automaticamente pings simultâneos para 5 canais e reúne as respostas em um só lugar.

Como funciona

No final da cadeia de hooks de publish_post, um gatilho de indexação é chamado. Esse gatilho faz chamadas simultâneas para os seguintes 5 canais:

  1. IndexNow (Bing + Yandex) — Envia uma requisição POST com a URL do post para o endpoint do IndexNow. O tempo de resposta geralmente é inferior a 200 ms. O Bing entra na fila de rastreamento em 5 a 30 minutos.
  2. Google Indexing API — Chama urlNotificationMetadata.publish. Originalmente destinado a vagas de emprego (Job Posting) e transmissões ao vivo (Livestream), mas nós o utilizamos para notificações de novos posts. Resposta em menos de 1 segundo. O Google rastreia o site mais rápido do que outros domínios no mesmo período.
  3. Google Search Console URL Inspection — Monitora (polling) o status de indexação com urlInspection.index.inspect. Se retornar "URL desconhecida", chama automaticamente a "solicitação de indexação" do GSC.
  4. RSS Pubsubhubbub — Envia um ping hub.mode=publish&hub.url={feed_url} para o hub PubSubHubbub do Google. Propaga para o Google Reader e todos os assinantes de RSS em até 30 segundos.
  5. Bing Webmaster submitUrl — Além do IndexNow, também chama a antiga API submitUrl do Bing (como uma rede de segurança dupla).

As 5 chamadas são iniciadas simultaneamente (asyncio.gather) e cada resposta é salva em indexer_log.json. Se algum canal falhar, o sistema tenta novamente de forma automática após um período de cooldown.

Resultados reais

  • Tempo médio de indexação: de 4 horas para 30 minutos (redução de 90%)
  • Taxa de indexação no Bing (dentro de 24h após a publicação): de 22% para 87%
  • Número de vezes que clicamos em "Solicitar indexação" na interface do GSC: 41 vezes acumuladas → 0 vezes após a implementação
  • Limite diário da Google Indexing API (200): nunca foi excedido (distribuído por lote automático + cooldown)
  • Frequência de notificações no Discord: uma única linha com o resultado dos 5 canais logo após a publicação. "indexing: google ok / bing ok / rss ok / inspect indexed / submit ok"

Os números podem parecer simples, mas economizar 30 segundos a cada post publicado acumula 100 minutos em 200 posts. Além disso, quanto mais rápida a indexação, mais rápido o tráfego de busca começa a se acumular no início.

Método de validação

Comparamos diretamente a indexação manual com a automática.

Comparação de indexação A/B (sess 28~30) — Dividimos aleatoriamente em dois grupos 28 posts publicados ao longo de 4 semanas. O Grupo A passou pelo indexador automático, enquanto o Grupo B não passou (apenas GSC manual). Após a publicação, registramos o tempo de indexação em minutos usando a inspeção de URL do GSC.

Uma diferença clara. O Grupo A foi, em média, 9 vezes mais rápido. Além disso, a taxa de indexação em até 24h foi mais que o dobro.

Verificação específica do Bing — Comparação de 12 posts antes e 12 posts depois da aplicação do IndexNow. A taxa de indexação no Bing em até 24h subiu de 22% para 87%. Embora o tráfego de busca em coreano no Bing seja pequeno por si só, o IndexNow é gratuito, então não há motivo para não usá-lo.

Comportamento de tentativa de reenvio em caso de falha — Desconectamos a internet intencionalmente ao publicar para forçar o estado de falha (fail) em todos os 5 canais. Depois de restaurar a internet, verificamos se o sistema tentava novamente de forma automática dentro do cooldown de 1 hora. O reenvio ocorreu normalmente em 5/5 canais, todos retornando resposta ok.

Como implementar

O segredo é um único ping assíncrono logo após a publicação. O código é curto.


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,
 )

# Chamado logo após a publicação
results = asyncio.run(ping_all(
 "https://yourdomain.com/post-url",
 "https://yourdomain.com/feeds/posts/default",
))
print(results)

Para a chave do IndexNow, basta hospedar uma linha hexadecimal de 32 caracteres como um arquivo de texto no caminho https://yourdomain.com/{key}.txt. O Bing validará esse arquivo na primeira chamada. Uma vez validado, todos os pings subsequentes serão processados instantaneamente.

A Google Indexing API exige autenticação via conta de serviço (service account), o que torna o código um pouco mais longo, mas você já terá ótimos resultados apenas com os dois canais acima. No nosso caso, a combinação IndexNow + RSS hub oferece o melhor custo-benefício.

Resumo: Adicionar apenas um ping assíncrono para os canais IndexNow + RSS hub logo após a publicação reduz o tempo médio de indexação pela metade ou mais. É uma automação aplicável independentemente da qualidade do post ou das palavras-chave.

Category Coverage Notice

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

ToolSignal Pro Editorial

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

이전 글 다음 글