Quem já deu acesso ao CMS pra equipe editorial conhece a cena: a pessoa corrige uma vírgula, salva, acha outro erro, salva de novo... Em dois minutos o hook disparou cinco vezes, e cada disparo manda as mesmas URLs dos 4 locales pro IndexNow.
O próprio FAQ do IndexNow pede pra não mandar a mesma URL várias vezes por dia sem mudança relevante, e fala em esperar pelo menos 5 minutos antes de reenviá-la. O que costuma resolver:
- o hook só faz um upsert numa tabelinha
indexnow_queue(URL como chave única) e não chama o IndexNow; orevalidateTagcontinua na hora; - um job agendado a cada 5-10 min pega o que está na fila e manda num POST por host (cabe até 10 mil URLs por request).
Você perde alguns minutos do "no segundo em que muda", mas tem um bônus: o envio sai do after(). Ele roda depois da resposta, só que ainda dentro do maxDuration da rota (na Vercel, via waitUntil), e se der timeout ou 429 o CMS nem fica sabendo, porque já recebeu o 200. Na fila dá pra logar status e corpo da resposta, respeitar o Retry-After se vier no 429 e fazer backoff em 5xx.
Você chegou a tomar 429 do Bing na prática, ou no seu volume isso nunca aparece?