Vitor Manoelvitormanoel.com
Next.jsCloudflareVercel

Diagnóstico público de e-commerce · varredura em 20 de agosto de 2026

01

Resumo

58
Fraco
62 aprovados · 24 reprovados · 36 bloqueados
Funil de Conversão & Experiência
não medido · 1 verificações (amostra insuficiente para nota)
Qualidade Técnica do Site62
Precisa de atenção · 79 verificações medidas
Qualidade de Dados & Tagging
não medido · 1 verificações (amostra insuficiente para nota)
Aquisição de Tráfego33
Crítico · 5 verificações medidas

O que está funcionando

  • ✓ Links têm nome discernível (link-name)link-name: sem violações na amostra
  • ✓ Contraste atende AAA onde exigido (color-contrast-enhanced)color-contrast-enhanced: sem violações na amostra
  • ✓ Documento tem título descritivo (document-title)document-title: sem violações na amostra

Pontos críticos

  • ✗ Verified legitimate crawlers (Bing/AI) reach the site (no 403 at WAF) CríticoWAF returns GPTBot=403, OAI-SearchBot=403, ClaudeBot=403, Claude-SearchBot=403, PerplexityBot=403, CCBot=403, meta-externalagent=403 while Googlebot=200 - OAI-SearchBot, Claude-SearchBot, PerplexityBot without access to the site
  • ✗ Color contrast meets WCAG AA (color-contrast) Críticocolor-contrast: 1 elemento(s) em 1 página(s) — https://www.vitormanoel.com/: 1 elemento(s) — ex.: <span class="text-green-dark hover:underline underline-offset-4 font-semibold">Barcelona</span>
  • ✗ AI bots allowed in robots.txt are not blocked at CDN/WAF layer Críticorobots.txt allows but CDN/WAF blocks: OAI-SearchBot=403, ChatGPT-User=403, Claude-SearchBot=403, Claude-User=403, PerplexityBot=403, Perplexity-User=403 while browser=200. Site invisible to OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User despite a clean robots.txt. método: GET com UA spoofado (IP não-oficial) — 4xx/challenge ao UA prova bloqueio por UA-string, o mesmo mecanismo que cega o bot real; WAFs que validam IP podem divergir

Cobertura honesta: medimos 86 de 395 verificações do registro público. 36 verificações ficaram bloqueadas: parte aguarda acesso a dados privados (GA4, Search Console, VTEX) ou entrevista, parte depende de pré-condições de execução.

02

Capturas da jornada

O que o navegador do nosso agente viu ao percorrer as páginas amostradas, no mesmo carregamento que decidiu as verificações de acessibilidade e rastreamento.

Home
Home · /
Home · mobile (390px)
Home · mobile (390px) · /
03

Problemas por página

Cada verificação reprovada, anotada na página onde foi observada e com a evidência literal capturada pelo probe. O título descreve o estado esperado; o ✗ indica que ele não foi atendido.

PáginaVerificação reprovada e evidênciaÁreaSeveridade
Home
https://www.vitormanoel.com/
✗ LCP dentro do alvo (lab e campo)Lighthouse: https://www.vitormanoel.com/ — largest-contentful-paint=0.88 (2.6 s) Qualidade Técnica do Site Crítico
Todas as páginas ✗ Contraste de cor atende WCAG AA (color-contrast)color-contrast: 1 elemento(s) em 1 página(s) — https://www.vitormanoel.com/: 1 elemento(s) — ex.: <span class="text-green-dark hover:underline underline-offset-4 font-semibold">Barcelona</span> Qualidade Técnica do Site Crítico
✗ Crawlers verificados legítimos (Bing/IA) alcançam o site (não 403 no WAF)WAF devolve GPTBot=403, OAI-SearchBot=403, ClaudeBot=403, Claude-SearchBot=403, PerplexityBot=403, CCBot=403, meta-externalagent=403 enquanto Googlebot=200 — OAI-SearchBot, Claude-SearchBot, PerplexityBot sem acesso ao site Funil de Conversão & Experiência Crítico
✗ AI bots permitidos no robots.txt não são bloqueados na camada CDN/WAFrobots.txt permite mas CDN/WAF bloqueia: OAI-SearchBot=403, ChatGPT-User=403, Claude-SearchBot=403, Claude-User=403, PerplexityBot=403, Perplexity-User=403 enquanto browser=200. Site invisível a OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User apesar do robots.txt limpo. método: GET com UA spoofado (IP não-oficial) — 4xx/challenge ao UA prova bloqueio por UA-string, o mesmo mecanismo que cega o bot real; WAFs que validam IP podem divergir Aquisição de Tráfego Crítico
✗ Conteúdo principal está disponível no HTML cru (baixa dependência de JS)HTML cru vazio de conteúdo-chave (invisível a GPTBot/ClaudeBot/PerplexityBot — não executam JS): https://www.vitormanoel.com/ (38 palavras, ProductLD=false, preço=false) Aquisição de Tráfego Crítico
✗ Todo conteúdo está dentro de landmarks (region)region: 1 elemento(s) em 1 página(s) — https://www.vitormanoel.com/: 1 elemento(s) — ex.: <h1 class="font-medium"><a href="/">Vitor Manoel</a></h1> Qualidade Técnica do Site Atenção
✗ WAF presente sem bloquear bots legítimos (Googlebot etc.)UA×path (GET /): browser=200 googlebot=200 bingbot=200 gptbot=403 oai-searchbot=403 chatgpt-user=403 claudebot=403 claude-searchbot=403 claude-user=403 perplexitybot=403 perplexity-user=403 ccbot=403 meta-externalagent=403 — WAF bloqueia GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, PerplexityBot, CCBot, meta-externalagent Qualidade Técnica do Site Atenção
✗ Cadeia de redirect não é mais longa que o necessário para a topologiahops até 200: vitormanoel.com-http=2, www.vitormanoel.com-http=1 (mínimo da topologia: 1) Qualidade Técnica do Site Atenção
✗ Compressão (gzip/brotli) habilitada nas respostas de textoAccept-Encoding: br,gzip → content-encoding: ∅ (sem compressão) Qualidade Técnica do Site Atenção
✗ Registros de autenticação de e-mail (SPF/DKIM/DMARC) presentesSPF presente; DMARC AUSENTE; DKIM selector não descoberto (testados: google/default/k1/s1/selector1) Qualidade Técnica do Site Atenção
✗ HSTS com max-age >= 1 ano, includeSubDomains e preloadStrict-Transport-Security: max-age=63072000 (max-age=63072000) Qualidade Técnica do Site Atenção
✗ Content-Security-Policy presente e não trivialmente permissivaContent-Security-Policy AUSENTE Qualidade Técnica do Site Atenção
✗ Proteção contra clickjacking (X-Frame-Options ou frame-ancestors)X-Frame-Options: ∅; CSP frame-ancestors: false Qualidade Técnica do Site Atenção
04

Busca por IA (GEO)

Como o ChatGPT, o Perplexity e as respostas de IA do Google conseguem descobrir, entender e citar esta loja, medido em 9 dimensões sobre as 32 verificações de GEO do registro.

01Rastreabilidade & governança de crawlersnão medido
3 de 6 verificações medidas · 1 reprovadas
02Conteúdo legível por máquinas25
2 de 2 verificações medidas · 1 reprovadas
03Prontidão para query fan-outnão medido
0 de 3 verificações medidas
04Conteúdo não-commodity & frescornão medido
0 de 3 verificações medidas
05Entidade & presença off-sitenão medido
0 de 6 verificações medidas
06Dados estruturadosnão medido
0 de 2 verificações medidas
07Feeds & shopping agentsnão medido
0 de 3 verificações medidas
08Prontidão agêntica (UCP/MCP/WebMCP/ACP)não medido
0 de 4 verificações medidas
09Medição & monitoramento de IAnão medido
0 de 6 verificações medidas
05

Scorecard do funil

A jornada do comprador, etapa a etapa, com o que passou e o que reprovou em cada uma.

Etapa 1

Atração

56
  • AI bots permitidos no robots.txt não são bloqueados na camada CDN/WAFrobots.txt permite mas CDN/WAF bloqueia: OAI-SearchBot=403, ChatGPT-User=403, Claude-SearchBot=403, Claude-User=403, PerplexityBot=403, Perplexity-User=403 enquanto browser=200. Site invisível a OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User apesar do robots.txt limpo. método: GET com UA spoofado (IP não-oficial) — 4xx/challenge ao UA prova bloqueio por UA-string, o mesmo mecanismo que cega o bot real; WAFs que validam IP podem divergir
  • Conteúdo principal está disponível no HTML cru (baixa dependência de JS)HTML cru vazio de conteúdo-chave (invisível a GPTBot/ClaudeBot/PerplexityBot — não executam JS): https://www.vitormanoel.com/ (38 palavras, ProductLD=false, preço=false)
  • WAF presente sem bloquear bots legítimos (Googlebot etc.)UA×path (GET /): browser=200 googlebot=200 bingbot=200 gptbot=403 oai-searchbot=403 chatgpt-user=403 claudebot=403 claude-searchbot=403 claude-user=403 perplexitybot=403 perplexity-user=403 ccbot=403 meta-externalagent=403 — WAF bloqueia GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, PerplexityBot, CCBot, meta-externalagent
  • Cadeia de redirect não é mais longa que o necessário para a topologiahops até 200: vitormanoel.com-http=2, www.vitormanoel.com-http=1 (mínimo da topologia: 1)
  • Compressão (gzip/brotli) habilitada nas respostas de textoAccept-Encoding: br,gzip → content-encoding: ∅ (sem compressão)
  • Registros de autenticação de e-mail (SPF/DKIM/DMARC) presentesSPF presente; DMARC AUSENTE; DKIM selector não descoberto (testados: google/default/k1/s1/selector1)
  • Schema.org em JSON-LD está presente e é sintaticamente válidoJSON-LD presente+parseável em 0/1 URLs
  • Sitemap não contém URLs obsoletas (3xx/4xx/5xx)https://www.vitormanoel.com/sitemap.xml (1 sitemap(s) declarado(s) no robots.txt): 5 URLs em 0 sub-sitemaps; amostra 5: 1 não-200 (404 https://www.vitormanoel.com/skills); 0 URLs de teste (—).
Etapa 2

Consideração

73
  • Contraste de cor atende WCAG AA (color-contrast)color-contrast: 1 elemento(s) em 1 página(s) — https://www.vitormanoel.com/: 1 elemento(s) — ex.: <span class="text-green-dark hover:underline underline-offset-4 font-semibold">Barcelona</span>
  • LCP dentro do alvo (lab e campo)Lighthouse: https://www.vitormanoel.com/ — largest-contentful-paint=0.88 (2.6 s)
  • Todo conteúdo está dentro de landmarks (region)region: 1 elemento(s) em 1 página(s) — https://www.vitormanoel.com/: 1 elemento(s) — ex.: <h1 class="font-medium"><a href="/">Vitor Manoel</a></h1>
  • Reduzir JavaScript não utilizadoLighthouse: https://www.vitormanoel.com/ — unused-javascript=0 (Est savings of 21 KiB)
  • FCP dentro do alvoLighthouse: https://www.vitormanoel.com/ — first-contentful-paint=0.7 (2.4 s)
  • Links têm nome discernível (link-name)
  • Contraste atende AAA onde exigido (color-contrast-enhanced)
  • Documento tem título descritivo (document-title)
Etapa 3

Compra

33
  • HSTS com max-age >= 1 ano, includeSubDomains e preloadStrict-Transport-Security: max-age=63072000 (max-age=63072000)
  • Content-Security-Policy presente e não trivialmente permissivaContent-Security-Policy AUSENTE
  • Proteção contra clickjacking (X-Frame-Options ou frame-ancestors)X-Frame-Options: ∅; CSP frame-ancestors: false
  • X-Content-Type-Options nosniff presenteX-Content-Type-Options: AUSENTE
  • Referrer-Policy restritivo definidoReferrer-Policy: AUSENTE
  • Permissions-Policy restringe APIs sensíveis do browserPermissions-Policy: AUSENTE
  • Isolamento cross-origin (COOP/COEP/CORP) configuradosem COOP/COEP/CORP — isolamento cross-origin ausente
  • HTTPS em todas as rotas (sem conteúdo servido em HTTP)
Etapa 4

Retenção

não medido

Nenhuma verificação desta etapa pôde ser medida só com dados públicos.

06

Correções ao alcance

Verificações reprovadas que o time de implementação resolve sem depender do cliente ou de terceiros, em ordem de severidade. Cada título descreve o estado esperado que hoje não é atendido.

07

Identidade de marca

“Software Engineer specialized in Web Development using React, Next.js, and Flutter”

#475569
#9CA3AF
#FFFFFF
#191919

Personal, humble, and professional

personableprofessionalconciseself-motivatedapproachable
08

Próximo passo

Isto é só a parte pública.

Este relatório usou apenas o que qualquer visitante consegue observar de fora: páginas públicas, dados estruturados, sinais de crawler e testes de navegador. O diagnóstico completo conecta GA4, Search Console e a plataforma da loja para medir o funil real, achar onde a receita escapa e dimensionar cada correção em reais.

Falar com a deco.cx