>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Python

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.jsonindex.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を実行するだけです。

関連プロジェクト