SEO Performance MCP

MCP de rendimiento SEO post-publicación que puntúa cada URL en Google Search Console, GA4, Matomo, Clarity y citas de IA, y emite un veredicto de refrescar/expandir/fusionar/eliminar por publicación.

Documentación

seo-performance-mcp

Sepa qué entradas de blog actualizar, expandir, fusionar o eliminar, sin adivinar.

Un servidor MCP que convierte tus datos dispersos de SEO y analítica en un veredicto claro por URL. Conéctalo a Claude, Cursor o cualquier cliente compatible con MCP y pregunta: "¿Qué tres publicaciones debería actualizar esta semana?" — y obtén una respuesta respaldada por números concretos.

Qué hace

seo-performance-mcp unifica las señales posteriores a la publicación de todos los canales por los que ya pagas:

  • Google Search Console — clics, impresiones, CTR, posición, consultas principales
  • Matomo o GA4 — visitas, tiempo de permanencia, tasa de rebote
  • Microsoft Clarity — profundidad de desplazamiento, clics de ira, clics muertos
  • Seguimiento de citas de IA — qué LLMs citan tu URL hoy frente al mes pasado
  • Sitemap / CMS — fechas de publicación, etiquetas, recuento de palabras (cualquier plataforma mediante sitemap XML; integración opcional con Ghost para metadatos más ricos)

Luego ejecuta un motor de reglas determinista sobre esas señales y emite un veredicto por URL:

refresh / expand / merge / kill / double_down / hold

con códigos de motivo, evidencia y una puntuación de confianza de 0 a 1. Solo informa: el servidor nunca modifica tus publicaciones.

Por qué importa

La mayoría de los equipos de contenido tienen la analítica en cinco pestañas y una corazonada. Así es como las buenas publicaciones se pudren en silencio, las mediocres reciben demasiada promoción y el obvio "reescribe esta" es invisible hasta que el tráfico ya se ha desplomado.

Este MCP cierra el ciclo:

  • Una pregunta, una URL de entrada, un veredicto de salida.
  • La misma lógica en toda la cohorte, para que la clasificación sea comparable.
  • Todas las decisiones trazables hasta umbrales numéricos que puedes fijar en src/verdict/rules.ts.
  • Los clientes de IA (Claude, Cursor, hosts MCP) pueden dirigir toda la auditoría de contenido en lenguaje natural.

Para quién es

  • Especialistas en marketing de contenido que gestionan un blog de más de 50 publicaciones y están cansados de adivinar qué actualizar.
  • Consultores SEO que realizan auditorías y quieren una capa de puntuación portátil y determinista en lugar de hojas de cálculo personalizadas.
  • Equipos de contenido con enfoque en IA que conectan agentes de reescritura: este MCP es la capa de señales ascendentes.
  • Editores independientes en Ghost, WordPress, Hugo, Astro, Next, Webflow o cualquier CMS que exponga un sitemap.

Qué obtienes

Después de una ejecución de cohorte tienes:

  • Una tabla clasificada de cada publicación con veredicto y puntuación de confianza.
  • Un informe en markdown por URL de "actualizar": números + consultas principales + acciones sugeridas que un editor (o un agente de escritura) puede ejecutar de inmediato.
  • Una lista de "victorias rápidas": consultas en posiciones 5-15 con CTR inferior al esperado: las victorias más rápidas de reescritura de títulos en la propiedad.
  • Un diff histórico de citas de IA: qué LLMs te citaban y dejaron de hacerlo.

Instalación

npx -y @automatelab/seo-performance-mcp

En una configuración MCP de Claude, Claude Code o 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"
      }
    }
  }
}

Cada variable de entorno es opcional. Los adaptadores que carecen de su configuración de entorno omiten su parte de la instantánea; el servidor sigue arrancando. El motor de veredictos funciona con las partes que estén presentes.

Integración de plataformas

Apunta a cualquier sitio, sin necesidad de plugin de CMS. La capa de descubrimiento de publicaciones se resuelve en orden de prioridad:

  1. POSTS_LIST — array JSON de {url, title?, published_at?, tags?, word_count?}. Úsalo cuando ya tengas un índice de contenido y quieras un control exacto.
  2. API de administración de Ghost — si tanto GHOST_ADMIN_API_URL como GHOST_ADMIN_API_KEY están configurados, Ghost se usa como fuente de metadatos más rica. Opcional.
  3. Extracción HTMLog:title, article:published_time y JSON-LD datePublished por URL se leen en vivo desde la URL.
  4. Sitemap XML — configura POSTS_SITEMAP_URL con tu sitemap (o índice de sitemap) y el servidor enumera las publicaciones desde <loc> + <lastmod>.

La mayoría de los usuarios solo necesitan POSTS_SITEMAP_URL. WordPress, Hugo, Astro, Next.js, Webflow, Framer, Wix, Squarespace, Notion-como-sitio y sitios espejo de Substack exponen un sitemap por defecto.

Para añadir una plataforma completamente nueva: no hay nada que construir — solo apunta POSTS_SITEMAP_URL a ella.

Herramientas expuestas

HerramientaQué devuelve
posts_listPublicaciones con {url, title, age_days, tags} desde sitemap, Ghost o tu POSTS_LIST.
posts_snapshotResumen unificado por URL para una ventana de 30/60/90 días: GSC + Matomo + GA4 + Clarity + citas + metadatos.
posts_decay_curveCubos semanales de clics/impresiones/posición de GSC + una etiqueta de tendencia decay/plateau/growth.
posts_verdictVeredicto (refresh/expand/merge/kill/double_down/hold) + códigos de motivo + confianza de 0 a 1.
posts_refresh_briefInforme en markdown para un humano o un editor LLM posterior: números, consultas principales, acciones sugeridas.
cohort_reportTabla de veredictos de cohorte ordenada por prioridad + confianza. "¿Qué tres publicaciones debería actualizar esta semana?"
posts_cite_lossCitas de LLM que desaparecieron para una URL determinada. Requiere CITATION_INTELLIGENCE_URL.
gsc_quick_winsPares (page, query) en posiciones 5-15 con CTR bajo: las victorias más rápidas de reescritura de títulos.

Uso como GitHub Action

Ejecuta cualquiera de las herramientas en un cron desde CI y publica la salida en un Issue, Discussion o PR de GitHub. La acción está publicada en el 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 }}

Salidas:

SalidaDescripción
resultSalida de la herramienta como cadena multilínea (markdown o JSON, según format).
result-fileRuta del archivo donde se escribió la salida de la herramienta. Entrégala a peter-evans/create-issue-from-file, etc.
rowsSolo para cohort_report con format: json: número de filas devueltas.

Un flujo de trabajo completo de auditoría semanal que abre un Issue de GitHub con el informe de cohorte está en examples/weekly-cohort-report.yml.

Uso como CLI de un solo uso

El paquete también incluye un binario seo-perf-cli para que puedas ejecutar una sola herramienta sin un cliente MCP:

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

Las mismas variables de entorno que el servidor MCP. --format markdown es compatible con cohort_report y posts_refresh_brief; otras herramientas recurren a JSON delimitado.

Habilidades complementarias + regla de Cursor

Tres archivos de enrutamiento ligeros se incluyen en el repositorio para que el LLM de tu cliente sepa cuándo recurrir a estas herramientas:

  • skills/seo-performance/SKILL.md — habilidad de enrutamiento de herramientas. Colócala en ~/.claude/skills/seo-performance/ (o .claude/skills/ por proyecto) para que se cargue automáticamente en Claude Code. Enruta una sola pregunta a la herramienta correcta.
  • skills/weekly-audit/SKILL.md — manual de auditoría semanal de un solo uso. Compone gsc_quick_wins + cohort_report + posts_cite_loss en un resumen clasificado y deduplicado de señales cruzadas con ediciones propuestas por URL. Colócalo junto a la habilidad de enrutamiento.
  • cursor/rules/seo-performance.mdc — copia en .cursor/rules/seo-performance.mdc en cualquier espacio de trabajo de Cursor.

Todo opcional. El servidor MCP funciona sin ellos; solo acortan el viaje de ida y vuelta de "qué herramienta llamo".

Prompts MCP

El servidor expone tres prompts que agrupan el manual. Cualquier cliente MCP (Claude Desktop, Claude Code, Cursor, Continue) puede listarlos e invocarlos:

PromptQué ejecuta
audit_cohortcohort_report en publicaciones >=90d, luego posts_refresh_brief por fila de actualizar/expandir/fusionar. La auditoría semanal.
find_quick_winsgsc_quick_wins (posiciones 5-15) + posts_snapshot por URL, luego propone reescrituras de meta_title con consultas verbatim.
citation_loss_sweepposts_cite_loss por URL, refresh_brief para cualquier pérdida, recomendaciones específicas de H1 y fraseo inicial.

Motor de veredictos

Determinista, basado en reglas, trazable. 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

El mapeo (motivos → veredicto) y cada umbral viven en src/verdict/rules.ts. Edítalo, fíjalo en pruebas, publica tu propio libro de reglas.

Desarrollo

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

Licencia

MIT