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:
| argumento | o quê |
|---|---|
html | o documento HTML completo como uma string |
path | um arquivo .html local (apenas este arquivo é enviado) |
url | um 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(ouslide). Uma página dupla de leitura é a classespread. Tamanhos típicos: 816×1056px Carta, 794×1123px A4, 1920×1080px slide, comoverflow: hidden. Uma única tela de largura fixa sem marcadores converte como uma página; uma páginawidth: 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-topoumargin-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> </p>) também mantém o quadro inteiro. padding-lefté o recuo esquerdo etext-indento recuo de primeira linha, entãopadding-left: 46pt; text-indent: -46pté um recuo deslocado.- Um caractere de tabulação real (dentro de
white-space: preoupre-wrap) ganha paradas de tabulação na grade CSS: definatab-sizecomo 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, adicionedata-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 (oudata-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, adicionedata-idml-thread-continuese 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-blockdentro 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
| resultado | significado | o que fazer |
|---|---|---|
| 402 sem chave | o teste gratuito foi usado para este design ou esta hora | o resultado traz o preço e o link de checkout |
| 402 com chave | a chave não foi aceita | verifique a chave; se funcionou antes, exclua ~/.idmly/instances.json para que a próxima chamada ative novamente |
| 413 | acima do limite de tamanho (15 MB teste, 50 MB licenciado) | reduza ou reencodifique imagens, ou hospede-as e use URLs absolutas |
| 422 | nada renderizou, ou um script nunca terminou | incorpore os ativos ausentes; remova o script descontrolado |
| 429 / 503 | limite de taxa, ou o serviço de licença está inacessível | tente 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ável | padrão | finalidade |
|---|---|---|
IDMLY_LICENSE_KEY | nenhum (teste gratuito) | sua chave de licença de idmly.com |
IDMLY_OUT_DIR | ao lado da origem | diretório de saída padrão |
IDMLY_ENGINE_URL | o mecanismo hospedado | substituiçã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.