# Instalar el plugin de Claude SEO y conectar seodraft

Tres comandos dejan claude-seo en tu máquina y uno más te hace entrar a seodraft. Esta clase los corre en orden y muestra qué contesta cada uno en una máquina donde todo salió bien.

Claude SEO: hacé SEO adentro de Claude Code · Módulo 1 · 2 de 13 · 15 min

> Este curso es independiente. No tiene relación con Anthropic ni con AgriciDaniel, que escribe claude-seo, y nadie de ese lado lo revisó. Corrido con claude-seo v2.4.1 el 2026-10-03.

URL: https://seodraft.app/es/learn/claude-seo/install-claude-seo-and-seodraft
Cursos: https://seodraft.app/es/learn/claude-seo.md

## Qué vas a poder hacer

- Instalar el plugin claude-seo en Claude Code, o cargar un clon por una sola sesión.
- Armar el runtime del plugin con `/seo setup` y guardar lo que informa `/seo doctor`.
- Entrar al servidor MCP de seodraft y ver sus herramientas en tu sesión.

Instalar el plugin de Claude SEO son tres comandos y un login en el navegador, y cada uno contesta algo que podés chequear. El plugin llega desde un marketplace, arma un entorno de Python propio, baja un navegador adentro y después informa sobre sí mismo. seodraft llega como una URL que registrás una vez y un token que tu sesión de Claude Code se guarda. Esta clase los corre en ese orden, muestra qué dijo cada uno en la máquina donde los corrió el curso, y termina con una línea de base que conviene anotar. Al final las dos herramientas contestan adentro de una misma sesión de Claude Code, que es todo lo que la clase 3 necesita para apuntarle una auditoría a tu propio sitio.

## Dos caminos: el marketplace y una carpeta

El camino del marketplace es el que documenta el proyecto, y son dos comandos adentro de Claude Code:

```
/plugin marketplace add AgriciDaniel/claude-seo
/plugin install claude-seo@agricidaniel-claude-seo
```

El primero ya lo corriste en la clase 1. Un marketplace es una lista que Claude Code puede leer; la instalación es lo que escribe las skills, los sub-agentes y los scripts del plugin en Claude Code.

El segundo camino carga un clon por una sesión y deja tu lista de plugins tal cual estaba:

```
git clone --branch v2.4.1 https://github.com/AgriciDaniel/claude-seo.git
claude --plugin-dir claude-seo
```

Para un plugin como este sirve bastante, porque lo que estás instalando son 26 sub-skills de instrucciones que van a guiar a un agente con acceso a tu terminal. Clonar un tag te deja leerlas antes, en [github.com/AgriciDaniel/claude-seo](https://github.com/AgriciDaniel/claude-seo), y el proyecto tiene licencia MIT así que leerlo está permitido y bienvenido. Una vez abierta la sesión, los comandos se portan igual por cualquiera de los dos caminos.

## Qué arma `/seo setup` y cuánto tarda

`/seo setup` crea un entorno de Python aislado para el plugin y baja Playwright Chromium adentro. Tu intérprete del sistema es la base sobre la que se arma, y tus paquetes del sistema se quedan donde están. El navegador es la parte que hace grande la descarga, y es la razón de que un plugin que lee HTML necesite unos minutos de disco y de ancho de banda antes de su primera respuesta útil.

En la máquina del curso, una Linux con Python 3.14 ya instalado, el setup contestó `Claude SEO runtime is ready.` en 69 segundos. Una conexión más lenta se pasa casi todo ese rato con Chromium, así que una primera corrida de varios minutos sigue siendo una primera corrida normal.

El setup pasa una vez por máquina. El otro momento en que importa es una actualización del plugin que cambie el runtime, y `/seo doctor` es lo que te dice si ese momento llegó.

## Leé el doctor mientras todo anda bien

`/seo doctor` informa el estado del runtime, y el momento de leerlo es ahora, antes de que algo se rompa. El nuestro contestó en JSON, desde el script de doctor con `--json`: `ready: true`, `browser_ready: true`, versión 2.4.1 del plugin y Python 3.14, sin ningún reason.

Esa última parte es la parte útil. El doctor nombra lo que falta en un campo `reasons`, así que uno vacío significa que pasaron todos los chequeos. Guardate el número de versión en algún lado: una clase de este curso que deje de coincidir con tu salida es una clase escrita sobre otra versión, y lo mismo vale para una auditoría que empieza a portarse distinto después de una actualización.

Dos fallas cubren casi todo lo que se rompe acá. Un Python más viejo del que pide el plugin significa que el entorno se armó sobre el intérprete equivocado, algo que pasa cuando Claude Code abre desde una shell con un `PATH` distinto del que probaste. Un `browser_ready: false` significa que Chromium no terminó de bajar. Las dos se arreglan igual: corré `/seo setup` otra vez desde la terminal donde contesta el Python que querés.

## seodraft es una URL y un login

seodraft se conecta como servidor MCP remoto, y eso son dos movimientos y ninguna clave:

```
claude mcp add --transport http seodraft https://seodraft.app/mcp
/mcp
```

El primer comando anota la dirección en la configuración de Claude Code, y lo corriste en la clase 1. El segundo abre el login por OAuth en tu navegador; cuando lo aprobás, la sesión se queda con el token y las herramientas del servidor quedan disponibles para tu agente.

Un servidor que aparece registrado y nunca se conecta casi siempre es un login que se cerró antes de terminar. Corré `/mcp` de nuevo y seguí la pestaña del navegador hasta el final.

## Qué corrió el curso de verdad

La corrida atrás de esta clase usó el camino de la carpeta. Clonamos el tag v2.4.1, lo cargamos con `claude --plugin-dir` y llamamos a los scripts de setup y de doctor que envuelven los comandos de barra, con el directorio de datos del plugin apuntado a una carpeta propia para poder borrar todo después. Los 69 segundos, el `ready: true` y el Python 3.14 salen de esa corrida.

No corrimos `/plugin marketplace add` ni `/plugin install`, así que esta clase no cita ninguna salida de esos dos. Son el camino documentado y son a los que te mandan los pasos; lo que imprimen en tu máquina es lo único de acá que vas a ver vos antes que nosotros.

## Qué tener listo antes de la clase 3

Tres respuestas hacen que la clase siguiente sea un solo comando: los comandos `/seo` contestando adentro de Claude Code, `/seo doctor` informando `ready: true` y `browser_ready: true`, y seodraft conectado en `/mcp`. Las tres están en el checklist de abajo.

La clase 3 le apunta `/seo audit` a un sitio y lee lo que vuelve. La nuestra tardó 446 segundos, corrió 11 sub-agentes y devolvió un puntaje con una tabla atrás, y la sección más útil del informe terminó siendo aquella donde el orquestador tiró a la basura tres hallazgos de sus propios agentes.

## Pasos

### Paso 1 · Instalá el plugin (claude-seo)

Corré esto adentro de Claude Code, con el marketplace de la clase 1 ya en la lista. Escribe las skills, los sub-agentes y los scripts del plugin en Claude Code. Es la instalación que el proyecto documenta en su README, y es la que conviene salvo que quieras leer el código antes.

```
/plugin install claude-seo@agricidaniel-claude-seo
```

Qué deberías ver: Claude Code informa que instaló claude-seo y los comandos `/seo` empiezan a contestar. Todavía no hay entorno de Python, así que una auditoría acá fallaría.

### Paso 2 · Armá el runtime (claude-seo)

`/seo setup` crea un entorno de Python aislado para el plugin y baja Playwright Chromium adentro, que es como claude-seo abre una página y lee lo que renderiza un navegador. Corre una vez por máquina, y casi todo su tiempo se va en bajar el navegador.

```
/seo setup
```

Qué deberías ver: `Claude SEO runtime is ready.` Nuestra corrida tardó 69 segundos en Linux con Python 3.14 ya instalado. Llamamos al script de setup que envuelve el comando de barra, con el directorio de datos del plugin apuntado a una carpeta propia.

### Paso 3 · Guardá la línea de base mientras todo anda (claude-seo)

`/seo doctor` informa si el runtime contesta. Leelo ahora, con todo sano, así el día que un comando falle tenés una respuesta buena contra la cual comparar en vez de una suposición sobre qué cambió.

```
/seo doctor
```

Qué deberías ver: `ready: true` y `browser_ready: true`. El nuestro lo leímos como JSON, desde el script de doctor con `--json`: versión 2.4.1 del plugin sobre Python 3.14, sin ningún reason listado, que es el campo que se llena cuando falta una pieza.

### Paso 4 · Entrá a seodraft (seodraft)

Corré `/mcp` adentro de Claude Code con el servidor de la clase 1 registrado. Claude Code te abre el navegador para el login por OAuth, y después la sesión se queda con el token, así que es un movimiento de una sola vez por máquina.

```
/mcp
```

Qué deberías ver: seodraft aparece conectado, con sus herramientas disponibles para tu agente. Un servidor que queda registrado y desconectado es un login que nunca terminó en el navegador.

### Paso 5 · O cargalo por una sesión, sin instalar (claude-seo)

Esto clona una versión fija desde GitHub y arranca Claude Code con el plugin cargado solo para esa sesión. Tu lista de plugins queda como estaba, así que es la forma de leer 26 sub-skills de instrucciones antes de confiar en ellas. El curso tomó este camino para su propia corrida.

```
git clone --branch v2.4.1 https://github.com/AgriciDaniel/claude-seo.git && claude --plugin-dir claude-seo
```

Qué deberías ver: Los comandos `/seo` contestan adentro de esa sesión y desaparecen en la siguiente. El runtime igual hay que armarlo una vez, y `/seo doctor` sigue siendo lo que dice si salió bien.

## Checklist

- [ ] Los comandos `/seo` contestan adentro de Claude Code.
- [ ] `/seo setup` terminó y dijo que el runtime está listo.
- [ ] `/seo doctor` informa `ready: true` y `browser_ready: true`, y me anoté la versión.
- [ ] seodraft aparece conectado en `/mcp`.

## Checkpoint

### `/seo doctor` contesta `ready: false`. ¿Qué leés primero?

Los reasons que lista. El doctor nombra qué falta en lugar de fallar seco, y por eso nuestra corrida sana no listó ningún reason. Las dos respuestas más comunes son un Python más viejo del que pide el plugin y un Playwright Chromium que nunca terminó de bajar, y las dos se arreglan corriendo `/seo setup` otra vez en la terminal donde contesta ese Python.

### ¿Por qué un plugin que lee HTML baja un navegador?

Porque lo que renderiza un navegador y lo que manda el servidor son dos documentos distintos. claude-seo instala Playwright Chromium durante `/seo setup` y abre tus páginas ahí, que es como la auditoría de la clase 3 puede informar sobre el layout y sobre qué sobrevive con JavaScript apagado. `browser_ready: true` en `/seo doctor` es el campo que dice que ese navegador anda.

## Qué dijo esta clase

- `/plugin install claude-seo@agricidaniel-claude-seo` es la instalación documentada. `claude --plugin-dir <carpeta>` carga un clon por una sesión y deja tu lista de plugins igual, que es el camino que tomó este curso.
- `/seo setup` arma un entorno de Python aislado y baja Playwright Chromium adentro. El nuestro contestó `Claude SEO runtime is ready.` en 69 segundos.
- `/seo doctor` es la línea de base que conviene guardar: nuestra corrida informó `ready: true`, `browser_ready: true`, versión 2.4.1 del plugin y Python 3.14, sin ningún reason listado.
- seodraft son dos movimientos: `claude mcp add` anota la URL y `/mcp` te hace entrar por OAuth en tu navegador.
- Ahora las dos herramientas contestan en una sola sesión, que es lo que la clase 3 apunta a tu propio sitio.

## Preguntas

### ¿Tengo que instalar el plugin para probarlo?

Podés clonar el repositorio en github.com/AgriciDaniel/claude-seo y arrancar Claude Code con `claude --plugin-dir <carpeta>`. El plugin se carga para esa sesión y tu lista de plugins queda intacta, que es como lo corrió el curso. Fijá un tag al clonar, así la versión que leés es la versión que corrés.

### ¿`/seo setup` me toca el Python del sistema?

Se arma sobre tu intérprete e instala en un entorno propio, así que tus paquetes del sistema se quedan donde están. El plugin además guarda sus datos en un directorio propio, que en nuestra corrida apuntamos a una carpeta que después pudimos borrar. `/seo doctor` informa qué Python encontró: el nuestro dijo 3.14.

### ¿seodraft necesita una API key?

El login es OAuth desde `/mcp`, así que no hay clave para pegar ni rotar. Los datos de keywords salen de tus propias credenciales de DataForSEO cuando las conectás, y el costo de una llamada paga aparece antes de que la llamada pase.

Clase siguiente: [Correr una auditoría SEO con Claude](https://seodraft.app/es/learn/claude-seo/seo-audit-with-claude)
