Pular para o conteudo

Pilar 02 · Busca e Autoridade

Método

Método de Inspeção GEO em 8 Camadas

Método auditável que verifica, do servidor até a citação por IA, se um site é recebido, entendido, indexado e recomendado por buscadores, assistentes e agentes de IA.

49 min de leitura
Código
MET-BA-GEO8-001
Versão
3.1.0
Situação
Vigente
Vigência
17/10/2026
Próxima revisão
17/04/2027
Método de Inspeção GEO em 8 Camadas

NOTA TÉCNICA: Todas as informações contidas aqui retratam a minha experiência e o meu método de trabalho, você é o total responsável por alterações no seu site ou no site de seus clientes. Nos responsabilizamos exclusivamente em parcerias formalizadas por contratos. Em dúvida, visite o Aviso Legal.

O Método de Inspeção GEO em 8 Camadas, de Felipe C. Ferreira, é um método auditável que verifica, do servidor até a citação por IA, se um site é recebido, entendido, indexado e recomendado por buscadores, assistentes e agentes de IA, com critério, fonte, limite e evidência datada em cada camada.

Ele junta SEO (otimização para buscadores), GEO (otimização para motores generativos, os assistentes que respondem com IA) e AEO (otimização para respostas). Cobre o SEO técnico de sempre (servidor, HTML, metadados) e o que passou a pesar com a IA: schema e entidades, grafo interno, acesso de agentes e citação em respostas. Uso a mesma régua no meu site e nas consultorias.

Para Quem Este Método Serve

Serve para o dono de empresa, o gestor de marketing e o time técnico que precisam responder a uma pergunta simples:

O meu site está sendo lido, entendido e citado, ou eu estou pagando por conteúdo que nenhuma máquina recebe?

Também serve para quem presta o serviço. Cada camada traz o passo a passo da inspeção, com o que conferir, a ferramenta, o limite e a evidência a guardar. Outra pessoa consegue repetir a inspeção e chegar ao mesmo status.

Este documento não é checklist de plugin e não promete posição no Google nem citação garantida em nenhum assistente. Ele mede o que dá para medir, com data, e mostra o que ainda está pendente.

Por Que o Trabalho É Organizado em Camadas

O robô (de busca ou de IA) passa pela camada de baixo antes de chegar à de cima. Se a CDN ou o servidor barram a requisição, não importa o quão bom é o schema: a página não chegou.

Por isso a ordem é fixa, do servidor até a resposta da IA. C quer dizer camada: C1 a C8 são os códigos deste método e não se confundem com os códigos L0 a L7 do Protocolo.

Código Camada Peso O que responde
C1 CDN e firewall 15 (trava) O robô recebe a página?
C2 Servidor e desempenho 10 Recebe rápido e com cache?
C3 HTML e acessibilidade 10 O que chega está bem estruturado?
C4 Metadados 10 Title, description, canonical e og contam a mesma história?
C5 Schema e entidades 15 A máquina entende quem é o autor, o negócio e a oferta?
C6 Grafo e links internos 15 As páginas se ligam e o robô alcança todas?
C7 Acesso por agentes de IA 10 robots.txt, llms.txt e OKF liberam e respondem?
C8 Indexação e citação por IA 15 (10 + 5) Está no índice e aparece nas respostas?

Na prática, eu começo de baixo. Inspecionar C5 antes de saber se o C1 está aberto é gastar hora técnica no lugar errado. E hora técnica no lugar errado é a conta que não fecha..

Este método se apoia no Protocolo L0 : L7, que é a setorização da nossa operação. O Protocolo diz em qual camada técnica o problema mora (negócio, infraestrutura, entrega, dados, aplicação, interface, operação e segurança). O Método de Inspeção mede a visibilidade em busca e IA. São documentos separados, com códigos próprios.

Atenção aos códigos: no Protocolo, L1 é “Infraestrutura e Ambiente”. Neste método, C1 é “CDN e firewall”. Por isso os códigos são diferentes.

Quem Acessa o Seu Site: os Tipos de Acesso por Máquina

Antes das camadas, uma pergunta que muda a leitura de todo o resto: quem, exatamente, está pedindo as suas páginas? Não é um robô só. São tipos diferentes de acesso, e cada um enxerga uma coisa.

Tipo de acesso Exemplos O que recebe e executa O que muda no método
Crawler (índice, busca ou treino) GPTBot, ClaudeBot, OAI-SearchBot, PerplexityBot O HTML que o servidor entrega. Numa medição da Vercel (dez/2024), os robôs da OpenAI, da Anthropic, da Meta, da ByteDance e da Perplexity não renderizaram JavaScript C1 (chegam sem bloqueio?), C3 (conteúdo no HTML do servidor), C7 (robots.txt, llms.txt)
Fetcher acionado pelo usuário ChatGPT-User, Claude-User, Perplexity-User Uma página pedida na hora, porque alguém perguntou algo ao assistente. Na mesma medição, o ChatGPT-User também não renderizou JavaScript C1 e C3; aparecem nos logs da CDN, não no GA4
Robô de busca que renderiza Googlebot; Bingbot O Googlebot põe na fila de renderização as páginas com status 200 e roda o JavaScript quando há recurso, o que pode levar de segundos a mais tempo. O Bing diz que conteúdo que não renderiza de forma confiável pode não ser indexado C3 (status correto e conteúdo no HTML continuam valendo), C4, C8
Agente com navegador O navegador na nuvem do ChatGPT (antigo ChatGPT agent), que assina as requisições Um navegador de verdade: carrega a página, roda o JavaScript e interage com botões e formulários C3: HTML semântico e acessibilidade ajudam o agente a achar o que clicar (recomendação minha, de engenharia); C1: o firewall não pode barrar o agente assinado
Automação headless Scripts com navegador sem interface, ferramentas de teste e de coleta Depende de quem programou: pode ou não rodar JavaScript e pode ou não se identificar C1 (bots falsos filtrados na borda); nunca conta como bot verificado
Clique humano vindo de uma resposta de IA Uma pessoa clica no link citado pelo ChatGPT, pelo Perplexity ou pelo Copilot A página completa, num navegador comum Consequência, não causa: sinal complementar no GA4, fora da nota

O que isso decide no método:

  • O critério sem JavaScript da C3 fica. Crawlers e fetchers leem o HTML do servidor. A versão para máquina da C7 complementa, não substitui.
  • HTML semântico e acessibilidade (C3) importam também para agentes com navegador. Um agente que opera a página precisa de botões, rótulos e estrutura claros. Isso é recomendação minha, de engenharia; não há métrica pública de quanto pesa.
  • O GA4 fica fora da nota. Ele mede por uma tag JavaScript no navegador: crawlers e fetchers que não executam JavaScript não disparam a tag, e por isso não aparecem. O filtro de bots conhecidos do GA4 usa pesquisa do Google e a lista internacional de robôs do IAB, e não dá para ver quanto foi excluído. Dizer que esse filtro deixa passar agentes com navegador, contando-os como pessoas, é inferência minha, não afirmação da documentação.
  • Limitação dos agentes assinados. No plano Free da Cloudflare, desde 01/07/2026, agentes assinados entram na mesma contagem dos bots verificados, e separar exige o plano Enterprise. A régua mede a contagem conjunta e não promete separar.
  • User-agent sozinho não prova nada. Só conta como robô verificado o que a CDN (ou o DNS reverso nos logs) confirmou. Por isso as camadas C1, C6 e C7 usam bots verificados.

Como Usar Este Documento

Cada camada segue sempre a mesma estrutura de 7 partes:

  1. O que inspecionamos: o escopo da camada.
  2. Por que importa para o negócio: onde isso pesa no caixa.
  3. Como medimos: fonte, métrica, limite e o passo a passo reproduzível.
  4. Critérios: o que é Aprovado, Parcial e Pendente.
  5. Como está no nosso site: status, data e o que mudou (com registro no histórico de versões).
  6. Evidência autoral: o que eu construí para medir ou corrigir. Sempre projeto proprietário, não comercializado e sem código público.
  7. Conteúdos que aplicam esta camada: posts e documentos do site.

Para auditar um site, siga as camadas na ordem, registre cada critério no modelo de evidência abaixo e só depois calcule a nota.

Modelo de registro de evidência

Todo critério inspecionado gera um registro com estes campos. Sem registro, o critério não entra na nota.

Campo O que preencher
Critério Camada e nome do critério (ex.: C1, crawlers de IA verificados sem 429)
Data e hora Com fuso (ex.: 13/10/2026 09:30 BRT)
Janela Período dos dados (ex.: 28 dias fechados)
Fonte Ferramenta ou base (CDN, crawl dos sitemaps, Search Console etc.)
Origem do dado Coletado por nós na fonte, ou “enviada pelo cliente”
Método Consulta, comando ou teste usado, copiado na íntegra
Resultado bruto Arquivo ou print guardado, com nome e data
Valor Número medido, com numerador e denominador
Status Aprovado, Parcial ou Pendente, pelo limite da camada
Ressalva Amostragem, cota, bloqueio, o que não foi possível medir
Quem inspecionou Nome ou função

Critério pela função, não pela marca

Cada critério mede uma função, não um fornecedor. “CDN e firewall” é uma camada fundamental com qualquer fornecedor. A Cloudflare é o que eu uso, é a boa prática que eu recomendo e é o meu estudo de caso. Outra CDN, outro firewall ou os logs do próprio servidor com o mesmo dado valem igual.

Quem não tem a função, ou não libera o acesso a ela, fica com o critério em Pendente (0), exibido como “a medir”. Não existe “não se aplica”: um site sem CDN não está dispensado da camada, está sem a proteção que ela mede. Nesse caso, eu recomendo, ajudo a configurar ou executo a configuração da Cloudflare.

Como eu acesso os dados do cliente

A régua é a mesma do meu site. O que muda é o acesso, e são dois modelos:

  • Preferido: um usuário provisório, só de leitura, com o meu e-mail, nas plataformas do cliente (Search Console, CDN, hospedagem, WordPress e o que mais a inspeção pedir). Eu coleto na fonte.
  • Alternativo: um colaborador autorizado do cliente me envia os dados brutos (exportação CSV ou JSON com data, no formato que eu passo). Print e resumo não valem. Essa evidência é marcada como “enviada pelo cliente”, e eu deixo claro: não respondo pela idoneidade de um dado que eu não coletei na origem, porque ele pode chegar recortado ou enviesado.

Todo acesso é combinado por escrito: escopo só leitura, prazo de retenção, LGPD e permissão para testes de simulação de robôs.

Inspeção só com dado público é outro produto

Sem acesso às contas do cliente, eu consigo medir uma parte das camadas com dado público. Isso não é este método: é um diagnóstico inicial de prospecção, com nome próprio e com a cobertura declarada ao lado do resultado. A inspeção profissional é a que tem acesso às fontes.

Como Funciona a Nota

Resumo curto. A atribuição completa da nota (fórmula, pesos, percentuais, limites de cada critério e de onde eles vieram) está na página Como a Nota do Método de Inspeção GEO é Atribuída.

  • Status do critério: Aprovado vale 100, Parcial vale 50 e Pendente vale 0. Critério ainda sem medição conta como Pendente (0) e aparece como “a medir”.
  • Nota da camada: média dos critérios da camada. Cada critério tem o mesmo peso dentro da camada, e eu publico quantos pontos ele vale na nota global.
  • Nota global: soma de (peso da camada × nota da camada), dividida por 100. Pesos: C1 15, C2 10, C3 10, C4 10, C5 15, C6 15, C7 10 e C8 15 (indexação 10 + citação por IA 5). Somam 100.
  • Critérios por camada (36 no total) e pontos efetivos de cada um na nota global:
Camada Peso Critérios Pontos por critério
C1 15 5 3,00
C2 10 3 3,33
C3 10 4 2,50
C4 10 5 2,00
C5 15 7 2,14
C6 15 6 2,50
C7 10 4 2,50
C8 indexação 10 1 10,00
C8 citação por IA 5 1 5,00
  • O que fica fora da nota: o GA4 e o desempenho orgânico. A nota mede se as máquinas acessam, entendem, indexam e citam o site. O GA4 mede a visita humana, que é consequência, não causa. Os dois entram como sinal complementar e como recomendação.
  • Sem dupla contagem: redirecionamentos aparecem na C3 (a URL publicada no sitemap) e na C6 (o link do corpo que aponta para ela). São objetos diferentes, e não existe critério de redirecionamento separado. O “status 200” das URLs do sitemap fica só na C3; a C4 olha só noindex e canonical.
  • Trava do C1: enquanto o INS-01 estiver aberto, a nota global fica limitada a 70, mesmo que a conta dê mais. Uma nota alta com o C1 bloqueado venderia uma visibilidade que não acontece.

Exemplo com número real (C5, linha de base de 12/10/2026): 7 critérios, 2 Aprovados e 5 Parciais. (2 × 100 + 5 × 50) ÷ 7 = 64,3. Com peso 15, a C5 contribui com 9,6 pontos na nota global.

Esta régua não é universal. Ela nasceu de documentação de referência, de conhecimento técnico e da minha visão de engenharia, como responsável pelo método. Não é validada pelo Google nem por nenhuma outra big tech.

Regra de ouro: nenhum número sai sem fonte medida. Não uso estimativa. Contagem pequena (menos de 10 eventos) sai com a ressalva de margem alta. A inspeção completa e a nota saem uma vez por mês, com a data à vista. Como a Cloudflare no plano Free guarda 31 dias de histórico (e consulta no máximo 30 por vez), a coleta roda semanalmente e é acumulada, e a nota mensal sai sobre o acumulado. No meu site, essa coleta semanal roda sem falha desde 08/09/2026. A citação por IA é mensal.

Só a nota do nosso site é pública. Ela vai ficar no KG Map FCF, de Felipe C. Ferreira, que está em construção, com os pontos a melhorar, a versão da régua e a data, e com acesso pelo ícone do rodapé e por links internos. A nota de cliente é privada e só sai com autorização dele.

Para o cliente, a entrega planejada é uma página online interativa na minha plataforma, com login: nós, entidades e @id do schema, independente da tecnologia do site dele, noindex e isolada por cliente, dentro da LGPD. É item de roteiro, ainda sem prazo.

C1 · CDN e Firewall

Peso 15. Camada trava.

1. O que inspecionamos

Se os robôs de busca e de IA recebem a página de verdade. Olho a CDN (rede de entrega de conteúdo), o firewall, a proteção anti-bot do servidor de origem, o DNS e o certificado, e as respostas para os arquivos de descoberta: robots.txt, llms.txt, sitemaps e o bundle OKF.

A camada vale para qualquer fornecedor. No meu caso, a Cloudflare fica na frente e a origem é a Hostinger, com servidor LiteSpeed. E o meu caso mostra uma coisa importante: o bloqueio do INS-01 acontece na origem, não na CDN. Ter CDN não resolve sozinho se a origem barra os robôs. A Hostinger oferece CDN própria em alguns planos, mas ela não está ativa no meu site e não roda junto com a Cloudflare.

2. Por que importa para o negócio

Conteúdo que o robô não recebe não entra no índice, não entra no treino e não é citado. Todo o investimento em texto, schema e links depende desta camada.

Quanto eu já paguei em conteúdo que o GPTBot nunca conseguiu ler?

Essa é a pergunta de caixa do C1. E por isso ele trava a nota.

3. Como medimos

  • Fonte: logs da CDN, só bots verificados (identificados por IP e assinatura, não pelo texto do user-agent), por URL e por robô. Equivalente: logs do servidor com DNS reverso. Os comandos abaixo usam a Cloudflare porque é o meu caso.
  • Fonte do DNS e TLS: verificação pública do certificado e dos redirecionamentos.
  • Métrica principal: % das requisições de bots de IA verificados com 429 (ou 403), separando erro gerado na borda de erro gerado na origem.
  • Janela: 28 dias fechados na rotina; mínimo de 7 dias para avaliar uma correção.

Passo a passo da inspeção

Passo O que conferir Como (ferramenta ou comando) Limite Evidência a registrar
1 Configuração de bots na CDN Painel ou API da Cloudflare: Bot Fight Mode, Block AI bots, AI Crawl Control, regras de WAF e rate limiting Nenhuma regra barrando bot verificado Print ou JSON da configuração, com data
2 429 e 403 por robô verificado Cloudflare GraphQL httpRequestsAdaptiveGroups, filtro verifiedBotCategory não vazio e userAgent_like por robô ≤1% Aprovado; ≤10% Parcial; >10% Pendente Totais por robô (req., 429, %) e o JSON bruto
3 Quem gera o erro Mesma consulta, dimensões edgeResponseStatus × originResponseStatus Erro de origem e de borda separados Tabela com as duas colunas
4 Arquivos de descoberta Mesma consulta, por clientRequestPath (/, /robots.txt, /llms.txt, sitemaps, /okf/*) 0 não-2xx Aprovado; ≤5% Parcial; >5% Pendente Tabela por caminho e por robô
5 Cache e data center Dimensões cacheStatus e coloCode; ler a configuração de Tiered Cache Erro nunca servido do cache HIT por data center; nº de erros em HIT (deve ser 0)
6 Bots falsos na origem Mesma base, user-agents de IA não verificados que chegam à origem ≤10% Aprovado; ≤50% Parcial; >50% Pendente % e amostra de URLs pedidas
7 5xx na borda Cloudflare httpRequests1dGroups ≤0,1% Aprovado; ≤1% Parcial; >1% Pendente % de 5xx no período
8 DNS e TLS openssl s_client -servername <host> -connect <host>:443 para a validade do certificado; curl -sI em http://, http://www. e https://www. Certificado válido por mais de 14 dias; as três variantes chegam à versão canônica HTTPS em 1 salto; sem conteúdo misto Data de expiração, emissor, cadeia de redirecionamento
9 Controle Mesma consulta na janela imediatamente anterior Comparação no mesmo tamanho de janela Tabela antes e depois

Exemplo de consulta (Cloudflare GraphQL, só leitura; ajuste zona, datas e robô):

query {
  viewer {
    zones(filter: { zoneTag: "<ZONA>" }) {
      httpRequestsAdaptiveGroups(
        limit: 1000
        filter: {
          datetime_geq: "2026-10-06T21:21:00Z"
          datetime_lt: "2026-10-13T12:20:00Z"
          verifiedBotCategory_neq: ""
          userAgent_like: "%GPTBot%"
        }
      ) {
        count
        dimensions {
          clientRequestPath
          edgeResponseStatus
          originResponseStatus
          cacheStatus
          coloCode
        }
      }
    }
  }
}

Limitação do plano Free da Cloudflare: desde 01/07/2026, agentes que assinam as próprias requisições (Web Bot Auth), como os do ChatGPT, entram na mesma contagem dos bots verificados. Separar uma categoria da outra exige o plano Enterprise com Bot Management. No meu plano, eu não meço agentes assinados nem agentes com navegador à parte, e não prometo essa medição a cliente com o mesmo plano.

Nota complementar: no plano Free, a Cloudflare amostra esses dados. Eu confiro o total de 429 contra a base diária sem amostragem (httpRequests1dGroups) e declaro a amostragem no registro.

Teste com user-agent declarado (útil para reproduzir um sintoma, nunca para dar nota), espaçado em uma requisição a cada 3 s ou mais:

curl -s -A "<user-agent do robô>" -D cabecalhos.txt -o corpo.html \
  -w '%{http_code}\t%{size_download}\t%{time_starttransfer}\n' \
  https://exemplo.com.br/robots.txt

Um teste com user-agent declarado não é o robô verdadeiro. Ele mostra o que um leitor identificado como aquele robô recebeu, naquela data, daquela origem. Eu não converto esse teste em “aprovado” de log real.

Por que o robots.txt pesa tanto? Pelo RFC 9309, se o robots.txt responde erro de servidor (5xx), o crawler deve assumir bloqueio total. O Google trata o 429 no robots.txt como erro de servidor, conforme a documentação dele. Ponto de observação: a política de cada crawler de IA para o 429 no robots.txt ainda está sendo conferida, um por um. Até lá, vale só o que o RFC 9309 e o Google documentam, e esta parte será atualizada na próxima inspeção mensal.

4. Critérios

Critério Aprovado Parcial Pendente
Crawlers de IA verificados sem 429 ou 403 ≤1% ≤10% >10%
Arquivos de descoberta sem erro para bots verificados 0 ≤5% >5%
Bots falsos filtrados antes da origem ≤10% chega à origem ≤50% >50%
5xx na borda ≤0,1% ≤1% >1%
DNS e TLS: certificado válido, HTTP e com/sem www para a versão canônica HTTPS em 1 salto, sem conteúdo misto Tudo conforme Certificado válido, mas redirecionamento em mais de 1 salto ou conteúdo misto Certificado inválido ou a vencer em menos de 14 dias, ou variante sem redirecionamento

5. Como está no nosso site

Status: Pendente. INS-01 aberto. A trava de 70 na nota global continua.

DNS e TLS (conferido em 16/10/2026): certificado válido até 21/12/2026, emitido por Google Trust Services; https://www. redireciona com 301 para https://felipecferreira.com.br/ em 1 salto. O redirecionamento de HTTP para HTTPS fica “a medir” até um teste de outra origem. Ponto de observação: o teste de HTTP para HTTPS será refeito de outra origem, e o resultado entra aqui com a data.

O caso, com números e datas:

  • Linha de base (30 dias até 06/10/2026, Cloudflare, bots verificados): o GPTBot recebeu 429 em 767 de 901 requisições (85,1%) e o meta-externalagent em 4.221 de 6.462 (65,3%). Googlebot, Bingbot, ClaudeBot, OAI-SearchBot e ChatGPT-User: zero 429.
  • Arquivos de descoberta (GPTBot, mesma janela): /llms.txt com 5 de 5 em 429; /sitemap_index.xml com 29 de 31; home com 36 de 51.
  • Quem gera: 100% dos 429 vieram da origem (servidor LiteSpeed da Hostinger), zero da Cloudflare. A CDN não bloqueava; a origem, sim. O suporte da Hostinger confirmou nos logs, atribuiu a limites automáticos do servidor e informou que não abre exceção por user-agent, caminho ou faixa de IP.
  • Leitura real (12/09 a 11/10/2026): o Googlebot verificado leu 126 de 145 URLs do sitemap; o GPTBot verificado, 30.

O que já foi feito. Em 06/10/2026, entrou uma regra de cache na Cloudflare que guarda na borda, por 4 h, só as respostas 200 da home, robots.txt, llms.txt, sitemaps e OKF. Erro nunca entra no cache.

Remedição de 7 dias (13/10/2026): o GPTBot recebeu 429 em 568 de 630 requisições (90,2%), igual aos 7 dias anteriores à regra (90,3%). A regra funciona para o tráfego geral e zero erro foi servido do cache. Mas 628 das 630 requisições do GPTBot passaram por um único data center (Atlanta), em rajada de madrugada, onde a cópia em cache quase nunca estava válida. O resultado de 48 h (50%) era ruído de amostra pequena: 6 requisições.

Achado novo da mesma remedição: o Amazonbot verificado recebeu 403 da origem em 14 de 35 requisições.

Próximos passos, em ordem de custo e risco: cache em camadas da Cloudflare (Smart Tiered Cache) e TTL maior nos arquivos de descoberta, com remedição de 7 dias; depois, cache dos posts; e, como solução estrutural, uma hospedagem sem limitador automático por crawler. Ponto de observação: os dois primeiros passos entraram na Cloudflare em 14/10/2026, e este dado será atualizado na remedição programada de 21/10/2026.

6. Evidência autoral

O caminho de diagnóstico que eu uso aqui é replicável: bots verificados × erro de borda × erro de origem × status de cache × data center, com janela de controle e escopo separado. Cinco cortes que transformam “acho que a hospedagem bloqueia IA” em evidência.

As consultas e os registros do caso INS-01 ficam no nosso acervo interno de dados. A regra de cache foi desenhada para nunca guardar erro (TTL por status, sem armazenamento para 4xx e 5xx).

7. Conteúdos que aplicam esta camada

C2 · Servidor e Desempenho

Peso 10.

1. O que inspecionamos

Tempo de resposta da origem, Core Web Vitals, cache na borda, compressão, protocolo e cache de arquivos estáticos.

2. Por que importa para o negócio

Robô e cliente desistem de página lenta. Para o robô, servidor lento é orçamento de rastreio gasto com espera. Para o cliente, é anúncio pago que cai numa tela branca.

Cada segundo de espera é custo de aquisição que eu pago e não vejo na planilha.

3. Como medimos

  • Fonte: PageSpeed Insights API (dados de campo do CrUX quando houver; senão, laboratório, declarado) e Cloudflare (originResponseDuration, cacheStatus).
  • Métrica: TTFB (tempo até o primeiro byte) p75; LCP, INP e CLS p75 por template; % de HIT na borda.

Passo a passo da inspeção

Passo O que conferir Como Limite Evidência a registrar
1 Amostra de templates Escolher home, hub de pilar, listagem, post e documento 1 URL por template, no mínimo Lista de URLs com data
2 TTFB da origem PSI API (runPagespeed, mobile) com chave própria + Cloudflare originResponseDuration ≤800 ms Aprovado; ≤1.800 ms Parcial; >1.800 ms Pendente JSON da PSI e p75 da Cloudflare
3 Core Web Vitals PSI API (campo CrUX; senão laboratório) “Bom” nos 3 Aprovado; 1 ou 2 bons Parcial; nenhum Pendente Valores de LCP, INP e CLS e a origem do dado (campo ou lab)
4 Cache na borda Cloudflare GraphQL por cacheStatus ≥60% HIT Aprovado; ≥30% Parcial; <30% Pendente % HIT de HTML e de estáticos, separados
5 Compressão e protocolo curl -s -H 'Accept-Encoding: br' -w '%{http_version} %{size_download} %{time_starttransfer}' -o /dev/null <URL> br ou gzip ativo; HTTP/2 ou superior Saída do comando por URL
6 Cache de estáticos curl -sI <URL do CSS ou imagem> cache-control com max-age longo Cabeçalhos copiados

Os limites de TTFB e de Core Web Vitals seguem as faixas publicadas pelo Google em web.dev (ver Referências).

Nota complementar: site com pouco tráfego pode não ter dado de campo no CrUX. Aí uso laboratório e escrevo isso no registro. Laboratório não é experiência real de usuário.

4. Critérios

Critério Aprovado Parcial Pendente
TTFB da origem (p75) ≤800 ms ≤1.800 ms >1.800 ms
Core Web Vitals (p75 por template) Bom nos 3 1 ou 2 bons Nenhum
Cache na borda ≥60% HIT ≥30% <30%

5. Como está no nosso site

Status: a medir.

O que já sei (inspeção de 06/10/2026, a partir de um servidor externo): br e gzip ativos, HTTP/2, estáticos com max-age de 7 dias e HIT na Cloudflare. O HTML não é cacheado pela Cloudflare (DYNAMIC). TTFB em amostra única, com hit no cache do LiteSpeed, entre 0,193 s e 0,218 s em quatro URLs.

O Lighthouse não rodou: a PSI sem chave devolveu 429 de cota e o Lighthouse local levou 403 do próprio INS-01. Não há nota de Core Web Vitals nesta rodada.

6. Evidência autoral

A higienização do WordPress (pastas, banco e filas) e o tema que roda o site, o ASC Theme, são projetos meus, proprietários, não comercializados e sem código público. A inspeção de 06/10 apontou o que ainda pesa nele: main.css com 110 KB em todas as páginas, mais 17 a 49 KB de CSS inline por página, e imagens majoritariamente em PNG.

7. Conteúdos que aplicam esta camada

C3 · HTML e Acessibilidade

Peso 10.

1. O que inspecionamos

Se o HTML que chega ao robô está íntegro: um H1 por página, hierarquia de headings, blocos fechados, HTML sem lixo de editor, lang, texto alternativo (alt) nas imagens, landmarks e status HTTP das URLs do sitemap. E se o conteúdo principal já vem no HTML que o servidor entrega, sem depender de JavaScript.

2. Por que importa para o negócio

HTML quebrado faz o robô e o leitor verem a página errada. Uma seção duplicada ou um título fora de ordem confundem quem resume a página, seja um buscador, seja um assistente de IA.

E tem um ponto que pouca gente olha: a maioria dos robôs de IA não executa JavaScript. O próprio Google lembra que nem todo robô consegue rodar JavaScript; o Googlebot renderiza as páginas com status 200 numa fila, que pode levar de segundos a mais tempo. Uma medição da Vercel publicada em dezembro de 2024 não encontrou renderização de JavaScript nos robôs da OpenAI, da Anthropic, da Meta, da ByteDance e da Perplexity (Gemini, pela infraestrutura do Googlebot, e Applebot renderizam). Se o texto da página só aparece depois que o navegador roda um script, para esses robôs a página está vazia.

3. Como medimos

  • Fonte: rastreamento (crawl) do HTML público a partir dos sitemaps, mais Lighthouse Acessibilidade pela PSI API.
  • Métrica: % de URLs conformes por critério.

Passo a passo da inspeção

Passo O que conferir Como Limite Evidência a registrar
1 Lista de URLs Ler sitemap_index.xml e cada sub-sitemap ao vivo Todas as URLs do sitemap Lista com data e total
2 Status HTTP GET espaçado em cada URL (1,5 s ou mais entre requisições); pedir também uma URL inexistente (deve dar 404, não 200) e seguir os 301 até o fim (não pode terminar em 404) 100% com 200 sem redirecionamento Aprovado; ≥95% Parcial; <95% Pendente Tabela URL, status, destino
3 H1 e hierarquia Parser sobre o HTML: contar <h1>, verificar saltos de nível ≥95% conformes Aprovado; ≥80% Parcial; <80% Pendente Lista de URLs não conformes
4 Blocos e seções duplicadas Parser: cada H2 aparece uma vez; blocos abertos e fechados Nenhuma duplicata URL e trecho duplicado
5 alt e acessibilidade Parser (% de <img> de conteúdo com alt) + Lighthouse Acessibilidade ≥90 Aprovado; ≥70 Parcial; <70 Pendente % de alt e score por template
6 IDs duplicados Parser: atributos id repetidos na mesma página Zero URL e ID
7 Conteúdo sem JavaScript Baixar o HTML bruto (curl) e o HTML renderizado (navegador sem interface); comparar o texto principal Texto principal presente no HTML bruto em ≥95% das URLs Aprovado; ≥80% Parcial; <80% Pendente URL, % do texto presente no HTML bruto

4. Critérios

Critério Aprovado Parcial Pendente
Um H1 por página e hierarquia correta ≥95% ≥80% <80%
HTML semântico e acessibilidade ≥90 ≥70 <70
Status HTTP das URLs do sitemap: 200 sem redirecionamento, sem soft 404 (página inexistente respondendo 200) e sem 301 que termina em 404 100% conformes ≥95% <95%
Conteúdo principal no HTML do servidor, sem depender de JavaScript ≥95% ≥80% <80%

5. Como está no nosso site

Status: a medir. O crawl de 12/10/2026 cobriu 145 URLs, mas os headings ainda não foram pontuados. O critério de conteúdo sem JavaScript nunca foi medido.

Conferido em 16/10/2026: uma URL inexistente do nosso site responde 404, como deve. Remedido em 17/10/2026: a URL antiga /blog/como-criar-imagens-com-inteligencia-artificial/ faz 301 para um endereço que responde 404. Foi esse caso, ligado ao tema do post 635, que motivou a ampliação do critério.

Sem JavaScript na C3, versão para máquina na C7. O nosso bundle OKF oferece às máquinas uma versão em texto limpo de cada página (ver C7). Isso não substitui o critério desta camada: os buscadores e a maioria dos robôs de IA leem a página HTML, e não há evidência pública de que todos usem llms.txt ou versões em Markdown. Por isso são dois critérios.

Caso real: em 12/10/2026, a página 7805 “Tráfego e Dados” exibiu uma seção duplicada por causa de dois fechamentos de bloco ausentes. Corrigi no mesmo dia, e cada H2 voltou a aparecer uma vez.

Pendências medidas na inspeção de 06/10/2026: 261 anexos sem alt no banco e 128 páginas com <img alt=""> fora do logo; 1 post com id="h-" duplicado.

6. Evidência autoral

O ASC Theme gera a estrutura das páginas (H1 único pelo título, painel de perguntas frequentes, blocos do Resumo). É projeto proprietário, não comercializado e sem código público.

7. Conteúdos que aplicam esta camada

C4 · Metadados

Peso 10.

1. O que inspecionamos

Title, meta description, canonical, og:title e og:description, a coerência entre eles, e se o que o sitemap promete bate com o que a página declara sobre indexação.

2. Por que importa para o negócio

O title e a description são a vitrine no resultado de busca e o primeiro resumo que a máquina lê. Quando o og:title diz uma coisa e o title diz outra, o site manda dois recados diferentes sobre a mesma página.

3. Como medimos

  • Fonte: crawl do HTML público; no nosso site, leitura dos campos do Yoast pelo servidor (WP-CLI, só leitura).
  • Métrica: % de URLs conformes.

Passo a passo da inspeção

Passo O que conferir Como Limite Evidência a registrar
1 Title e description presentes e únicos Parser no crawl: <title> e meta name="description"; agrupar duplicatas ≥95% Aprovado; ≥80% Parcial; <80% Pendente Lista de ausentes e de duplicados
2 Coerência do og Parser: comparar og:title com <title> e og:description com a description 100% coerentes Aprovado; ≥90% Parcial; <90% Pendente Pares divergentes, URL por URL
3 Canonical Parser: link rel="canonical" auto-referente, sem parâmetro 100% Aprovado; ≥95% Parcial; <95% Pendente URLs com canonical inválido
4 Campos de origem (site próprio) wp post meta get <ID> _yoast_wpseo_title e _yoast_wpseo_metadesc Preenchidos à mão, sem template automático Saída do comando por ID
5 Indexabilidade coerente Parser no crawl: meta name="robots" e cabeçalho X-Robots-Tag de cada URL do sitemap; comparar a URL com o canonical declarado Nenhuma URL do sitemap com noindex e todas auto-canônicas Aprovado; ≤5% fora Parcial; >5% Pendente URLs com noindex ou canonical apontando para outra URL
6 Datas honestas Listar dateModified de todos os posts (WP-CLI ou JSON-LD) e agrupar por data; comparar cada grupo grande com o histórico de revisões para separar edição real de atualização técnica em massa ≥95% dos posts com data coerente Aprovado; ≥80% Parcial; <80% Pendente (limites provisórios, em validação) Grupos de posts com a mesma data e a origem da mudança

Nota sobre WordPress com Yoast SEO. No meu site, a gestão do sitemap é feita pelo Yoast SEO, que é a escolha de stack do site, e não uma regra geral. Quando eu marco uma página como noindex, o Yoast tira essa URL do sitemap automaticamente na atualização seguinte. Segundo a documentação oficial do Yoast, o mesmo vale para a página cujo canonical aponta para outra URL. Por isso, num site em que tudo passa pelo Yoast, este critério tende a ser aprovado, e a inspeção se concentra no que o plugin não enxerga: noindex enviado no cabeçalho X-Robots-Tag pelo servidor ou pela CDN, noindex colocado pelo tema ou por outro plugin, URL que segue no sitemap com o canonical apontando para outra página, um segundo sitemap ativo (como o nativo do WordPress) e sitemap desatualizado em cache. Se o site usa outro plugin de SEO, WordPress sem o Yoast ou outra stack ou tecnologia, eu verifico como aquela ferramenta faz a gestão do sitemap e da indexabilidade, e confiro o critério URL por URL, sem presumir essa exclusão automática.

4. Critérios

Critério Aprovado Parcial Pendente
Title e meta description presentes e únicos ≥95% ≥80% <80%
og:title e og:description coerentes com o title 100% ≥90% <90%
Canonical correto 100% ≥95% <95%
Indexabilidade coerente: nenhuma URL do sitemap com noindex (meta robots ou X-Robots-Tag) e o sitemap lista só URLs canônicas 100% ≥95% <95%
Datas honestas: o “Atualizado em” e o dateModified mudam só com edição real de conteúdo, nunca por atualização técnica em massa (limites provisórios, em validação) ≥95% ≥80% <80%

O status 200 das URLs do sitemap não entra aqui: ele já é medido na C3. A C4 olha só noindex e coerência de canonical, para não contar o mesmo problema duas vezes.

Critério oficial desde 16/10/2026 (decisão 15): datas honestas. Atualização técnica em massa não deve mudar o “Atualizado em” nem o dateModified. Caso real (inspeção de 06/10/2026): uma edição programática em 27 e 28/07/2026 mudou o dateModified de 84 posts, inclusive notícias de 2024 que passaram a exibir “Atualizado em 28/07/2026”.

5. Como está no nosso site

Status: a medir.

Pendência conhecida, conferida de novo em 16/10/2026: na 7805 “Tráfego e Dados”, o title é “Tráfego e Dados: Investimento com Mensuração” e o og:title é “Tráfego e Dados: verba que sabe quando escalar”.

6. Evidência autoral

O padrão de metadados (title escrito à mão, description de 120 a 156 caracteres, sem travessão) é regra do meu método de produção de conteúdo, aplicado em cada revisão de post.

7. Conteúdos que aplicam esta camada

C5 · Schema e Entidades

Peso 15.

1. O que inspecionamos

JSON-LD (dados estruturados) válido, @id estáveis, autor ligado à Person pelo @id, Organization e Person com sameAs limpo, campos obrigatórios por tipo, entidades duplicadas e ofertas (Service, Offer, Book) completas.

2. Por que importa para o negócio

É assim que a máquina entende quem é o autor, o que a empresa faz e o que ela vende. Sem isso, a IA pode até ler a página, mas não liga o conteúdo à pessoa nem à oferta.

Se um assistente de IA não sabe que o especialista do post é a mesma pessoa que vende a consultoria, quem ganha a recomendação?

3. Como medimos

  • Fonte: extração dos blocos application/ld+json de todas as URLs do sitemap, parser estrutural, validator.schema.org e Rich Results Test (manual, por amostra).
  • Métrica: % de URLs conformes por critério.

Passo a passo da inspeção

Passo O que conferir Como Limite Evidência a registrar
1 JSON-LD presente e parseável Extrair todos os blocos ld+json do crawl e fazer json.loads 100% Aprovado; ≥90% Parcial; <90% Pendente URLs sem bloco ou com erro de parse
2 Uma Person e uma Organization Contar @id distintos de Person e Organization em todas as páginas; ler sameAs 1 Person + 1 Organization e sameAs limpo Aprovado; ids ok e sameAs com falha Parcial; ids divergentes Pendente Lista de @id e de sameAs
3 Autor ligado por @id Em todo Article e TechArticle, conferir author.@id = @id da Person 100% Aprovado; ≥80% Parcial; <80% Pendente Contagem e exceções
4 BreadcrumbList válido Posições sequenciais, name e item 100% Aprovado; ≥90% Parcial; <90% Pendente Exceções
5 Entidades duplicadas Mesmo objeto (ex.: vídeo do YouTube) com mais de um @id 0 Aprovado; ≤2 Parcial; >2 Pendente Objeto e @id envolvidos
6 Campos obrigatórios por tipo Article: headline, datePublished, author, image 100% Aprovado; ≥90% Parcial; <90% Pendente URLs sem campo
7 Ofertas completas Service, Offer e Book com campos obrigatórios; preço idêntico ao texto visível Todos Aprovado; falta 1 tipo Parcial; mais Pendente Tipo e campo faltante
8 Validação externa validator.schema.org e Rich Results Test em 1 URL por template Sem erro Print com data

Exemplo rápido para conferir o autor de uma página (só leitura):

curl -s https://exemplo.com.br/<url-do-post>/ \
  | python3 -c "import sys,re,json; [print(n.get('@type'), n.get('author')) for b in re.findall(r'application/ld\+json[^>]*>(.*?)</script>', sys.stdin.read(), re.S) for n in json.loads(b).get('@graph', [])]"

4. Critérios

Critério Aprovado Parcial Pendente
JSON-LD presente e parseável 100% ≥90% <90%
Person e Organization com @id único e sameAs limpo Ambos ok ids ok, sameAs com falha ids divergentes
Autor ligado por @id 100% ≥80% <80%
BreadcrumbList válido 100% ≥90% <90%
Entidades duplicadas 0 ≤2 >2
Campos obrigatórios por tipo 100% ≥90% <90%
Offers e Service completos Todos Falta 1 tipo Mais

5. Como está no nosso site

Status: Parcial. Nota 64,3 na linha de base de 12/10/2026 (145 URLs do sitemap, pelo servidor, só leitura).

  • Aprovado, autor por @id (KG-02): 114 de 114 artigos (111 Article e 3 TechArticle). Conferido por amostra ao vivo em 16/10/2026 (Protocolo L0 : L7 e um post da Biblioteca).
  • Aprovado, BreadcrumbList: 144 de 144 estruturalmente válidos.
  • Parcial, JSON-LD presente: 144 de 145. A exceção é o /mapa/, sem nenhum bloco.
  • Parcial, identidade: uma Person e uma Organization em todas as páginas, mas a Organization sai sem sameAs (KG-06) e a Person com perfis antigos ou com parâmetro (KG-08). Conferido em 16/10/2026.
  • Parcial, duplicatas: 2 de 7 vídeos com mais de um @id.
  • Parcial, campos obrigatórios: 110 de 114. Quatro documentos ou posts sem image, entre eles o próprio Protocolo L0 : L7.
  • Parcial, ofertas: 8 Service com provider ligado à Organization; o Book do livro tem Offer, mas sem preço nem moeda (conferido em 16/10/2026).

Limitação declarada: na linha de base, a validação foi estrutural. Rich Results Test e validator.schema.org ainda não rodaram.

6. Evidência autoral

O schema do site sai de uma fonte única da verdade, no ASC Theme e no plugin de núcleo do site, os dois proprietários, não comercializados e sem código público. A correção do KG-02 foi feita ali. O POP de implementação e homologação de JSON-LD é o procedimento que eu sigo antes de publicar qualquer bloco novo.

7. Conteúdos que aplicam esta camada

C6 · Grafo e Links Internos

Peso 15.

1. O que inspecionamos

Como as páginas se ligam: posts órfãos (sem link de corpo vindo de outro post), ligação dos posts com a página do pilar, links internos quebrados, profundidade de clique a partir da home, URLs com parâmetro no grafo e quantas páginas os robôs verificados de fato leram.

2. Por que importa para o negócio

Página que ninguém linka é página que o robô demora a achar, ou nunca acha. E o link interno é o que diz para a máquina “este post faz parte deste assunto, e este assunto é o que eu vendo”.

Grafo interno bem ligado é o que transforma uma pilha de posts em autoridade num tema.

3. Como medimos

  • Fonte: crawl de todas as URLs do sitemap (no nosso site, executado no próprio servidor), grafo de links do corpo do post e logs da CDN para a leitura por robôs.
  • Métrica: contagens e percentuais por critério.

Passo a passo da inspeção

Passo O que conferir Como Limite Evidência a registrar
1 Grafo de links Parser no HTML de cada URL: links do corpo (área de conteúdo) e da página inteira, separados Todas as URLs do sitemap Arquivo do grafo com data
2 Órfãos Posts sem link de corpo vindo de outro post 0 Aprovado; ≤5 Parcial; >5 Pendente Lista de órfãos com ID e título
3 Cluster ligado ao pilar % de posts com link de corpo para a página do seu pilar ≥90% Aprovado; ≥60% Parcial; <60% Pendente Lista de posts sem o link
4 Links quebrados Links de corpo para 404 (e cadeias de 301) 0 Aprovado; ≤5 Parcial; >5 Pendente Origem, destino e status
5 Profundidade Busca em largura a partir da home, só URLs do sitemap ≥90% a até 3 cliques Aprovado; ≥70% Parcial; <70% Pendente Distribuição por nível e não alcançadas
6 Parâmetros no grafo Links internos e sameAs com query string 0 Aprovado; ≤3 Parcial; >3 Pendente Lista
7 Nós lidos por robôs URLs do sitemap com pelo menos um 2xx de robô verificado (pior entre GPTBot e Googlebot) ≥90% Aprovado; ≥60% Parcial; <60% Pendente Contagem por robô, com janela

4. Critérios

Critério Aprovado Parcial Pendente
Posts órfãos 0 ≤5 >5
Cluster ligado ao hub do pilar ≥90% ≥60% <60%
Links internos quebrados e cadeias de 301 0 ≤5 >5
Profundidade de clique (≤3) ≥90% ≥70% <70%
URLs sem parâmetro no grafo 0 ≤3 >3
Nós lidos por bots verificados ≥90% ≥60% <60%

5. Como está no nosso site

Status: Pendente. Nota 25,0 na linha de base de 12/10/2026.

  • Pendente, órfãos: 53 de 111 posts.
  • Pendente, ligação com o pilar: 11 de 111 posts (9,9%) linkavam a página do seu pilar.
  • Pendente, leitura por robôs: GPTBot leu 30 de 145 URLs (20,7%); Googlebot, 126 (86,9%). Dos 53 órfãos, o GPTBot leu só 8.
  • Parcial, links quebrados: 3 PDFs em 404 e 7 links de corpo passando por 301 antigos.
  • Parcial, profundidade: 108 de 145 URLs (74,5%) a até 3 cliques; 29 não alcançadas pela home.
  • Parcial, parâmetros: zero no corpo, mas o sameAs da Person ainda leva ?sub_confirmation=1.

Desde 13/10, estou revisando posts com link para o pilar e links de entrada para os órfãos. Ponto de observação: os números desta camada são da linha de base de 12/10/2026. A remedição com o mesmo script entra na próxima inspeção mensal, com a data, e atualiza esta seção e a Transparência.

6. Evidência autoral

O KG Map FCF, de Felipe C. Ferreira, é o plugin que lê os dados internos do nosso site (posts, termos, schema e @id) e projeta o grafo para humanos. É projeto proprietário, não comercializado e sem código público. Ele não é crawler externo nem motor de nota: a nota vem da régua deste documento.

7. Conteúdos que aplicam esta camada

C7 · Acesso por Agentes de IA

Peso 10.

1. O que inspecionamos

Se o site libera e entrega os arquivos que agentes e crawlers de IA procuram: robots.txt com permissão explícita, llms.txt presente e acessível, uma versão de cada página para máquina (no nosso caso, o bundle OKF, Open Knowledge Format, em Markdown) e se os robôs de IA estão, de fato, rastreando.

2. Por que importa para o negócio

Agente de IA não navega como gente. Ele procura a porta de entrada: robots.txt, llms.txt, sitemap e versões legíveis por máquina. Se a porta existe mas responde erro, o efeito é igual a não ter porta.

E aqui tem uma diferença que vale dinheiro: liberar no robots.txt não garante acesso. O meu próprio site libera todos os principais robôs e, mesmo assim, o GPTBot levou 429 no llms.txt.

3. Como medimos

  • Fonte: robots.txt, llms.txt e versão para máquina públicos, e logs da CDN ou do servidor (bots verificados). Sem log, o público confirma só que o llms.txt existe, e o critério fica no máximo Parcial.
  • Métrica: permissão declarada e resposta 200 real para bots verificados.

Passo a passo da inspeção

Passo O que conferir Como Limite Evidência a registrar
1 robots.txt curl -s https://exemplo.com.br/robots.txt; ler grupos por user-agent Allow para GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot e demais principais Cópia do arquivo com data
2 Estrutura do robots.txt Conferir se regras soltas caem no grupo errado e se os grupos de bots herdam o que precisam Sem regra órfã Linhas problemáticas
3 llms.txt presente curl -s -o /dev/null -w '%{http_code}' https://exemplo.com.br/llms.txt 200, conteúdo coerente com o site Status e cópia
4 llms.txt para bots verificados Logs da CDN, caminho /llms.txt, bots verificados 100% em 200 Aprovado; ≥80% Parcial; <80% Pendente Tabela por robô
5 Versão para máquina Amostra de páginas: existe versão em texto limpo? O cabeçalho aponta o canonical para o HTML? A rota está declarada no llms.txt? Todas as condições em ≥95% das páginas da amostra Aprovado; versão existe, mas falta canonical ou rota Parcial; sem versão Pendente URL do HTML, URL da versão, cabeçalho copiado
6 Robôs rastreando Logs da CDN: requisições 2xx por semana de GPTBot, ClaudeBot, OAI-SearchBot, PerplexityBot Todos >0 Aprovado; alguns Parcial; nenhum Pendente Contagem por robô

4. Critérios

Critério Aprovado Parcial Pendente
robots.txt permite crawlers de IA Todos os principais Maioria Bloqueio
llms.txt presente e acessível para bots verificados 100% ≥80% <80%
Bots de IA efetivamente rastreando Todos >0 Alguns Nenhum
Versão para máquina com canonical para o HTML e rota no llms.txt Completa Incompleta Ausente

O acesso real dos bots verificados a /okf/* já é medido na C1 (arquivos de descoberta), por isso não vira critério separado aqui.

5. Como está no nosso site

  • robots.txt: Aprovado. Conferido em 16/10/2026: Allow explícito para robôs de treino (GPTBot, Google-Extended, ClaudeBot e outros), de busca (OAI-SearchBot, Googlebot, bingbot, PerplexityBot e outros) e de acesso a pedido do usuário (ChatGPT-User, Claude-User, Perplexity-User e outros).
  • llms.txt: Pendente. Responde 200 para um leitor comum (16/10/2026), mas o GPTBot verificado levou 429 em 5 de 5 requisições nos 30 dias até 06/10 e em 8 de 9 na remedição de 13/10. Depende do INS-01.
  • Versão para máquina: a medir na amostra completa. Conferido ao vivo em 16/10/2026: o llms.txt aponta as representações OKF em /okf/*.md e diz que o HTML permanece a fonte canônica; o arquivo OKF do pilar Busca e Autoridade traz no cabeçalho resource e sources.canonical-html apontando para a página HTML; o robots.txt cita o llms.txt e o índice OKF em comentário e tem Allow: /okf/. Por isso não há conteúdo duplicado: a máquina sabe qual é a origem.
  • Acesso ao OKF (lido na C1): o GPTBot levou 429 em 42 de 42 requisições a /okf/* na remedição de 13/10.
  • Robôs rastreando (30 dias até 06/10): ClaudeBot 1.350 requisições, OAI-SearchBot 482, ChatGPT-User 260; GPTBot só 65 com 2xx. Ponto de observação: o status deste critério sai no primeiro ciclo mensal completo de medição.

Pendência de estrutura (inspeção de 06/10): o Allow: /okf/ do bloco OKF fica solto e acaba anexado ao grupo *.

6. Evidência autoral

O OKF Manager (OKF Bundle Manager) gera o bundle /okf/, com o canonical de cada arquivo, e o llms.txt do site. A política de crawlers de IA do robots.txt sai do ASC Theme. Os dois são projetos proprietários, não comercializados e sem código público.

7. Conteúdos que aplicam esta camada

C8 · Indexação e Citação por IA

Peso 15: indexação 10 e citação por IA 5.

1. O que inspecionamos

Duas coisas diferentes, medidas separadas:

  • Indexação: quantas URLs do sitemap estão de fato no índice do Google.
  • Citação por IA: se o site ou a marca aparecem nas respostas de assistentes de IA para um conjunto fixo de perguntas.

2. Por que importa para o negócio

É aqui que o trabalho das outras sete camadas vira visita e contato. Mas eu separo as duas medidas de propósito: nota técnica alta não garante citação. Quem promete citação a partir de checklist técnico está vendendo o que não mede.

Quando o meu cliente pergunta ao ChatGPT quem resolve o problema dele, o meu nome aparece?

3. Como medimos

Indexação (peso 10)

  • Fonte: Search Console, API de Inspeção de URL (em rodízio, pela cota diária) e Search Analytics com dados finais.
  • Métrica: % de URLs “Enviada e indexada”.
  • Sinal complementar, sem nota: cliques, impressões e posição em 28 dias. Fica fora da nota até termos 3 meses de dado limpo.

Citação por IA (peso 5)

  • Fonte: teste manual datado, com prompts fixos, em ChatGPT, Gemini, Perplexity, AI Overviews e Copilot. No meu site, uso a lista de exemplo publicada logo abaixo. Para cliente, na contratação, os prompts são escritos de forma personalizada.
  • Métrica: % de respostas em que a marca ou o site são citados, sobre o total de respostas da rodada (prompt × assistente × dia). Com a lista de exemplo, são 6 prompts em 5 assistentes e em 2 dias: 60 respostas por rodada.
  • Sinal complementar, sem nota: sessões vindas de assistentes de IA no GA4 (canal de assistentes de IA e referrers como chatgpt.com, copilot.com e perplexity.ai). O GA4 fica fora da nota porque mede a visita humana, que é consequência; a nota mede se a máquina acessa, entende, indexa e cita.

Passo a passo da inspeção

Passo O que conferir Como Limite Evidência a registrar
1 Indexação por URL API de Inspeção de URL do Search Console, em rodízio ≥90% indexadas Aprovado; ≥60% Parcial; <60% Pendente Resultado por URL com data
2 Sitemap no Search Console Relatório de sitemaps Sem erro nem aviso Print com data
3 Desempenho orgânico (sem nota) Search Analytics, 28 dias fechados, contra os 28 anteriores Só acompanhamento Cliques, impressões, posição
4 Conjunto de prompts Lista fixa por intenção de busca: no meu site, a lista de exemplo desta página; para cliente, prompts personalizados na contratação Mesma lista em todas as rodadas Lista versionada, com data
5 Teste de citação Rodar cada prompt em cada assistente, em 2 dias diferentes, sessão sem histórico ≥50% das respostas com citação Aprovado; ≥20% Parcial; <20% ou sem teste Pendente Resposta literal, fontes citadas, data, assistente
6 Visitas de IA (sem nota) GA4, canal de assistentes de IA e referrers Só acompanhamento Sessões em 28 dias

Nota complementar: o campo de URLs indexadas da API de sitemaps do Search Console é obsoleto. Para indexação, uso a Inspeção de URL.

Prompts de exemplo do teste de citação (lista 1, do meu site)

Estas são as perguntas que eu uso para medir a citação do meu próprio site. Elas cobrem o que eu de fato faço: SEO e GEO, autoridade, tecnologia aplicada, tráfego e dados e consultoria. Nenhuma cita o meu nome nem o domínio, para não induzir a resposta.

# Intenção Prompt
1 Conceito (SEO e GEO) O que é GEO (otimização para motores generativos) e o que muda em relação ao SEO para o site de uma empresa no Brasil?
2 Técnica (acesso de robôs) Como saber se os robôs de IA, como o GPTBot, conseguem acessar o site da minha empresa, e o que pode estar bloqueando esse acesso?
3 Autoridade (schema e entidades) Como usar JSON-LD e Schema.org para que o Google e os assistentes de IA entendam quem é a empresa, quem é o autor e quais serviços o site oferece?
4 Tecnologia aplicada (WordPress) Como preparar um site em WordPress para ser lido por agentes de IA, com llms.txt e uma versão em texto limpo das páginas, sem perder o HTML como versão principal?
5 Tráfego e dados (mensuração) Como medir no GA4 as visitas que chegam do ChatGPT, do Copilot e do Perplexity, e ligar essas visitas a contatos e vendas?
6 Contratação (consultoria) Quem faz consultoria de SEO e GEO no Brasil para preparar o site de uma empresa para buscadores e assistentes de IA?

Como cada rodada é feita e registrada. Cada prompt é rodado em cada um dos 5 assistentes (ChatGPT, Gemini, Perplexity, AI Overviews e Copilot), em 2 dias diferentes, sempre em sessão sem histórico (sem login ou em janela anônima). Para cada resposta, eu registro a data, o assistente, a resposta literal, as fontes citadas e o resultado: Citado, quando a resposta menciona Felipe C. Ferreira ou traz o felipecferreira.com.br entre as fontes, ou Não citado. A porcentagem da C8 é calculada sobre o total de respostas da rodada, e não sobre os prompts: cada combinação de prompt, assistente e dia conta como uma resposta. Assim, a nota mostra a diferença entre os assistentes, em vez de dar o prompt inteiro como citado porque um assistente citou uma vez. A citação é medida uma vez por mês.

A lista é versionada. A redação não muda entre as rodadas, e qualquer troca de pergunta vira uma lista nova, com data e registro no histórico de versões. Esta é a lista 1, válida a partir da publicação desta página. Até hoje, nenhum teste foi rodado com ela.

Para cliente, a regra é outra: na contratação, os prompts são escritos de forma personalizada, a partir do negócio, da oferta e do público dele, e seguem o mesmo registro datado. Como a nota, o resultado do cliente é privado.

4. Critérios

Bloco Critério Aprovado Parcial Pendente
Indexação (10) URLs do sitemap indexadas ≥90% ≥60% <60%
Citação (5) Respostas com citação da marca ou do site (sobre o total de respostas da rodada) ≥50% ≥20% <20% ou sem teste

Recomendação, fora da nota (decisão do Felipe, 16/10/2026): resposta direta e citabilidade (todo H1 em forma de pergunta respondido no primeiro parágrafo). Caso real (inspeção de 06/10/2026): 9 de 22 posts com H1 em pergunta não respondiam no primeiro parágrafo.

5. Como está no nosso site

  • Indexação: a medir. O snapshot de 06/10/2026 foi parcial. Na remedição de 13/10, 6 inspeções de URL passaram com rastreio bem-sucedido, e o sitemap estava sem erros nem avisos.
  • Desempenho orgânico (sem nota): 28 dias até 04/10/2026, 7 cliques, 1.010 impressões e posição média 7,5. Na semana de 05 a 11/10, 1 clique e 208 impressões, com a posição média indo de 7,2 para 12,8.
  • Citação por IA: Pendente. Nenhum teste rodado até hoje.
  • Visitas de assistentes (sem nota): 28 dias até 11/10/2026, 1 sessão de chatgpt.com e 7 de copilot.com.

6. Evidência autoral

O plugin de diagnóstico SEO/GEO que eu uso no laboratório é proprietário, não comercializado e sem código público. O registro de uma rodada dele no site ao vivo está publicado na Biblioteca.

7. Conteúdos que aplicam esta camada

Transparência: o que Ainda Não Resolvemos

Antes de auditar o seu site, eu mostro o meu. Hoje, estas são as pendências abertas:

  • INS-01 (C1): a origem (LiteSpeed da Hostinger, atrás da Cloudflare) devolve 429 ao GPTBot e ao meta-externalagent verificados, sem exceção possível. A trava de 70 segue ativa.
  • Grafo (C6): linha de base de 25,0, com 53 órfãos e só 11 posts ligados ao pilar em 12/10. Estou corrigindo em lotes.
  • Identidade (C5): Organization sem sameAs e Person com perfis antigos no sameAs.
  • Ofertas (C5): o Book do livro sem preço nem moeda na Offer.
  • /mapa/ (C5 e C6): no sitemap, sem JSON-LD e fora do alcance pela home. Vai virar o KG Map FCF.
  • Metadados (C4): og:title da 7805 diferente do title.
  • Desempenho (C2): sem Lighthouse nem Core Web Vitals medidos, por cota e pelo próprio INS-01.
  • Citação (C8): nenhum teste rodado ainda.
  • Critérios novos (C1, C3, C4, C7): HTTP para HTTPS, conteúdo sem JavaScript, indexabilidade coerente e versão para máquina na amostra completa ainda estão “a medir”.
  • Agentes assinados: no plano Free, eles entram na contagem dos bots verificados desde 01/07/2026, e eu não consigo separá-los.
  • Dados: a Cloudflare no plano Free amostra os números, e eu declaro isso ao lado de cada leitura.

Quando a nota global sai. Ela é publicada assim que esta documentação estiver fechada e todos os dados que o modelo de cálculo exige estiverem disponíveis. No mesmo dia, ficam públicos a nota, esta documentação e a página que explica como o cálculo é feito. A nota pode não ser alta, e vários pontos de melhoria vão ficar à vista. Isso faz parte do método: ela é auditável por qualquer pessoa. Até lá, publico as notas por camada que já têm linha de base e deixo o resto como “a medir”.

Histórico de Versões

As versões anteriores foram de testes internos e de laboratório. Esta documentação vale a partir da versão 3.1.0.

  • v3.1.0 (16/10/2026): primeira versão pública da documentação. Nova seção “Quem Acessa o Seu Site: os Tipos de Acesso por Máquina” (crawler, fetcher acionado pelo usuário, Googlebot e Bingbot que renderizam, agente com navegador, automação headless e clique humano vindo de resposta de IA), com o efeito de cada um no método: C3 sem JavaScript mantido, HTML semântico para agentes com navegador, GA4 fora da nota (com a inferência sobre agentes com navegador declarada como tal) e a limitação dos agentes assinados no plano Free; limitação dos agentes assinados no plano Free da Cloudflare; retenção de 31 dias e nota mensal sobre a coleta semanal acumulada (desde 08/09/2026); CDN da Hostinger inativa no nosso site e incompatível com a Cloudflare. Fonte da afirmação sobre JavaScript na C3 (Google e Vercel) e da limitação de agentes assinados (Cloudflare) adicionadas às Referências. Datas honestas entrou na nota como critério da C4, e indexabilidade coerente foi confirmada nela (5 critérios, 2,00 pontos cada; 36 critérios no total), com a ressalva de que, no meu site, a gestão do sitemap é do Yoast SEO; resposta direta ficou como recomendação fora da nota. Teste de citação da C8 com a lista de exemplo de 6 prompts do meu site e prompts personalizados para cliente, na contratação; a porcentagem da citação é calculada sobre o total de respostas da rodada (prompt × assistente × dia). Schema: isBasedOn → Protocolo L0 : L7 (8178); citation → fontes externas da Referências.
  • v3 (16/10/2026, testes internos e de laboratório): critérios definidos pela função, não pela marca; Cloudflare como caso e recomendação; critérios novos de DNS e TLS (C1), conteúdo sem JavaScript (C3), indexabilidade coerente (C4, proposto) e versão para máquina (C7); status ampliado na C3 (soft 404 e 301 que termina em 404); desempenho orgânico e GA4 fora da nota; recurso ausente vale 0; modelos de acesso; inspeção só com dado público tratada como outro produto; cadência mensal; nota de cliente privada; entrega ao cliente em página interativa (roteiro). 35 critérios.
  • v2 (16/10/2026, testes internos e de laboratório): nome “Método de Inspeção GEO em 8 Camadas”; camadas com códigos C1 a C8 (C = camada), separados dos códigos L0 a L7 do Protocolo; C7 confirmada como Acesso por agentes de IA; critério sem medição conta como Pendente (0) e aparece como “a medir”; a atribuição da nota passa para uma página própria; chamada final reescrita.
  • v1 (16/10/2026, testes internos e de laboratório): primeiro texto completo das 8 camadas, com estrutura fixa de 7 partes, passo a passo reproduzível, critérios e limites por camada, modelo de registro de evidência, explicação da nota e da trava do C1. KG-02 registrado como resolvido (114 de 114 artigos em 12/10, conferido por amostra ao vivo em 16/10). Remedição de 7 dias do INS-01 (13/10) incorporada.
  • v0 (12/10/2026, testes internos e de laboratório): índice, texto da primeira camada e versão enxuta das camadas 2 a 8 (ainda com códigos L1 a L8). Decisões do Felipe: URL, formato, pesos, pontuação, trava de 70 e Protocolo L0 : L7 como base, sem redirecionamento.

Vamos Conversar?

Bom, espero que tenha ficado claro o que eu meço, como eu meço e por quê.

Se você chegou até aqui, este convite é para você. Pode ser para o seu próprio projeto, para a empresa onde você trabalha (como gestor ou como colaborador que precisa levar esse assunto para dentro de casa) ou, eventualmente, para outro profissional do mercado que quer trocar sobre método e evidência.

Se o seu site recebe visitas, mas você não sabe se o GPTBot consegue ler a página que te traz cliente, a conta começa por aí. Pense sempre no médio e longo prazo.

Quer entender como eu trabalho busca e autoridade, do Google às respostas de IA? Comece pelo pilar Busca e Autoridade.

E se quiser conversar direto comigo, me chame no WhatsApp. Vai ser um prazer falar contigo.

Referências

Microsoft Bing, Webmaster Guidelines. Rastreamento e renderização eficientes; conteúdo que não renderiza de forma confiável pode não ser indexado.

OpenAI Help Center, ChatGPT Work’s Cloud browser allowlisting. Assinatura das requisições com Web Bot Auth (RFC 9421).

Ajuda do Google Analytics, exclusão de tráfego de bots conhecidos.

Google Search Central, noções básicas de SEO para JavaScript. Fila de renderização para páginas com status 200 e aviso de que nem todo robô executa JavaScript.

Vercel, The rise of the AI crawler (dezembro de 2024). Medição de renderização de JavaScript por robôs de IA.

Cloudflare, Verified bots (atualizada em 08/10/2026). Agentes assinados tratados como verificados desde 01/07/2026.

IETF, RFC 9309: Robots Exclusion Protocol. Comportamento do crawler para robots.txt indisponível (4xx) e inalcançável (5xx).

Google, especificação do robots.txt. Tratamento do 429 como erro de servidor.

Google Search Central, práticas recomendadas para links rastreáveis.

Google Search Central, introdução aos dados estruturados.

Google, Search Console API: Inspeção de URL.

Google, PageSpeed Insights API v5.

web.dev, Time to First Byte (TTFB). Faixas de referência.

web.dev, Core Web Vitals (LCP, INP e CLS). Faixas de referência.

W3C, Web Content Accessibility Guidelines (WCAG).

Cloudflare, Verified Bots.

Cloudflare, GraphQL Analytics API.

Cloudflare, Tiered Cache.

OpenAI, documentação dos crawlers (GPTBot, OAI-SearchBot e ChatGPT-User).

llmstxt.org, proposta do arquivo llms.txt.

Schema.org, TechArticle.

Schema.org, DefinedTermSet.

Schema.org, Schema Markup Validator.

Google, Teste de pesquisa aprimorada (Rich Results Test).

Experiência do autor: inspeções e medições no felipecferreira.com.br entre 06/10 e 16/10/2026.

Controle de versão

Primeira versão pública do Método de Inspeção GEO em 8 Camadas: 8 camadas, 36 critérios, passo a passo reproduzível, nota e trava do C1.

Atendimento Personalizado

Vamos conversar sobre o seu projeto?

Conte seu contexto e vamos entender qual caminho faz sentido para o seu momento.

Conversar no WhatsApp