Ranki.io SEO/AEO consultant
oficialEl servidor MCP gratuito de SEO y AEO que convierte tu Claude / Cursor / ChatGPT Desktop en un consultor senior de SEO + AEO. Audita cualquier URL, genera sitemap.xml / llms.txt / robots.txt, encuentra brechas de palabras clave y le dice a tu IA exactamente qué corregir, todo usando tus propios créditos de IA, nunca los nuestros.
¿Qué puedes hacer con Ranki Io SEO AEO Consultant MCP?
- Audit on-page SEO — Ejecuta
audit_seoen cualquier URL para obtener una puntuación de 0 a 100 que cubre títulos, meta descripciones, canónicos, cobertura de alt en imágenes y presencia de JSON-LD con recetas de corrección por fallo. - Audit Answer Engine Optimization — Usa
audit_aeopara verificar el esquema FAQPage, introducciones definicionales,llms.txt, permisos de bots de IA y encabezados con estilo de respuesta, para que tu sitio sea citado por ChatGPT y Claude. - Measure Core Web Vitals and speed — Llama a
audit_speedoaudit_core_web_vitalspara recuperar puntuaciones reales de Lighthouse y métricas LCP/CLS/INP, luego obtén comandos exactos de optimización de imágenes medianteoptimize_images. - Generate essential SEO files — Produce
robots.txt,sitemap.xml,llms.txty esquemas JSON-LD listos para implementar en un solo paso conseo_starter_kito las herramientas individualesgenerate_*. - Find content opportunities — Pide a
find_topic_ideasun resumen estructurado de 15 temas de artículos por intención, o usafind_keyword_gappara descubrir palabras clave por las que tus competidores rankean y tú no. - Classify hidden pages — Ejecuta
audit_hidden_pagesen un dominio para identificar rutas de administración, borradores y páginas noindex, y luego recibe un bloquerobots.txtlisto para copiar y pegar.
Documentación
Ranki MCP — SEO, AEO, velocidad y optimización de imágenes gratuitos para Cursor, Claude Code, Windsurf y ChatGPT
El MCP que no solo informa — tu agente corrige. Audita cualquier URL para SEO y Optimización para Motores de Respuesta, mide Core Web Vitals reales a través de Google PageSpeed Insights, e instruye a tu agente para convertir imágenes a AVIF y WebP, reescribir etiquetas
<img>en<picture>responsivas consrcsetyalt, insertar esquema JSON-LD, generarsitemap.xml/llms.txt/robots.txt, clasificar páginas ocultas — luego vuelve a ejecutar la auditoría para demostrar que la puntuación mejoró. Todo dentro de Claude Code, Claude Desktop, Cursor, Windsurf y ChatGPT Desktop.
Instalar en una línea
npx @ranki.io/cli install
La CLI detecta automáticamente qué editor de IA tienes instalado (Claude Code, Claude Desktop, Cursor, Windsurf, ChatGPT Desktop), escribe la configuración MCP correcta en el lugar adecuado y descarga el archivo Skill complementario del repositorio ranki-seo-skills. Vuelve a ejecutar npx @ranki.io/cli update más tarde para actualizar el Skill; npx @ranki.io/cli check verifica la configuración.
¿Prefieres el fragmento JSON manual? Hay ejemplos para cada editor en la sección Instalar a continuación.
Dos implementaciones, mismas herramientas
Este repositorio distribuye el MCP en dos implementaciones equivalentes para que puedas elegir la que mejor se adapte a tu stack:
server/— referencia PHP 8.4, el despliegue de producción que impulsamcp.ranki.io. Alojado, reforzado, sin dependencias, se ejecuta detrás de Cloudflare. Sobre esto está construidomcp.ranki.io.ts-server/— referencia Node / TypeScript, publicada como@ranki.io/seo-aeo-mcpen npm. Alternativa nativa de Node para desarrolladores que prefieren herramientas JavaScript, instalable mediantenpx -y @ranki.io/seo-aeo-mcp(stdio) onpx @ranki.io/seo-aeo-mcp --serve(HTTP).
Ambas exponen las mismas 22 herramientas con la misma salida JSON, protección SSRF, semántica de límite de tasa y postura de seguridad. La implementación TS ejecuta las 15 herramientas gratuitas de forma nativa en Node, y redirige las 7 herramientas puente de pago a la misma API REST en app.ranki.io que usa el servidor PHP. Ninguna abre una base de datos — las herramientas de pago pasan por el middleware ApiKeyAuth de Laravel y están limitadas a los datos del usuario que llama.
Lo que realmente hace — 22 herramientas
El servidor MCP expone 22 herramientas. Tu agente las llama como cualquier otra herramienta MCP; devuelven informes Markdown que tu agente renderiza en línea y sobre los que luego actúa — convirtiendo archivos, reescribiendo HTML, generando otros nuevos, confirmando el resultado.
Auditoría
audit_seo(url)— Tarjeta de puntuación SEO on-page de 10 verificaciones: longitud del título, meta descripción, unicidad del H1, canónica, viewport, HTTPS, completitud de OpenGraph, cobertura de alt en imágenes, conteo de enlaces internos, presencia de JSON-LD. Devuelve puntuación 0–100 con recetas de corrección por cada fallo.audit_aeo(url)— Tarjeta de puntuación de Optimización para Motores de Respuesta de 8 verificaciones: JSON-LD FAQPage / Article, introducción definitoria de menos de 80 palabras, firma de autor, presencia dellms.txt,robots.txtpermite GPTBot / ClaudeBot / PerplexityBot, encabezados H2/H3 estilo respuesta, tablas comparativas.audit_hidden_pages(urls, domain)— clasifica cada ruta comorobots-disallow,noindex,keepounsurecon razonamiento. Detecta rutas de administración, endpoints de API, borradores, páginas de inicio de sesión, paneles de cuenta, páginas de agradecimiento, artefactos de compilación y URLs de resultados de búsqueda. Devuelve un bloquerobots.txtlisto para pegar.
Velocidad e imágenes — esta es la parte que nada más hace
audit_speed(url, strategy)— puntuaciones reales de Lighthouse (Rendimiento, Accesibilidad, SEO, Mejores Prácticas) y Core Web Vitals (LCP, CLS, INP, FCP, TTFB) a través de Google PageSpeed Insights. Devuelve oportunidades de imágenes con bytes ahorrados por archivo, JS / CSS bloqueante de renderizado y auditorías SEO on-page fallidas. La estrategia predeterminada esmobile(Google clasifica con prioridad móvil).audit_core_web_vitals(url)— un párrafo por métrica con la receta de corrección literal. "El elemento LCP es hero.png de 2.4 MB, convertir a WebP ahorra 1.8 MB → -1.1s LCP." Extrae la URL del elemento LCP de Lighthouse para que el agente sepa exactamente qué archivo optimizar.optimize_images(images, max_width)— para cada imagen: formato objetivo (AVIF + WebP), anchos responsivos 1×/2×, sugerencia de texto alternativo, los comandos literalessharp-cli/cwebp/avifenc, y un bloque<picture>listo para pegar consrcset. Tu agente ejecuta la conversión localmente en el repositorio y reescribe las etiquetas<img>.
Generar
generate_sitemap_xml(urls)— construye unsitemap.xmllisto para desplegar a partir de una lista de URLs con marcas de tiempolastmodactuales.generate_llms_txt(site_name, summary, key_pages)— generallms.txt, el estándar emergente para decirle a los rastreadores de IA qué es tu sitio y qué páginas citar.generate_robots_txt(sitemap_url, allow_ai, disallow_paths)— construye unrobots.txtque permite o deniega explícitamente a GPTBot, ChatGPT-User, ClaudeBot, anthropic-ai, PerplexityBot y Google-Extended.
Contenido y estrategia
seo_starter_kit(domain)— devuelve los cuatro archivos de referencia que la mayoría de los sitios creados con vibe-coding no tienen (robots.txt,sitemap.xml,llms.txt, JSON-LD) listos para pegar en tu repositorio.find_topic_ideas(url)— lee tu página de inicio, infiere tu nicho y devuelve un informe estructurado para generar 15 temas de artículos a través de intención informativa, comercial y transaccional con criterios de priorización.find_keyword_gap(url, competitors)— devuelve una metodología paso a paso para encontrar palabras clave por las que los competidores clasifican pero tú no. Si no se proporcionan competidores, indica a tu editor que pregunte primero.propose_titles_metas(urls, focus_keyword)— extrae el título real, h1 y primer párrafo de cada URL (o acepta una descripción de texto libre para páginas no desplegadas), luego devuelve una tabla Markdown con 5 candidatos de título y meta descripción por página a través de 5 ángulos (descriptivo, orientado a beneficios, formato pregunta, número específico, palabra clave primero). Cada candidato está marcado para cumplimiento de longitud.explain_seo_terms(category)— glosario de referencia de más de 40 términos de SEO y AEO: SEO, AEO, GEO, JSON-LD, FAQPage, canónica,llms.txt, Core Web Vitals, E-E-A-T, actualización de contenido útil, páginas puerta, y más. Filtrar por categoría: conceptos básicos, AEO, técnico, analítica, penalización.
Instalar
install_skill(agent)— devuelve los comandos de instalación para el Skill ranki-seo-skills en Claude Code, Claude Desktop, Cursor, Windsurf, Proyectos web de Claude.ai y agentesAGENTS.mdgenéricos.
Tu cuenta Ranki.io — datos de clasificación reales dentro de tu IDE (clave API de pago)
get_account()— whoami para tu clave API: nombre, email, plan, límites diarios y mensuales, uso actual.list_projects()— lista proyectos en tu cuenta de Ranki.io.list_articles(project_id)— índice paginado de artículos en un proyecto: nano_id, título, estado, idioma, focus_keyword[], esquema TOC, conteo de palabras, puntuación SEO. Filtro de estado opcional.get_article(article_id)— obtiene un solo artículo por sunano_id: título, HTML, palabras clave de enfoque, tabla de contenidos, URLs de imágenes incrustadas, puntuación SEO.list_rank_tracking(project_id)— resumen de Google Search Console para un proyecto: totales de 28 días, top 20 palabras clave por clics, top 20 palabras clave de oportunidad (posición > 10 con impresiones — las victorias fáciles).list_gsc_keywords(project_id)— lista completa paginada de palabras clave de GSC, ordenable por clics / impresiones / posición / CTR.ai_visibility(project_id)— instantáneas registradas de citas de IA: cuáles de tus temas rastreados aparecieron en ChatGPT, Claude, Perplexity y Google AI Overview SERPs en el momento de la captura.
Cómo se ve una sesión típica
You: audit my site speed and fix the slow images
Claude: → Calling ranki.audit_speed(url="https://myapp.dev")
← Lighthouse: 42 perf · LCP 4.8s · 3 images blocking the paint.
→ Calling ranki.optimize_images([hero.png, banner.jpg, card.png])…
← 3 files, recipes returned.
→ Running sharp-cli to convert hero.png → hero.avif + hero.webp + hero@2x.avif…
→ Editing app/page.tsx — rewriting <img> as <picture srcset>, adding alt text…
→ Calling ranki.audit_speed again to verify…
← Lighthouse: 96 perf · LCP 1.4s.
You: now find pages that shouldn't be in Google
Claude: → Calling ranki.audit_hidden_pages(domain="https://myapp.dev")
← 8 robots-disallow, 12 noindex, 118 keep, 4 unsure.
→ Editing public/robots.txt to disallow /admin /dashboard /checkout /account…
→ Adding <meta name="robots" content="noindex"> to app/search/page.tsx…
Done. Submit URL-removal requests in Search Console for the 8 admin pages.
El archivo Skill (en ranki-seo-skills) le dice a tu agente cuándo llamar a qué herramienta, en qué orden y dónde en tu repositorio aplicar cada corrección.
Límites de tasa
| Nivel | Límite diario | Alcance | Herramientas disponibles |
|---|---|---|---|
| Sin clave | 5 llamadas | por IP | 15 herramientas gratuitas (auditorías, generadores, velocidad, optimización de imágenes, estrategia de contenido, instalación) |
| Clave API Ranki.io | 500 llamadas | por clave | Las 22 herramientas, incluidas las 7 herramientas puente que leen tus palabras clave reales de GSC, seguimiento de clasificación, citas de IA, lista de proyectos y biblioteca de artículos de tu cuenta Ranki.io |
Obtén una clave en app.ranki.io/developer. X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset se devuelven en cada respuesta. Los mensajes de error del despachador incluyen la cuenta regresiva de restablecimiento y la ruta de actualización.
Instalar
Claude Desktop / Claude Code (recomendado para la mayoría de vibe-coders)
Añadir a ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"ranki": {
"command": "npx",
"args": ["-y", "@ranki.io/mcp"],
"env": { "RANKI_API_KEY": "rk_live_..." }
}
}
}
Reinicia Claude Desktop. El indicador MCP debería mostrar ranki con 22 herramientas.
Cursor (transporte HTTP, no necesita npx)
.cursor/mcp.json en tu proyecto:
{
"mcpServers": {
"ranki": {
"url": "https://mcp.ranki.io",
"headers": { "X-API-Key": "rk_live_..." }
}
}
}
ChatGPT Desktop, Continue.dev, Zed, cualquier cosa compatible con MCP
Si el cliente soporta MCP stdio, usa el fragmento de Claude Desktop. Si soporta MCP HTTP, usa el fragmento de Cursor.
Obtén tu clave API gratuita
Visita app.ranki.io/developer y haz clic en Reveal. Tu clave ya existe — cada cuenta de Ranki.io obtiene una creada automáticamente. Las herramientas de asesoramiento gratuitas funcionan sin clave (5 llamadas/IP/día); las herramientas puente list_projects y get_article requieren una.
Cómo lo usan los vibe-coders
Escenario 1: "Acabo de lanzar un sitio, ¿qué hago?"
You: I just shipped my Next.js app at https://myapp.com. What SEO do I need?
Claude (via Ranki MCP):
→ Calling seo_starter_kit(domain="myapp.com")
← [Returns robots.txt + sitemap.xml + llms.txt + JSON-LD templates]
→ Writing public/robots.txt
→ Writing public/sitemap.xml (enumerating pages from app/ directory…)
→ Writing public/llms.txt
→ Adding JSON-LD <script> to app/layout.tsx
→ Calling audit_seo to verify…
← Score: 92/100. 🎉
Escenario 2: "¿Por qué ChatGPT no está citando mis documentos?"
You: Why doesn't ChatGPT cite my docs site?
Claude (via Ranki MCP):
→ Calling audit_aeo(url="https://docs.myproduct.com")
← Score 38/100. Failing: no FAQPage schema, no llms.txt, robots.txt blocks ClaudeBot.
→ Fixing each failure in your repo…
← Score 88/100. Re-deploy and ChatGPT should pick it up within 7-14 days.
Escenario 3: "No sé qué publicaciones de blog escribir"
You: I have a Stripe alternative landing page but the blog is empty. Help.
Claude (via Ranki MCP):
→ Calling find_topic_ideas(url="https://mystripe-alt.com")
← [Returns brief with topic generation methodology + 15-topic structure]
→ [Generates 15 topics organized by intent, picks top 3]
← Recommended first 3 articles:
1. "How to switch payment processors without losing customers" (transactional)
2. "Stripe vs us: side-by-side fee comparison for $10K/mo MRR" (commercial)
3. "What is interchange-plus pricing and why most SaaSes overpay" (informational)
Escenario 4: "¿Qué palabras clave de brecha me estoy perdiendo?"
You: My competitors are stripe.com and lemonsqueezy.com. What am I missing?
Claude (via Ranki MCP):
→ Calling find_keyword_gap(url="https://mystripe-alt.com",
competitors=["stripe.com","lemonsqueezy.com"])
← [Returns methodology + per-competitor analysis steps]
→ Crawling /blog on both competitors…
→ Cross-referencing against your sitemap…
← 5 high-value gaps found:
- "PCI compliance for small SaaS" (covered by Stripe, not you)
- "How to handle subscription dunning" (covered by both, not you)
- … 3 more
Arquitectura
┌────────────────────────┐ ┌──────────────────────────┐
│ Claude / Cursor / etc │ │ mcp.ranki.io (PHP) │
│ │ │ │
│ 1. Sees 22 tools │ JSON-RPC│ - 22 tool definitions │
│ 2. Decides to use one ├────────►│ - HTTP + stdio (npx) │
│ 3. Receives advice │ │ - 5/IP or 500/key per │
│ 4. Acts on the repo │ │ UTC day rate limit │
│ │ │ - REST API bridge │
└────────────────────────┘ └────────────┬─────────────┘
│ (only for keyed tools)
▼
┌──────────────────────────┐
│ app.ranki.io REST API │
│ /api/v1/projects │
│ /api/v1/articles/... │
└──────────────────────────┘
Dos transportes
- stdio (Claude Desktop, Claude Code, la mayoría de clientes MCP) — instala el paquete npm
@ranki.io/mcp, que es un shim Node.js de 50 líneas que redirige stdio JSON-RPC ahttps://mcp.ranki.io. - HTTP (Cursor, clientes personalizados) — apunta directamente a
https://mcp.ranki.io. No necesita instalación de Node.
Diseño del repositorio
ranki-mcp/
├── server/ # PHP MCP server (deployed to mcp.ranki.io)
│ ├── public/index.php # GET → marketing landing page (HTML)
│ ├── index.php # POST → JSON-RPC 2.0 dispatcher
│ ├── lib/
│ │ ├── jsonrpc.php # JSON-RPC reply helpers
│ │ ├── registry.php # Tool registry + REST API bridge
│ │ └── ratelimit.php # Per-IP rate limit (5/day for free tier)
│ └── tools/
│ ├── seo_starter_kit.php
│ ├── find_topic_ideas.php
│ ├── find_keyword_gap.php
│ ├── audit_aeo.php
│ ├── audit_seo.php
│ ├── generate_sitemap_xml.php
│ ├── generate_llms_txt.php
│ ├── generate_robots_txt.php
│ ├── list_projects.php
│ └── get_article.php
└── npx/ # Node.js stdio shim (published as @ranki.io/mcp)
├── package.json
├── index.js # ~50 lines: stdin→POST→stdout
└── README.md
SEO vs AEO — ¿cuál es la diferencia?
SEO (Search Engine Optimization) es hacer que tu sitio clasifique en los clásicos 10 enlaces azules de Google. Las señales: etiquetas de título, meta descripciones, H1, canónicas, sitemap, enlaces internos, velocidad de página, adaptabilidad móvil, HTTPS. Herramientas como Ahrefs / SEMrush / SurferSEO puntúan esto.
AEO (Answer Engine Optimization) es hacer que tu sitio sea citado cuando ChatGPT, Claude, Perplexity o Google AI Overviews responden a la pregunta de un usuario. Las señales son diferentes:
- FAQPage JSON-LD — la mayor señal de citación individual.
- Introducciones definitorias — el primer párrafo es una respuesta concisa "X es …".
- Firma de autor + E-E-A-T — los LLMs prefieren fuentes citadas con autores nombrados.
llms.txt— invitación explícita para que los LLMs usen tu contenido.robots.txtpermitiendo bots de IA — GPTBot / ClaudeBot / PerplexityBot NO deben estar bloqueados.- Encabezados estilo respuesta — H2/H3 formulados como preguntas ("¿Qué es X?", "¿Cómo funciona X?").
- Tablas comparativas — el elemento HTML de mayor citación en AI Overviews.
audit_aeo verifica los 8 y le dice a tu IA exactamente qué corregir. A partir de 2026, el tráfico AEO es el canal de SEO de más rápido crecimiento y la mayoría de los sitios tienen cobertura cero.
llms.txt — el estándar emergente de búsqueda de IA
Inspirado por robots.txt pero para LLMs. Un archivo Markdown en /llms.txt le dice a los rastreadores de IA:
- De qué trata tu sitio (en lenguaje claro, no metadatos).
- Qué páginas son más importantes.
- Cómo citarte.
# Acme Corp
> Acme makes the SDK for shipping React Native apps faster.
## Key pages
- [Homepage](https://acme.dev/)
- [Documentation](https://acme.dev/docs)
- [Pricing](https://acme.dev/pricing)
- [Blog](https://acme.dev/blog)
## About
- Founded 2024, based in Berlin.
- Used by 12,000+ teams including Linear and Notion.
- Open source SDK on github.com/acme/sdk.
Usa generate_llms_txt para crear uno en 5 segundos.
Autoalojamiento
El servidor MCP es PHP 8.4 puro — sin framework, sin base de datos, sin dependencias de Composer. Coloca el directorio server/ detrás de un vhost Nginx sirviendo public/index.php y listo.
server {
server_name mcp.yourdomain.com;
root /var/www/ranki-mcp/server/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
El lib/ratelimit.php usa archivos en /tmp/ para limitación de tasa por IP — funciona de inmediato. Para limitación de tasa respaldada por Redis a escala, intercambia la implementación.
Contribuir
Se aceptan PRs para nuevas herramientas de asesoría. Para añadir una herramienta:
- Crea
server/tools/your_tool.phpque devuelva unfunction (array $args, string $apiKey): arrayinvocable. - Devuelve
rk_mcp_text_content("...your structured advice..."). - Registra la herramienta en
server/lib/registry.phpbajork_mcp_tool_definitions().
Nomenclatura de herramientas: <verb>_<noun> snake_case (ej. audit_aeo, find_topic_ideas).
Filosofía de las herramientas: devuelve datos + instrucciones para la IA que llama, nunca llames a un LLM por tu cuenta.
Preguntas frecuentes
¿Esto cuesta dinero?
Las herramientas de asesoría (todo excepto list_projects / get_article) son gratuitas — 5 llamadas por IP por día UTC. Para eliminar ese límite, obtén una clave API gratuita en app.ranki.io/developer. Las herramientas puente requieren una clave porque acceden a tus datos privados de Ranki.io.
¿Ranki MCP consume mis créditos de Claude?
Sí — y solo los tuyos. Nunca hacemos llamadas a LLMs. El servidor MCP devuelve asesoría estructurada; tu Claude / Cursor la evalúa y actúa en consecuencia usando tus propios créditos.
¿Por dónde fluyen los datos?
- Las herramientas de asesoría (
audit_*,generate_*,seo_starter_kit,find_*) obtienen la URL que les pasas (sin otras llamadas de red). - Las herramientas puente (
list_projects,get_article) llaman aapp.ranki.io/api/v1/...por HTTPS con tuX-API-Key. - No registramos los cuerpos de las solicitudes. Registramos IP + nombre de la herramienta + estado de la respuesta para limitación de tasa y depuración.
¿Es de código abierto?
Sí — licencia MIT, código fuente completo en este repositorio.
¿Puedo ejecutarlo dentro del VPC de mi empresa?
Sí — server/ es PHP simple, sin dependencias de servicios externos excepto app.ranki.io para las herramientas puente (las cuales puedes desactivar eliminando esos archivos de herramientas).
¿En qué se diferencia de competidores como Surfer / Frase / Outrank?
Esos son paneles SaaS que auditan una URL a la vez y recomiendan cambios. Ranki MCP es una capa de protocolo que permite a tu IA usar esas auditorías en línea mientras escribe código en tu IDE. Forma diferente, precio diferente (gratuito), audiencia diferente (vibe-coders, no profesionales de SEO).
Soy un vibe-coder y no tengo idea de qué significa AEO.
Literalmente, esto es para ti. Comienza con seo_starter_kit("yourdomain.com") — tu Claude te guiará paso a paso.
¿Entrenarán IA con mis datos?
No entrenamos modelos. No tenemos modelos. Somos un asesor ligero sobre verificaciones deterministas.
Licencia
MIT. Consulta LICENSE.
Creado con dedicación por Ranki.io — automatización de SEO + AEO con IA para fundadores, agencias y creadores.