Tutorial de autohospedaje de OpenSEO: implementación de Docker, acceso a DataForSEO y MCP

Presenta las palabras clave, las clasificaciones, los productos competitivos y las capacidades de auditoría del sitio de OpenSEO, y demuestra el autohospedaje de Docker y Cloudflare, la configuración de la API DataForSEO y el acceso a Codex y Claude MCP.

OpenSEO es una herramienta de SEO de código abierto para individuos y equipos, posicionada como una alternativa ligera a las suites comerciales como Semrush y Ahrefs. Proporciona investigación de palabras clave, seguimiento de clasificaciones, análisis de productos competitivos, vínculos de retroceso, auditoría de sitios y visibilidad de IA, y entrega datos de SEO a agentes de IA como Codex y Claude Code a través de MCP para su uso.

OpenSEO puede utilizar la versión alojada oficial o puede implementarla usted mismo. El autohospedaje le brinda control sobre los datos de la aplicación y del proyecto, pero no significa que todos los datos de SEO sean gratuitos: datos como palabras clave, SERP, vínculos de retroceso, etc. provienen de DataForSEO, que aún requiere sus propias credenciales API y paga por llamada.

Respuesta rápida

Para experimentar OpenSEO en una computadora personal, se recomienda utilizar Docker:

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

Establecido en .env:

1
DATAFORSEO_API_KEY=YOUR_BASE64_CREDENTIALS

Iniciar el servicio:

1
docker compose up -d

La dirección de acceso predeterminada es:

1
http://localhost:3001

Recordatorio importante: el modo autohospedado de Docker usa AUTH_MODE=local_noauth de forma predeterminada y no tiene comprobaciones de inicio de sesión a nivel de aplicación. Es adecuado para máquinas locales o redes privadas confiables y no puede exponer puertos directamente a la red pública. El acceso remoto debe realizarse detrás de un proxy inverso, un túnel o una red privada autenticados.

Qué puede hacer OpenSEO

OpenSEO divide el trabajo común de SEO en procesos más enfocados:

Flujo de trabajo Problemas resueltos
Investigación de palabras clave Volumen de búsqueda de consultas, dificultad, CPC, intención y tendencias
Seguimiento de clasificación Guarde palabras clave y realice un seguimiento de las últimas clasificaciones
Perspectivas de la competencia Encuentre palabras clave orgánicas, páginas y clientes potenciales de tráfico que compitan
Vínculos de retroceso Ver una descripción general de vínculos de retroceso y dominios de referencia
Auditorías del sitio Verifique los problemas técnicos del sitio y el estado de la página
Visibilidad de la IA Observar la visibilidad de una marca o página en escenarios de búsqueda de IA

MCP también puede leer los clics, las impresiones, el CTR y la posición promedio de Google Search Console, y verificar la indexación, el rastreo y el estado canónico de una URL determinada. Los datos que realmente se pueden llamar dependen de la versión actual, la fuente de datos conectada y los permisos de la cuenta.

Comprenda los costos antes del autohospedaje

El propio OpenSEO utiliza la licencia MIT, pero depende de DataForSEO de terceros para obtener datos de SEO. Cuando es autohospedado, el usuario paga directamente la tarifa de la llamada a DataForSEO.

La documentación oficial establece que las nuevas cuentas de DataForSEO pueden obtener una pequeña cantidad de cuota de prueba y tener una cantidad mínima de recarga; Estas políticas de precios pueden cambiar y debe consultar la página de facturación actual de DataForSEO antes de registrarse. No envíe las credenciales de la API de producción a Git y no pegue la cadena Base64 completa en registros, tickets o registros de chat.

Las credenciales proporcionadas por DataForSEO son los valores Base64 que combinan el correo electrónico de la cuenta y la contraseña de la API. La fuente del formato es:

1
email:password

Base64 solo codifica, no cifra. Alguien que tenga en sus manos DATAFORSEO_API_KEY puede agotar los saldos de las cuentas o acceder a datos permitidos, por lo que debe administrarse como una contraseña.

Autohospedaje mediante Docker

1. Clonar proyecto

1
2
git clone https://github.com/every-app/open-seo.git
cd open-seo

2. Crear un archivo de variables de entorno

1
cp .env.example .env

Edite .env para incluir al menos las credenciales de DataForSEO:

1
DATAFORSEO_API_KEY=YOUR_BASE64_CREDENTIALS

Las configuraciones opcionales incluyen:

1
2
3
PORT=3001
ALLOWED_HOST=seo.example.com
OPENSEO_TELEMETRY_DISABLED=1

PORT El valor predeterminado es 3001. ALLOWED_HOST se utiliza para permitir un nombre de host de proxy inverso. Si no desea enviar telemetría anónima, puede configurar OPENSEO_TELEMETRY_DISABLED=1 o puede usar DO_NOT_TRACK=1.

3. Comience y verifique

1
2
3
docker compose up -d
docker compose ps
docker compose logs -f open-seo

Confirme la configuración realmente leída por Compose:

1
docker compose config

El resultado aquí puede contener variables de entorno confidenciales y no debe copiarse directamente en problemas públicos o registros de CI. Una vez completada la verificación, abra http://localhost:3001.

4. Reconstruya el contenedor después de modificar la configuración.

Modifique .env y ejecute:

1
docker compose up -d --force-recreate open-seo

Simplemente realizar un reinicio normal no necesariamente volverá a aplicar todas las variables de entorno, y forzar una reconstrucción facilita la eliminación de los restos de configuraciones antiguas.

¿Por qué el modo Docker no puede exponer directamente la red pública?

El Compose oficial usa AUTH_MODE=local_noauth, el administrador local es admin@localhost y no se realizará la autenticación normal. Si asigna el puerto 3001 directamente a la red pública, cualquier persona con acceso a la dirección podría ingresar a la aplicación y usar las credenciales configuradas de DataForSEO.

Una solución de acceso remoto seguro debe cumplir al menos uno de los siguientes:

  • Permitir únicamente el acceso a través de redes privadas como WireGuard y Tailscale;
  • Colocar detrás de un proxy inverso con autenticación sólida;
  • Utilizar túneles seguros con políticas de autenticación y acceso;
  • Cambie a la solución autohospedada oficial de Cloudflare.

Al configurar el nombre de dominio del proxy inverso, configúrelo en .env:

1
ALLOWED_HOST=seo.example.com

Luego reconstruya el servicio:

1
docker compose up -d --force-recreate open-seo

La simple configuración de ALLOWED_HOST no reemplaza la autenticación, es solo una parte de la restricción del nombre de host.

Actualizaciones, versiones corregidas y reversiones

Extraiga la última imagen y reinicie:

1
2
docker compose pull
docker compose up -d

No se recomienda utilizar latest flotante durante mucho tiempo en un entorno de producción. Las etiquetas de imágenes verificadas se pueden fijar en .env:

1
OPEN_SEO_IMAGE=ghcr.io/every-app/open-seo:v1.2.3

La etiqueta de ejemplo solo se usa para mostrar el formato de configuración. En realidad, debería seleccionar una versión existente y verificada de las versiones oficiales. Haga una copia de seguridad de los datos persistentes y registre las etiquetas antiguas antes de actualizarlas; restaurar imágenes antiguas y versiones de datos compatibles cuando se produzcan problemas.

Detener el contenedor:

1
docker compose down

El siguiente comando eliminará el volumen juntos. No lo ejecutes sin respaldo:

1
docker compose down -v

Desactivar la telemetría anónima

La documentación oficial indica que OpenSEO enviará eventos de uso principales y recuentos agregados con ID de instalación aleatorias. La documentación indica que no se recopilan URL, palabras clave, mensajes, direcciones de correo electrónico o ubicaciones inferidas basadas en IP, y que las instancias inactivas no envían datos.

Para desactivarlo, configúrelo en .env:

1
OPENSEO_TELEMETRY_DISABLED=1

Luego reconstruya el contenedor:

1
docker compose up -d --force-recreate open-seo

Para entornos con requisitos de cumplimiento estrictos, aún debe verificar usted mismo la versión actual del código, las salidas de la red y las declaraciones de privacidad, en lugar de confiar únicamente en descripciones resumidas.

Autohospedado usando Cloudflare

Cuando necesita acceso desde la red pública a través de dispositivos o equipos, OpenSEO también proporciona una ruta de implementación de Cloudflare utilizando el plan gratuito de Cloudflare. El proceso oficial es aproximadamente el siguiente:

  1. Cree un trabajador a través del portal Implementar en Cloudflare proporcionado por el almacén;
  2. Conéctese a GitHub o GitLab;
  3. Habilite el acceso a Cloudflare en rutas y dominios de trabajadores;
  4. Agregue autenticación y configuración de DataForSEO en Variables y Secretos;
  5. Abra la URL del trabajador y verifique el inicio de sesión con la página OpenSEO.

Los secretos que deben configurarse incluyen:

1
2
3
POLICY_AUD
TEAM_DOMAIN
DATAFORSEO_API_KEY

POLICY_AUD y TEAM_DOMAIN provienen de la configuración de acceso de Cloudflare. No los escriba en los archivos de variables normales del repositorio.

Las respuestas de DataForSEO se almacenan en caché en R2 con el prefijo dataforseo-cache/. La recomendación oficial es establecer reglas de ciclo de vida para borrar automáticamente los cachés caducados:

1
npx wrangler r2 bucket lifecycle add open-seo dataforseo-cache-expiry dataforseo-cache/ --expire-days 7

Si el nombre del depósito R2 se cambia durante la implementación, debe reemplazar open-seo en el comando con el nombre real. Cuando no se configuran reglas del ciclo de vida, los objetos almacenados en caché continúan acumulándose y aumentan los costos de almacenamiento.

Conecte OpenSEO MCP a Claude Code

La dirección oficial de hosting MCP es:

1
https://app.openseo.so/mcp

Agregue MCP a nivel de usuario en Claude Code:

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

La primera vez que te conectes entrarás en el proceso de inicio de sesión y autorización de OpenSEO. Si solo desea utilizar el repositorio actual, puede utilizar el alcance local de acuerdo con la versión actual de Claude Code.

Conecte OpenSEO MCP al Codex

La CLI del Codex utiliza:

1
codex mcp add openseo --url https://app.openseo.so/mcp

Luego siga las indicaciones para completar la autorización de inicio de sesión. Los usuarios de Codex Desktop pueden ir a Configuración, Integraciones y MCP, seleccionar Agregar servicio personalizado y luego pegar la misma URL.

Una vez que la conexión sea exitosa, primero permita que el Agente enumere los proyectos OpenSEO y obtenga la ID del proyecto, y luego realice una investigación de palabras clave o un análisis de clasificación. En lugar de simplemente decir “haz mi SEO por mí” al principio, una solicitud más efectiva incluiría el sitio web, el mercado, el idioma, los objetivos y el alcance del resultado.

Por ejemplo:

1
2
3
列出我的 OpenSEO 项目,选择 example.com。
找出近 28 天展示量高、CTR 低且平均排名 4-15 的查询,
只返回对应页面、查询词和一个优先级理由,不要直接修改页面。

La diferencia entre MCP y Agent Skills

MCP proporciona al Agente las herramientas para consultar y escribir datos OpenSEO; Agent Skills especifica cómo combinar estas herramientas para completar un trabajo. El primero resuelve “a qué se puede acceder” y el segundo resuelve “qué proceso se debe seguir”.

Las capacidades de MCP enumeradas oficialmente incluyen:

  • Consultar volumen de búsqueda de palabras clave, dificultad, CPC e intención;
  • Obtenga resultados de búsqueda orgánica de Google en tiempo real;
  • Analizar la clasificación de palabras clave de nombres de dominio o páginas;
  • Comparar competidores SERP entre conjuntos de palabras clave;
  • Consultar vínculos de retroceso y perfiles de dominio de referencia;
  • Leer el rendimiento de Search Console y el estado del índice de URL.

Al autorizar al Agente AI, el alcance de la cuenta y del proyecto debe ser limitado. Verifique que el elemento seleccionado sea correcto con una consulta de solo lectura antes de pedirle al Agente que escriba las palabras clave guardadas o cambie los datos del elemento.

Preguntas frecuentes

La página se puede abrir, pero falla la consulta de datos de SEO.

Primero verifique si DATAFORSEO_API_KEY es la credencial Base64 completa proporcionada por DataForSEO y si la cuenta tiene saldo, y luego use el siguiente comando para confirmar que Compose haya leído la variable de entorno:

1
docker compose config

No exponga las credenciales en las capturas de pantalla de solución de problemas. Fuerce la reconstrucción del contenedor open-seo después de modificar .env.

Después del proxy inverso, indica que el host no está permitido.

Establezca ALLOWED_HOST en .env con el nombre de host público real, sin incluir la ruta, y reconstruya el contenedor. Al mismo tiempo, la autenticación debe configurarse en la capa de proxy.

MCP no puede conectarse

Confirma que la dirección es exactamente:

1
https://app.openseo.so/mcp

Cuando la autorización falla, primero elimine OpenSEO MCP del cliente, luego agréguelo nuevamente y complete el inicio de sesión. Cuando el Agente no puede encontrar un artículo, primero llama a la lista de artículos y utiliza el ID del artículo devuelto en solicitudes posteriores.

¿El autohospedaje es completamente gratuito?

El código de la aplicación se ejecuta por sí solo, pero los datos de SEO los proporciona DataForSEO, por lo que usted paga un precio. También puede haber costos adicionales para Cloudflare, servidores, nombres de dominio, copias de seguridad y redes.

¿Para quién es adecuado OpenSEO?

OpenSEO es adecuado para webmasters individuales y equipos pequeños que desean comprar datos de SEO por uso, necesitan flujos de trabajo centralizados como palabras clave y clasificaciones, o desean que AI Agent utilice directamente datos de SEO. El modo Docker es adecuado para la experiencia local y el plan Cloudflare es más adecuado para el acceso en equipo y en múltiples dispositivos.

Si necesita una gran base de datos histórica, permisos empresariales maduros, auditorías completas y una gran cantidad de informes listos para usar, primero debe comparar la cobertura de datos, la frecuencia de actualización y el costo total de OpenSEO con plataformas comerciales que utilizan proyectos reales, y no migrar simplemente en función del posicionamiento de “alternativa de código abierto”.

Resumen

OpenSEO pone investigación de palabras clave, clasificaciones, productos competitivos, enlaces, auditorías de sitios y datos de Search Console en una interfaz de código abierto y la pone a disposición de agentes como Codex y Claude a través de MCP. La experiencia personal puede comenzar con Docker, pero debes recordar que el modo local no tiene autenticación de aplicación; La implementación en equipo o en red pública debe utilizar Cloudflare Access o un límite de autenticación fuerte construido por usted mismo. Si bien el autohospedaje le permite controlar la aplicación y el proceso, los costos de las llamadas de DataForSEO permanecen separados.

Dirección del proyecto: every-app/open-seo

Documentación oficial: openseo.so/docs