Canibalização de Blog - Detecção de Sobreposição de Palavras-ch…

Detecta quando múltiplos posts de blog competem pelas mesmas palavras-chave de busca. Oferece dois modos: análise local (gratuito) e modo API DataForSEO para dados de SERP.

O que é Canibalização de Blog - Detecção de Sobreposição de Palavras-ch…?

Esta skill para agentes de IA (como Claude Code, Cursor ou Codex) identifica problemas de canibalização de conteúdo em blogs, onde dois ou mais posts competem pelas mesmas palavras-chave, prejudicando o SEO. Ela oferece dois modos de operação: o modo local, que analisa arquivos de conteúdo (.md, .mdx, .html) sem custo, extraindo palavras-chave primárias e secundárias e agrupando posts por similaridade exata, de radical, semântica ou subconjunto. O modo API, ativado com a flag `--api`, consome endpoints da DataForSEO (Page Intersection e Ranked Keywords) para enriquecer a análise com dados reais de SERP, como volume de busca, custo por clique (CPC) e posição no ranking, custando aproximadamente $0,01 por chamada. A skill gera um relatório com uma tabela de resumo e recomendações práticas (MERGE, DIFFERENTIATE, CANONICAL, NO ACTION) baseadas em um score de severidade calculado a partir da sobreposição de palavras-chave e, no modo API, da diferença de posições e volume de busca. É útil para profissionais de conteúdo e SEO que desejam auditar e otimizar suas estratégias de conteúdo de forma automatizada.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AgriciDaniel/claude-blog/tree/main/skills/blog-cannibalization

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Canibalização de Blog - Detecção de Sobreposição de Palavras-chave

Detecta quando múltiplos posts de blog competem pelas mesmas palavras-chave de busca. Dois modos: análise local (padrão) e modo API DataForSEO para dados de nível SERP.

Dois Modos

ModoFlagCustoFonte de Dados
Local(padrão)GratuitoAnálise de conteúdo de arquivos via Grep/Read
API--api~$0,01/chamadaPage Intersection + Palavras-chave Rankeadas da DataForSEO

O modo local funciona sem nenhuma chave de API. O modo API requer credenciais DataForSEO definidas como variáveis de ambiente: DATAFORSEO_LOGIN e DATAFORSEO_PASSWORD.

Fluxo de Trabalho do Modo Local

Passo 1: Escanear Arquivos do Blog

Use Glob para encontrar todos os arquivos de conteúdo no diretório alvo:

  • Padrões: **/*.md, **/*.mdx, **/*.html
  • Pular arquivos em node_modules/, .git/, drafts/

Passo 2: Extrair Palavras-chave Primárias

Para cada arquivo, leia e extraia sinais de palavras-chave de:

  • Tag Title ou cabeçalho H1 (maior peso)
  • Cabeçalhos H2 (peso médio)
  • Primeiro parágrafo (sinal de suporte)
  • Meta descrição se presente no frontmatter

Método de extração de palavra-chave primária:

  1. Tokenize o título e H1 em frases de 1, 2 e 3 palavras
  2. Pontue cada frase pela frequência no título + H2s + primeiro parágrafo
  3. Selecione a frase de 2-3 palavras com maior pontuação como palavra-chave primária
  4. Registre palavras-chave secundárias dos cabeçalhos H2

Passo 3: Agrupar por Similaridade

Agrupe posts em clusters usando estas regras de correspondência (em ordem de prioridade):

  1. Correspondência exata - palavra-chave primária idêntica em 2+ posts
  2. Correspondência de radical - mesma raiz (ex.: "otimizar" vs "otimização")
  3. Sobreposição semântica - Claude determina que duas palavras-chave visam a mesma intenção de busca (ex.: "melhor software CRM" vs "principais ferramentas CRM 2026")
  4. Correspondência de subconjunto - uma palavra-chave contém outra (ex.: "email marketing" vs "email marketing para startups")

Passo 4: Pontuar e Sinalizar

Para cada cluster com 2+ posts, avalie a severidade e gere uma recomendação.

Passo 5: Gerar Relatório

Exiba a tabela de resultados e recomendações por cluster.

Fluxo de Trabalho do Modo API (DataForSEO)

Requer a flag --api. Usa WebFetch para chamar endpoints da DataForSEO.

Endpoints Utilizados

Page Intersection - encontra palavras-chave onde múltiplas URLs ranqueiam:

POST https://api.dataforseo.com/v3/dataforseo_labs/google/page_intersection/live
Autorização: Basic <base64(login:password)>

{
  "pages": {
    "1": "https://exemplo.com/post-a",
    "2": "https://exemplo.com/post-b"
  },
  "language_code": "en",
  "location_code": 2840
}

Custo: ~$0,01 por chamada. Retorna palavras-chave sobrepostas com posição, volume, CPC.

Ranked Keywords - obtém todas as palavras-chave que uma única URL ranqueia:

POST https://api.dataforseo.com/v3/dataforseo_labs/google/ranked_keywords/live

{
  "target": "https://exemplo.com/post-a",
  "language_code": "en",
  "location_code": 2840
}

Etapas de Análise da API

  1. Colete todas as URLs publicadas do usuário (ou sitemap)
  2. Execute Ranked Keywords para cada URL para construir perfis de palavras-chave
  3. Execute Page Intersection para pares de URLs que compartilham clusters de palavras-chave
  4. Calcule a severidade usando a fórmula abaixo
  5. Gere relatório enriquecido com dados de volume de busca e posição

Pontuação de Severidade

Quatro níveis de severidade baseados em sinais de sobreposição:

NívelCritérioUrgência da Ação
CríticoMesma palavra-chave exata, ambas as páginas no top 20Imediata
AltoMesmo cluster de palavras-chave, uma página supera a outraEsta semana
MédioPalavras-chave relacionadas com sobreposição parcial de SERPEste mês
BaixoSimilaridade semântica, mas intenções confirmadas diferentesMonitorar

Fórmula de Severidade (Modo API)

severity_score = overlap_count x avg_search_volume x (1 / position_gap)

Onde:

  • overlap_count = número de palavras-chave compartilhadas no ranking
  • avg_search_volume = volume médio mensal das palavras-chave compartilhadas
  • position_gap = diferença absoluta na posição média de ranking (mínimo 1)

Pontuação mais alta = problema de canibalização mais urgente.

Heurística de Severidade (Modo Local)

Sem dados de SERP, use uma pontuação simplificada:

  • Crítico: Correspondência exata de palavra-chave primária entre posts
  • Alto: Correspondência de radical na palavra-chave primária, ou 3+ palavras-chave H2 compartilhadas
  • Médio: Sobreposição semântica na palavra-chave primária
  • Baixo: Apenas correspondência de subconjunto, ou palavras-chave secundárias compartilhadas

Formato de Saída

Tabela de Resumo

| Post A | Post B | Palavras-chave Compartilhadas | Severidade | Recomendação |
|--------|--------|-------------------------------|------------|---------------|
| /melhores-ferramentas-crm | /top-software-crm | melhor crm, ferramentas crm, software crm | Crítico | MESCLAR |
| /dicas-email | /guia-marketing-email | email marketing | Alto | DIFERENCIAR |
| /basico-seo | /seo-para-iniciantes | basico seo, seo iniciante | Crítico | CANÔNICO |
| /react-hooks | /gerenciamento-estado-react | react, estado | Baixo | NENHUMA AÇÃO |

Detalhamento por Cluster

Para cada cluster sinalizado, forneça:

  • Títulos e URLs de ambos os posts
  • Lista completa de palavras-chave sobrepostas (com volume se modo API)
  • Qual post é mais forte (mais abrangente, melhor estruturado)
  • Recomendação específica com justificativa

Recomendações

Quatro ações possíveis para cada cluster de canibalização:

MESCLAR

Quando ambas as páginas são superficiais ou cobrem a mesma intenção com profundidade similar.

  • Combine o melhor conteúdo de ambos em um post abrangente
  • Faça um redirecionamento 301 da URL mais fraca para o post mesclado
  • Preserve todos os links internos que apontam para qualquer uma das URLs

DIFERENCIAR

Quando as páginas servem intenções diferentes, mas há sobreposição de segmentação de palavras-chave.

  • Mude a palavra-chave primária do post mais fraco para uma cauda longa relacionada
  • Atualize o título, H1 e meta descrição para refletir o novo foco
  • Adicione links internos entre os dois posts para sinalizar tópicos distintos

CANÔNICO

Quando um post é claramente a autoridade e o outro é uma duplicata inferior.

  • Adicione rel="canonical" na página mais fraca apontando para a autoridade
  • Considere noindexar a página mais fraca se ela não agregar valor único
  • Link da página mais fraca para a página de autoridade

NENHUMA AÇÃO

Quando a intenção é genuinamente diferente, apesar da similaridade superficial de palavras-chave.

  • Documente a justificativa para auditorias futuras
  • Monitore os rankings trimestralmente para quaisquer mudanças de posição
  • Reavalie se algum dos posts cair nos rankings

Tratamento de Erros

  • Nenhum arquivo de blog encontrado: Se o diretório não contiver arquivos .md, .mdx ou .html, reporte "Nenhum arquivo de blog encontrado em [diretório]" e sugira verificar o caminho
  • Credenciais DataForSEO ausentes: No modo API, se as credenciais não estiverem configuradas, volte para o modo local automaticamente e notifique o usuário
  • Limites de taxa da API: DataForSEO tem limites de taxa por minuto. Se uma resposta 429 for recebida, aguarde e tente novamente uma vez. Se persistir, mude para o modo local para as URLs restantes
  • Falhas no WebFetch: Se uma URL de origem estiver inacessível, pule-a e anote "Não foi possível verificar - fonte indisponível" no relatório
  • Diretório com post único: Se existir apenas um post de blog, reporte "A análise de canibalização requer pelo menos 2 posts" e saia graciosamente

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Habilidades Relacionadas