専用ノード方式へ変更: 既存ノードに影響させず専用ノードのみでタグ編集
当初の全テキスト欄への自動適用をやめ、新規ノード PromptTagEditor(Prompt Tag Editor 🏷️) の text 欄にのみチップUIを適用する方式へ変更。CLIP Text Encode / Note など既存ノードには 一切影響しない。 - __init__.py: PromptTagEditorNode(text STRING入力→STRING出力, category utils/prompt)を追加 - input_watcher.js: 対象を node type 'PromptTagEditor' に限定 - README: 専用ノードの使い方に更新 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
3db4c76c90
commit
c2b879c7fe
@@ -1,20 +1,26 @@
|
||||
# ComfyUI-PromptTagEditor
|
||||
|
||||
既存ノードのプロンプト入力欄(multiline STRING)を、**タグ(チップ)単位で編集**できるように強化する ComfyUI フロントエンド拡張です。SD-WebUI の `sd-webui-prompt-all-in-one` のタグ編集体験を、**追加ノードを増やさずに** ComfyUI 上で再現します。
|
||||
プロンプトを**タグ(チップ)単位で編集**できる ComfyUI 専用ノード **`Prompt Tag Editor 🏷️`** を追加します。SD-WebUI の `sd-webui-prompt-all-in-one` のタグ編集体験を ComfyUI 上で再現します。
|
||||
|
||||
チップUIは**このノードの text 欄にのみ**表示され、`CLIP Text Encode` や `Note` など**既存のノードには一切影響しません**。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ノード追加メニュー `utils/prompt` → **`Prompt Tag Editor 🏷️`** を配置。
|
||||
2. text 欄にプロンプトを入力すると、その下の「Tags」エリアにタグがチップ表示されます。
|
||||
3. `text`(STRING)出力を、`CLIP Text Encode` の text 入力(右クリック → Convert text to input)や、任意のテキスト入力へ接続します。
|
||||
|
||||
## 特徴
|
||||
|
||||
- **タグ編集エリアを分離表示**: 既存の `<textarea>`(生プロンプト)はそのまま残し、その下にチップ(タグ)エリアを追加します。両者は双方向に同期します。
|
||||
- **タグ編集エリアを分離表示**: 上=生プロンプトの `<textarea>`、下=チップ(タグ)エリア。双方向に同期します。
|
||||
- **タグ単位の操作**:
|
||||
- 各タグをダブルクリックで**個別編集**
|
||||
- `+` / `−` で**重み調整**(`(word:1.2)` 構文、0.05刻み、1.0付近で括弧自動除去)
|
||||
- **ドラッグ&ドロップで並べ替え**
|
||||
- `×` で**削除**
|
||||
- **既存ワークフローと非破壊**: 値はネイティブのテキストウィジェットが保持するため、ワークフロー保存・実行時プロンプトに確実に反映されます。LoRA `<lora:...>`・`BREAK`・エスケープ・括弧内カンマも壊しません。
|
||||
- **非破壊**: 値はネイティブのテキストウィジェットが保持するため、ワークフロー保存・実行時プロンプトに確実に反映されます。LoRA `<lora:...>`・`BREAK`・エスケープ・括弧内カンマも壊しません。
|
||||
|
||||
## 対象ノード
|
||||
|
||||
`CLIP Text Encode` 系をはじめ、**multiline STRING 入力欄(`customtext`)を持つ全ノード**に自動適用されます。設定 → `Prompt Tag Editor: タグ編集エリアを表示` でON/OFFできます。
|
||||
設定 → `Prompt Tag Editor: タグ編集エリアを表示` でチップエリアのON/OFFができます。
|
||||
|
||||
## インストール
|
||||
|
||||
|
||||
+34
-4
@@ -1,11 +1,41 @@
|
||||
"""ComfyUI-PromptTagEditor / 4thCafe
|
||||
|
||||
既存ノードの multiline STRING 入力欄を、フロントエンド拡張でタグ(チップ)単位編集できるように強化する。
|
||||
Pythonノードは追加しない(WEB_DIRECTORY の JS 拡張のみ)。
|
||||
タグ(チップ)単位でプロンプトを編集できる専用ノードを提供する。
|
||||
チップUIはこの拡張が追加する `PromptTagEditor` ノードの text 欄にのみ適用され、
|
||||
既存の他ノード(CLIP Text Encode / Note など)には一切影響しない。
|
||||
"""
|
||||
|
||||
NODE_CLASS_MAPPINGS = {}
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {}
|
||||
|
||||
class PromptTagEditorNode:
|
||||
"""タグ編集用の汎用プロンプトノード。text をそのまま STRING で出力する。
|
||||
|
||||
フロントエンド拡張(js/)が、このノードの text ウィジェット直下に
|
||||
タグ(チップ)編集エリアを表示する。
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"text": ("STRING", {"multiline": True, "default": ""}),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("STRING",)
|
||||
RETURN_NAMES = ("text",)
|
||||
FUNCTION = "run"
|
||||
CATEGORY = "utils/prompt"
|
||||
|
||||
def run(self, text):
|
||||
return (text,)
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"PromptTagEditor": PromptTagEditorNode,
|
||||
}
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"PromptTagEditor": "Prompt Tag Editor 🏷️",
|
||||
}
|
||||
WEB_DIRECTORY = "./js"
|
||||
|
||||
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"]
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
|
||||
import { TagEditor } from "./tag_editor.js";
|
||||
|
||||
// このノード型のtextウィジェットにのみチップUIを適用(既存ノードには一切触れない)
|
||||
const TARGET_NODE_TYPE = "PromptTagEditor";
|
||||
|
||||
export class Watcher {
|
||||
constructor(app, getEnabled) {
|
||||
this.app = app;
|
||||
@@ -27,6 +30,8 @@ export class Watcher {
|
||||
attachToNode(node) {
|
||||
if (!this.getEnabled()) return;
|
||||
if (!node || !node.widgets) return;
|
||||
// 専用ノードのみを対象(既存ノードは対象外)
|
||||
if ((node.comfyClass || node.type) !== TARGET_NODE_TYPE) return;
|
||||
for (const w of node.widgets) {
|
||||
if (w.type !== "customtext") continue; // multiline STRING のみ
|
||||
if (w.__pteAttached) continue;
|
||||
|
||||
Reference in New Issue
Block a user