idml-mcp について
idmlkit と idml-mcp は、InDesign を使わずに Adobe InDesign の IDML ファイルを AI エージェントが確認・編集できるツールキットです。レイアウト内容を要約し、無関係な XML を保ったままテキストや画像リンクを限定的に変更します。
主な機能
- 01ページ、ストーリー、フレーム、画像、スタイルの要約
- 02インデックス付きテキストランの取得
- 03個別テキストランの置換
- 04ジオメトリを変えずに画像リンクを変更
- 05CLI とコアライブラリ
活用シーン
- 01デザイン済みカタログのテキスト更新
- 02スタイルを保ったテキストランの翻訳
- 03IDML ファイル内のリンク画像の置換
- 04エージェントのワークフローでレイアウト内容を確認
MCP 対応
idml-mcp は stdio 経由で、IDML の要約、ストーリーテキストの取得、テキスト置換、画像リンク変更を MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | .idml ファイルへのパス |
詳細
idmlkit
Adobe InDesign ファイル(IDML)向けの AI ネイティブなツールキット — 解析、要約、安全な書き戻しが可能です。InDesign は不要です。
AI ツールによってコードの記述や Web ページの構築方法は一変しましたが、印刷物やレイアウトを手がけるデザイナーは、ほとんど取り残されています。InDesign エコシステムには、AI 対応のオープンなインターフェースがありません。既存の InDesign MCP サーバーはいずれも、起動中の InDesign インスタンスをリモート操作します。つまり、操作のたびにライセンスとデスクトップ環境が必要で、アプリを開いておかなければなりません。
idmlkit は別の道を選びます。.idml ファイル(InDesign のオープンな XML ベースの交換形式)を直接処理するため、サーバー、CI パイプライン、Linux、デザイナーのノート PC など、Node.js が動作する環境ならどこでも実行でき、Adobe 製品をインストールする必要はありません。
JSON data in ──► idmlkit ──► perfectly laid-out IDML out ──► open in InDesign / print
設計思想:AI は XML に一切触れません
LLM は、ドキュメントを理解して何を変更するか判断するのは得意ですが、レイアウトを壊さずに 5,000 行のレイアウト XML を手作業で編集するのは苦手です。そこで、idmlkit は作業を分担します。
- 決定論的なコードがパッケージを解析し、LLM が扱いやすいコンパクトな要約(ページ、フレーム、インデックス付きテキストランとしてのストーリー、画像リンク、スタイル)を生成します。数メガバイトの XML の代わりに、数百トークンで済みます。
- 書き戻しは必要な箇所だけを対象にします。テキストランの置換や画像のリンク先変更では、対象の要素だけを文字列操作で書き換えます。それ以外のすべて(ジオメトリ、スタイル、XML の書式自体)はバイト単位で完全に保持されます(テストで検証済み)。AI がレイアウトを壊すことは物理的に不可能です。
実際の InDesign 2025 書き出しデータで検証済みです。Adobe 公式の Flex Layout サンプル(14.5 MB、20 MB のスプレッドを 1 つ含む)では、要約の実行は 0.5 秒未満で、テキスト編集によって変更される ZIP エントリは 1 つだけです。それ以外のすべてのエントリが、CRC によってバイト単位で同一であることを検証しています。
パッケージ
| パッケージ | 内容 |
|---|---|
idmlkit | コアライブラリと CLI:開く、要約する、安全にテキストや画像を書き戻す |
idml-mcp | これらの機能を Claude や MCP 対応のエージェントに提供する MCP サーバー |
クイックスタート
npm install
npm run build
node scripts/make-sample-idml.mjs # generates examples/sample.idml
CLI
$ node packages/idmlkit/dist/cli.js summary examples/sample.idml
Pages: 1 Spreads: 1
Story u123 (11 words, 2 runs): Spring Catalog 2026 Fresh arrivals for the new season…
Image link u202: file:/images/hero.jpg
Paragraph styles: $ID/NormalParagraphStyle, Headline, Body
$ node packages/idmlkit/dist/cli.js set-text examples/sample.idml u123 0 "Summer Sale 2026" -o out.idml
$ node packages/idmlkit/dist/cli.js relink out.idml u202 "file:/images/summer.jpg"
MCP サーバー(Claude Code / Claude Desktop)
{
"mcpServers": {
"idml": {
"command": "node",
"args": ["<repo>/packages/idml-mcp/dist/server.js"]
}
}
}
次のように Claude に頼んでみてください。「catalog.idml を要約して、2025 の日付をすべて 2026 に置き換えて」。Claude は次のツールを使用します。
| ツール | 用途 |
|---|---|
idml_summarize | ページ、フレーム、ストーリー、画像、スタイルの構造化された要約 |
idml_get_story | 1 つのストーリーのプレーンテキストと、スタイル付きのインデックス化されたラン |
idml_set_text | 1 つのランのテキストを置換(レイアウトはバイト単位で完全に保持) |
idml_relink_image | 画像リンクの参照先を新しいファイルに変更(ジオメトリは保持) |
ライブラリ
import { IdmlDocument, summarizeDocument, setStoryRunText } from "idmlkit";
const doc = await IdmlDocument.open("catalog.idml");
console.log(summarizeDocument(doc)); // LLM-friendly JSON
setStoryRunText(doc, "u123", 0, "New headline");
await doc.save("catalog-updated.idml");
ユースケース
- データベースパブリッシング:デザイン済みのテンプレートに商品データを流し込みます。カタログのページ、価格表、メニューを何千件でも、InDesign を一度も開かずに作成できます。
- ローカライズ:すべてのテキストランをスタイルとともに抽出して翻訳し、安全に書き戻します。
- エージェントワークフロー:Claude にレイアウトを読み取らせ、その内容を分析させ、より大きなパイプラインの一部としてテキストや画像を更新させます。
ロードマップ
- IDML パッケージの読み込み、LLM が扱いやすい要約
- テキストランの安全な置換と画像リンクの変更
- MCP サーバー(stdio)
- ページからフレームへのマッピングとジオメトリ(各フレームの位置)
- テンプレートへの入力:タグ付きテンプレートに JSON データオブジェクトを 1 回の呼び出しで適用
- ストーリーレベルの構造化差分(2 つの IDML ファイル間の変更点)
- オーバーフローのヒューリスティクス(新しいテキストがフレームに収まらない可能性が高い場合に警告)
- 実環境の IDML コーパステスト(CC 2018–2026 の書き出しデータ)
開発
npm install
npm run build # tsc project references
npm test # vitest — includes byte-for-byte preservation tests
ライセンス
MIT。Adobe とは提携しておらず、Adobe からの承認も受けていません。「Adobe」と「InDesign」は Adobe Inc. の商標であり、ここでは互換性の説明のためにのみ使用しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。