From bff3e4d73525ce15af2fbdc88d0c4617cf8f7d68 Mon Sep 17 00:00:00 2001 From: Evandro Fonseca Junior Date: Fri, 4 Sep 2026 20:13:22 -0300 Subject: [PATCH] docs: add SEO operations runbook --- docs/seo-geo-operations.md | 128 +++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 docs/seo-geo-operations.md diff --git a/docs/seo-geo-operations.md b/docs/seo-geo-operations.md new file mode 100644 index 0000000..83e268c --- /dev/null +++ b/docs/seo-geo-operations.md @@ -0,0 +1,128 @@ +# Operações externas de SEO/GEO + +**Estado: não executado neste repositório** + +Este é um runbook declarativo para um operador autorizado. Ele descreve evidências que deverão ser coletadas em contas e painéis externos; não registra execução, acesso, configuração, medição ou resultado externo. Search Console, Bing Webmaster Tools, Cloudflare, CrUX e RUM são próximas ações externas, não evidência do repositório. + +## Regras de operação + +- Executar cada ação somente com autorização e na propriedade correta. +- Manter todas as caixas abaixo desmarcadas até que a evidência correspondente exista. +- Registrar data/hora, propriedade, escopo, filtro utilizado, resultado observado e link/arquivo de evidência, sem incluir credenciais, tokens ou dados pessoais. +- Não preencher métricas, cobertura, canônicas, conversões, citações ou status com estimativas. +- Uma configuração externa não altera, por si só, o código deste repositório. Qualquer mudança em código, `robots.ts`, sitemap ou conteúdo exige revisão própria. + +## Referência factual do repositório + +Antes de qualquer ação externa, conferir os arquivos atuais: + +- `app/sitemap.ts`: fonte da lista de URLs. +- `app/robots.ts`: regras declaradas, sitemap público e host. +- Metadados por rota em `app/layout.tsx`, `app/servicos/**`, `app/cases/**`, `app/curriculo/**` e `app/privacidade/**`. +- `lib/site-content.ts`: slugs de serviços e cases. +- `app/components/GoogleAnalytics.tsx` e `app/privacidade/page.tsx`: contrato de consentimento e medição descrito no produto. + +### Sitemap final: 17 URLs canônicas + +A contagem é **16 rotas que já compunham o conjunto principal + `/privacidade` = 17**: home, currículo, dois hubs, seis serviços e seis cases. Inspecionar exatamente estas URLs, sem criar variantes por cidade, parâmetros ou trailing slash alternativo: + +1. `https://evandro.dev.br` +2. `https://evandro.dev.br/curriculo` +3. `https://evandro.dev.br/privacidade` +4. `https://evandro.dev.br/servicos` +5. `https://evandro.dev.br/cases` +6. `https://evandro.dev.br/servicos/criacao-de-sites` +7. `https://evandro.dev.br/servicos/engenharia-de-software` +8. `https://evandro.dev.br/servicos/consultoria-nextjs` +9. `https://evandro.dev.br/servicos/tauri-rust` +10. `https://evandro.dev.br/servicos/integracao-hardware-software-iot` +11. `https://evandro.dev.br/servicos/arquitetura-de-software` +12. `https://evandro.dev.br/cases/nutriscan` +13. `https://evandro.dev.br/cases/twins-lab` +14. `https://evandro.dev.br/cases/reddit-explorer` +15. `https://evandro.dev.br/cases/sc-plus` +16. `https://evandro.dev.br/cases/gcc-installer` +17. `https://evandro.dev.br/cases/as-servicos` + +O sitemap não deve receber `lastModified`, `changeFrequency` ou `priority` enquanto não houver fonte editorial estável para essas datas/hints. + +## Google Search Console + +Cada item permanece pendente até haver captura do painel ou export equivalente, com propriedade e escopo identificáveis. + +- [ ] **Verificação de propriedade:** verificar a propriedade de `https://evandro.dev.br`; registrar método utilizado, propriedade confirmada e evidência de verificação. Não guardar o segredo ou token. +- [ ] **Sitemap:** submeter `https://evandro.dev.br/sitemap.xml`; registrar confirmação, data/hora, número de URLs reportado pelo painel e eventuais erros observados. Não tratar a submissão como indexação concluída. +- [ ] **Inspeção das 17 URLs:** inspecionar cada URL da lista acima; para cada uma, registrar cobertura/estado observado, URL canônica escolhida pelo site, canônica selecionada pelo Google quando exibida, divergência e ação de correção (se houver). A inspeção não autoriza alterar uma canônica sem evidência. +- [ ] **Baseline de 90 dias:** exportar ou registrar o ponto inicial separado por consulta, página/landing, dispositivo e localidade, com período e filtros explícitos. Registrar impressões, cliques, CTR e posição somente se o painel os fornecer; valores ausentes permanecem ausentes. +- [ ] **Relatórios de IA generativa:** se a conta oferecer relatório de IA ou configuração de inclusão, registrar o nome da área, período, dimensões e evidência disponível. Se não estiver disponível, registrar apenas “não disponível na conta consultada”; não inferir presença, tráfego ou citação. + +**Evidência esperada:** export/captura sem credenciais, lista das 17 inspeções com canônicas e cobertura observadas, confirmação do sitemap e baseline reproduzível de 90 dias. Nada disso está presente neste repositório. + +## Bing Webmaster Tools + +- [ ] Verificar ou importar a propriedade `https://evandro.dev.br`; guardar somente a evidência do estado confirmado. +- [ ] Submeter `https://evandro.dev.br/sitemap.xml`; registrar confirmação e erros observados, sem concluir indexação por causa da submissão. +- [ ] Inspecionar as mesmas 17 URLs e registrar estado/canônica exibidos pela ferramenta. +- [ ] Consultar **AI Performance**, quando disponível na conta; registrar período, dimensões e evidência real, sem alegar citações ou tráfego. + +**IndexNow:** excluído por enquanto. Não configurar ou executar até existir uma frequência de publicação suficientemente definida para justificar notificações de atualização. + +**Evidência esperada:** propriedade, submissão, inspeções e relatório/configuração de AI Performance documentados por capturas ou export. Nenhuma ação Bing foi executada por este repositório. + +## Cloudflare, robots e crawlers + +A política precisa distinguir três finalidades, sem presumir que um mesmo crawler tenha todas elas: + +1. **Busca:** descoberta/indexação em mecanismos de busca. +2. **Citação/resposta:** sistemas que recuperam conteúdo para responder e atribuir fonte. +3. **Treino:** coleta para treinamento de modelos; não confundir autorização de busca ou citação com autorização de treino. + +- [ ] Comparar a resposta pública de `https://evandro.dev.br/robots.txt` com `app/robots.ts`: `User-Agent: *`, `Allow`, `Disallow`, `Host` e `Sitemap`; registrar divergências observadas e o horário da resposta. +- [ ] Conferir **Managed Robots** no painel e registrar quais regras efetivas estão ativas, sem alterar uma política apenas para fazer o painel coincidir. +- [ ] Conferir **AI Crawl Control** e registrar separadamente os controles para busca, citação e treino, quando a interface permitir essa distinção. Se a interface não diferenciar finalidades, registrar essa limitação em vez de inventar equivalência. +- [ ] Revisar **WAF** e exceções/regras que possam afetar crawlers; registrar somente regras observadas e a razão operacional de uma eventual mudança aprovada. +- [ ] Revisar logs por respostas `200`, `403` e `429`, agrupando por crawler identificado, rota, período e regra acionada. Separar tráfego de busca, citação e treino quando houver sinal verificável; caso contrário, marcar a classificação como inconclusiva. + +**Evidência esperada:** cópia da resposta pública, comparação com `app/robots.ts`, estado das configurações Managed Robots/AI Crawl Control, regras WAF relevantes e amostra de logs `200/403/429`. Nenhuma configuração Cloudflare ou política de bots foi alterada por este runbook. + +## Medição de experiência, descoberta e conversão + +- [ ] Definir o período e o conjunto de páginas por template: home, hubs, serviço, case, currículo e privacidade. +- [ ] Coletar **p75 de LCP, INP e CLS** por template em CrUX e/ou RUM, separando dispositivo e período. Registrar origem (CrUX ou RUM), cobertura/amostra fornecida pela ferramenta e valores observados; não substituir ausência de dados por score de laboratório. +- [ ] Relacionar consultas e páginas de entrada com cliques/impressões quando fornecidos pelo Search Console ou Bing; preservar filtros e período do baseline. +- [ ] Definir conversão observável sem inventar meta: registrar o evento de contato aprovado e sua fonte, quando houver instrumentação consentida. Não atribuir resultado comercial sem evento e janela verificáveis. +- [ ] Medir o caminho interno **case → serviço → contato**, distinguindo entradas, cliques nos links e chegada ao destino; registrar abandono e limitações de atribuição, se mensuráveis. +- [ ] Registrar citações ou aparições reportadas por plataformas generativas somente com fonte, período, consulta/URL e captura/export. Não afirmar causalidade entre schema, crawler, conteúdo e citação. + +**Consentimento:** qualquer medição que use analytics deve respeitar o comportamento implementado: antes de `granted`, nenhuma tag Google é carregada; a escolha usa `evandro.analytics-consent.v1` com `granted` ou `denied`; publicidade permanece negada. O runbook não adiciona tracker nem modifica esse fluxo. + +**Evidência esperada:** export de CrUX/RUM com p75 e dimensões, consultas/landings, definição e contagem de conversões observadas, funil case→serviço→contato e registro de citações. CrUX/RUM e painéis de busca são evidência externa, não evidência do repositório. + +## Reconciliação das 57 fontes + +A matriz do design fecha a cobertura em seis grupos. Os números abaixo são reconciliação documental, não resultados de auditoria externa executada: + +| Grupo | Fontes | Total | Decisão operacional registrada | +| --- | --- | ---: | --- | +| Google | G1–G13 | 13 | Conteúdo útil e original, uma canônica por intenção, schema visível, frescor sem datas fabricadas e medição no Search Console. | +| Bing + Web Vitals | B1–B3, W1 | 4 | Resposta factual cedo, páginas focadas, evidência e AI Performance; sem IndexNow prematuro e sem score alegado. | +| Schema.org | S1–S6 | 6 | `Person`, `Service`, `ProfilePage` e `BreadcrumbList` mínimos, conectados e coerentes com o conteúdo visível. | +| Next.js | N1–N7 | 7 | Metadata por rota, `generateMetadata`, imagens por segmento e build estático, sem pacote novo. | +| GEO/crawlers | A1–A2, C1–C4, L1 | 7 | Fontes visíveis, medição como experimento e política de bots apenas documentada; sem causalidade de citação. | +| Mercado observado | — | 20 | Clareza de intenção, links, projetos e prova de primeira mão; sem stuffing, testemunho, métrica ou autoridade inferida. | +| **Total** | | **57** | **Todos os grupos possuem decisão correspondente; nenhuma recomendação proibida foi reintroduzida.** | + +## Exclusões que permanecem vigentes + +Não criar, publicar, configurar ou recomendar como parte deste runbook: + +- páginas-clone por cidade (incluindo Garuva, Joinville ou Curitiba), doorway pages ou conteúdo escalado; +- `llms.txt`; +- schema `FAQPage`, `ProfessionalService` ou `LocalBusiness` sem entidade/local comprovado; +- metadata `keywords`; +- entidades locais, endereços, coordenadas, preços, clientes, avaliações, volumes, rankings ou resultados comerciais não verificados; +- datas artificiais, `lastModified` fabricado, `changeFrequency` ou `priority` sem fonte operacional; +- allowlist de crawler executada sem política aprovada; +- qualquer alteração visual, de conteúdo, segurança, consentimento, dependência ou código como efeito implícito de uma ação externa. + +A propriedade do site, o sitemap, as canônicas, o consentimento, os dados de campo e os relatórios de plataforma só podem ser considerados observados quando houver evidência externa anexada pelo operador. Até lá, o estado deste documento continua: **não executado neste repositório**.