Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
8.5 KiB
SEO, AEO e GEO: medição antes e depois (2026-10-05)
Este documento registra o que foi medido, com ferramenta e comando, e o que ainda depende de conta externa. Ele complementa docs/seo-geo-operations.md (runbook de Search Console, Bing, Cloudflare e CrUX, ainda não executado) e respeita as exclusões dele: sem llms.txt, sem FAQPage/ProfessionalService/LocalBusiness, sem páginas por cidade, sem keywords, sem datas ou métricas inventadas.
Como repetir
# 1) auditoria (HTML sem JavaScript, como um robô vê); funciona em produção ou localhost
node scripts/seo-audit.mjs --base https://evandro.dev.br --out audit-depois.json
# 2) comparar duas execuções (antes.json vs depois.json); sai com código 2 se algo piorou
node scripts/seo-compare.mjs audit-antes.json audit-depois.json
A auditoria lê o sitemap.xml e confere, página a página: status, compressão, TTFB, lang, title e description (tamanho e unicidade), canônica própria, indexabilidade, um h1 e hierarquia, alt das imagens, links internos e externos, Open Graph e Twitter Card (e se a imagem social abre), JSON-LD (válido, referências @id resolvem, sem os tipos excluídos pela política), resposta direta cedo no HTML, acesso de 8 robôs de busca e de IA (Googlebot, bingbot, OAI-SearchBot, GPTBot, ChatGPT-User, Claude-SearchBot, ClaudeBot, PerplexityBot), e-mail visível para robôs, links do GitHub e links internos quebrados. Cada verificação é passa/falha com a evidência; não existe "nota" inventada.
Resultado: main contra a branch (build de produção local, 17 URLs)
| Grupo | main |
branch |
|---|---|---|
| técnico | 57/57 | 57/57 |
| on-page | 204/221 | 213/221 |
| social (Open Graph e Twitter) | 35/51 | 51/51 |
| AEO/GEO | 54/60 | 56/60 |
| dados estruturados | 84/84 | 84/84 |
27 verificações corrigidas e 0 pioradas. O que mudou: og:locale em todas as rotas (só a home tinha), títulos e descrições mais curtos, e conteúdo textual novo em 2 cases.
Lighthouse (categorias SEO, acessibilidade e boas práticas, mobile): 100 / 97 / 100 nas duas versões. O Lighthouse não distingue esse tipo de melhoria, por isso a auditoria acima é a medida principal.
Validador independente: structured-data-testing-tool (npm), preset de redes sociais. Facebook/Open Graph 100% e Twitter 71–85%; o aviso restante é twitter:site ausente (opcional). A ferramenta não interpreta JSON-LD dentro de @graph (reporta "WebSite não encontrado" por limitação dela, não do site); para o JSON-LD, use os dois validadores manuais abaixo.
O que foi alterado no código
openGraph.locale: "pt_BR"nas 6 rotas que redefinemopenGraph.- Titles: casos passam de "Case de Engenharia de Software" para "Case de Engenharia";
/curriculo, Tauri e Engenharia de Software ficam mais curtos. Descrição da home de 193 para 146 caracteres e a de AS Serviços de 184 para 136. Person(JSON-LD) ganhajobTitleeknowsAbout, ambos já visíveis no site.- Reddit Posts Explorer e MinGW GCC Installer ganham resposta, desafio, implementação, limites e fontes fixadas em commit (repositórios públicos); os textos anteriores diziam o que o código não sustenta (SSG, "rate limiting" por cache, busca em tempo real, download assíncrono, monitoramento).
- SC Plus: removida a alegação "otimizada para Core Web Vitals / LCP < 2,5 s". Medição local (Lighthouse mobile): LCP 3,7 s, desempenho 89.
- Hero e páginas: conteúdo visível já no HTML (LCP da home no Lighthouse local: 4,0 s para 3,5 s).
Achados que o código não resolve (ações suas)
Ordenados pelo efeito provável na descoberta:
- Cloudflare ofusca o e-mail para robôs. Confirmado em produção: o HTML servido ao Googlebot tem
/cdn-cgi/l/email-protection#...e o texto "[email protected]", sem nenhummailto:. Buscadores e respostas de IA não veem o contato. Segundo a documentação da Cloudflare, desative em Security > Settings > Email Address Obfuscation (ou envolva um endereço com<!--email_off-->). A verificaçãoemail-visivel-para-robosda auditoria passa a ficar verde depois. - Resultados de busca desatualizados. Uma busca por "evandro.dev.br" ainda mostra o título e a descrição antigos ("Engenharia de Software, Next.js, Tauri, Rust e Consultoria Tecnica"). Peça nova indexação no Search Console (Inspeção de URL > Solicitar indexação) e envie a URL no Bing Webmaster Tools.
- Dois repositórios com "Ver código" quebrado.
evandrodevbr/twins-labeevandrodevbr/scplusrespondem 404 para visitantes (são privados), e o Twins Lab traz o selo "Código público". Torne os repositórios públicos ou remova o link e o selo. A auditoria acusa isso (links-github-acessiveis). - Posicionamento e URLs diferentes entre perfis. O site se apresenta como "sistemas sob medida para empresas"; o perfil do GitHub diz "Backend Software Engineer | Node.js, NestJS, TypeScript, Python & PostgreSQL", com empresa "Apolo Energia", e o README do perfil se declara aberto a vagas de backend (os "cinco anos" coincidem com o site). Respostas de IA misturam essas descrições. Escolha a frase central e repita-a nos perfis. O LinkedIn também aparece com duas URLs no site (
/in/evandro-fonseca-junior-0969aa1b0/na hero e no JSON-LD,/in/evandrodevbr/no rodapé): use a mesma. - Homônimos. Há outras pessoas com nome parecido (por exemplo "Evandro Junior" no LinkedIn e "Evandro Fonseca Junior" em outros sites).
sameAse a repetição do mesmo texto de apresentação nos perfis ajudam a desambiguar. - SC Plus. O site no ar se apresenta como "SCPLUS — Educação, Ciência e Tecnologia em Garuva-SC", e o portfólio diz "SC Plus Aquicultura". Confirme o nome correto.
Ferramentas que precisam da sua conta (não executadas)
| Ferramenta | Para quê | O que observar |
|---|---|---|
| Google Search Console | cobertura, canônica escolhida, consultas, cliques | as 17 URLs do sitemap; a canônica que o Google escolheu |
| Bing Webmaster Tools | indexação e relatório de IA (quando disponível) | AI Performance, se a conta tiver |
| Rich Results Test | JSON-LD como o Google lê | Person, WebSite, BreadcrumbList sem erros |
| Schema Markup Validator | JSON-LD contra schema.org | sem erros em @graph |
| CrUX / PageSpeed Insights | desempenho de campo (LCP, INP, CLS) | só aparece com tráfego suficiente; sem dado de campo, não substitua por nota de laboratório |
Fontes conferidas
- Google, AI features and your website: não há marcação nem arquivo especial para aparecer em AI Overviews/AI Mode; vale o SEO padrão (conteúdo em texto, links internos, robots.txt liberando, dados estruturados coerentes com o texto).
- Google, FAQPage: resultado enriquecido só para sites governamentais e de saúde conhecidos. Por isso
FAQPagecontinua excluído. - OpenAI, crawlers:
OAI-SearchBotprecisa estar liberado para aparecer nas buscas do ChatGPT;GPTBoté de treinamento;ChatGPT-Useré iniciado pelo usuário. Orobots.txtdo site já libera todos (User-agent: *,Allow: /) e a auditoria confirma HTTP 200 para os 8 robôs. - Anthropic, crawlers:
ClaudeBot(treinamento),Claude-UsereClaude-SearchBot(busca), cada um controlável norobots.txt. llms.txt: o Google informou que nenhum sistema de IA o usa hoje e que não planeja suportá-lo (declarações de John Mueller e Gary Illyes reportadas pela imprensa especializada). Continua excluído.
Limites desta medição
- A auditoria vê o HTML entregue sem JavaScript; ela não prevê posição em buscas nem citações em respostas de IA. Esses resultados só aparecem com dados de plataforma (Search Console, Bing, relatórios de IA) ao longo de semanas.
- A busca usada para ver como o site aparece hoje é uma única consulta pontual; não é série histórica.
- Limiares como 30–65 caracteres no título e 70–165 na descrição são orientações de exibição, não regras de ranqueamento.