comfyui-workflow-builder について
comfyui-workflow-builderは、自然言語の依頼を実行可能なComfyUIワークフローJSONに変換するスキルです。利用可能なモデル、ノード、VRAMを確認して構成を選び検証するため、画像・動画・音声のワークフロー作成に向いています。
主な機能
- 01自然言語からのワークフロー生成
- 02インベントリに基づくモデルとノードの確認
- 03画像・動画・音声向けパイプラインの選択
- 04接続とVRAM要件の検証
- 05オンライン実行またはオフラインJSON出力
活用シーン
- 01テキストから画像を生成するワークフローの作成
- 02アイデンティティ保持やインペイントの構成
- 03WanまたはAnimateDiffによる動画生成構成
- 04導入済みモデルと利用可能なVRAMに応じた設定調整
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mckruz/ comfyui-expert --skill comfyui-workflow-builderインストール後、Claude Code で/comfyui-workflow-builderを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
eval/benchmark.yamlEVAL.mdrun-eval.shtest-cases.yamltrigger-tests.yamleval/results/.gitignore.gitkeep詳細
ComfyUI ワークフロービルダー
自然言語によるリクエストを、実行可能な ComfyUI ワークフロー JSON に変換します。生成前に必ずインベントリと照合します。
ワークフロー生成プロセス
Step 1: リクエストを理解する
ユーザーの意図を以下の項目に分けて解析します。
- 出力タイプ:画像、動画、音声
- ソース素材:テキストのみ、参照画像、既存の動画
- アイデンティティの方式:なし、ゼロショット(InstantID/PuLID)、LoRA、Kontext
- 品質レベル:ドラフト(高速な試行)または本番(最高品質)
- 特別な要件:ControlNet、インペインティング、アップスケーリング、リップシンク
Step 2: インベントリを確認する
state/inventory.json を読み込み、以下を確認します。
- 利用可能なチェックポイント → タスクに最適なものを選択
- 利用可能なアイデンティティモデル → 使用可能な方式を判断
- 利用可能な ControlNet モデル → 利用可能な場合はポーズ/深度制御を有効化
- インストール済みのカスタムノード → 必要なノードがすべて存在することを確認
- 利用可能な VRAM → それに応じて設定を最適化
Step 3: パイプラインパターンを選択する
リクエストとインベントリに基づいて、以下から選択します。
| パターン | 使用する場合 | 主なノード |
|---|---|---|
| テキストから画像 | シンプルな生成 | Checkpoint → CLIP → KSampler → VAE |
| アイデンティティを保持した画像 | キャラクターの一貫性 | + InstantID/PuLID/IP-Adapter |
| LoRA キャラクター | 学習済みキャラクター | + LoRA Loader |
| 画像から動画(Wan) | 高品質な動画 | Diffusion Model → Wan I2V → Video Combine |
| 画像から動画(AnimateDiff) | 高速な動画、モーション制御 | + AnimateDiff Loader + Motion LoRAs |
| トーキングヘッド | キャラクターが話す | Image → Video → Voice → Lip-Sync |
| アップスケール | 解像度の向上 | Image → UltimateSDUpscale → Save |
| インペインティング | 領域の編集 | Image + Mask → Inpaint Model → KSampler |
Step 4: ワークフロー JSON を生成する
ComfyUI ワークフロー形式:
{
"{node_id}": {
"class_type": "{NodeClassName}",
"inputs": {
"{param_name}": "{value}",
"{connected_param}": ["{source_node_id}", {output_index}]
}
}
}
ルール:
- ノード ID は文字列です(通常は「1」、「2」、「3」…)
- 接続された入力には配列形式を使用します:
["source_node_id", output_index] - 出力インデックスは 0 始まりの整数です
- ファイル名はインベントリに記載されたものと完全に一致させる必要があります
- シード値には、大きなランダム整数、または再現性を確保するための固定値を使用します
Step 5: 検証する
ユーザーに提示する前に、以下を確認します。
- すべての
class_typeがインベントリのノード一覧に存在する - すべてのモデルファイル名がインベントリのモデル一覧に存在する
- 必要な接続がすべて存在する(未接続の入力がない)
- VRAM の推定使用量が利用可能な VRAM を超えない
- 解像度が選択したモデルに適合している(SD1.5 は 512、SDXL/FLUX は 1024)
Step 6: 出力する
オンラインモードの場合:comfyui-api スキル経由でキューに追加
オフラインモードの場合:わかりやすい名前を付けて、JSON を projects/{project}/workflows/ に保存
ワークフローテンプレート
基本的なテキストから画像(FLUX)
{
"1": {
"class_type": "LoadCheckpoint",
"inputs": {"ckpt_name": "flux1-dev.safetensors"}
},
"2": {
"class_type": "CLIPTextEncode",
"inputs": {"text": "{positive_prompt}", "clip": ["1", 1]}
},
"3": {
"class_type": "CLIPTextEncode",
"inputs": {"text": "{negative_prompt}", "clip": ["1", 1]}
},
"4": {
"class_type": "EmptyLatentImage",
"inputs": {"width": 1024, "height": 1024, "batch_size": 1}
},
"5": {
"class_type": "KSampler",
"inputs": {
"seed": 42,
"steps": 25,
"cfg": 3.5,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1.0,
"model": ["1", 0],
"positive": ["2", 0],
"negative": ["3", 0],
"latent_image": ["4", 0]
}
},
"6": {
"class_type": "VAEDecode",
"inputs": {"samples": ["5", 0], "vae": ["1", 2]}
},
"7": {
"class_type": "SaveImage",
"inputs": {"filename_prefix": "output", "images": ["6", 0]}
}
}
アイデンティティ保持あり(InstantID + IP-Adapter)
以下を追加して基本テンプレートを拡張します。
- 参照画像の読み込みノード
- InstantID Model Loader + Apply InstantID
- IPAdapter Unified Loader + Apply IPAdapter
- FaceDetailer による後処理
ノード設定の詳細については、references/workflows.md を参照してください。
動画生成(Wan I2V)
異なるローダーチェーンを使用します。
- LoadCheckpoint ではなく Load Diffusion Model
- Wan I2V Conditioning
- EmptySD3LatentImage(フレーム数を指定)
- Video Combine (VHS)
設定の詳細については、references/workflows.md の Workflow 4 を参照してください。
VRAM の推定
| コンポーネント | おおよその VRAM |
|---|---|
| FLUX FP16 | 16GB |
| FLUX FP8 | 8GB |
| SDXL | 6GB |
| SD1.5 | 4GB |
| InstantID | +4GB |
| IP-Adapter | +2GB |
| ControlNet(各) | +1.5GB |
| Wan 14B | 20GB |
| Wan 1.3B | 5GB |
| AnimateDiff | +3GB |
| FaceDetailer | +2GB |
よくある間違いと回避方法
- 出力インデックスの誤り:CheckpointLoader の出力は
[model, clip, vae]で、インデックスは[0, 1, 2]です - InstantID に対して CFG が高すぎる:デフォルトの 7~8 ではなく、4~5 を使用します
- モデルに合わない解像度:FLUX/SDXL は 1024、SD1.5 は 512 です
- VAE がない:FLUX には明示的な VAE(
ae.safetensors)が必要です - 誤ったローダーでモデルを読み込む:Diffusion モデルには
LoadCheckpointではなくLoadDiffusionModelが必要です
参照ファイル
references/workflows.md- ノードごとの詳細なテンプレートreferences/models.md- モデルファイルとパスreferences/prompt-templates.md- モデル固有のプロンプトstate/inventory.json- 現在のインベントリキャッシュ
コメント
Markdown 対応