idmly

Convierte un diseño HTML autocontenido en un archivo editable de Adobe InDesign (.idml): marcos de texto en vivo, estilos de párrafo, imágenes vinculadas. Las primeras 2 páginas son gratis; licencia de por vida de $49 para documentos completos.

Servidor MCP alojado

npx add-mcp 'https://idmly-production.up.railway.app/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

idmly-mcp

Convierte un diseño HTML autocontenido en un archivo editable de Adobe InDesign (.idml) desde el agente de IA que ya utilizas. Este es el motor idmly expuesto como servidor del Model Context Protocol, para que Claude Code, Cursor, Codex, Windsurf o Claude Desktop puedan entregar un diseño terminado directamente a InDesign.

Las dos primeras páginas de cualquier diseño se convierten gratis, sin necesidad de clave. Una licencia de por vida de $49 desbloquea conversiones ilimitadas de documentos completos y cubre tanto el sitio web como esta herramienta.

Instalación

Node 20 o superior. El servidor se ejecuta con npx, no hay nada que clonar. Inicia sin clave y la prueba gratuita funciona de inmediato.

Claude Code

claude mcp add idmly -- npx -y idmly-mcp

Cursor, Windsurf, Claude Desktop (mcp.json / claude_desktop_config.json)

{
  "mcpServers": {
    "idmly": { "command": "npx", "args": ["-y", "idmly-mcp"] }
  }
}

Codex CLI (~/.codex/config.toml)

[mcp_servers.idmly]
command = "npx"
args = ["-y", "idmly-mcp"]

Con una licencia, agrega la clave de tu correo de compra como variable de entorno:

claude mcp add idmly -e IDMLY_LICENSE_KEY=<your key> -- npx -y idmly-mcp
"env": { "IDMLY_LICENSE_KEY": "<your key>" }
env = { IDMLY_LICENSE_KEY = "<your key>" }

Herramientas

convert_to_indesign

Proporciónale exactamente uno de los siguientes:

argumentoqué es
htmlel documento HTML completo como cadena
pathun archivo .html local (solo se sube este archivo)
urlun enlace https público a un .html alojado

Opcional: out_dir (dónde escribir; por defecto, la carpeta del archivo fuente o el directorio actual), name (nombre base de salida), platform (mac o win, que InDesign abrirá el archivo; elige fuentes de respaldo por glifo, por defecto esta máquina).

Escribe <name>.idml y devuelve la ruta, las páginas convertidas, las fuentes que InDesign necesita activas y una verificación de geometría. Un diseño con imágenes regresa como una carpeta que contiene el .idml y un directorio Links/; mantenlos juntos e InDesign encontrará cada imagen. La salida de prueba se llama <name>-trial.idml.

idmly_status

Informa si el motor es accesible y si hay una clave de licencia configurada (solo presencia; la clave se valida en la primera conversión).

Escribir HTML que se convierta bien

  • Cada página es un bloque de tamaño fijo con la clase page (o slide). Un pliego de dos páginas para lectura es la clase spread. Tamaños típicos: 816×1056px Carta, 794×1123px A4, 1920×1080px diapositiva, con overflow: hidden. Un lienzo de ancho fijo sin marcadores se convierte como una página; una página fluida width: 100% no tiene tamaño intrínseco.
  • Mantén el archivo autocontenido: CSS y JS en línea, fuentes de Google Fonts o incrustadas, imágenes como data URIs o URLs absolutas. Una hoja de estilo o imagen junto al archivo no se sube.
  • Dibuja gráficos como SVG en línea o HTML en lugar de imágenes rasterizadas, para que sigan siendo editables.
  • Evita scripts que nunca se estabilicen (un MutationObserver o un controlador de redimensionamiento que se re-dispara). El motor renderiza la página una vez, la mide y la reconstruye como marcos de InDesign.

El texto se convierte en marcos de texto editables con estilos de párrafo, las tablas siguen siendo tablas, y el SVG y las formas CSS se convierten en objetos vectoriales.

Texto que un diseñador puede seguir editando

Cómo está marcado el texto decide en cuántos marcos aterriza y qué llevan los estilos de párrafo.

  • Los párrafos consecutivos dentro de una caja se convierten en un marco de texto, un párrafo cada uno. Sepáralos con margin-top o margin-bottom; llega como Espacio Antes o Espacio Después en el párrafo que lleva el margen. Un párrafo espaciador vacío (<p>&nbsp;</p>) también mantiene el marco completo.
  • padding-left es la sangría izquierda y text-indent la sangría de primera línea, así que padding-left: 46pt; text-indent: -46pt es una sangría francesa.
  • Un carácter de tabulación real (dentro de white-space: pre o pre-wrap) obtiene paradas de tabulación en la cuadrícula CSS: establece tab-size como longitud (tab-size: 46pt) para colocar la parada donde quieras.
  • Una lista de dos columnas (contenidos, precios, créditos) se convierte mejor como <table>: se convierte en una tabla nativa de InDesign con un estilo de párrafo por celda.
  • Los estilos de párrafo se nombran a partir de la etiqueta y la primera clase del elemento (<p class="caption"> da "Body · caption"). Para nombrarlo directamente, agrega data-idml-style="Cover Dates".
  • Las cajas que contienen un texto continuo se pueden enlazar: dales el mismo data-idml-thread="cv" y se convierten como una historia enhebrada, marco a marco, en orden de documento (o data-idml-thread-order="1", "2", ...). Cada marco excepto el último se fija al tamaño de su texto, así que una línea añadida empuja el texto al siguiente marco. Si una caja comienza a mitad de párrafo, agrega data-idml-thread-continues y su primer párrafo se une al último de la caja anterior. InDesign recomponer una historia enhebrada, así que una línea puede cruzar un límite de marco en comparación con el HTML.
  • Un elemento display: inline-block en línea dentro de un párrafo es una caja propia y se convierte en su propio marco. Usa un <span> simple para un tramo que solo cambia fuente o color.

Cuando falla

resultadosignificadoqué hacer
402 sin clavela prueba gratuita se agotó para este diseño o esta horael resultado incluye el precio y el enlace de pago
402 con clavela clave no fue aceptadaverifica la clave; si funcionó antes, elimina ~/.idmly/instances.json para que la próxima llamada se active de nuevo
413supera el límite de tamaño (15 MB prueba, 50 MB con licencia)reduce la escala o recodifica las imágenes, o alójalas y usa URLs absolutas
422nada se renderizó, o un script nunca terminóincluye los recursos faltantes; elimina el script descontrolado
429 / 503límite de velocidad, o el servicio de licencias no está disponiblereintenta después de retry_after_seconds

Los diseños grandes pueden tardar un par de minutos en renderizarse. Algunos clientes cortan las llamadas de herramientas a los 60 segundos por defecto; aumenta el tiempo de espera por herramienta de tu cliente (por ejemplo, MCP_TOOL_TIMEOUT en Claude Code) para documentos grandes.

Entorno

variablepredeterminadopropósito
IDMLY_LICENSE_KEYninguno (prueba gratuita)tu clave de licencia de idmly.com
IDMLY_OUT_DIRjunto a la fuentedirectorio de salida predeterminado
IDMLY_ENGINE_URLel motor alojadoanulación para un motor autoalojado

La clave se activa en el primer uso. El id de activación se guarda en ~/.idmly/instances.json bajo un hash de la clave; la clave en sí nunca se escribe en disco por esta herramienta. Cada máquina que ejecuta el servidor usa una activación de la asignación de la licencia.

Endpoint alojado

Si prefieres no ejecutar un proceso local, el motor también habla MCP sobre Streamable HTTP:

https://idmly-production.up.railway.app/mcp
Authorization: Bearer <your key>      (omit the header for the free trial)

Como una herramienta remota no puede escribir en tu disco, ese endpoint devuelve un enlace de descarga de un solo uso en lugar de una ruta de archivo: el archivo se elimina tan pronto como se descarga, o después de diez minutos sin descargar. El mismo endpoint funciona con la herramienta mcp de la API de OpenAI Responses y el Agents SDK.

REST simple es POST /convert con un file multipart (o url), más license_key y instance_id. La primera respuesta con licencia lleva un encabezado X-Idmly-Instance; envía ese valor de vuelta como instance_id en cada llamada posterior, o cada llamada activa un nuevo dispositivo contra la licencia. La respuesta es el .idml en sí, o application/zip (que contiene converted.idml y Links/) cuando el diseño tiene imágenes.

Privacidad

Los diseños subidos se eliminan del motor tan pronto como se devuelve el archivo convertido. En el endpoint MCP alojado, el archivo convertido espera detrás de un enlace de un solo uso e imposible de adivinar durante hasta diez minutos para que el agente pueda descargarlo, y luego se elimina. Sin cuentas. El motor mantiene un registro de uso de primera parte (conteos, resultado, país), nunca tu archivo ni tu clave.

Desarrollo

npm install
npm test          # type-checks, bundles, then runs the client against a stub engine (no network)

El paquete publicado no tiene dependencias de ejecución: npm run build agrupa el MCP SDK y zod en dist/index.js, así que los usuarios de npx obtienen exactamente el archivo contra el que se ejecutaron las pruebas. Las actualizaciones de dependencias llegan como una solicitud de extracción semanal de Dependabot; fusionarla publica una nueva versión de parche desde GitHub Actions con procedencia.

Licencia

MIT para este cliente. El motor idmly es un servicio alojado, consulta idmly.com/legal.