ComfyUIのテンプレートファクトリーの内部構造
ComfyUIを使ったことがある方なら、他の方が作ったワークフローを開いたとき、赤いノードだらけになって途方に暮れた経験があるのではないでしょうか。ノードが足りない、モデルが間違ったフォルダにある、スキーマのどこから手をつければいいのかわからない——こうした問題をすべてのユーザーに対して解決するために、ComfyUIチームはworkflow_templatesリポジトリを作成しました。
これは単なるJSONスキーマファイルの寄せ集めではありません。開発者たちは、 готовые сценарииとサブグラフをPythonパッケージのライブラリに変換し、テンプレートのショーケースを自動的に更新し、Hugging Faceから必要なニューラルネットワークをアプリケーションインターフェースに直接取り込むモノレポを構築しました。
リポジトリの内部構造
公式のComfy-Org/workflow_templatesリポジトリは、2つのニーズに対応しています: готовые 生成テンプレート(画像、视频、音声)と、再利用可能なノードブロックであるSubgraph Blueprintsを提供します。
プロジェクトのアーキテクチャは、メディアタイプごとの отдельныйパッケージアプローチに従っています:
templates/とpackages/media_*には、JSON形式のワークフローファイルと選択用インターフェース用のプレビューが含まれています。blueprints/とpackages/blueprintsには、ノードパレットに表示される готовые 複合ノード(サブグラフ)が格納されています。packages/coreはヘルプローダーのcomfyui-workflow-templates-coreを提供します。site/には、検索、11言語サポート、説明生成機能を備えたAstroベースのウェブサイト(templates.comfy.org)が含まれています。
プロジェクト全体はcomfyui-workflow-templatesという名前でPyPIを通じて配布されています。ComfyUIを更新すると、新しいテンプレートはここからインターフェースに取り込まれます。
適切なComfyUIテンプレートの構造
プロジェクトで最も興味深い部分は、テンプレートのアセンブリ要件です。開発者たちはエクスポートしたグラフを単にダンプするのではなく、自己完結型のバンドルに変換します。
Wan 2.1モデルベースの動画生成テンプレートを追加する例を見てみましょう。ワークフローが正式なテンプレートになるには、作者はいくつかの必須ステップを踏む必要があります。
まず、スキーマをクリーンアップします。ComfyUIは--disable-all-custom-nodesフラグで実行されます。これにより、サードパーティの拡張機能がJSONに余分なメタデータを追加することがなくなります。
次に、プレビューを準備します。テンプレート用に、画像、WebPアニメーション、または動画を作成します。ファイルサイズができるだけ小さくなるように寸法を調整します。通常、品質を65%に落とした圧縮を使用します。
次に、ノードに直接モデルバインディングを埋め込みます。ユーザーがどのVAEやCLIPモデルをダウンロードすればいいのか手動で検索する必要はありません。Hugging Faceからの直接URL、SHA256ハッシュ、ターゲットディレクトリがノードプロパティに直接追加されます(properties.models)。
以下は、ワークフローJSONファイルにVAEモデルのメタデータを埋め込む例です:
{
"id": 39,
"type": "VAELoader",
"properties": {
"Node name for S&R": "VAELoader",
"models": [
{
"name": "wan_2.1_vae.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/resolve/main/split_files/vae/wan_2.1_vae.safetensors?download=true",
"hash": "2fc39d31359a4b0a64f55876d8ff7fa8d780956ae2cb13463b0223e15148976b",
"hash_type": "SHA256",
"directory": "vae"
}
]
},
"widgets_values": ["wan_2.1_vae.safetensors"]
}
このエントリにより、ComfyUIはどのファイルが欠落しているかを認識し、チェックサムを検証し、重みを自動的にmodels/vaeフォルダにダウンロードします。

ハッシュとリンクはHugging Faceのファイルページから直接取得します。

モデル以外にも、最小ComfyUIコアバージョンや特定のカスタムノードバージョンをノードプロパティに埋め込むことができます。例えば、ノードSaveWEBMには"ver": "0.3.26"が指定されており、ユーザーのクライアントが古い場合、警告が表示されます。

すべてのテンプレートは、単一の設定ファイルindex.jsonに登録されます。

Subgraph Blueprintsとは
完全なシナリオに加えて、ComfyUIはサブグラフを使用します。十几个ノードの複雑な組み合わせが、明確な入力と出力を持つ单个ブロックにパックされます。
リポジトリでは、このようなブロックのブループリントはblueprints/フォルダに保存されています。ブループリントファイルには、インターフェースの説明と内部接続の構造が含まれています:
{
"id": "workflow-uuid",
"nodes": [{"id": -1, "type": "subgraph-uuid"}],
"definitions": {
"subgraphs": [{
"id": "subgraph-uuid",
"name": "Text to Image (Flux.1 Dev)",
"inputs": [
{"name": "text", "type": "STRING"},
{"name": "width", "type": "INT"}
],
"outputs": [
{"name": "IMAGE", "type": "IMAGE"}
],
"nodes": [],
"links": []
}]
}
}
開発者は「Create Subgraph」を通じてグラフィカルインターフェースでこのようなノードを作成し、JSONをエクスポートして、正規化スクリプトimport_blueprints.pyを実行します。その後、ブロックはすべてのユーザーの標準的なComfyUIノードパレットで利用可能になります。
ビルドとローカライゼーションの自動化
コンテンツワークフローは興味深いものです。テンプレートへの変更ごとに、マニフェストの同期と11言語への翻訳が必要です。
scripts/sync/ディレクトリのPythonスクリプトが同期を処理します:
sync_bundles.pyはテンプレートをメディアパッケージに分配し、共通のマニフェストをアセンブルします。sync_data.pyは変更された文字列を单一の翻訳ファイルi18n.jsonにプルし、index.zh.jsonやindex.ja.jsonなどのローカライズされたファイルを配布します。
site/フォルダ内のカタログサイトはAstroで構築されています。ビルド中に、テンプレートハブAPIにクエリを実行します。PUBLIC_APPROVED_ONLY環境変数は、本番環境用に承認されていないコミュニティワークフローをフィルタリングしますが、テストプレビュー環境ではそのまま残します。
デプロイメントはGitHub Actionsに結びついています。毎日00:00 UTCに、テスト環境の自動再ビルドがトリガーされます。ルートpyproject.tomlでバージョンがバンプされると、CIはどのサブパッケージが変更されたかを判断し、PyPIに新鮮なリリースを公開します。

インタラクティブプレビューオプション
カタログ内の各テンプレートに対して、静的画像だけでなく、インタラクティブな要素が定義されています。リポジトリはいくつかのカード表示オプションをサポートしています:
- 標準画像またはGIF。
- ControlNetなどの処理評価用のビフォー・アフター比較スライダー。
- 生成された動画または音声のプレイヤー。
- ズームやスムーズなフレームトランジションを備えたホバーエフェクト。
このリポジトリが役立つ人
ComfyUI用のカスタムノードを作成したり、生成タスクのパイプラインを構築したりしているなら、workflow_templatesを必ずチェックしてください。
第一に、これはComfyUI JSON形式仕様のリファレンスガイドです。リポジトリのコードから、マニフェストのフォーマット方法、モデル依存関係のリンク方法、重みハッシュの指定方法を正しく確認できます。
第二に、自分のワークフローやサブグラフでPull Requestを送信できます。スキーマが自動検証とノード互換性チェック(npm run validate:comfyui-nodes)をパスすれば、標準のComfyUI配布物に含まれます。
ローカルで構造を探索するには、リポジトリをクローンしてバンドル生成コマンドpython scripts/sync/sync_bundles.pyを実行するだけです。
関連プロジェクト