メインコンテンツへスキップ
見出し画像

ComfyUI-easygoing-nodes の紹介! ワークフロー の スクリーンショット から プロンプト の保存まで 【画像生成 AI】

    はじめに

    こんにちは、きまま / Easygoing です。

    今回は、ComfyUI のカスタムノードパックの ComfyUI-easygoing-nodes の v2.0.0 アップデート についてご紹介します。


    「easygoing」ネオンサインのバーで微笑む銀髪の女性のアニメイラスト
    今日は ComfyUI-easygoing-nodes について

    ComfyUI-easygoing-nodes ってなに?

    ComfyUI-easygoing-nodes は、2025年9月に筆者が公開した ComfyUI のカスタムノードパックです。

    ComfyUI-easygoing-nodes の初公開

    ComfyUI-easygoing-nodes には、ワークフローのスクリーンショットを保存したり、画像にプロンプトのメタデータをつけて保存するなど、筆者の普段使いの機能を収録しています。

    今回、ComfyUI の Nodes 2.0 と V3 schema に対応する 大型アップデート を行いました。

    ComfyUI の Nodes 2.0 と V3 schema について

    そこで、今回新しく追加した機能を含めて、改めて ComfyUI-easygoing-nodes の機能をご紹介したいと思います。

    1.ワークフローのスクリーンショット(Nodes 1.0 専用)

    ComfyUI-easygoing-nodes には、ComfyUI のワークフローの メタデータを埋め込んでスクリーンショット を撮影する機能を搭載しています。

    右クリック → Workflow image → Export PNG

    ComfyUIのワークフロー画面で右クリックメニューを開き、「Workflow Image」から「Export PNG (embedded workflow, Hires x4)」を選択する様子

    この機能は、もともと comfyui-custom-scripts に搭載されていた機能ですが、ComfyUI_frontend の度重なるアップデートで 表示崩れ が起きるようになってしまいました。

    そこで、今回改良版のコードを ComfyUI-easygoing-nodes に収録することで、概ね正しくスクリーンショットが撮影できるようにしました。

    「easygoing」ネオンサインのバーで微笑む紫色の髪の女性のアニメイラスト
    ワークフローを4倍解像度で保存する

    最近では、4K モニター や タブレット をはじめとした 高解像度の端末 が普及しているので、今度の実装では高解像度でもきれいに表示できるように、オリジナルの 4倍 の解像度 でスクリーンショットを保存します。

    なお、現在β版が公開されている ComfyUI の新 UI の Nodes 2.0 は、vue.js と litegraph.js を組み合わせた複雑な描画を行なっているため、今の時点では Nodes 2.0 でのワークフローの出力には対応していません。

    ComfyUI-easygoing-nodes の機能でワークフローを保存する場合は、Nodes 1.0 に切り替えて 利用するようにして下さい。

    2.モデルのロードを改善

    ComfyUI-easygoing-nodes には、モデルをロードする Load Checkpoint (with name clean) と Load Diffusion Model (with name clean) ノードを収録しています。

    これらのノードは、いずれも

    • ComfyUI/models/checkpoints

    • ComfyUI/models/diffusion_models

    の 両方のフォルダ に保存されたモデルの一覧を表示します。

    Load Checkpoint (with Name Clean) と Load Diffusion Model (with Name Clean) ノードの画面
    Load Checkpoint で diffusion model もロードできる

    また、model_name_clean 出力からモデル名の 拡張子 や 形式 を消去して出力するようになっています。

    消去する文字列(大文字を含む)

    fp32, fp16, bf16, fp8,
    svd, scaled, mxfp8, nvfp4, int8, convrot, hq,
    e4m3fn, e4m3, e5m2fn, e5m2,
    .safetensors, .pth, .pt
    末尾の "-" と "_"

    ComfyUI では、Save Image ノードの file_path に スラッシュ をつけて画像を保存すると、任意のサブフォルダに画像を保存することができます。

    model_name_clean 出力をConcatenate Textでスラッシュ結合し、Save Imageのfilename_prefixに渡してモデルごとにフォルダ分けするワークフロー例

    そこで、このようにモデル名の後にスラッシュを追加することで、モデルごとに出力画像を整理して 管理できます。

    3.CLIP の VRAM と RAM を解放する

    ComfyUI は、一度 VRAM にロードしたモデルを 可能な限り VRAM に保持 して、容量が不足したら 古いモデルを RAM に移す 処理を行います。

    「easygoing」ネオンサインのバーで銀髪の女性がこちらを振り向いて微笑むアニメイラスト
    ComfyUI はできる限りモデルをメモリに保持する

    さらに、RAM に移されたモデルのうち再利用の可能性が高いモデルは、ストレージからの再読み込みを回避するため RAM から解放されずに保持 される仕組みになっています(pinned_memory)。

    こうしたメモリの予約機構は、VRAM や RAM の容量に余裕がある場合は速くなりますが、メモリ容量が少ない環境だとメモリが枯渇するため、逆に 安定性やパフォーマンスが低下 する場合があります。

    CLIP Text Encode (with Offload) ノードのUI。offload_from_vram と offload_from_ram がtrueに設定されている

    CLIP Text Encode (with offload) ノードは、通常の Clip Text Encode ノードの代わりに、テキストエンコーダーの処理の後に VRAM と RAM から 明示的に解放 することで、他の処理に割り当てるメモリ領域を増やします。

    CLIP Text Encode (with offload) を使うと、パフォーマンスが上がる場合と下がる場合の両方のケースがあるので、どちらがご自身の環境に合うか試してみてください。

    4.画像にプロンプトをつけて保存する

    ComfyUI で画像を保存した場合、JSON 形式のメタデータで ComfyUI のワークフローが保存されますが、このメタデータは複雑で プロンプトを探すのに苦労する ケースが多いです。

    ComfyUI のワークフローのメタデータ(一部抜粋)

    {"6": {"inputs": {"mask": ["195", 0]}, "class_type": "MaskPreview", "_meta": {"title": "Preview Mask"}}, "7": {"inputs": {"width": 1152, "height": 832, "batch_size": 1}, "class_type": "EmptyLatentImage", "_meta": {"title": "Empty Latent Image"}}, "8": {"inputs": {"noise_seed": ["41", 0]}, "class_type": "RandomNoise", "_meta": {"title": "RandomNoise"}}, "9": {"inputs": {"scheduler": "beta", "steps": 15, "denoise": 1.0, "model": ["232", 0]}, "class_type": "BasicScheduler", "_meta": {"title": "BasicScheduler"}}, "10": {"inputs": {"clip_name": "CLIP-SAE-ViT-L-14-FP32.safetensors"}, "class_type": "CLIPVisionLoader", "_meta": {"title": "Load CLIP Vision"}}, "11": {"inputs": {"mask": ["163", 0]}, "class_type": "MaskPreview", "_meta": {"title": "Preview Mask"}}, "14": {"inputs": {"model_name": "4x_IllustrationJaNai_V1_ESRGAN_135k.safetensors"}, "class_type": "UpscaleModelLoader", "_meta": {"title": "Load Upscale Model"}},

    そこで、Save Image with Prompt ノードでは、

    • positive_prompt

    • additional_prompt

    • negative_prompt

    • caption

    • seed

    Save Image with Prompt ノードに positive_prompt・additional_prompt・negative_prompt・caption・seed を接続するワークフロー。seedはPreview as Textで文字列化
    Preview as Text を通して string 形式に変換する

    の5つの項目について、ComfyUI のワークフローとは 別にメタデータ をつけて保存します。

    なお ComfyUI では、通常 seed は Int(整数)形式 で扱いますが、Preview as text ノードを挟むと、Save Image with Prompt ノード で保存できる string(文字列)形式 に変換することができます。

    XnView MP のメタデータの表示

    XnView MPで画像のメタデータを表示した画面。positive_prompt・additional_prompt・caption・seed・workflowが確認できる

    digiKam のメタデータの表示

    digiKamでPNG画像のメタデータを表示した画面。Additional_prompt・Caption・Positive_prompt・Seedなどが一覧表示されている

    ComfyUI で生成したイラストを画像ビューアーで見ると、保存したメタデータが表示されていて、ここからプロンプトを簡単にコピーしたり、メタデータを使って画像を分類できるようになります。

    5.色を調整して HDR 処理を行う

    HDR effect with LAB Adjusts ノードは、LAB 色空間 で色の調整を行うノードです。

    LAB 色空間について

    LAB 色空間は、通常の RGB 色空間と違って 明るさと色を分離 して調整を行うので、調整時に意図しない変化が起こりにくくなっています。

    HDR Effects with LAB Adjusts ノード

    HDR Effects with LAB Adjusts ノードの設定画面。入力画像(スポーツカー)と調整後の出力画像、各種スライダー(hdr_intensityなど)

    比較画像

    スポーツカーの比較画像。左がオリジナル、右がHDR Effects with LAB Adjusts処理後。黒を落としてコントラストを強調
    Krea-2-Turbo  |  HDR 処理
    黒を落として重厚感を出す

    HDR Effects with LAB Adjusts ノードは、特に欧米で好まれることが多い 高コントラスト のイラストの出力に適しています。

    6.画像の違いを検出する

    Image Difference Checker ノードは、2つの似た画像を入力して次の分析を行います。

    • 差分マップの作成

    • MAE と SSIM で類似度を評価

    • トーンカーブで色を分析

    Image Difference Checker ノードの画面。2枚の似た画像を比較し、差分マップ・MAE/SSIM・トーンカーブ分析を表示

    Image Difference Checker ノードを利用した VAE の精度比較

    Image Difference Checker ノードを選択した状態で、上部の青い部分実行ボタン(再生アイコン)を指し示す矢印
    青矢印が部分実行ボタン

    Image Difference Checker の設定値を変更して再出力する場合は、ノードを選択した状態で上の青い 部分実行 ボタンをおすと、Image Difference Checker 以降の結果のみ再出力することができます。

    sdxl_clip.py の差し替え機能は削除

    ComfyUI-easygoing-nodes には、sdxl_clip.py の差し替えを行うことで SDXL の画質を向上させる仕組みを搭載していましたが、最近の ComfyUI のアップデートで有効に機能しなくなったので、今回 sdxl_clip.py の 差し替え機能は削除 しました。

    sdxl_clip.py の差し替え機能について

    ComfyUI-easygoing-nodes のインストール方法

    それでは、最後に ComfyUI-easygoing-nodes のインストール方法をご紹介します。

    Nodes Manager を利用したインストール

    ComfyUIのNodes Managerで「easygoing」を検索し、Easygoing Nodes v2.0.0をインストールする画面。ダウンロード数とバージョンが表示されている

    ComfyUI-easygoing-nodes は ComfyUI Registry に登録されているので、ComfyUI 標準の Nodes Manager を利用してインストールすることができます。

    手動インストール

    手動でインストールする場合は、ComfyUI のインストールフォルダで次のコマンドを実行します。

    cd ComfyUI/custom_nodes
    git clone https://github.com/easygoing0114/ComfyUI-easygoing-nodes.git

    v1.8.5 → v2.0.0 アップデートの注意!

    ComfyUI-easygoing-nodes は、v1.8.5 → v2.0.0 で ComfyUI の Nodes 2.0 と V3 schema に対応する 大幅なアップデート を行っています。

    ネオンの「easygoing」サインを背景に、バーで後ろを振り返る銀髪のアニメ女性のイラスト
    正常に機能しない場合は、ComfyUI 本体のアップデートも検討して!

    ComfyUI-easygoing-nodes を v2.0.0 以降にアップデートして古いワークフローを読み込んだ場合、v2.0.0 以降のノードに 自動移行 するように組んでありますが、環境によってはこの自動移行がうまく機能しない場合があります。

    そのような場合、お手数ですが古いノードを削除して改めて新しいノードを設置して下さい。

    まとめ:ComfyUI-easygoing-nodes を使ってみよう

    • ComfyUI-easygoing-nodes を v2.0.0 にアップデート

    • Nodes 2.0 と V3 schema に対応

    • 古いノードを削除して再設置が必要な場合がある

    今回は、ComfyUI-easygoing-nodes のアップデートについてご紹介しました。

    ComfyUI は、本体のアップデートのペースが速く、また頻繁に変更が行われるので、カスタムノードを機能する状態に保つのはかなり大変です。

    バーを背景に微笑む銀髪のアニメ女性。蝶ネクタイ付きのスーツ姿
    仕様変更は AI も迷わせる

    筆者は、カスタムノードの作成の多くを AI(主に claude)に任せて行なっていますが、最近は ComfyUI の 新旧の仕様が混在 して AI が混同するケース が多くなり、以前とはまた違った難しさを感じています。

    それでも、コーディングに利用する AI がそれ以上に賢くなっているのも確かなので、これからも AI の力を借りながらメンテナンスを続けていきたいと思います。

    最後までお読みいただきありがとうございます!


    English Article



     
     
    はじめまして、きまま です。ふとしたきっかけでAI画像生成に出会い、その魅力にすっかり取り憑かれました。AI画像で気づいたことを発信していきます。 画像はAIで生成したものですが、もし気に入ったものがあればご自由にお使い下さい。AI技術を否定する目的でのご利用はご遠慮下さい。

    あなたへのおすすめ