ComfyUI Extension: D2-PromptSelector-comfyUI

Authored by da2el-ai

Created

Updated

12 stars

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

This is a version of a/sd-d2-prompt-selector reworked for ComfyUI. It's just a prototype that I've put together for now. The random syntax of sd-d2-prompt-selector cannot be used; instead, the DynamicPrompt syntax is used

Looking for a different extension?

Custom Nodes (1)

README

D2-PromptSelector-comfyUI

English | 日本語 | 繁體中文

登録したプロンプトをボタン一発で入力するユーティリティです。


主な機能

  • プロンプト簡単入力!: 登録したプロンプトをボタンクリックで入力
  • サンプル画像表示: 画像を見ながらプロンプトを探せる
  • 編集機能: プロンプトやカテゴリの追加・編集・削除・並べ替え
  • 検索機能: 登録名・プロンプトをリアルタイムで検索
  • Autocomplete Plus 連携: 登録プロンプトを補完用 CSV として自動書き出し
  • 多言語対応: 日本語 / 英語 / 簡体中文 / 繁体中文に対応(ユーザーによる言語追加も可能)
  • 自動バックアップ: 初期状態で10バージョンまで保存


Prompt Selector 起動方法

画面左下の「PS」ボタンで開きます。

パネル操作

プロンプト

プロンプトボタンをクリックすると 最後にアクティブだったテキストエリア にプロンプトが入力されます。

【TIPS】 右クリック(または Ctrl+クリック)で入力した後、Prompt Selector のパネルを閉じます。

DynamicPrompt

カテゴリ名のボタンをクリックすると、そのカテゴリに含まれるプロンプトが DynamicPrompt 構文で入力されます。

例:<br> カテゴリ:髪色<br> 登録プロンプト:black hair blonde hair silver hair<br> 入力結果:{ black hair, | blonde hair, | silver hair, }

※ DynamicPrompt 構文を使うには comfyui-dynamicprompts などのカスタムノードが必要です。

ファイル切り替え(タブ)

プロンプトファイル=タブになっています。<br> 後述する編集モードでファイルを追加することでタブを増やすことができます。

検索

🔍 タブを選択すると検索ができます。名前・プロンプトの両方に対して部分一致で検索されます。

編集

編集モードに入ります(後述)。

再読み込み

プロンプトファイルを再読み込みし、プロンプト一覧を最新の状態に更新します。

サンプル

サンプルビューの表示・非表示を切り替えます。 非表示のときはプロンプトボタンの 📌 も表示されません。


サンプルビュー

パネル右側のサンプルビューに、プロンプトの サンプル画像 とプロンプト文字列が表示されます。画像を見ながら目的のプロンプトを探せます。

表示(ホバー)

プロンプトボタンにマウスを乗せると、その項目の画像とプロンプトがサンプルビューに表示されます。マウスを離しても直前の表示は保持されます。

サンプルビュー固定

プロンプトボタンにマウスを乗せると右端に 📌 が表示されます。📌 をクリックすると、その項目をサンプルビューに固定します。別のプロンプトの 📌 を押すと、固定対象がそちらへ切り替わります。

固定を解除するには、サンプルビュー左上の固定解除ボタン 🔓 をクリックします。

画像が登録されているプロンプト

画像が登録されているプロンプトのボタンは、左上に小さな白い丸印が付きます。

サンプル画像の登録

次のいずれかの方法で画像を登録できます。対応形式は png / jpeg / webp です(リサイズ・サイズ上限はありません)。

  • 直接ドロップ: サンプルビューの画像エリアに画像ファイルをドロップすると、表示中のプロンプトに登録されます。すでに画像がある場合は差し替わります。
  • 編集ダイアログ: サンプルビュー右上の ✏️ ボタン(編集モードでなくても使えます)でそのプロンプトの編集ダイアログを開き、ダイアログ下部の画像エリアにドロップします。プロンプトの新規追加時も、追加ダイアログの画像エリアから登録できます。

サンプル画像の削除

サムネイル右下の × ボタンで画像を削除できます。プロンプト・カテゴリ・ファイルを削除すると、紐付いたサンプル画像も一緒に削除されます。


編集モード

コントローラーバーの「編集」ボタンで編集モードに入ります。「編集完了」で戻ります。

プロンプトの追加

編集モード中、「+ 追加」ボタンをクリックすると追加ダイアログが開き、以下を入力します。

  • タブ(ファイル):既存から選択 or 新規作成
  • カテゴリ:既存から選択 or 新規作成
  • 名前(表示名)
  • プロンプト(複数行対応)
  • 画像(任意):ダイアログ下部の画像エリアにドロップして登録(png / jpeg / webp)

編集モード中は、各カテゴリの末尾と各タブの末尾にも「+ 追加」ボタンが表示されます。こちらから開くと、そのカテゴリ・タブが選択済みの状態で追加ダイアログが開くため、画面に見えている場所へすばやく追加できます。

プロンプトの編集・削除

編集モード中、プロンプトボタンをクリックすると編集ダイアログが開きます。各プロンプトの左に表示される × で削除できます。<br> 編集ダイアログ下部の画像エリアからサンプル画像の登録・差し替え・削除もできます。

カテゴリの編集・削除

編集モード中、カテゴリ名のボタンをクリックすると編集ダイアログが開き、リネームや別ファイルへの移動ができます。カテゴリ名の左の × でカテゴリごと削除できます(含まれるプロンプトも全て削除)。

ファイル削除

編集モード中、各タブの左の × ボタンでファイルを削除できます。削除時は確認ダイアログでファイル名を正確に入力する必要があります(誤操作防止)。

ファイル名の変更は後述する並び順ダイアログで行えます。

並び順ダイアログ

編集モード中、「並び順」ボタンでツリービューのダイアログが開きます。

  • ファイル → カテゴリ → プロンプトの 3 階層をツリー表示
  • ラベルをクリックすると編集ダイアログを表示
  • ⋮⋮ をドラッグして並び替え
  • x をクリックすると削除

旧バージョンユーザー向け:編集機能の制限

初めて編集モードに入ろうとしたとき、プロンプトファイルが旧形式(多階層・配列混在)だった場合は変換確認ダイアログが表示されます。変換前の状態は tags_migration/ フォルダへバックアップが作成されます。

変換前:

hair:
  color:        # カテゴリが多階層になっている
    black: black hair,
    blonde: blonde hair,
hair style:
  - ponytail    # 名前の無いリストになっている
  - twintails

変換後:

hair > color:   # フラット化される
  black: black hair,
  blonde: blonde hair,
hair style:
  ponytail: ponytail    # 名前付きリストになる
  twintails: twintails

バックアップ

書き込み系の操作(追加・編集・削除・ファイル名変更)を行う直前に tags_backup/tags_YYYYMMDD_HHMMSS/ フォルダへ tags/ 全体のスナップショットが自動保存されます。

  • 保持件数は設定 Backup Count で変更可能(デフォルト 10、最大 100、0 で無効)
  • 旧バージョンでルート直下に作成された tags_bak_* フォルダは、起動時に tags_backup/ 配下へ自動移行されます
  • 件数を超えた古いバックアップは自動削除されます
  • 並び順変更(ドラッグ&ドロップ)ではバックアップを作成しません
  • マイグレーション(旧形式 → 新形式)は専用の tags_migration/ フォルダに保存されます(ローテーション対象外)

Autocomplete Plus 連携(CSV 書き出し)

ComfyUI-Autocomplete-Plus を導入していると、登録したプロンプトを補完用の CSV 辞書として自動で書き出せます。プロンプトセレクターのパネルを開かずに、テキスト入力中の補完から呼び出せるようになります。

  • 設定 Autocomplete Plus: Export CSV を有効にすると機能します(初期状態は無効)。
  • プロンプトの追加・編集・削除を行うたびに、custom_nodes/ComfyUI-Autocomplete-Plus/data/danbooru_tags_d2ps.csv を自動で書き出します。
  • Autocomplete Plus が未導入(上記 data/ フォルダが無い)の場合は何もしません。
  • 設定を無効に戻すと、書き出した CSV を削除します。

補完で表示される名前(エイリアス)は ファイル名.カテゴリ名.登録名 の形式です。同じ登録名が別のファイル・カテゴリにあっても区別できます。書き出した CSV を Autocomplete Plus に読み込ませるには、ブラウザの再読み込みが必要です。

表示の優先順位とカテゴリ

Autocomplete PlusはCount(登録数)の多いものを優先して表示します。 設定の Autocomplete Plus: CSV Count を変更することで順位を調整できます。

設定の Autocomplete Plus: CSV Category を変更すると表示色が変わります。Autocomplete PlusのドキュメントによるとDanbooruと同じだそうです。

対象ファイル / 除外ファイル

特定のファイル(タブ)だけを書き出したり、一部を除外したりできます。

  • Autocomplete Plus: Target Files: ここに挙げたファイルのみを書き出します。無記入なら全ファイルが対象です。
  • Autocomplete Plus: Exclude Files: ここに挙げたファイルを書き出し対象から除外します。
  • 複数指定するときは半角カンマ , で区切ります(例:人, 服, 構図)。

設定については後述する「設定」もご覧ください。


D2 Prompt Selector テキスト変換ノード

これはパネルからプロンプトを呼び出すのが面倒な人のためのノードです。

入力テキスト中の特殊トークンを、登録済みプロンプトに変換して出力します。パネルでボタンを押す代わりに、ワークフロー上でプロンプトを組み立てられます。

  • --{登録名}-- を登録プロンプトに変換します
  • @@{カテゴリ名}@@ でカテゴリ内プロンプトを DynamicPrompt 構文に変換します
  • 検索は完全一致。囲み記号 -- @@ は入力で変更できます(他拡張との競合回避用)

Input

| 入力 | 型 | 説明 | | ------------------- | ------- | -------------------------------------------------------------------------------------------------- | | string | STRING | プロンプト入力<br>例:1girl, --beautiful--, best quality | | delete_unmatch | BOOLEAN | 変換できなかったトークンの扱い<br>True:トークンを削除する<br>False: トークンを原文のまま残す | | delimiter | STRING | 通常変換トークンの囲み記号<br>初期値: -- | | dynamic_delimiter | STRING | DynamicPrompt 変換トークンの囲み記号<br>初期値: @@ |

Output

| 出力 | 型 | 説明 | | -------- | ------ | ---------------- | | string | STRING | 変換後のテキスト |

プロンプト指定書式

--{登録名}-- を入力することで登録プロンプトを出力します。 同じ名前で登録したプロンプトが複数ある場合は {タブ名}/{カテゴリ名}/{登録名} とフルパスで特定も可能です。

以下のファイルが登録されている場合を例にします。

# bg.yml(タブ名: bg)
quality:
    beautiful: Beautiful lighting, highly detailed environment
place:
    stream: nature, stream, rock, wood
    classroom: classroom, window, curtain, desk, chair, chalkboard
入力 : 1girl, solo, --beautiful--, best quality
出力 : 1girl, solo, Beautiful lighting, highly detailed environment, best quality

フルパスで特定する場合は --bg/quality/beautiful-- のように書きます。

カテゴリ名を @@{カテゴリ名}@@ と記載すると、カテゴリ内のプロンプトを DynamicPrompt 構文で出力します。 こちらも同じ名前のカテゴリが複数ある場合は {タブ名}/{カテゴリ名} とフルパスで特定が可能です。

入力 : @@place@@
出力 : { nature, stream, rock, wood, | classroom, window, curtain, desk, chair, chalkboard, }

フルパスで特定する場合は @@bg/place@@ のように書きます。

表記方法一覧

| 書式 | 変換内容 | | ----------------------------- | ----------------------------------------------------------------------------------------------------------- | | --登録名-- | 全タブを順に検索し、最初に一致した登録名のプロンプトに変換<br>例:--stream-- | | --タブ or カテゴリ/登録名-- | 指定タブ内を検索。見つからなければカテゴリ名とみなして全タブを検索<br>--bg/stream-- --place/stream-- | | --タブ/カテゴリ/登録名-- | タブ・カテゴリ・登録名をフルパス指定<br>例:--bg/place/stream-- | | @@カテゴリ@@ | 全タブを順に検索し、最初に一致したカテゴリを DynamicPrompt 構文で出力<br>例:@@place@@ | | @@タブ/カテゴリ@@ | タブ・カテゴリをフルパス指定<br>例:@@bg/place@@ |

  • 検索はタブの並び順(__config__.ymlsort)に従い、最初に一致したもので変換します
  • 一致は完全一致です(beautifulbeautiful2 に一致しません)
  • スペースを含むトークン(例 -- bg / quality / beautiful --)は変換されません

プロンプトファイルを直接編集する

プロンプトファイル(YAML形式)を直接編集することもできます。<br> ファイルは {ComfyUIインストールフォルダ}/custom_nodes/D2-PromptSelector-comfyUI/tags/ に保存されています。

対象:
    1girl: 1girl
    1boy: 1boy

年齢:
    ティーン: teen
    ローティーン: early teen
  • 各カテゴリは 名前: プロンプト の辞書形式
  • 名前には英数字以外も使用可能
  • 2階層以上のネスト・配列形式は非対応(旧形式のファイルは初回編集時に変換ダイアログが表示される)

画像を登録したプロンプトは、値が 名前: { prompt: …, image: ファイル名 } の形式になります。画像ファイルは prompt_images/ に保存されます。

髪色:
    黒髪:
        prompt: black hair
        image: black_hair.webp   # 画像付きプロンプト
    金髪: blonde hair             # 画像なしは従来どおり文字列

ファイルの追加

新しい YAML ファイルを tags/ に追加した後、__config__.ymlsort に追記します。<br> 順番は任意に変更できます。

# __config__.yml
sort:
    - 人
    - 人_顔
    - 人_髪
    - ポーズ

編集後は 🔄 ボタンまたは ComfyUI のリロードで反映されます。


設定

ComfyUI の Settings から以下が設定できます。

| 設定項目 | 内容 | | -------------------------------- | -------------------------------------------------- | | ShowButton Location | 「PS」ボタンの画面端基準位置 | | ShowButton Horizontal Margin(px) | 画面端からの X 方向マージン | | ShowButton Vertical Margin(px) | 画面端からの Y 方向マージン | | Backup Count | バックアップ保持件数(0〜100、0 で無効) | | Autocomplete Plus: Export CSV | Autocomplete Plus 用 CSV の書き出しを有効化 | | Autocomplete Plus: CSV Count | 数値が大きいほど優先順が上がる(初期値:10000) | | Autocomplete Plus: CSV Category | 表示色が変わる(初期値:5) | | Autocomplete Plus: Target Files | 書き出し対象ファイル(カンマ区切り、無記入で全件) | | Autocomplete Plus: Exclude Files | 書き出しから除外するファイル(カンマ区切り) |


多言語対応

対応言語、ユーザーによる言語追加については docs/i18n.md をご覧ください。


バージョン履歴

v4.2.0

  • Autocomplete Plus 用 CSV の書き出し設定を追加

v4.1.0

  • Autocomplete Plus 用 CSV の自動書き出し機能を追加

v4.0.0

  • サンプル画像表示機能を追加

v3.0.0

  • テキスト変換ノードを追加

v2.0.0

  • プロンプトの編集機能を追加

ライセンス

MIT

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Learn more