Diagnóstico público de e-commerce · varredura em 20 de agosto de 2026
Resumo
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.
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.


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ágina | Verificação reprovada e evidência | Área | Severidade |
|---|---|---|---|
| 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 |
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.
Scorecard do funil
A jornada do comprador, etapa a etapa, com o que passou e o que reprovou em cada uma.
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 (—).
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)
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)
Retenção
não medidoNenhuma verificação desta etapa pôde ser medida só com dados públicos.
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.
- Crítico✗ 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>
- 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
- 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
- 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)
- Crítico✗ LCP dentro do alvo (lab e campo)Lighthouse: https://www.vitormanoel.com/ — largest-contentful-paint=0.88 (2.6 s)
- Atenção✗ 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>
- 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
- 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)
Identidade de marca
“Software Engineer specialized in Web Development using React, Next.js, and Flutter”
#475569#9CA3AF#FFFFFF#191919Personal, humble, and professional
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