SEO Performance MCP

MCP de desempenho SEO pós-publicação que pontua cada URL no Google Search Console, GA4, Matomo, Clarity e citações de IA, e emite um veredito de atualizar/expandir/mesclar/remover por postagem.

Documentação

seo-performance-mcp

Saiba quais posts de blog atualizar, expandir, mesclar ou excluir - sem adivinhar.

Um servidor MCP que transforma seus dados dispersos de SEO e analytics em um veredito claro por URL. Conecte-o ao Claude, Cursor ou qualquer cliente compatível com MCP e pergunte: "Quais três posts devo atualizar esta semana?" - e receba uma resposta baseada em números concretos.

O que ele faz

seo-performance-mcp unifica sinais pós-publicação de todos os canais pelos quais você já paga:

  • Google Search Console - cliques, impressões, CTR, posição, principais consultas
  • Matomo ou GA4 - visitas, tempo de permanência, taxa de rejeição
  • Microsoft Clarity - profundidade de rolagem, cliques de raiva, cliques mortos
  • Rastreamento de citações de IA - quais LLMs citam sua URL hoje vs. no mês passado
  • Sitemap / CMS - datas de publicação, tags, contagens de palavras (qualquer plataforma via sitemap XML; integração opcional com Ghost para metadados mais ricos)

Ele então executa um mecanismo de regras determinístico sobre esses sinais e emite um veredito por URL:

refresh / expand / merge / kill / double_down / hold

com códigos de motivo, evidências e uma pontuação de confiança de 0 a 1. Apenas relatórios - o servidor nunca altera seus posts.

Por que isso importa

A maioria das equipes de conteúdo tem análises em cinco abas e uma intuição. É assim que bons posts apodrecem silenciosamente, posts medianos são superpromovidos, e o óbvio "reescreva este" fica invisível até o tráfego já ter despencado.

Este MCP fecha o ciclo:

  • Uma pergunta, uma URL de entrada, um veredito de saída.
  • Mesma lógica em toda a coorte, então a classificação é comparável.
  • Todas as decisões são rastreáveis até limites numéricos que você pode fixar no src/verdict/rules.ts.
  • Clientes de IA (Claude, Cursor, hosts MCP) podem conduzir toda a auditoria de conteúdo em linguagem natural.

Para quem é

  • Profissionais de marketing de conteúdo que gerenciam um blog com 50+ posts e estão cansados de adivinhar o que atualizar.
  • Consultores de SEO que fazem auditorias e querem uma camada de pontuação portátil e determinística em vez de planilhas personalizadas.
  • Equipes de conteúdo com foco em IA que configuram agentes de reescrita - este MCP é a camada de sinal upstream.
  • Publicadores independentes no Ghost, WordPress, Hugo, Astro, Next, Webflow ou qualquer CMS que exponha um sitemap.

O que você obtém

Após uma execução de coorte, você tem:

  • Uma tabela ranqueada de cada post com veredito e pontuação de confiança.
  • Um brief em markdown para cada URL de "atualização": números + principais consultas + ações sugeridas que um editor (ou um agente de escrita) pode executar imediatamente.
  • Uma lista de "vitórias rápidas": consultas nas posições 5-15 com CTR abaixo do esperado - as vitórias mais rápidas de reescrita de título na propriedade.
  • Um diff histórico de citações de IA: quais LLMs citavam você e pararam.

Instalação

npx -y @automatelab/seo-performance-mcp

Em uma configuração MCP do Claude, Claude Code ou Cursor:

{
  "mcpServers": {
    "seo-performance": {
      "command": "npx",
      "args": ["-y", "@automatelab/seo-performance-mcp"],
      "env": {
        "POSTS_SITEMAP_URL": "https://example.com/sitemap.xml",
        "GSC_SERVICE_ACCOUNT_JSON": "<base64-encoded service-account JSON>",
        "GSC_SITE_URL": "sc-domain:example.com",
        "MATOMO_URL": "https://example.com/analytics",
        "MATOMO_TOKEN": "...",
        "MATOMO_SITE_ID": "1",
        "GA4_PROPERTY_ID": "123456789",
        "GA4_SERVICE_ACCOUNT_JSON": "<base64-encoded service-account JSON>",
        "CLARITY_PROJECT_ID": "...",
        "CLARITY_API_TOKEN": "...",
        "CITATION_INTELLIGENCE_URL": "https://citation.example.com"
      }
    }
  }
}

Toda variável de ambiente é opcional. Adaptadores que não têm sua configuração de ambiente ignoram sua parte do snapshot; o servidor ainda inicializa. O mecanismo de veredito funciona com qualquer conjunto de partes presente.

Integração de plataforma

Aponte para qualquer site, sem plugin de CMS necessário. A camada de descoberta de posts resolve em ordem de prioridade:

  1. POSTS_LIST - array JSON de {url, title?, published_at?, tags?, word_count?}. Use quando você já tem um índice de conteúdo e quer controle exato.
  2. Ghost Admin API - se tanto GHOST_ADMIN_API_URL quanto GHOST_ADMIN_API_KEY estiverem definidos, o Ghost é usado como fonte de metadados mais rica. Opcional.
  3. Extração de HTML - por URL, og:title, article:published_time e JSON-LD datePublished são lidos ao vivo da URL.
  4. Sitemap XML - defina POSTS_SITEMAP_URL para o seu sitemap (ou índice de sitemap) e o servidor enumera posts de <loc> + <lastmod>.

A maioria dos usuários só precisa de POSTS_SITEMAP_URL. WordPress, Hugo, Astro, Next.js, Webflow, Framer, Wix, Squarespace, Notion-como-site, sites-espelho do Substack todos expõem um sitemap por padrão.

Para adicionar uma plataforma nova: nada a construir - apenas aponte POSTS_SITEMAP_URL para ela.

Ferramentas expostas

FerramentaO que retorna
posts_listPosts com {url, title, age_days, tags} do sitemap, Ghost ou seu POSTS_LIST.
posts_snapshotResumo unificado por URL para uma janela de 30/60/90 dias: GSC + Matomo + GA4 + Clarity + citações + meta.
posts_decay_curveBaldes semanais de cliques/impressões/posição do GSC + um rótulo de tendência decay/plateau/growth.
posts_verdictVeredito (refresh/expand/merge/kill/double_down/hold) + códigos de motivo + confiança de 0 a 1.
posts_refresh_briefBrief em markdown para um humano ou editor LLM downstream: números, principais consultas, ações sugeridas.
cohort_reportTabela de vereditos da coorte ordenada por prioridade + confiança. "Quais três posts devo atualizar esta semana?"
posts_cite_lossCitações de LLM que caíram para uma determinada URL. Requer CITATION_INTELLIGENCE_URL.
gsc_quick_winsPares (page, query) nas posições 5-15 com CTR baixo - vitórias mais rápidas de reescrita de título.

Uso como GitHub Action

Execute qualquer uma das ferramentas em um cron a partir do CI e publique a saída em uma Issue, Discussion ou PR do GitHub. A action está publicada no GitHub Marketplace.

- uses: AutomateLab-tech/seo-performance-mcp@v1
  with:
    tool: cohort_report
    format: markdown
    input: '{"window": 90, "min_age_days": 90, "limit": 20}'
    gsc-service-account-json: ${{ secrets.GSC_SERVICE_ACCOUNT_JSON }}
    gsc-site-url: ${{ secrets.GSC_SITE_URL }}
    posts-sitemap-url: ${{ secrets.POSTS_SITEMAP_URL }}

Saídas:

SaídaDescrição
resultSaída da ferramenta como string multilinha (markdown ou JSON, conforme format).
result-fileCaminho do arquivo em que a saída da ferramenta foi gravada. Passe para peter-evans/create-issue-from-file etc.
rowsPara cohort_report com format: json apenas: número de linhas retornadas.

Um fluxo de trabalho completo de auditoria semanal que abre uma Issue do GitHub com o relatório da coorte está em examples/weekly-cohort-report.yml.

Uso como CLI de uso único

O pacote também inclui um binário seo-perf-cli para que você possa executar uma única ferramenta sem um cliente MCP:

npx -p @automatelab/seo-performance-mcp seo-perf-cli cohort_report \
  --input '{"window": 90, "limit": 20}' \
  --format markdown

Mesmas variáveis de ambiente que o servidor MCP. --format markdown é suportado para cohort_report e posts_refresh_brief; outras ferramentas recorrem a JSON cercado.

Habilidades complementares + regra do Cursor

Três arquivos finos de roteamento acompanham o repositório para que o LLM no seu cliente saiba quando usar essas ferramentas:

  • skills/seo-performance/SKILL.md - habilidade de roteamento de ferramentas. Coloque em ~/.claude/skills/seo-performance/ (ou .claude/skills/ por projeto) para carregamento automático no Claude Code. Roteia uma única pergunta para a ferramenta certa.
  • skills/weekly-audit/SKILL.md - playbook de auditoria semanal de uso único. Compõe gsc_quick_wins + cohort_report + posts_cite_loss em um resumo ranqueado, sem duplicatas e com sinais cruzados, incluindo edições propostas por URL. Coloque junto com a habilidade de roteamento.
  • cursor/rules/seo-performance.mdc - copie para .cursor/rules/seo-performance.mdc em qualquer espaço de trabalho do Cursor.

Tudo opcional. O servidor MCP funciona sem eles; eles apenas encurtam o ciclo "qual ferramenta devo chamar".

Prompts MCP

O servidor expõe três prompts que agrupam o playbook. Qualquer cliente MCP (Claude Desktop, Claude Code, Cursor, Continue) pode listá-los e invocá-los:

PromptO que executa
audit_cohortcohort_report em posts com >=90d, depois posts_refresh_brief por linha de atualizar/expandir/mesclar. A auditoria semanal.
find_quick_winsgsc_quick_wins (posições 5-15) + posts_snapshot por URL, depois propõe reescritas de meta_title com consultas exatas.
citation_loss_sweepposts_cite_loss por URL, refresh_brief para qualquer um com perdas, recomendações direcionadas de H1/frase de abertura.

Mecanismo de veredito

Determinístico, baseado em regras, rastreável. Códigos de motivo:

  • ctr_below_position_expected
  • position_drift
  • decay_30d_over_30pct / decay_60d_over_50pct
  • stagnant_no_clicks
  • thin_content_low_dwell
  • rising_impressions_low_ctr / rising_clicks_continue_investment
  • citation_loss / citation_growth
  • duplicate_or_cannibalizing
  • high_bounce_low_scroll
  • fresh_post_too_young

O mapeamento (motivos → veredito) e todos os limites estão em src/verdict/rules.ts. Edite-o, fixe-o em testes, publique seu próprio livro de regras.

Desenvolvimento

npm install
npm run dev        # tsx src/index.ts
npm run build      # tsc
npm test           # vitest

Licença

MIT