IndexNow: a chave, o primeiro envio e como ler a resposta

O IndexNow se configura com três coisas: uma chave, um arquivo de texto no seu host e uma solicitação por publicação. Este capítulo traz os três passos, a tabela de códigos e um script de envio para inserir na sua publicação.

Implementação6 min de leitura2857 visualizações
IndexNow: a chave, o primeiro envio e como ler a resposta

IndexNow é um ping de uma única solicitação que avisa os motores participantes de que uma URL foi adicionada, alterada ou removida. A configuração exige três coisas: uma chave, essa chave hospedada como arquivo de texto no seu próprio host e uma solicitação HTTP por publicação. O caminho é gratuito, leva cerca de vinte minutos e funciona igual em um site estático ou em um CMS.

Este capítulo supõe que sua página já é acessível e já está no sitemap. Se isso não foi confirmado, faça antes de enviar qualquer coisa: um ping para uma URL que devolve 404 é desperdiçado. A rotina de publicação em três passos da checklist de lançamento de produto cobre esse terreno, e este capítulo é a versão detalhada do terceiro passo.

Quais motores realmente escutam

IndexNow é um protocolo compartilhado: uma solicitação chega a todos os participantes. A lista é publicada no indexnow.org e é curta.

MotorNa lista
Microsoft BingSim
YandexSim
NaverSim
Seznam.czSim
YepSim
GoogleNão listado

O Bing é quem paga pelos demais. O índice dele alimenta a busca do ChatGPT e do Copilot, então entrar cedo no Bing é o caminho mais curto para o conjunto de fontes de uma resposta de IA. O Google tem o próprio caminho, e por isso o passo anterior pede os dois.

Passo 1 — criar uma chave e hospedá-la

A chave prova ao motor que o envio veio de alguém que controla o host. É uma string que você inventa, com regras estreitas: de 8 a 128 caracteres, apenas a-z, A-Z, 0-9 e hífens. Um UUID sem chaves atende a tudo e é fácil de regenerar.

KEY=$(uuidgen | tr 'A-Z' 'a-z' | tr -d '{}')
echo -n "$KEY" > public/$KEY.txt
echo "https://example.com/$KEY.txt"

O arquivo precisa ser UTF-8, ter o nome da chave e conter a chave e nada mais. Faça o deploy e abra a URL no navegador. Se ela não devolver a chave em texto puro, pare aqui: todos os passos seguintes vão falhar com um 403 que não explica o motivo.

Você pode hospedar o arquivo fora da raiz, mas então a chave cobre apenas as URLs abaixo dessa pasta. Uma chave em /catalog/key.txt pode enviar /catalog/anything e não pode enviar /help/anything. A raiz evita a pergunta inteira.

Um ponto que muita gente inverte: a chave não é um segredo como um token de API. Você precisa publicá-la em uma URL que qualquer pessoa possa ler, porque esse arquivo público é a prova de controle. Colocá-la no repositório não é problema. O que importa é que o arquivo e o valor enviado fiquem sincronizados.

Passo 2 — enviar uma URL manualmente

Antes de automatizar, prove a ligação com um único GET. É a forma documentada para uma URL por vez.

curl -s -o /dev/null -w '%{http_code}\n' \
  "https://api.indexnow.org/indexnow?url=https://example.com/your-page&key=$KEY"

Um 200 significa que o arquivo da chave foi encontrado e lido. Não significa que a página será indexada. A documentação do protocolo diz isso sem rodeios: 200 indica apenas que o motor recebeu sua URL.

Passo 3 — passar ao endpoint em lote

Uma URL por solicitação serve para um teste manual e não serve para uma esteira de publicação. A forma em lote aceita até 10 000 URLs em um único POST, mais do que a maioria dos sites precisa em um envio.

POST /indexnow HTTP/1.1
Host: api.indexnow.org
Content-Type: application/json; charset=utf-8

{
  "host": "example.com",
  "key": "your-key",
  "keyLocation": "https://example.com/your-key.txt",
  "urlList": [
    "https://example.com/page-a",
    "https://example.com/page-b"
  ]
}

O valor de host precisa coincidir com o host de cada URL da lista. Misturar dois nomes de host no mesmo payload é a causa mais comum de um 422 em um lote que parece correto.

Ler os códigos de resposta

Cinco códigos cobrem tudo o que o endpoint devolve, e cada um aponta para um erro diferente. Mantenha esta tabela aberta enquanto constrói.

CódigoSignificadoO que corrigir
200RecebidoNada. Recebido, não indexado
400Solicitação inválidaJSON malformado ou codificação de URL errada
403Chave inválidaArquivo ausente, ou presente com outra chave
422Não processávelUma URL não pertence ao host, ou a chave quebra o formato
429Solicitações demaisReduza os envios; você está sendo lido como spam

O 403 é onde quase toda primeira tentativa cai, e tem duas causas: o arquivo não está onde você disse, ou está e a chave dentro dele não bate com a enviada. Busque o arquivo com curl e compare com o valor do script antes de mudar outra coisa. Um 422 em um lote que funcionava como URL única aponta para o campo host, não para a chave.

O entregável: um envio para inserir na sua publicação

Pegue este script, mude duas linhas e rode no fim do que publica o seu conteúdo. Ele lê o sitemap, envia tudo em um lote e imprime o código para que uma falha fique visível em vez de silenciosa.

#!/usr/bin/env bash
set -euo pipefail
HOST="example.com"
KEY="your-key"

URLS=$(curl -s "https://$HOST/sitemap.xml" \
  | grep -o '<loc>[^<]*</loc>' \
  | sed 's/<[^>]*>//g' \
  | python3 -c 'import json,sys; print(json.dumps([l.strip() for l in sys.stdin if l.strip()]))')

curl -s -o /dev/null -w 'indexnow: %{http_code}\n' \
  -X POST "https://api.indexnow.org/indexnow" \
  -H 'Content-Type: application/json; charset=utf-8' \
  -d "{\"host\":\"$HOST\",\"key\":\"$KEY\",\"keyLocation\":\"https://$HOST/$KEY.txt\",\"urlList\":$URLS}"

Dois hábitos mantêm isso de pé com o tempo. Registre o que foi enviado e quando, para que um envio repetido seja pulado em vez de repetido. E envie quando algo muda, não por calendário: um envio noturno de um sitemap sem mudanças é o que ganha um 429.

Três formas de arruinar a instalação

As três devolvem um código visível, e por isso a tabela de respostas é a primeira coisa a conferir.

  1. O arquivo da chave é servido com o tipo de conteúdo errado ou uma quebra de linha a mais. Continua parecendo certo no navegador. Busque com curl e compare byte a byte.
  2. O envio sai antes de o deploy terminar. O motor chega a uma URL que o host ainda não publicou e o ping é gasto em um 404.
  3. Cada build envia o sitemap inteiro. Nada quebra no começo, depois os envios passam a devolver 429 e os pings úteis se perdem no ruído.

O que o IndexNow não fará

Ele não fará uma página ser indexada. Ele antecipa a descoberta; o motor continua decidindo se a página merece ficar, e uma página fraca descoberta antes continua sendo uma página fraca. Não chega ao Google, que não está na lista de participantes, então nunca substitui a parte do Search Console na sua rotina.

Também não podemos dizer quanto tempo ele economiza. Medir isso direito exige um grupo de controle de URLs não enviadas acompanhadas por semanas, e ainda não fizemos esse teste nos nossos próprios sites. Quem citar um número específico de horas precisa ser perguntado sobre o grupo de controle.

O que vale revisar junto do IndexNow é o resto da esteira. Se o seu sitemap carimba cada URL com a hora do build, enviar com mais força não corrige o sinal; nosso levantamento de lastmod em sitemaps encontrou 13 de 24 sites nesse estado. O fluxo de divulgação do produto foi pensado para revisar a esteira inteira, não um único endpoint. A área de desenvolvedor de API e MCP mostra como ligar o envio à sua própria publicação.

Perguntas frequentes

O IndexNow funciona para o Google?

O Google não aparece entre os participantes listados no indexnow.org. Não testamos se o Google lê esses envios por outra via, então não afirmamos nem uma coisa nem outra.

Com que frequência posso enviar?

O protocolo não publica um limite por hora, mas o 429 existe justamente para excesso de envios. Para conteúdo gerado por usuários, a orientação oficial é reduzir de forma gradual: cada item até 20, depois um a cada cinco até 100, depois um a cada dez até 1000.

Preciso do Bing Webmaster Tools?

Não para enviar. Precisa para verificar: é onde você vê se as URLs foram recebidas, e é a única confirmação gratuita do protocolo.

Dá para trocar a chave depois?

Dá. Hospede o novo arquivo, troque o valor no script e mantenha o arquivo antigo por um tempo. Os motores releem o arquivo da chave a cada envio, então não existe cadastro para refazer.

Faz parte do guia do QueryWin · Nível 2

IndexNow: a chave, o primeiro envio e como ler a resposta