idmly

Converte um design HTML autossuficiente em um arquivo Adobe InDesign (.idml) editável: quadros de texto ativos, estilos de parágrafo, imagens vinculadas. As primeiras 2 páginas são gratuitas; licença vitalícia de $49 para documentos completos.

Servidor MCP hospedado

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

Instala no Claude Code, Codex, Cursor e outros

Documentação

idmly-mcp

Converta um design HTML autocontido em um arquivo Adobe InDesign editável (.idml) a partir do agente de IA que você já usa. Este é o mecanismo idmly exposto como um servidor Model Context Protocol, para que Claude Code, Cursor, Codex, Windsurf ou Claude Desktop possam entregar um design finalizado diretamente ao InDesign.

As duas primeiras páginas de qualquer design são convertidas gratuitamente, sem necessidade de chave. Uma licença vitalícia de $49 desbloqueia conversões ilimitadas de documentos completos e cobre tanto o site quanto esta ferramenta.

Instalação

Node 20 ou mais recente. O servidor roda com npx, nada para clonar. Inicie sem chave e o teste gratuito simplesmente funciona.

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"]

Com uma licença, adicione a chave do seu e-mail de compra como uma variável de ambiente:

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>" }

Ferramentas

convert_to_indesign

Forneça exatamente um dos seguintes:

argumentoo quê
htmlo documento HTML completo como uma string
pathum arquivo .html local (apenas este arquivo é enviado)
urlum link https público para um .html hospedado

Opcional: out_dir (onde gravar; o padrão é a pasta do arquivo de origem, ou o diretório atual), name (nome base da saída), platform (mac ou win, que o InDesign abrirá o arquivo; escolhe fontes de fallback de glifos, o padrão é esta máquina).

Ele grava <name>.idml e retorna o caminho, as páginas convertidas, as fontes que o InDesign precisa ativas e uma verificação de geometria. Um design com imagens retorna como uma pasta contendo o .idml e um diretório Links/; mantenha-os juntos e o InDesign encontrará todas as imagens. A saída do teste é nomeada <name>-trial.idml.

idmly_status

Informa se o mecanismo está acessível e se uma chave de licença está configurada (apenas presença; a chave é validada na primeira conversão).

Escrevendo HTML que converte bem

  • Cada página é um bloco de tamanho fixo com a classe page (ou slide). Uma página dupla de leitura é a classe spread. Tamanhos típicos: 816×1056px Carta, 794×1123px A4, 1920×1080px slide, com overflow: hidden. Uma única tela de largura fixa sem marcadores converte como uma página; uma página width: 100% fluida não tem tamanho intrínseco.
  • Mantenha o arquivo autocontido: CSS e JS inline, fontes do Google Fonts ou incorporadas, imagens como data URIs ou URLs absolutas. Uma folha de estilo ou imagem ao lado do arquivo não é enviada.
  • Desenhe gráficos como SVG inline ou HTML em vez de imagens rasterizadas, para que permaneçam editáveis.
  • Evite scripts que nunca se estabilizam (um MutationObserver ou manipulador de redimensionamento que se reativa). O mecanismo renderiza a página uma vez, mede e a reconstrói como quadros do InDesign.

O texto se torna quadros de texto editáveis com estilos de parágrafo, tabelas permanecem tabelas, SVG e formas CSS se tornam objetos vetoriais.

Texto que um designer pode continuar editando

Como o texto é marcado decide em quantos quadros ele cai e o que os estilos de parágrafo carregam.

  • Parágrafos consecutivos dentro de uma caixa se tornam um quadro de texto, um parágrafo cada. Espaçe-os com margin-top ou margin-bottom; isso chega como Espaço Antes ou Espaço Depois no parágrafo que carrega a margem. Um parágrafo espaçador vazio (<p>&nbsp;</p>) também mantém o quadro inteiro.
  • padding-left é o recuo esquerdo e text-indent o recuo de primeira linha, então padding-left: 46pt; text-indent: -46pt é um recuo deslocado.
  • Um caractere de tabulação real (dentro de white-space: pre ou pre-wrap) ganha paradas de tabulação na grade CSS: defina tab-size como um comprimento (tab-size: 46pt) para colocar a parada onde você quiser.
  • Uma lista de duas colunas (conteúdos, preços, créditos) converte melhor como uma <table>: ela se torna uma tabela nativa do InDesign com um estilo de parágrafo por célula.
  • Os estilos de parágrafo são nomeados a partir da tag e da primeira classe do elemento (<p class="caption"> dá "Body · caption"). Para nomear diretamente, adicione data-idml-style="Cover Dates".
  • Caixas que contêm um texto contínuo podem ser vinculadas: dê a cada uma o mesmo data-idml-thread="cv" e elas convertem como uma história encadeada, quadro a quadro, em ordem de documento (ou data-idml-thread-order="1", "2", ...). Todo quadro, exceto o último, é fixado no tamanho do seu texto, então uma linha adicionada empurra o texto para o próximo quadro. Se uma caixa começa no meio de um parágrafo, adicione data-idml-thread-continues e seu primeiro parágrafo é unido ao último da caixa anterior. O InDesign recomposiciona uma história encadeada, então uma linha pode cruzar um limite de quadro em comparação com o HTML.
  • Um elemento inline display: inline-block dentro de um parágrafo é uma caixa própria e se torna seu próprio quadro. Use um <span> simples para uma execução que apenas muda fonte ou cor.

Quando falha

resultadosignificadoo que fazer
402 sem chaveo teste gratuito foi usado para este design ou esta horao resultado traz o preço e o link de checkout
402 com chavea chave não foi aceitaverifique a chave; se funcionou antes, exclua ~/.idmly/instances.json para que a próxima chamada ative novamente
413acima do limite de tamanho (15 MB teste, 50 MB licenciado)reduza ou reencodifique imagens, ou hospede-as e use URLs absolutas
422nada renderizou, ou um script nunca terminouincorpore os ativos ausentes; remova o script descontrolado
429 / 503limite de taxa, ou o serviço de licença está inacessíveltente novamente após retry_after_seconds

Designs grandes podem levar alguns minutos para renderizar. Alguns clientes cortam chamadas de ferramenta em 60 segundos por padrão; aumente o tempo limite por ferramenta do seu cliente (por exemplo, MCP_TOOL_TIMEOUT no Claude Code) para documentos grandes.

Ambiente

variávelpadrãofinalidade
IDMLY_LICENSE_KEYnenhum (teste gratuito)sua chave de licença de idmly.com
IDMLY_OUT_DIRao lado da origemdiretório de saída padrão
IDMLY_ENGINE_URLo mecanismo hospedadosubstituição para um mecanismo auto-hospedado

A chave é ativada no primeiro uso. O id de ativação é mantido em ~/.idmly/instances.json sob um hash da chave; a chave em si nunca é gravada em disco por esta ferramenta. Cada máquina que executa o servidor usa uma ativação da cota da licença.

Endpoint hospedado

Se você preferir não executar um processo local, o mecanismo também fala MCP sobre Streamable HTTP:

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

Como uma ferramenta remota não pode gravar no seu disco, esse endpoint retorna um link de download de uso único em vez de um caminho de arquivo: o arquivo é excluído assim que é buscado, ou após dez minutos sem ser buscado. O mesmo endpoint funciona com a ferramenta mcp da OpenAI Responses API e com o Agents SDK.

REST simples é POST /convert com um file multipart (ou url), além de license_key e instance_id. A primeira resposta licenciada carrega um cabeçalho X-Idmly-Instance; envie esse valor de volta como instance_id em cada chamada posterior, ou cada chamada ativa um novo dispositivo contra a licença. A resposta é o próprio .idml, ou application/zip (contendo converted.idml e Links/) quando o design tem imagens.

Privacidade

Designs enviados são excluídos do mecanismo assim que o arquivo convertido é retornado. No endpoint MCP hospedado, o arquivo convertido aguarda atrás de um link de uso único e impossível de adivinhar por até dez minutos para que o agente possa buscá-lo, depois é excluído. Sem contas. O mecanismo mantém um registro de uso de primeira parte (contagens, resultado, país), nunca seu arquivo ou sua chave.

Desenvolvimento

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

O pacote publicado não tem dependências de tempo de execução: npm run build agrupa o MCP SDK e zod em dist/index.js, então os usuários de npx obtêm exatamente o arquivo contra o qual os testes rodaram. Atualizações de dependências chegam como um pull request semanal do Dependabot; mesclá-lo publica uma nova versão de patch do GitHub Actions com proveniência.

Licença

MIT para este cliente. O mecanismo idmly é um serviço hospedado, veja idmly.com/legal.