Verificação de SEO para Blog — Validação Pós-Escrita
Executa uma validação abrangente de SEO on-page em um post de blog concluído e gera um checklist de aprovação/reprovação com correções específicas para cada falha. Projetado para ser executado após a escrita — detecta problemas antes da publicação.
Fluxo de Trabalho
Passo 1: Ler Conteúdo
Leia o arquivo alvo e extraia:
- Frontmatter — título, descrição, data, lastUpdated, autor, tags, canônico, og:image, slug/URL
- Estrutura de headings — hierarquia H1, H2, H3 com texto completo
- Links — Todos os links internos e externos com texto âncora
- Meta tags — Tags OG, tags Twitter Card, URL canônica
- Conteúdo do corpo — Texto completo para análise de palavras-chave e estrutura
Se o usuário fornecer uma URL em vez de um caminho de arquivo, use WebFetch para recuperar a página e extrair os elementos relevantes.
Passo 2: Validação da Tag Título
| Verificação | Critério de Aprovação |
|---|
| Contagem de caracteres | 40-60 caracteres (sem truncamento nos SERPs) |
| Posicionamento da palavra-chave | Palavra-chave primária na primeira metade do título |
| Palavra de poder | Contém pelo menos uma palavra de poder (ex.: Guia, Melhor, Como, Por que, Essencial, Comprovado, Completo) |
| Risco de truncamento | Nenhum significado crítico perdido se truncado em 60 caracteres |
| Exclusividade | Não é genérico — específico ao conteúdo |
Passo 3: Meta Description
| Verificação | Critério de Aprovação |
|---|
| Contagem de caracteres | 150-160 caracteres |
| Estatística incluída | Contém pelo menos um número ou dado específico |
| Proposta de valor | Termina com um benefício claro para o leitor ou proposta de valor |
| Presença de palavra-chave | Palavra-chave primária aparece naturalmente (sem excesso) |
| Sem excesso de palavra-chave | Palavra-chave aparece no máximo uma vez |
| Chamada para ação | Implica ação (aprender, descobrir, encontrar, ver) |
Passo 4: Hierarquia de Headings
| Verificação | Critério de Aprovação |
|---|
| H1 único | Exatamente uma tag H1 (o título) |
| Nenhum nível pulado | H1 -> H2 -> H3, nunca H1 -> H3 ou H2 -> H4 |
| Palavra-chave nos headings | Palavra-chave primária em 2-3 headings (natural, não forçada) |
| Formato de pergunta | 60-70% dos H2 são perguntas |
| Quantidade de H2 | 6-8 seções H2 para um post de blog padrão |
| Comprimento do heading | Cada heading tem menos de 70 caracteres |
Passo 5: Links Internos
| Verificação | Critério de Aprovação |
|---|
| Quantidade de links | 3-10 links internos por post |
| Texto âncora | Descritivo (não "clique aqui" ou "leia mais") |
| Bidirecional | Verifique se as páginas linkadas também linkam de volta (sinalize se não) |
| Sem status de órfão | O post linka para pelo menos 3 outras páginas do site |
| Distribuição de links | Links espalhados pelo post, não agrupados |
| Sem autolinks | O post não linka para si mesmo |
Use Grep e Glob para escanear o projeto em busca de conteúdo de blog existente e verifique a linkagem bidirecional quando possível.
Passo 5.5: Deduplicação de Links
| Verificação | Critério de Aprovação |
|---|
| Sem URLs duplicadas | Cada URL aparece no máximo uma vez no conteúdo do corpo |
| Melhor instância mantida | Se houver duplicatas, mantenha a que tiver o texto âncora mais descritivo |
| Isento de navegação | Links de navegação do cabeçalho/rodapé não contam para a deduplicação do corpo |
| Normalização de fragmentos | URLs com diferentes #fragmentos são tratadas como a mesma URL |
Para cada duplicata encontrada:
- Normalize URLs (remova barras finais, parâmetros de consulta, fragmentos)
- Pontue cada instância pela descritividade do texto âncora (rico em palavras-chave > genérico)
- Recomende manter a instância com maior pontuação, removendo as outras
- Deduza 1 ponto por duplicata da pontuação de Otimização SEO
O Google registra 1-2 textos âncora por URL por página (Zyppy 2023). Ideal: linkar para a mesma URL uma vez no conteúdo do corpo; 5-10 links internos por 2.000 palavras; máximo de ~50 links totais por página.
Passo 6: Links Externos
| Verificação | Critério de Aprovação |
|---|
| Nível da fonte | Links apenas para fontes de nível 1-3 (autoritativas, não blogs de SEO) |
| Links quebrados | Use WebFetch para verificar se os principais links externos estão acessíveis |
| Atributos Rel | Links externos têm atributos rel apropriados (nofollow para patrocinado/UGC) |
| Quantidade de links | Pelo menos 3 links externos para fontes autoritativas |
| Sem links para concorrentes | Não linkar para concorrentes diretos desnecessariamente |
Passo 7: URL Canônica
| Verificação | Critério de Aprovação |
|---|
| Presente | URL canônica está definida no frontmatter ou meta tags |
| Formato correto | URL absoluta completa (https://dominio.com/caminho) |
| Barra final | Consistente com a convenção do site (sem barras finais mistas) |
| Autorreferente | Canônica aponta para a própria página (a menos que seja cross-domain intencional) |
Passo 8: Meta Tags OG
| Verificação | Critério de Aprovação |
|---|
| og:title | Presente, corresponde ou complementa a tag título |
| og:description | Presente, 150-160 caracteres, atraente para compartilhamento social |
| og:image | Presente, dimensões mínimas de 1200x630, URL absoluta |
| og:type | Definido como "article" para posts de blog |
| og:url | Presente, corresponde à URL canônica |
| og:site_name | Presente, corresponde ao nome do site/marca |
Passo 9: Twitter Card
| Verificação | Critério de Aprovação |
|---|
| twitter:card | Definido como "summary_large_image" para posts de blog |
| twitter:title | Presente, com menos de 70 caracteres |
| twitter:description | Presente, com menos de 200 caracteres |
| twitter:image | Presente, igual ou semelhante a og:image |
| twitter:site | Presente se o site tiver uma conta no Twitter/X |
Passo 10: Estrutura de URL
| Verificação | Critério de Aprovação |
|---|
| Comprimento | Curta — menos de 75 caracteres para a parte do caminho |
| Presença de palavra-chave | Palavra-chave primária ou variante próxima no slug da URL |
| Sem datas | A URL não contém segmentos de data /2025/ ou /2026/ |
| Sem caracteres especiais | Apenas letras minúsculas, números e hífens |
| Minúsculas | Todo o caminho da URL está em minúsculas |
| Sem stop words | Uso mínimo de "the", "a", "and", "of" no slug |
| Sem extensão de arquivo | Sem .html ou .php na URL (URLs limpas) |
Passo 11: Gerar Relatório
Gere um relatório abrangente de validação de SEO neste formato:
## Relatório de Validação SEO: [Título]
**Arquivo**: [caminho ou URL]
**Data**: [data da verificação]
**Geral**: [X/Y verificações aprovadas] — [APROVADO/PRECISA DE TRABALHO/REPROVADO]
### Resultados
| # | Verificação | Status | Detalhes | Correção |
|---|-------------|--------|----------|----------|
| 1 | Comprimento do título | APROVADO | 52 caracteres | - |
| 2 | Palavra-chave no título | APROVADO | "palavra-chave" na primeira metade | - |
| 3 | Palavra de poder no título | REPROVADO | Nenhuma palavra de poder encontrada | Adicione "Guia", "Essencial" ou "Completo" |
| 4 | Comprimento da meta description | APROVADO | 155 caracteres | - |
| 5 | Estatística na meta description | REPROVADO | Nenhum número encontrado | Adicione uma estatística chave do post |
| ... | ... | ... | ... | ... |
### Resumo
**Aprovados**: [N] verificações
**Reprovados**: [N] verificações
### Correções Prioritárias
1. [Correção de maior impacto — o que mudar e onde]
2. [Segunda correção de maior impacto]
3. [Terceira correção de maior impacto]
### Observações
- [Quaisquer observações sobre a saúde geral do SEO]
- [Sugestões de melhoria além do checklist]
Valores de status:
- APROVADO — Atende aos critérios
- REPROVADO — Não atende aos critérios, correção fornecida
- AVISO — Atende parcialmente aos critérios ou caso extremo, recomendação fornecida
- N/A — Não aplicável (ex.: sem tags Twitter Card se o site não tem conta no X)
Opcional: Verificação de Desempenho ao Vivo (blog-google)
Se o post tiver uma URL publicada e as credenciais do blog-google estiverem disponíveis:
- Verificar credenciais:
python3 skills/blog-google/scripts/run.py google_auth --check --json
- Se Tier 0+, executar PageSpeed:
python3 skills/blog-google/scripts/run.py pagespeed_check <url> --json
- Anexar ao relatório:
- Pontuações de Lighthouse: Performance, Acessibilidade, Boas Práticas, SEO
- Dados de campo CWV (LCP, INP, CLS) com classificações de semáforo
- Top 3 oportunidades com economia estimada
- Falha silenciosamente se as credenciais não estiverem disponíveis ou a URL não estiver publicada.