Doze checagens, 67 dias e uma tese desconfortável
Hoje é 21 de setembro de 2026. A Black Friday cai em 27 de novembro. São 67 dias. Este texto é para quem tem senha: servidor, CDN, WAF e Search Console. Se você precisa abrir chamado para ler um log, o primeiro prazo é conseguir o acesso, e vence esta semana.
A tese, aberta a contestação: o ambiente de produção de novembro não é o mesmo de setembro. A autoescala liga, o WAF endurece na véspera, o limite de requisições aperta contra raspagem de preço e o cache de borda só se comporta como cache sob pressão. A checagem que passou hoje pode reprovar em 27 de novembro. Por isso cada item tem duas datas: a execução e o reteste sob carga.
O contexto justifica o trabalho. No Global Digital Shopping Index 2026, da Visa com a PYMNTS Intelligence, divulgado em 18 de setembro de 2026, 74% dos varejistas brasileiros esperam que agentes de IA respondam por ao menos 5% das vendas digitais em dois anos, apenas 15% se dizem preparados e apenas 21% conseguem identificar quando uma venda veio de uma plataforma de IA. O uso de IA generativa para pesquisar produtos saiu de 2% em 2024 para 32% em 2026. Nada disso promete citação ao seu produto. Diz que o robô vai bater na porta e que a maioria do varejo brasileiro não sabe se a porta abre.
O quarteto de toda checagem: decisão, ação, evidência, limite
Lista de "ok" e "não ok" não sobrevive a uma reunião de crise. Cada item traz quatro campos: a decisão (o que precisa ser verdade, como afirmação testável), a ação (o comando ou o procedimento de painel), a evidência de conclusão (o artefato datado, nunca a memória de alguém) e o limite (o que a checagem não prova). O quarto separa auditoria de teatro.
O guia de anunciantes da OpenAI exige o OAI-AdsBot e recomenda o OAI-SearchBot: o primeiro revisa landing pages de anúncios do ChatGPT, o segundo faz descoberta para busca, resumos e snippets. O GPTBot trata de coleta relacionada a potencial treinamento, decisão independente. O ChatGPT-User age quando a pessoa pede, então as regras de robots.txt podem não se aplicar a ele, e ele não é critério de inclusão na busca. Os nomes estão na documentação de robôs da OpenAI; a matriz por finalidade, em matriz de bots de IA, robots.txt e llms.txt.
Liberar robô não é liberar tudo: a orientação da OpenAI não autoriza abrir rota de administração, APIs privadas nem diretórios inteiros sem inventário, pelos motivos de manter o site pronto para agentes sem virar vetor de prompt injection.
Checagens 1 a 3: permissão declarada, resposta real e pico
Checagem 1. O robots.txt é coerente robô a robô. Decisão: existe bloco explícito e sem contradição para OAI-AdsBot, OAI-SearchBot, GPTBot e ChatGPT-User, decidido por alguém e não herdado de template. Ação: leia o arquivo servido, não o do repositório:
curl -sS https://<seu-dominio>/robots.txt | sed -n "1,120p"
Confira se as rotas de produto e de oferta estão liberadas e se nenhuma regra global posterior é mais restritiva. Evidência: o arquivo salvo com data e a planilha de quatro decisões assinadas. Limite: o mais importante do artigo. Um Allow no robots.txt não resolve um 403 posterior. CDN, firewall, desafio, autenticação e rate limit são camadas independentes, e qualquer uma nega com o Allow publicado. A checagem 1 prova que você declarou permissão.
Checagem 2. A CDN e o WAF respondem 200 ao User-Agent do robô. Decisão: cada robô recebe 200 no HTML de produto e de oferta, sem desvio para erro, consentimento ou desafio. Ação: rode a mesma URL com cada User-Agent.
for UA in "OAI-SearchBot/1.0" "OAI-AdsBot/1.0" "GPTBot/1.2" "ChatGPT-User/1.0"; do
curl -sS -A "$UA" -o /dev/null -w "$UA %{http_code} %{redirect_url} %{size_download}
" "https://<seu-dominio>/ofertas/black-friday"
done
Evidência: quatro linhas com status 200, redirecionamento vazio e tamanho compatível com o HTML real, não com uma página de erro de 2 KB. Limite: prova que a origem respondeu 200 àquele IP, naquele minuto. Regra por reputação de ASN não é acionada pelo seu curl saindo de São Paulo.
Checagem 3. Desafio e limite de requisições não disparam sob pico. Decisão: nenhuma regra de bot management, desafio ou rate limiting alcança os User-Agents de robô, e a exceção segue valendo quando o volume sobe. Ação: no painel, liste as regras que casam por User-Agent, ASN ou taxa, crie a exceção e repita com concorrência em homologação.
seq 1 60 | xargs -P 12 -I{} curl -sS -A "OAI-SearchBot/1.0" -o /dev/null -w "%{http_code}
" "https://<seu-dominio>/produto/{}" | sort | uniq -c
Evidência: 60 respostas 200, sem 403, 429 nem 503, e a captura datada da exceção. Limite: homologação não é produção. Já vi a checagem passar em outubro e o site devolver desafio em 27 de novembro, porque endureceram uma regra na véspera sem avisar o SEO.
Checagens 4 a 6: o que o robô consegue ler da ficha de produto
Checagem 4. O host da imagem do feed responde ao robô. Decisão: o domínio das imagens do feed, que quase nunca é o principal, responde 200 aos mesmos User-Agents e não tem regra própria de hotlink. Ação: teste esse host à parte.
curl -sS -A "OAI-AdsBot/1.0" -o /dev/null -w "status=%{http_code} type=%{content_type}
" "https://<cdn-de-imagens>/produtos/12345-01.jpg"
Evidência: status 200 e tipo de imagem em dez produtos de categorias diferentes, porque hotlink costuma ser por pasta. Limite: imagem acessível não é imagem exibida em resposta de IA, nem anúncio aprovado.
Checagem 5. A ficha de produto é legível sem JavaScript. Decisão: nome, preço, disponibilidade e descrição existem no HTML servido, antes de qualquer script. Ação: baixe o HTML cru e procure os campos:
curl -sS -A "OAI-SearchBot/1.0" "https://<seu-dominio>/produto/12345" | grep -ioE "(preco|price|estoque|disponibilidade)[^<]{0,60}" | head -40
Evidência: preço e disponibilidade aparecem no HTML cru. Se só aparecerem no DOM renderizado, a checagem reprova e vira tarefa de engenharia. Limite: legível não é escolhido; remove um impedimento, não cria preferência nem citação. Escrever a ficha para o trecho sobreviver à recuperação é outro assunto, tratado em a ficha de produto que o agente de IA lê.
Checagem 6. O dado estruturado de produto concorda com a página. Decisão: preço, moeda e disponibilidade no bloco estruturado são idênticos aos que o cliente vê na mesma URL, no mesmo instante. Ação: extraia o bloco e compare campo a campo.
curl -sS -A "OAI-SearchBot/1.0" "https://<seu-dominio>/produto/12345" | grep -o "application/ld+json.{0,4000}" | head -3
Evidência: uma tabela de campo, valor no dado estruturado e valor na página, sem divergência, em dez produtos, dois deles sem estoque. Limite: concordar em setembro não é concordar em novembro. O ponto de falha é o cache: o preço promocional entra no HTML e o bloco estruturado sai de camada com outro tempo de vida. Para desenhar o bloco, uso o que descrevi em como estruturar Schema.org para IA generativa.
Checagens 7 a 9: noindex, ciclo da oferta e pedido de rastreamento
Checagem 7. O noindex está onde o robô consegue ler. Decisão: as páginas que devem sair do índice devolvem a diretiva em resposta acessível ao robô, e as de oferta não carregam noindex herdado de template. Ação: inspecione cabeçalho e meta:
curl -sSI -A "OAI-SearchBot/1.0" "https://<seu-dominio>/ofertas/black-friday" | grep -i "x-robots-tag"
curl -sS -A "OAI-SearchBot/1.0" "https://<seu-dominio>/ofertas/black-friday" | grep -io "<meta[^>]*robots[^>]*>"
Evidência: nas páginas a indexar, nenhuma saída contém noindex; nas que devem sair, a diretiva aparece e a URL responde 200, porque diretiva atrás de 403 não é lida pelo robô. Limite: noindex controla indexação em busca, não o que um assistente faz com uma página que já leu, nem a visita de um agente a pedido de uma pessoa.
Checagem 8. A página de oferta declara início, fim e destino depois de 27 de novembro. Decisão: início e término estão legíveis no texto e no dado estruturado, e existe decisão escrita sobre a URL em 1º de dezembro. Ação: confira as datas no HTML cru e registre a decisão de ciclo de vida. Na minha régua, campanha recorrente fica de pé o ano inteiro, atualizada para a próxima edição, porque acumula histórico; URL descartável é redirecionada para a categoria equivalente. Evidência: as duas datas na página e o bilhete de decisão, com dono. Limite: declarar validade não obriga ninguém a respeitá-la: um resumo de IA pode reproduzir preço antigo porque leu a página em outra data.
Checagem 9. Sitemap atualizado e pedido de novo rastreamento registrado. Decisão: as URLs de oferta estão num sitemap servido corretamente e o pedido de novo rastreamento seguiu o caminho documentado. Ação: valide o arquivo e submeta conforme a documentação oficial de pedido de novo rastreamento.
curl -sS "https://<seu-dominio>/sitemap-ofertas.xml" | grep -c "<loc>"
Evidência: a contagem bate com o inventário e a submissão aparece no Search Console com data. Limite: submeter sitemap ou pedir novo rastreamento não garante inclusão no índice. A submissão é registro de entrega, não de indexação. Apresentar isso como resultado é mostrar o recibo dos Correios como prova de que a carta foi lida.
Checagens 10 a 12: medir sem inventar, e o item opcional da moda
Checagem 10. URL Inspection para separar zero impressões de ausência no índice. Decisão: toda URL de oferta com zero impressões tem inspeção registrada, com data do último rastreamento, URL de referência declarada e resposta obtida. Ação: inspecione uma amostra das páginas de campanha e anote os três campos. Os relatórios de IA generativa, anunciados em 3 de junho de 2026, incluem AI Overviews e AI Mode no relatório de Search e excluem o Search Labs; confirme a situação da propriedade, porque há ressalvas de volume mínimo. Evidência: planilha com URL, data, resposta e veredito. Limite: zero impressões significa ausência de impressões observadas naquele recorte, e não ausência de indexação; a documentação também não descreve cliques nem taxa de cliques dessa visão.
Checagem 11. O parâmetro de origem do ChatGPT chega inteiro ao GA4. Decisão: uma visita com utm_source=chatgpt.com atravessa redirecionamentos, consentimento e roteamento sem perder o parâmetro. Ação: verifique se a cadeia de redirecionamento preserva a cadeia de consulta.
curl -sSL -A "Mozilla/5.0" -o /dev/null -w "final=%{url_effective}
" "https://<seu-dominio>/ofertas/black-friday?utm_source=chatgpt.com&utm_medium=referral"
Depois abra a URL no navegador, recuse e aceite o consentimento em duas sessões, e leia o relatório em tempo real. Evidência: a URL final ainda contém o parâmetro e a origem aparece no GA4 nas duas sessões. Limite: o parâmetro atribui a visita quando sobrevive, e não mede citação: a maior parte das menções não vira clique e o aplicativo móvel costuma entregar a sessão como direta. O piso está em as onze dicas para medir assistentes no GA4.
Checagem 12. Contrato para agentes: existe consumidor e existe backend. Decisão: se a empresa pretende expor um servidor MCP ou um catálogo de API, existem consumidor identificado, backend com estoque e preço em tempo real e dono de plantão. Faltando um, a decisão é não construir agora. Ação: escreva três frases: quem consome, qual sistema responde, quem atende às três da manhã de 27 de novembro. Se alguma exigir conjectura, o item reprovou. Evidência: o documento de uma página, com data. Limite: recurso opcional não é requisito de SEO. Um servidor MCP não melhora a chance de a sua ficha ser lida pelo robô de busca, e endpoint sem backend transfere ao cliente um erro interno. A decisão está em MCP próprio, NLWeb ou nada, e a resposta honesta para a maioria dos e-commerces, a 67 dias do feriado, é nada, este ano.
As doze checagens consolidadas, com prazo e reteste
Esta é a tabela que eu levaria à reunião. A coluna do reteste é a primeira a cair por falta de tempo, e é a que defende o dia 27. Leia-a com um olho no congelamento de deploy: se ele começa em 10 de novembro, tudo que depende de código fecha antes, e sobram as checagens de painel.
| # | Checagem | Camada | Evidência de conclusão | 1ª execução | Reteste sob carga |
|---|---|---|---|---|---|
| 1 | robots.txt coerente robô a robô | Declaração | Arquivo servido e datado | até 30 de setembro | 18 de novembro |
| 2 | CDN e WAF respondem 200 ao robô | Borda | Quatro status 200 sem desvio | até 3 de outubro | 20 de novembro |
| 3 | Desafio e rate limit fora dos robôs | Segurança | 60 respostas 200 e a exceção | até 7 de outubro | 20 e 26 de novembro |
| 4 | Host da imagem do feed responde | Ativos | 200 e tipo de imagem, dez produtos | até 10 de outubro | 21 de novembro |
| 5 | Ficha de produto legível sem JavaScript | HTML | Preço e estoque no HTML cru | até 17 de outubro | 21 de novembro |
| 6 | Dado estruturado concorda com a página | HTML | Tabela campo a campo | até 24 de outubro | 26 e 27 de novembro |
| 7 | noindex legível e ausente onde não deve | Indexação | Cabeçalho e meta conferidos | até 27 de outubro | 22 de novembro |
| 8 | Oferta com início, fim e destino pós-27/11 | Conteúdo | Datas na página e dono da decisão | até 31 de outubro | 1º de dezembro |
| 9 | Sitemap e novo rastreamento | Indexação | Contagem e submissão datada | até 7 de novembro | 24 de novembro |
| 10 | URL Inspection para zero impressões | Medição | Planilha com data e veredito | até 14 de novembro | 2 de dezembro |
| 11 | utm_source=chatgpt.com no GA4 | Medição | URL final com parâmetro e sessão | até 18 de novembro | 28 de novembro |
| 12 | Contrato com consumidor e backend | Governança | Documento de uma página | até 21 de novembro | não se aplica |
O que eu recuso, e o que as doze não prometem
Recuso liberar diretório inteiro para resolver um 403. O certo é achar a regra que nega, nomeá-la e criar a exceção por rota. Trocar investigação por curinga resolve a checagem 2 e abre um flanco que ninguém reaudita em dezembro.
Recuso apresentar submissão de sitemap como resultado. Entrega não é indexação, indexação não é impressão, impressão não é citação. No preprint BRGEO-1 corrigido, de 11 de setembro de 2026 (DOI 10.5281/zenodo.22711743, sem revisão por pares), a mesma população de 7.436 respostas deu 5.631 detecções no texto retido (75,73%) e 3.863 quando a leitura ficou nos primeiros 200 pontos de código (51,95%). A janela de leitura moveu o resultado em 23,78 pontos percentuais sozinha. Isso mede o instrumento, não ganho causal.
Recuso construir contrato para agentes em novembro. Sessenta e sete dias é tempo de fechar as onze checagens de acesso e medição, não de estrear superfície nova em dia de pico. Para o que muda na loja quando o comprador é um agente, comece por GEO para e-commerce.
E sou direto no ponto em que um checklist técnico costuma ser vendido como garantia: fechar as doze remove impedimentos de acesso e de leitura, só isso. Permissão não é recuperação, recuperação não é citação, citação não é clique, clique não é conversão. Menção lexical também não comprova recomendação, e nenhum instrumento permite, sozinho, atribuir uma conversão a uma citação. O que afirmo é modesto e ainda assim paga o trabalho: entre os 85% de varejistas brasileiros que se dizem despreparados, boa parte está despreparada por motivo mecânico, um 403, um desafio, um preço divergente. Isso é corrigível em 67 dias por quem tem as senhas. O resto não é corrigível por checklist nenhum, e quem disser o contrário está vendendo.
O próximo passo, esta semana
Se fizer uma coisa só, faça a checagem 2 hoje, em três URLs: a home, uma ficha de produto de alto giro e a página de campanha. Quatro User-Agents por URL, doze requisições, cinco minutos. Se vier 200 em tudo, você tem 67 dias para as outras onze e para agendar os retestes de 20 e 26 de novembro. Se vier 403, 429 ou desvio para desafio, acabou de descobrir por que o seu catálogo não existe para os assistentes.
Depois, agende as doze linhas com dono e data no quadro que o time já usa. Checagem sem dono não acontece, e checagem sem data acontece em 26 de novembro, tarde demais. A recomendação de mercado publicada em 17 de setembro de 2026, de planejar com 45 a 60 dias de antecedência, já vence em outubro; hoje ainda dá.
Guarde as evidências em uma pasta com a data no nome. Em janeiro, quando perguntarem por que o tráfego de assistentes se comportou assim, a diferença entre resposta e opinião serão esses arquivos.