Skip to main content

概要

ComfyUI が出力ファイルを保存するとき、そのファイルを生成したワークフローをファイル自体の中に保存できます。 これは、生成済み画像をレシピと一緒に保存するようなものと考えられます。画像が結果であり、埋め込まれたワークフローがその作成に使用された手順を説明します。 埋め込まれたワークフローメタデータを使用すると、以下のことが可能になります:
  • 生成済みファイルを ComfyUI で再度開き、ワークフローを復元する。
  • 生成済みファイルを、その作成に使用されたワークフローと一緒に共有する。
  • 自動化されたワークフローで生成設定を検査する。
  • 出力ファイルから ComfyUI ワークフローメタデータを読み取るツールを構築する。
メタデータはファイル形式の中に保存されます。表示される画像やビデオのコンテンツは変更されません。

埋め込みフィールド

ComfyUIは通常、2つのJSONフィールドを保存します: 簡略化した例は次のようになります:
実際の内容はワークフローとComfyUIバージョンによって異なります。カスタムノードはextra_pnginfoを通じてフィールドを追加することもできます。 この2つのフィールドは用途が異なります。workflow はフロントエンドでワークフローを復元するために使用します。prompt は実行用の形式で、ComfyUI サーバーにワークフローを送信するときに使用します。ファイルにどちらか一方のフィールドしか含まれない場合もあります。

サポートされている形式

組み込みの保存ノードは、以下の出力形式にメタデータを埋め込みます: 正確なメタデータのサポートは、保存ノードとファイルの書き込みパスによって異なります。別のアプリケーションで再エンコードされたファイルには、メタデータが含まれなくなる場合があります。 Animated WebP ファイルは、値を EXIF タグに保存します。タグには workflow:{JSON}prompt:{JSON} のような文字列が含まれます。これは、値をコンテナのメタデータタグに保存する MP4 や WebM とは異なります。

ComfyUIがメタデータを書き込む方法

組み込みの出力ノードは、ComfyUIがワークフローを実行する際に、APIプロンプトと追加のワークフロー情報を受け取ります。メタデータの保存が無効化されていない限り、保存ノードはこれらの値をJSONとしてシリアライズし、出力ファイルに書き込みます。 PNG出力の場合、値はテキストエントリとして書き込まれます。標準のフィールド名は promptworkflow です。 メタデータは別のサイドカーファイルではありません。保存処理中に出力ファイル自体へ書き込まれます。そのため、ファイルをコピーすると埋め込まれたワークフローもコピーされますが、ファイルを書き換える操作によってメタデータが削除または置換される場合があります。 ComfyUIの起動時にメタデータを無効化するには、次のコマンドを使用します:
ComfyUI Desktop では、Settings > Server-Config を開き、Disable saving prompt metadata in files. を有効にしてください。 このオプションが有効な状態で作成されたファイルは、埋め込まれたメタデータからワークフローを復元するために使用できません。

ComfyUIがメタデータを読み取る方法

ComfyUIインターフェースでワークフローを復元するには、生成済みファイルをキャンバスにドラッグします。File > Open からファイルを開くこともできます。 ファイルにworkflowpromptの両方が含まれている場合、ComfyUIは埋め込まれたworkflowを使用してキャンバスを再構築します。ファイルにワークフローが含まれていない場合、ComfyUIは対応するメディアファイルを通常の入力メディアとして扱います。 インテグレーションを構築するときは、解析する前にフィールドの存在を確認してください。--disable-metadata を使用して作成されたファイル、保存ノードにワークフロー情報が渡されなかったファイル、または別のアプリケーションで再エンコードされたファイルには、メタデータが存在しない場合があります。 埋め込まれたワークフローをブラウザで確認または編集するには、ComfyUI Embedded Workflow Editor を使用できます。このエディターはオプションです。ComfyUI でワークフローを復元したり、プログラムからメタデータを読み取ったりするために必要ではありません。

PythonでPNGメタデータを読み取る

次の例では、PNGファイルから標準フィールドを読み取ります。
Pillow は PNG のテキストチャンクを Image.info を通じて公開します。値は JSON 文字列なので、Python オブジェクトとして使用する前に json.loads を呼び出してください。

コマンドラインからPNGメタデータを読み取る

ImageMagickを使用してPNGテキストメタデータを検査できます:
出力内のworkflowpromptテキストエントリを探してください。

ビデオメタデータの読み取り

ComfyUIは、MP4およびWebM出力のコンテナメタデータにワークフローメタデータを保存します。これらのフィールドはffprobeで確認できます:
WebMファイルの場合は、.webmファイルのパスを指定して同じコマンドを使用します:
返されたタグにはJSON文字列が含まれます。JSONパーサーを使用して、workflowタグとpromptタグの値を解析します。

WebPメタデータの読み取り

ComfyUI は Animated WebP ファイルのメタデータを EXIF タグに保存します。Pillow でタグを読み取り、フィールドのプレフィックスを取り除いて JSON を解析できます。
メタデータは最初の画像フレームに保存されます。アプリケーションが WebP ファイルを書き換えると、EXIF タグが削除される場合があります。

潜在メタデータの読み取り

.latent ファイルは safetensors 形式を使用します。メタデータは safetensors Python パッケージで読み取ることができます:
Safetensors のメタデータ値は文字列です。workflowprompt の値が存在する場合は、JSON として解析してください。 どの形式でも、メタデータは任意であり、信頼できない入力として扱ってください。使用前に値が有効な JSON か検証し、ワークフローに実行に必要なすべてのモデルやカスタムノードが含まれているとは限りません。

制限事項

  • 埋め込みメタデータはデジタル署名ではありません。誰がファイルを作成または変更したかを証明するものではありません。
  • ワークフローには、依存するモデルファイル、入力アセット、カスタムノードパッケージは含まれません。
  • モデル、入力アセット、またはカスタムノードを移動または名前変更すると、復元されたワークフローが実行できなくなる可能性があります。
  • 画像エディタやビデオエディタは、ファイルを再エンコードする際にメタデータを削除する場合があります。
  • --disable-metadata を指定して作成されたファイルには、スタンダードなComfyUIワークフローメタデータは含まれません。