html2wp / Documentación de html2wp / Plugin
Plugin para Claude Code y Codex
Cómo instalar el plugin html2wp en Claude Code o Codex y usarlo para convertir un sitio en un tema de WordPress, paso a paso, hasta la revisión de las páginas terminadas. Si conviertes con la app de escritorio, los pasos están en su propia documentación.
Cuándo necesitas una clave de licencia
Para probarlo no necesitas ninguna. El plan gratuito está abierto a todo el mundo y te da tres conversiones de hasta cinco páginas cada una, más cinco repeticiones. Las dos cifras se cuentan por dirección IP. Necesitas una licencia para trabajos de clientes, para sitios de más de cinco páginas y para tiendas WooCommerce. La compras en la página de precios, y la clave llega por correo. Cómo funciona la compra.
Instalación
El plugin está en dos repositorios de GitHub, uno para Claude Code y otro para Codex. Los dos tienen el mismo contenido y el mismo número de versión. Solo se diferencian en cómo los carga cada herramienta. Instala el que corresponde a tu herramienta, porque el otro no se cargaría.
| Herramienta | Repositorio |
|---|---|
| Claude Code | iOSDevSK/html2wp-cc-plugin |
| Codex | iOSDevSK/html2wp-codex-plugin |
Cambia a tu herramienta y ejecuta los dos comandos, uno detrás de otro:
/plugin marketplace add iOSDevSK/html2wp-cc-plugin/plugin install html2wp@html2wpEl primer comando añade desde GitHub el catálogo de plugins (el marketplace). Después, el segundo instala html2wp desde ese catálogo. Codex necesita su propio repositorio porque encuentra los plugins a través del archivo .agents/plugins/marketplace.json, y el repositorio de Claude Code no tiene ese archivo.
Actualizaciones
El comando de actualización se llama distinto en cada herramienta. En Codex es upgrade, en Claude Code es update:
/plugin marketplace update html2wpActiva las actualizaciones automáticas en Claude Code
Claude Code no activa las actualizaciones automáticas para catálogos de terceros. Sin ellas, solo recibes una versión nueva del plugin cuando la pides, y algunas versiones corrigen fallos de seguridad. Para activarlas, abre /plugin, elige html2wp en "Marketplaces" y activa "auto-update".
Para ver la versión instalada, ejecuta codex plugin list en Codex. En Claude Code, ve a /plugin → Marketplaces → html2wp.
Si la versión en Codex no cambió tras una actualización, Codex tiene guardada una copia antigua. Bórrala e instala el plugin otra vez:
rm -rf ~/.codex/plugins/cache/html2wpcodex plugin marketplace upgrade && codex plugin add html2wp@html2wpSi eso tampoco funciona, puede que Codex tenga además otra copia más antigua de una instalación manual. El comando codex plugin marketplace list muestra todos los catálogos. Si ves ahí html2wp@<other-name>, quítala con codex plugin remove html2wp@<that-name>.
La mayor parte del trabajo ocurre en el servicio html2wp, y el servicio se actualiza solo, así que tu próxima conversión ya usa la versión nueva. Solo tienes que actualizar la parte que se ejecuta en tu equipo: las comprobaciones, los scripts y el filtro de los datos que salen. Lo que cambió en cada versión está en el historial de commits de GitHub.
Requisitos
| Node.js | versión 20 o posterior |
|---|---|
| Python 3 | con los paquetes Playwright (chromium) y Pillow |
| Docker | incluido docker compose, que ejecuta el WordPress de prueba |
| Otras herramientas | php-cli, jq, curl, bash, tar |
| Sitio de destino | WordPress 6.6 o posterior |
No tienes que comprobarlo tú. Cuando inicias una conversión, el plugin revisa primero tu equipo y te dice qué falta:
Node.js ok v22.14.0 Python ok 3.12.4 Playwright MISSING mirroring, prerendering and every screenshot Docker NOT RUNNING installed, but the daemon is not up
Los paquetes que solo se instalan en tu carpeta de usuario, como Playwright o el navegador chromium, el plugin se ofrece a instalarlos por ti. Pregunta antes de cada comando. Lo que cambia todo el sistema, como Docker Desktop o un Node.js más reciente, solo lo indica, y luego espera a que lo instales tú.
Si quieres instalar los paquetes de Python a mano:
python3 -m pip install playwright pillow && python3 -m playwright install chromiumQué modelo usar
Durante una conversión la IA tiene que tomar muchas decisiones. Por ejemplo: qué página es la de inicio, por qué falló una comprobación o si un cliente notaría siquiera la diferencia entre dos capturas. Por eso la elección del modelo influye en el resultado más que cualquier otro ajuste.
| Herramienta | Modelo recomendado |
|---|---|
| Claude Code | Opus 5, con Fable 5 como asesor. |
| Codex | Luna con nivel de razonamiento xhigh. |
La opción más barata
Codex con Luna en xhigh cuesta menos, y sus resultados están por encima de la media. Si te importa el coste de una conversión, elige esta combinación.
En Claude Code, Opus 5 hace el trabajo y a Fable 5 se le consultan las decisiones importantes, que es donde una conversión suele torcerse.
Clave de licencia
En el plan gratuito no necesitas clave, así que puedes saltarte esta sección. Si tienes una licencia, guarda la clave en tu equipo antes de la primera conversión. Solo lo haces una vez, desde cualquier carpeta:
mkdir -p ~/.config/html2wpprintf '%s' 'YOUR-KEY' > ~/.config/html2wp/licencechmod 600 ~/.config/html2wp/licenceTambién puedes pasar la clave en la variable de entorno H2WP_KEY, que tiene prioridad sobre el archivo. El archivo es más seguro, porque así la clave no queda en el historial de tu terminal.
En el archivo va la clave de licencia de html2wp que recibes al comprar Pro. Una clave de Visual Edit Pro no va ahí. Esa la introduces en el plugin Visual Edit del sitio que editas, y no sirve para conversiones.
Guarda la clave antes de iniciar una conversión
Justo al empezar, el plugin calcula cuántas páginas puedes convertir. Si todavía no tiene clave, planifica la conversión con el límite gratuito de cinco páginas. Una clave añadida durante la conversión no cambia eso.
Para saber si una clave es válida, para qué puedes usarla y hasta cuándo, ejecuta npx html2wp-license YOUR-KEY. La comprobación de claves en la página de licencias explica qué significa el resultado. Qué incluye una licencia y cómo comprarla está en la página de licencias.
Convertir un proyecto
Abre una terminal en la carpeta del proyecto que quieres convertir e inicia ahí tu agente:
git clone https://github.com/YOU/YOUR-LOVABLE-PROJECTcd YOUR-LOVABLE-PROJECTcodexSi usas Claude Code, escribe claude en lugar de codex en la última línea.
Después dale al agente una sola orden:
/html2wp:html2wp convert this projectEso es todo. No ejecutas npm install ni npm run build, y no configuras nada. Los proyectos de Bolt, v0, shadcn o una exportación de Next.js se convierten igual. En Claude Code también puedes escribir solo /html2wp:html2wp, o pedirle a Codex que use html2wp. Entonces el plugin te pregunta qué convertir.
Los primeros minutos de una conversión
> convert this project
Checking this machine first…
Node.js ok v22.14.0
Playwright MISSING
Two Python packages are missing. Shall I install them? (they go in your
user directory, no root)
> yes
… installed. Building the project, then prerendering it.
7 routes found: /, /about, /pricing, /blog, /blog/launch, /contact, /faq
Decided: /blog is the listing, /blog/launch an article, the rest are pages.
Written to the manifest; carrying on.
En las últimas líneas el plugin anotó cómo clasificó las páginas: /blog es el listado de artículos, /blog/launch es un artículo y el resto son páginas normales. Revisa esta decisión en el sitio terminado al final.
Otras entradas
La orden convert this project convierte la carpeta en la que estás. Si los archivos están en otro sitio, escribe su ruta, por ejemplo convert ./dist.
| Lo que tienes | Lo que escribes |
|---|---|
| Un proyecto del que se construye el sitio: Lovable, Bolt, v0, Vite, Astro, una exportación de Next.js | convert this project |
Una carpeta de archivos .html terminados, imágenes y estilos | convert ./folder-name |
La entrada siempre tiene que estar en tu disco. El plugin no convierte la dirección de un sitio publicado. Necesita los archivos de los que está hecho el sitio, no lo que muestra el navegador.
Cómo se convierte un proyecto de Lovable
Una app de Lovable está hecha en React. Su index.html solo contiene un elemento vacío y un script, y la página cobra vida únicamente en el navegador. Por eso el plugin primero compila el proyecto, lo abre en un navegador real y guarda cada página como HTML terminado. También captura el contenido que solo aparece cuando se ejecutan los scripts, como acordeones abiertos o menús desplegables. Después crea el tema a partir de esas páginas. Los detalles están en la guía de Lovable a WordPress.
Qué decide por ti
Qué página es cuál
Hay una decisión que pesa más que ninguna en el resultado: qué página es la de inicio, cuál es el listado de artículos, cuáles son artículos y cuáles son productos. El plugin lo deduce del código de las páginas, lo anota y sigue sin preguntar. Solo se detiene cuando no puede decidir. Por ejemplo, cuando el sitio tiene más páginas de las que permite tu límite, o cuando dos páginas parecen la misma.
Si se equivoca, corregirlo sale barato. Corriges la clasificación y vuelves a lanzar la conversión. Eso es una repetición, y no cuenta para tu límite de conversiones.
Después funciona casi solo
Flash tarda una media hora y Full alrededor de una hora, según el número de páginas y la velocidad de tu equipo. Mientras tanto, el plugin construye el sitio, lo compara con el original y lo envía al servicio html2wp para convertirlo. Después instala el tema terminado en un WordPress temporal en Docker en tu equipo y lo prueba ahí.
La revisión que no puedes saltarte
Al final el plugin te muestra cada página junto al original en una sola imagen. Mira cada imagen y di lo que ves.
Por qué una persona tiene que revisar las páginas
Las comprobaciones automáticas comparan números, así que también dejan pasar errores que una persona vería al instante. En una conversión faltaba una sección entera más abajo en la página, pero la comparación mostró una diferencia de solo el 0,4 %, y la comprobación pasó. En ese punto el ZIP del tema ya está terminado. Esta revisión es la que te dice si puedes entregarlo.
Qué recibes
- El tema como archivo ZIP. Lo subes a WordPress en Apariencia → Temas → Añadir nuevo → Subir tema. Si el tema iba a salir roto, el plugin no lo genera: por ejemplo, si el PHP tuviera un error de sintaxis, faltara contenido, la captura del tema tuviera un tamaño incorrecto o no se pudiera comprar nada en la tienda.
- El informe
CONVERSION-REPORT.mden la misma carpeta que el ZIP. Recoge las páginas convertidas, los menús conectados, todo lo que encontraste en la revisión, cada aviso de la conversión y lo que aún queda por hacer. - Un enlace a Visual Edit Lite, el editor gratuito para hacer cambios con clics. El editor no forma parte del tema, y el tema funciona sin él. Visual Edit Pro es una licencia de pago aparte.
El tema es independiente. Las páginas, el blog, los formularios, los menús, el SEO y las redirecciones forman parte de su código y funcionan sin plugins. El código es PHP, CSS y JavaScript legible. Es tuyo y no está atado a nosotros. El tema no se conecta a ningún sitio. Cómo editarlo con clics se explica en la parte de Visual Edit en la documentación de la app.
Qué sale de tu equipo
Tu equipo hace el trabajo de navegador: construir las páginas, comparar capturas y ejecutar un WordPress temporal en Docker para las comprobaciones finales. El tema en sí lo crea el servicio html2wp. Por eso el plugin le envía el sitio compilado y recibe el tema de vuelta.
Las comprobaciones del tema se ejecutan de tu lado, así que el servicio no ve sus resultados. Por eso, al final, el plugin se los envía. Es obligatorio: el servicio no inicia la siguiente conversión hasta que la anterior ha enviado sus resultados.
- Qué se envía: los nombres de las comprobaciones, si pasaron, el número de páginas, el peor porcentaje de coincidencia y los nombres cortos de las páginas que fallaron, como
aboutopricing. - Qué no se envía: la dirección o el dominio del sitio, el código, los textos, las capturas, las rutas de archivos, la clave de licencia ni el nombre del sitio. El plugin solo envía campos predefinidos, nada más.
- Compruébalo tú: el comando
send-verdicts.sh <workspace> --dry-runmuestra exactamente lo que se enviaría, pero no envía nada. Es un script corto que puedes leer.
El plugin no envía ningún otro dato, y el tema terminado no envía nada en absoluto. La descripción completa, incluido cuánto tiempo guardamos los datos, está en la página de privacidad.
Informar de un error
Si el propio conversor comete un error, infórmalo con este comando:
curl -sS -X POST https://api.html2wp.dev/v1/report \
-H 'content-type: application/json' \
-d '{"subject":"what went wrong","body":"what you saw","evidence":"page keys, warnings"}'Una persona lee cada informe. La corrección va luego al servicio, así que ayuda a todos los usuarios.
Los fallos de seguridad se informan de otra forma
No con este comando, ni como issue de GitHub. Los pasos están en la página de seguridad.