~/codigoagente

OpenSEO: la alternativa open source a Semrush y Ahrefs que conectas a Claude Code

OpenSEO es una herramienta SEO open source que se presenta como alternativa a Semrush y Ahrefs: investigación de palabras clave, seguimiento de posiciones, análisis de competidores, backlinks, auditorías de sitio y visibilidad en respuestas de IA. Tiene licencia MIT, se puede instalar en tu propio equipo con Docker y, lo que la diferencia de verdad, expone un servidor MCP para que Claude Code, Codex, Cursor o ChatGPT trabajen con datos SEO reales en lugar de dar consejos genéricos.

En este artículo leemos el código de la versión v0.1.14 (19 de octubre de 2026) y su documentación para explicarte qué hace, cómo está construida, cuánto cuesta usarla, cómo instalarla y cómo sacarle partido desde Claude Code con ejemplos concretos.

Panel de OpenSEO con la investigación de palabras clave para "seo tools": tabla de keywords con volumen, CPC, competencia, dificultad e intención, gráfico de tendencia y análisis de la SERP
Investigación de palabras clave con tendencia y SERP en la misma pantalla · Captura oficial del proyecto (MIT)

Qué es OpenSEO y quién lo hace

  • Repositorio: github.com/every-app/open-seo
  • Web y versión alojada: openseo.so
  • Versión analizada: v0.1.14, publicada el 19 de octubre de 2026. Saca versiones casi cada semana.
  • Licencia: MIT (copyright de Ben Senescu). Puedes usarlo, modificarlo y venderlo como servicio sin publicar tus cambios.
  • Modelo de negocio: el código es libre; la versión alojada cuesta 10 $ al mes e incluye 10 $ de uso.

La idea del proyecto se resume en su propio README: "una herramienta SEO para *la gente*". Si Semrush o Ahrefs se te van de precio o te sobran el 80 % de sus menús, OpenSEO ofrece los flujos de trabajo principales con pago por uso y sin suscripción obligatoria.

Hay un matiz importante desde el principio: OpenSEO no tiene un índice propio de la web. Los datos de volumen de búsqueda, dificultad, SERP y backlinks los saca de la API de [DataForSEO](https://dataforseo.com), un proveedor de datos SEO de pago por uso. OpenSEO pone encima la aplicación, los proyectos, el seguimiento programado, las integraciones con Google y el MCP para agentes.

Qué hace: los flujos de trabajo principales

FlujoQué incluye
Investigación de palabras claveIdeas a partir de semillas, volumen, CPC, competencia, dificultad (KD), intención, tendencia de 12 meses y SERP de cada keyword
Visión de dominioTráfico orgánico estimado, palabras clave por las que posiciona un dominio o una URL, competidores en la SERP
BacklinksEnlaces, dominios de referencia, crecimiento, enlaces nuevos y perdidos, enlaces rotos y puntuación de spam
Seguimiento de posiciones*Rank tracking* en Google por keyword, dispositivo e idioma, y mallas de posiciones locales en Google Maps
Auditoría de sitioRastreo de tus páginas con incidencias por gravedad: enlaces rotos, metadescripciones, H1, títulos duplicados, páginas huérfanas, `noindex`
Visibilidad en IASeguimiento de preguntas en ChatGPT, Gemini y Google AI Overviews: si te mencionan, si te citan y qué competidores aparecen
Datos propiosGoogle Search Console y Google Analytics 4 conectados al proyecto
IndexaciónEnvío de URLs nuevas o cambiadas a Bing y otros buscadores con IndexNow (novedad de la v0.1.14)
AgentesServidor MCP, 12 skills de SEO y un plugin para Claude Code, Codex y Cursor
Auditoría de sitio de OpenSEO con 318 páginas rastreadas y 1180 incidencias agrupadas en críticas, avisos e informativas
La auditoría agrupa las incidencias por gravedad y te dice cuántas páginas afecta cada una · Captura oficial del proyecto
Resumen de backlinks en OpenSEO con enlaces, dominios de referencia, gráfico de crecimiento y enlaces nuevos frente a perdidos
Resumen de backlinks de un dominio · Captura oficial del proyecto

Cómo funciona por dentro

El repositorio es una aplicación TypeScript moderna pensada para ejecutarse en Cloudflare Workers, aunque también corre en local dentro de Docker gracias a workerd, el runtime de Workers:

  • Frontend y servidor: TanStack Start con React 19 y componentes shadcn (sobre Base UI, no Radix).
  • Base de datos: Drizzle ORM con SQLite (D1 en Cloudflare, archivo local en Docker) o Postgres. Todo el esquema se mantiene compatible con los dos.
  • Autenticación: tres modos (AUTH_MODE): local_noauth para uso personal, cloudflare_access para instalaciones en internet y hosted (Better Auth) para la versión de pago.
  • MCP: el SDK oficial @modelcontextprotocol/sdk 1.30 sobre HTTP en la ruta /mcp, con OAuth o clave API en la versión alojada y sin autenticación en el modo local.
  • Tareas programadas: un *cron* cada cinco minutos lanza las comprobaciones de posiciones y de visibilidad en IA que tocan.
Diagrama de OpenSEO: tu agente vía MCP y tú en el panel web se conectan a OpenSEO, que guarda proyectos en SQLite o Postgres y consulta DataForSEO, Google Search Console, Analytics y OpenRouter
Cómo encajan las piezas · Diagrama de codigoagente

El servidor MCP es la parte más trabajada. Contamos más de 70 herramientas en src/server/mcp/tools: research_keywords, get_keyword_metrics, get_serp_results, get_ranked_keywords, get_backlinks_overview, run_site_audit, get_search_console_performance, inspect_urls, create_rank_tracker, estimate_rank_tracker_cost, submit_indexnow_urls, get_project_context, save_report y muchas más. Dos decisiones de diseño marcan la diferencia frente a conectar tu agente a la API de DataForSEO a pelo:

  1. Respuestas recortadas. La herramienta de keywords elimina la tendencia de 12 meses (según el proyecto, cerca del 80 % de cada fila) y la SERP llega como posición, dominio, título, URL y descripción. Menos tokens, menos errores de lectura del agente.
  2. El agente conoce el precio antes de gastar. Hay herramientas de estimación (estimate_rank_tracker_cost, estimate_ai_visibility_cost) y las búsquedas de SERP repetidas en el mismo proyecto en 12 horas no se vuelven a cobrar.

A eso se suma el contexto de proyecto: negocio, objetivo, posicionamiento, competidores, páginas clave, preferencias de redacción y un registro de investigaciones. Lo leen todas las skills al empezar, así que no le repites a Claude quién eres en cada sesión ni pagas dos veces la misma investigación.

Cuánto cuesta OpenSEO de verdad

Tienes dos caminos y en los dos pagas los datos que consumes:

Alojado (openseo.so)Self-hosting (Docker o Cloudflare)
Software10 $/mes con 10 $ de uso incluidosGratis (MIT)
DatosPrecio de DataForSEO + 28 %Precio de DataForSEO, pagado directamente
Search Console, Analytics, contexto, informesSin coste de créditosGratis
MantenimientoNingunoTuyo

En la versión alojada, 1 crédito = 0,001 $. Con las tarifas que el propio proyecto documenta en su calculadora de precios (web/src/routes/_marketing/pricing.tsx):

  • Una investigación de palabras clave con 150 resultados: unos 0,042 $ en DataForSEO, 54 créditos en la versión alojada.
  • Un perfil de backlinks con un año de historia: 79 créditos.
  • Una comprobación de posición (top 40, un dispositivo): unos 0,002 $.
  • Una pregunta a un motor de IA para el seguimiento de visibilidad: 2 créditos.

Si haces self-hosting, DataForSEO regala 1 $ de saldo al crear la cuenta para probar, pero la recarga mínima es de 50 $. Para un blog o un negocio pequeño, ese saldo dura meses; para una agencia que vigila muchos clientes, la versión alojada a 10 $ puede salir igual o más barata que montarlo todo tú.

Opción 1: usar OpenSEO en Claude Code con el plugin

Es la vía más rápida si ya usas Claude Code y te vale la versión alojada. El plugin instala de una vez el MCP y las 12 skills. Dentro de Claude Code:

terminalsh
/plugin marketplace add every-app/open-seo
/plugin install openseo@openseo

Si la salida dice Run /reload-plugins to activate., ejecuta /reload-plugins. Claude Code te pedirá iniciar sesión en OpenSEO; si no lo hace, abre /mcp, elige OpenSEO y completa el login.

Las skills quedan con el prefijo del plugin:

snippettext
/openseo:seo-project-setup
/openseo:seo-coach
/openseo:keyword-research
/openseo:keyword-clustering
/openseo:competitive-landscape
/openseo:competitor-analysis
/openseo:seo-audit
/openseo:local-seo
/openseo:link-prospecting
/openseo:ai-prompt-research
/openseo:ai-visibility-audit
/openseo:seo-report

Si solo quieres el MCP, sin skills:

terminalsh
claude mcp add --transport http --scope user openseo https://app.openseo.so/mcp

Para entornos sin navegador (CI, servidores), crea una clave en Settings → API keys de la app y pásala como cabecera:

terminalsh
claude mcp add --transport http --scope user openseo https://app.openseo.so/mcp --header "Authorization: Bearer oseo_TU_CLAVE"

Si es la primera vez que instalas plugins o skills, te lo explicamos en qué son las skills de Claude Code y cómo instalarlas.

Opción 2: instalar OpenSEO con Docker en tu equipo

Es el camino que el proyecto recomienda para probarlo o para uso personal. Necesitas Docker Desktop (o Docker Engine con Compose) y una cuenta de DataForSEO.

Paso 1: conseguir la clave de DataForSEO

En app.dataforseo.com/api-access pulsa "Send by email" y copia la credencial larga marcada como Base64. Es la codificación en base64 de email:contraseña_api. Si solo tienes el email y la contraseña de la API, puedes generarla tú:

terminalsh
printf 'tu@email.com:TU_PASSWORD_API' | base64

En Windows con PowerShell:

terminalsh
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("tu@email.com:TU_PASSWORD_API"))

Ojo: no es la "API key" del panel de DataForSEO, es el base64 de usuario y contraseña. Es el error más común.

Paso 2: clonar y configurar

terminalsh
git clone https://github.com/every-app/open-seo.git
cd open-seo
cp .env.example .env

Edita .env y descomenta al menos la clave:

.envsh
DATAFORSEO_API_KEY=ZW1haWxAZWplbXBsby5jb206cGFzc3dvcmQ=
# Opcional: puerto (por defecto 3001)
PORT=3001
# Opcional: desactivar la telemetría anónima
OPENSEO_TELEMETRY_DISABLED=1
# Opcional: funciones de IA (agente SAM, ideas de prompts)
# OPENROUTER_API_KEY=

La telemetría envía recuentos agregados (instalaciones, proyectos, uso de funciones) con un ID aleatorio; según su documentación no incluye URLs, keywords, prompts ni correos. Con OPENSEO_TELEMETRY_DISABLED=1 o DO_NOT_TRACK=1 la apagas.

Paso 3: arrancar

terminalsh
docker compose up -d
docker compose logs -f

El compose.yaml usa la imagen ghcr.io/every-app/open-seo:latest. El primer arranque compila la aplicación dentro del contenedor y tarda uno o dos minutos; los siguientes reutilizan la compilación mientras no cambien las variables. Antes de compilar verás un informe de comprobaciones ([ ok ], [warn], [info]) que te dice qué falta.

Abre http://localhost:3001. Para comprobar el estado desde la terminal:

terminalsh
curl http://localhost:3001/api/health
docker compose ps

Paso 4: conectar Claude Code a tu instalación local

El MCP también está en tu instancia, sin login en modo local:

terminalsh
claude mcp add --transport http --scope user openseo-local http://localhost:3001/mcp

Y las skills, que en self-hosting no llegan con el plugin (el plugin apunta solo a la versión alojada), se instalan aparte:

terminalsh
npx skills add every-app/open-seo --skill '*' --agent claude-code

Antes de instalar skills de terceros conviene revisarlas; en el post de SkillSpector explicamos cómo escanearlas en busca de instrucciones peligrosas.

Seguridad: no lo publiques tal cual

En Docker, OpenSEO corre con AUTH_MODE=local_noauth: no hay login, todo el que llegue al puerto es administrador. Por eso el compose.yaml publica el puerto solo en 127.0.0.1. Si lo quieres accesible desde fuera, ponlo detrás de un proxy inverso con autenticación (Cloudflare Access, un túnel privado, Tailscale) y añade el dominio:

terminalsh
ALLOWED_HOST=seo.tudominio.com docker compose up -d

Para un equipo o varios dispositivos, el README recomienda la instalación en Cloudflare (funciona en el plan gratuito y ya trae Cloudflare Access) antes que Coolify, Railway o Dokploy, al menos hasta que simplifiquen esos despliegues.

Opción 3: OpenSEO en tu propia cuenta de Cloudflare

Resumen de docs/SELF_HOSTING_CLOUDFLARE.md para quien quiera la versión de equipo:

terminalsh
git clone https://github.com/every-app/open-seo.git
cd open-seo
corepack enable
pnpm install
pnpm alchemy login
pnpm alchemy cloudflare bootstrap

Requisitos: Node 22.6 o superior, pnpm y una cuenta de Cloudflare con R2 activado (pide un método de pago aunque no pases del plan gratuito). Después creas .env.selfhost con tu clave de DataForSEO y despliegas con pnpm deploy:selfhost --yes, que crea la base de datos, los Workers y la puerta de login de Cloudflare Access. La renderización de JavaScript en las auditorías necesita el plan de pago de Workers.

Ejemplos concretos con Claude Code

Con el MCP conectado, la regla del proyecto es empezar por un flujo concreto en vez de pedir "haz SEO". Estos son cuatro casos con las herramientas que se llaman por debajo.

1. Configurar el proyecto una vez

snippettext
/openseo:seo-project-setup
Mi web es midominio.com, vendemos software de facturación para pymes en Ecuador.

La skill rellena el contexto del proyecto (update_project_context): negocio, objetivo, competidores y páginas clave. Es gratis y todas las demás skills lo reutilizan.

2. Investigación de palabras clave en un mercado concreto

snippettext
/openseo:keyword-research
Semillas: "facturación electrónica", "software de facturación". Mercado: Ecuador, español.

Según su SKILL.md, la skill lee primero el contexto (get_project_context), revisa si ya se investigó lo mismo en los últimos 30 días para no volver a pagarlo, llama a research_keywords con 1-5 semillas y 150 resultados, mira la SERP de las candidatas con get_serp_results y, si tienes Search Console conectado, cruza tus consultas en posiciones 5-20 con get_keyword_metrics. El resultado se guarda como informe en el proyecto con seo-report.

3. Estimar el coste antes de vigilar posiciones

Claude Code llamando a la herramienta estimate_rank_tracker_cost de OpenSEO: 25 keywords, 225 créditos en directo o 63 créditos por comprobación semanal
El agente pide el presupuesto antes de lanzar el seguimiento: 25 keywords semanales salen por unos 0,25 $ al mes · Captura oficial del proyecto
snippettext
Crea un rank tracker para midominio.com con estas 25 keywords, móvil, semanal.
Dime cuánto cuesta al mes antes de activarlo.

El agente usa create_rank_tracker y estimate_rank_tracker_cost. Las comprobaciones programadas van por la cola de tareas de DataForSEO, que cuesta en torno a un tercio de la API en directo. En Docker, el propio arranque avisa de que los seguimientos de posiciones programados no se ejecutan solos: lánzalos desde la página Rank Tracking.

4. Ver si las IA te recomiendan

snippettext
/openseo:ai-prompt-research
¿Qué preguntan en ChatGPT sobre software de facturación en Ecuador y a quién citan?

Las herramientas de visibilidad en IA (research_ai_visibility_prompts, run_ai_visibility_check, get_ai_visibility_sources) muestran el coste antes de lanzar nada y luego permiten programar el seguimiento diario, semanal o mensual.

Seguimiento de prompts en OpenSEO con preguntas agrupadas por tema, motores ChatGPT, Gemini y Google AI Overviews, y porcentajes de menciones y citas propias
Seguimiento de menciones y citas en respuestas de IA · Captura oficial del proyecto

Errores frecuentes

DATAFORSEO_API_KEY: Not set — all SEO data features will be unavailable until it is. El contenedor arranca, pero sin datos. Pon la clave en .env y recrea el contenedor: docker compose up -d --force-recreate open-seo. Un docker compose up -d a secas no siempre recoge los cambios del .env.

Set, but does not decode as base64 of login:password. Has pegado la API key del panel o el texto sin codificar. Genera el base64 con printf 'email:password' | base64.

"Blocked request" al entrar por tu dominio. Lo devuelve Vite cuando accedes por un host que no es localhost. Añade ALLOWED_HOST=tudominio.com y recrea el contenedor.

/reload-plugins dice 0 skills. Es normal: ese resumen solo cuenta la carpeta commands/ del plugin. Prueba una skill directamente, por ejemplo /openseo:seo-audit.

/plugin uninstall openseo@openseo responde "not installed in this project". Lo instalaste en otro ámbito. Usa claude plugin uninstall openseo@openseo --scope user.

Codex: Authorization server response missing required issuer. Afecta a Codex 0.143-0.146. Actualiza a 0.147.0 o superior, o conéctalo con clave API.

Pros y contras

A favor:

  • Licencia MIT y código legible: puedes adaptarlo o construir tu propia herramienta encima.
  • Pagas por uso. Para un sitio pequeño, unos pocos dólares al mes frente a los 129 $/mes del plan Lite de Ahrefs que cita el proyecto.
  • El MCP y las skills están muy cuidados: respuestas recortadas, costes visibles, contexto compartido entre sesiones y entre Claude, Codex, Cursor y ChatGPT.
  • Search Console, Analytics, informes y contexto no consumen créditos.

En contra:

  • Depende de DataForSEO: sin esa cuenta no hay datos, y la primera recarga es de 50 $.
  • Versión 0.1: cambia cada semana y algunas funciones (Search Console en self-hosting, renderizado de JavaScript) piden configuración extra.
  • El modo Docker no tiene login; publicarlo en internet requiere poner tú la autenticación.
  • La interfaz y las skills están en inglés, aunque puedes investigar cualquier mercado e idioma.

¿Para quién es? Para quien hace SEO de sus propios proyectos o de pocos clientes y ya trabaja con un agente de IA. Si dependes de funciones avanzadas de Semrush (gestión de anuncios, social, bases de datos históricas enormes), no lo sustituye del todo; si lo que haces es investigar keywords, vigilar posiciones y auditar, cubre lo esencial por una fracción del precio.

Preguntas frecuentes

¿OpenSEO es gratis? El software sí (MIT). Los datos no: pagas DataForSEO directamente si lo instalas tú, o 10 $/mes con 10 $ de uso incluido en la versión alojada.

¿Necesito saber programar para usarlo? Para la versión alojada, no. Para instalarlo con Docker basta con copiar los comandos de este artículo.

¿Funciona con datos de España, México o Ecuador? Sí. DataForSEO cubre Google en esos países; en la investigación de keywords eliges país e idioma, y para una ciudad concreta las skills usan search_serp_locations.

¿Puedo usar OpenSEO sin Claude Code? Sí. Tiene panel web completo y el MCP funciona también con Codex, Cursor, Claude Desktop y ChatGPT.

¿Se puede instalar en Coolify? Técnicamente es un contenedor Docker, pero el modo Docker no tiene autenticación y el propio proyecto desaconseja Coolify o Dokploy salvo que ya tengas experiencia. Si lo haces, protégelo con un proxy que pida login.

Conclusión

OpenSEO es la alternativa open source a Semrush y Ahrefs más interesante si trabajas con agentes: el MCP y las skills convierten a Claude Code en un analista SEO con datos reales y costes a la vista. Pruébalo primero con Docker en local y los 1 $ de saldo de DataForSEO; si te convence y no quieres mantener nada, la versión alojada a 10 $/mes es el siguiente paso. Para ampliar tu equipo de skills, mira cómo buscar skills para Claude Code con find-skills.

// código fuente

Repositorio del artículo
El código del que habla este artículo es público: revísalo, dale una estrella o clónalo desde aquí.

// implementación

¿Necesitas implementar esta automatización en tu negocio?
No pierdas semanas configurando servidores, APIs y agentes. Safe Build Labs, la agencia que patrocina codigoagente, lo construye por ti, listo para producción.
Fish Speech 3.0 trae Drama 3 y S2-Pro: clonación de voz y TTS que puedes correr en tu GPU. Requisitos, licencia y cuánto cuesta frente a ElevenLabs.
  • Alternativas gratis a apps de pago
  • Instálalo en tu servidor
leer artículo
Qué es Idol de Speridlabs, cómo pasa de una foto a un objeto 3D con Gaussian Splatting, cuánta GPU pide, cómo instalarlo y qué licencias revisar antes.
  • Diseño, imagen y vídeo
  • Alternativas gratis a apps de pago
leer artículo
Analizamos Concat 0.2.8, el editor de vídeo libre y local alternativo a CapCut: subtítulos con Whisper, sin marca de agua, licencia AGPL y servidor MCP.
  • Alternativas gratis a apps de pago
  • Diseño, imagen y vídeo
leer artículo