Add a 2026.11.04 notice to README explaining that many node inputs and outputs were renamed or reordered and need reconnecting, and update the ja/en/zh node docs and changelog for LIST/ARRAY, x / y_items, the new D2 List Converter and the deprecated list nodes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21 KiB
21 KiB
- Top
- Node / Image Node / Text Node / XYPlot Node / Float Palet
- Workflow
Node
🍅 Text Node
D2 Regex Replace
- 可使用正規表達式進行替換
- 可指定多個條件
- 可重複使用正規表達式的匹配字串(如\1、\2等)
- 可按「標籤單位」和「整體」指定目標字串
Input
text- 搜索目標字串
modeTag: 將text用換行和「,」分解,個別替換Advanced: 整體替換text
regex_and_output- 搜索字串和輸出字串列表
- 按以下格式填寫
- 輸出字串為空時則刪除匹配部分
- 數量沒有上限
搜索字串 1
--
輸出字串 1
--
搜索字串 2
--
輸出字串 2
Output
text- 替換處理後的文字
Sample
刪除 Pony 系列品質標籤的範例。
Mode: Tag
Input text
score_9, score_8_up, (score_7_up, score_6_up:0.8) , rating_explicit, source_anime, BREAK
1girl, swimsuit
Regex Replace
.*(score_|rating_|source_).*
--
--
BREAK
--
Output text
1girl, swimsuit
D2 Regex Switcher
- 用正規表達式搜索輸入文字,輸出匹配的文字
- 主要目的是切換每個 Checkpoint 的品質標籤
- 在輸入的
text中發現匹配字串時,輸出目標字串和匹配順序(從0開始) - 上圖中接收到
ioliPonyMixV4.safetensors並匹配搜索條件pony,因此輸出score_9 - 因為匹配第一個搜索條件,所以
index輸出0 - 未匹配任何條件時輸出
-1 - 也可進行前後字串連接
Input
text- 搜索目標字串
prefix- 前方連接的字串
suffix- 後方連接的字串
regex_and_output- 搜索字串和輸出字串列表
- 按以下格式填寫
pre_delim- 連接
prefix和regex_and_output時插入的字元 Comma:,/Line break: 換行 /None: 不插入
- 連接
suf_delim- 連接
regex_and_output和suffix時插入的字元
- 連接
搜索字串 1(可使用正規表達式)
--
輸出字串 1
--
搜索字串 2(可使用正規表達式)
--
輸出字串 2
--
--
無匹配時輸出的字串
Output
combined_text- 連接
prefix+ 輸出字串 +suffix的字串
- 連接
prefix/suffix- Input 的直通
使用範例
此例中將匹配的編號(index)傳遞給 Easy Use 的 Text Index Switch 進行切換。
因為不匹配時會變成 -1,所以使用匹配所有字串的正規表達式 .+ 代替默認輸出。
D2 Multi Output
- 以列表形式輸出 seed、cfg 等通用參數的節點
Input
typeFLOAT: 浮點數。用於 CFG 等INT: 整數。用於 steps 等STRING: 字串。用於 sampler 等SEED: 可用隨機數生成按鈕輸入 seed 值
Add Random- 在輸入欄位添加隨機數
- 僅在
type為SEED時顯示
Output
x / y_items- 普通的換行分隔文字
- 用於
D2 XY Plot、D2 XY Plot Easy、D2 XY Plot Easy Mini
LIST- 以換行分解並逐一輸出。連接的節點會依元素數量執行
ARRAY- 以換行分解並以陣列形式輸出
D2 List Converter
- 將
LIST(逐一輸出元素的 ComfyUI list)與ARRAY(將陣列作為單一值輸出的 ComfyUI 內建 Array 型別)互相轉換,也能轉換為字串的節點 - 整合了
D2 List To String與D2 XY List To Plot的功能
Input
LIST/ARRAY- 要轉換的值。連接其中一個即可
- 兩者都連接時,依
LIST→ARRAY的順序串接
separatorSTRING輸出的分隔字元Comma + Space: 以,結合Comma: 以,結合Line break: 以換行結合Semicolon: 以;結合Space: 以半形空格結合None: 不使用分隔字元結合
Output
x / y_items- 換行分隔的文字。用於
D2 XY Plot - 會去除元素中的換行後輸出
- 換行分隔的文字。用於
LIST- 逐一輸出元素
ARRAY- 以陣列輸出
STRING- 以
separator結合的文字 - 保留元素中的換行
- 以
D2 List To String
已不建議使用。今後請改用 D2 List Converter。
D2 Text Concat
- 可調整輸入數量的文字結合節點
- 以
text_count增減輸入欄位,結合連接到text_1〜text_N的文字 separator與D2 List To String共用
Input
text_count- 增減輸入欄位的數量(1〜50)
separatorComma + Space: 以,結合Comma: 以,結合Line break: 以換行結合Semicolon: 以;結合Space: 以半形空格結合None: 不使用分隔字元結合
skip_empty- 為
true時,跳過未連接或空白(僅空格・換行)的輸入再結合 - 可避免混入多餘的分隔字元(
, ,)
- 為
D2 Filename Template / D2 Filename Template2
- 用於通過整合日期和其他節點的參數來創建字串模板的節點
D2 Filename Template2是支援多行的版本- 也可以從陣列、字典和物件中獲取值
- 常用格式的預設功能,如Stable Diffusion webui A1111風格的元數據
- 可以通過編輯
custom_nodes/d2-nodes-comfyui/config/template_config.yaml添加預設
- 可以通過編輯
Input
arg_{數字}- 從其他節點導入值
format%date:{yyyy/MM/dd/hh/mm/ss}%yyyy: 年MM: 月dd: 日hh: 時mm: 分ss: 秒
%{節點名稱}.{key}%- 通過指定節點名稱和項目名稱來獲取值
- 示例:
%Empty Latent Image.width%: 從Empty Latent Image節點獲取width值
%node:{id}.{key}%- 通過指定節點ID和項目名稱來獲取值
- 示例:
%node:8.width%: 從ID為8的節點獲取width值
%arg_{數字}%- 嵌入輸入的值
%arg_{數字}:ckpt_name%- 嵌入移除
.safetensors後的檢查點名稱
- 嵌入移除
%arg_{數字}:preset.{預設名稱}%- 可以通過編輯
custom_nodes/d2-nodes-comfyui/config/template_config.yaml添加預設
- 可以通過編輯
%exec_{數字}[{index}]%- 從輸入到
arg_{數字}的陣列中獲取{index}的值
- 從輸入到
%exec_{數字}['{key}']%- 從輸入到
arg_{數字}的字典中獲取{key}的值
- 從輸入到
%exec_{數字}.{key}%- 從輸入到
arg_{數字}的物件中獲取{key}的值
- 從輸入到
arg_count- 增加或減少輸入項目的數量
normalization- 正規化檔案名稱中的無效字元
使用連接到`arg_N`的節點資訊、節點名稱等來獲取
從匯總了生成參數的物件`d2_pipe`中獲取`steps`、`sampler_name`
使用輸入到`arg_1`的值與預設`a1111`。使用`D2 Pipe`添加檢查點名稱
D2 Prompt
- 您可以從
CHOOSE按鈕選擇LoRA,並插入A1111方式的LoRA提示詞 - 刪除文字中的註解
- 包括行首「#」、行首「//」以及「/」至「/」之間的內容
- 在底部顯示令牌數量(當
token_count為true時生效) - 令牌計數使用"ViT-L/14" CLIP。如果想使用其他CLIP模型,請使用
D2 Token Counter
關於註解快捷鍵
- 所有文字框都可使用註解快捷鍵(ctrl + /)
- 快捷鍵可在
Settings > D2 > shortcutKey中更改 - 如需停用此功能,請刪除上述內容
D2 Prompt Sanitizer
- 整理提示詞字串的節點
- 將
_(底線)轉換為半形空格(long_hair→long hair) - 在每個
,(逗號)之後確保有一個半形空格,並整理前後多餘的空白(a , b→a, b) - 合併多餘的連續逗號,並刪除行首的逗號(
a,, ,b→a, b) - 也可以轉換換行、刪除重複的標籤、刪除註解
- 各項處理皆可獨立切換開關
Input
underscore_to_space:將_轉換為半形空格space_after_comma:整理逗號前後的空白並統一為,(保留換行)remove_extra_comma:將多餘的連續逗號(,,/, ,)合併為一個,並刪除行首的逗號(保留換行)protect_lora:保護以<...>包圍的 LoRA 表記不被轉換(保留<lora:my_lora:1>中的底線)protect_score:保護 Pony 系的品質標籤score_9/score_8_up等不被轉換newline_mode:換行的轉換方式keep:不做任何處理(保留換行)add_comma:在每行結尾加上,(保留換行;空行與已以,結尾的行不會添加)to_comma:將換行轉換為,並合併為一行to_space:將換行轉換為半形空格remove:刪除換行(1girl\nsmile→1girlsmile;適合結合日文文字)
remove_duplicate_tags:刪除重複的標籤(保留先出現的;比較時忽略_與半形空格的差異、以及大小寫)strip_trailing_comma:刪除整個字串結尾的逗號(適合與add_comma搭配使用)comment_type:要刪除的註解寫法。與D2 Prompt相同# + // + /**/:刪除行首為#的行、行首為//的行,以及/*〜*/之間的內容(可跨多行)# only/// only//* */ only:只刪除該種寫法None:不做任何處理(預設值)
處理順序為「刪除註解 → 刪除重複標籤 → 轉換換行 → 轉換底線 → 移除多餘逗號 → 整理逗號 → 刪除結尾逗號」。
remove_duplicate_tags殘留的,,會由remove_extra_comma清理,因此兩者都開啟即可整理得乾淨。
D2 Convert NAI Prompt
- 在 StableDiffusion 與 NovelAI 之間互相轉換提示詞權重的節點
- 可在工作流程中進行與
Prompt convert dialog相同的轉換 - 權重的範圍以換行為界(不會跨行轉換)
- 不會整理重複的逗號或空白。需要時請在後方連接
D2 Prompt Sanitizer
Input
prompt:要轉換的提示詞(僅限連接輸入)convert:轉換方向sd_to_nai:StableDiffusion 格式 → NovelAI 格式nai_to_sd:NovelAI 格式 → StableDiffusion 格式
mode:NovelAI 側的權重寫法number:數值格式(1.2::aaa ::)brace:括號格式({{aaa}}/[[aaa]])。權重為 0 以下的標籤無法以括號表示,因此只有這些標籤以數值格式輸出
remove_negative:僅在nai_to_sd且number時有效。刪除負權重的標籤- 被刪除標籤前後的逗號會保留(
-2::aaa::, 1.2::bbb::→, (bbb:1.2)) - 權重為 0 的標籤不會刪除(權重 0 仍會影響生成結果)
- 被刪除標籤前後的逗號會保留(
數值格式的轉換規則
sd_to_nai一定會在結尾::前加入半形空格((aaa5:1.2)→1.2::aaa5 ::),以避免aaa5::的5::被誤判為權重的開始nai_to_sd也能處理忘記加上結尾::的情況。未結束的權重範圍持續到下一個權重的開始或行尾1.2::blonde hair, 1.3::from side::→(blonde hair:1.2), (from side:1.3)1.2::aaa, bbb::→(aaa, bbb:1.2)(對多個標籤一起指定的權重維持原樣)
- 負權重會像
(aaa:-2)這樣把負號加在數值前面
D2 Moss Item / D2 Moss Prompt
- 為圖像生成模型 MOSS-Image 建立版面提示詞(JSON 格式)的節點
- 將遮罩的範圍作為放置元素的位置(bbox)
- 自動計算 bbox 的座標(以畫布中心為原點的像素座標),不需要手動計算。變更解析度時版面配置也會跟著調整
- 依
D2 Create Masks→D2 Moss Item→D2 Moss Prompt的順序連接使用 - MOSS-Image 的版面提示詞是實驗性功能,因此僅支援 USERGUIDE 中記載的項目
D2 Moss Item
- 建立版面中的一個元素
- 以包圍遮罩中有值範圍的長方形作為 bbox。遮罩為空時,以整個畫布作為 bbox
Input
mask:放置元素範圍的遮罩label:元素的種類object:繪製物品或人物等text:繪製文字
caption:元素外觀的說明(大小、風格、位置等)- 可用與
D2 Prompt相同的寫法註解掉文字(行首的#///、/*〜*/)
- 可用與
text:要繪製的文字。僅在label為text時使用- 想換行時請輸入
\n,或連接其他節點(如D2 Prompt)
- 想換行時請輸入
Output
moss_item:一個元素的資料。連接到D2 Moss Prompt
D2 Moss Prompt
- 將整張圖像的說明與多個
moss_item整合為 JSON 字串的提示詞
Input
meta:表示圖像種類的標籤。可用逗號分隔輸入多個- 例:
poster/photograph/illustration, anime
- 例:
canvas_type:通常維持single即可summary_caption:整張圖像的場景與畫風說明- 與
caption相同,可以使用註解
- 與
item_count:moss_item的輸入數量moss_item_{數字}:連接D2 Moss Item
Output
prompt:版面提示詞的 JSON 字串。連接到文字編碼器
meta/canvas_type/summary_caption留空時,會從 JSON 中省略。
D2 Token Counter
- 計算提示詞的標記數量
D2 Load Text
- 讀取文字檔案的通用節點
- 批次編輯訓練用標註時,用於讀取
D2 Folder Image Queue以*.txt取得的路徑
Input
file_path- 要讀取的文字檔案完整路徑
encode_to_utf8true: 自動判別字元編碼並轉換為 utf-8 後讀取false: 不轉換(以 utf-8 讀取)
Output
text- 檔案內容(原樣返回,不整形;檔案不存在時為空字串)
file_path- 將輸入的
file_path原樣輸出(用於傳給D2 Save Caption的base_filename)
- 將輸入的
D2 Load CSV
- 讀取 CSV / TSV 檔案,並指定行・列的範圍取出的節點
- 像提示詞這種含有逗號的資料,前提是已用雙引號括起(標準的 CSV 跳脫)
- 為了即使是大型檔案也能抑制記憶體用量,輸出只有一個,並以
output_mode切換格式
Input
file_path- 要讀取的檔案完整路徑
file_typecsv: 逗號分隔 /tsv: 定位字元(Tab)分隔。輸入檔案的分隔字元
encode_to_utf8true: 自動判別字元編碼並轉換為 utf-8 後讀取
output_modelist: 以 2 維陣列輸出csv: 以換行+逗號分隔的文字輸出
row_index/column_index- 要輸出的行・列範圍(從 1 開始)。留空表示全部
3: 只有第 3 行(列)2-: 從第 2 行(列)到最後-4: 第 1〜4 行(列)2-4: 第 2〜4 行(列)- 格式錯誤(
0・2--4・非數值等)會以錯誤停止執行(避免流出錯誤的資料)
use_doublequote- 當
output_mode:csv時,將所有儲存格加上雙引號 - 設為
false則為單純的逗號結合,含逗號的儲存格會失去分隔("AAA,BBB","XXX,YYY"->AAA,BBB,XXX,YYY)
- 當
Output
output- 選取範圍的資料。依
output_mode為 2 維陣列或文字
- 選取範圍的資料。依
lines_count- 選取範圍的行數
file_path- 將輸入的
file_path原樣輸出
- 將輸入的
D2 Save Caption
- 整形標籤並儲存標註檔案的節點
- 儲存到將
base_filename的副檔名替換為extension的路徑(例d:/images/aaa.jpg->d:/images/aaa.txt) - 整形依「分割 -> 去除前後空白 -> 統一分隔 -> 移除跳脫 -> 排除 -> 去除重複 -> 開頭追加 -> 結尾逗號」的順序進行
Input
base_filename- 儲存目標的來源路徑。接收
D2 Folder Image Queue的image_path或D2 Load Text的file_path - 為空時以錯誤停止(避免儲存到非預期的位置)
- 儲存目標的來源路徑。接收
text- 標註內容(來自
WD14 Tagger或D2 Load Text)
- 標註內容(來自
extension- 儲存檔案的副檔名(例
txt)
- 儲存檔案的副檔名(例
exclude_tags- 要排除的標籤。以逗號與換行兩者分隔
- 寫成
regex/pattern/時排除符合正規表示式的標籤(僅排除) - 比較時忽略括號的跳脫(提示詞的
rem_\(re:zero\)可用排除標籤rem_(re:zero)排除)
prepend_tags- 追加到開頭的標籤。以逗號分隔。已存在的標籤不會追加
word_separator- 統一單字分隔(整合
blue eyes與blue_hair的混用) underscore(預設): 將空格統一為_(blue eyes->blue_eyes)space: 將_統一為空格(blue_hair->blue hair)none: 不轉換
- 統一單字分隔(整合
remove_escapetrue: 從輸出標籤移除括號的跳脫(\(\)\[\])(rem_\(re:zero\)->rem_(re:zero))。適合訓練用標註
trailing_commatrue: 在結尾追加逗號
ignore_casetrue: 排除判定時忽略大小寫
backuptrue: 若有同名檔案,先將舊檔案重新命名為.bak再儲存
dry_runtrue: 不儲存到檔案,僅以text輸出確認整形結果(轉換結果的預覽)
Output
text- 整形後的標註
file_path- 儲存目標的完整路徑(
dry_run時為預定儲存的路徑)
- 儲存目標的完整路徑(
D2 Tag Report
- 從指定資料夾內的標註集計標籤出現頻率,並建立排除標籤清單的節點
Get tags按鈕會將集計結果顯示於text。使用者編輯要保留・刪除的標籤,再傳給D2 Save Caption的exclude_tags- 在行首加上
//或#即為註解行 - 於
exclude_tags指定標籤字典後,只會集計未收錄於字典中的標籤- 可藉此找出漏打逗號(
blue eyes twintails)或漏打空格(blondehair)等誤輸入的提示詞
- 可藉此找出漏打逗號(
D2 Tag ReportD2 Save Caption的使用方式請參閱這篇文章(日文)
Input
folder- 存放標註檔案的資料夾(完整路徑)
include_subfolderstrue: 同時處理子資料夾
extension- 目標副檔名(例
txt)
- 目標副檔名(例
order_bycount_9-0: 依出現次數由多到少count_0-9: 依出現次數由少到多tag_a-z: 依標籤名稱(A->Z)tag_z-a: 依標籤名稱(Z->A)
without_counttrue: 報告中不顯示出現次數
exclude_tags- 要從集計中排除的標籤字典檔案路徑(完整路徑)
- 請注意這裡指定的是字典檔案的路徑,而非字典的內容
output_typeremove_comment: 刪除註解行並輸出其餘(運用:以註解標記要刪除的標籤)output_comment: 僅輸出註解行(運用:僅將要刪除的標籤註解化)
separatornewline: 以換行分隔輸出(建議,使regex/pattern/等含逗號的項目不會被破壞)comma: 以逗號+空格的單行輸出
Output
text- 編輯後的標籤清單(傳給
D2 Save Caption的exclude_tags)
- 編輯後的標籤清單(傳給
關於 exclude_tags
-
用於找出未收錄於字典中的標籤,也就是疑似誤輸入的標籤
-
字典中已收錄的標籤不會被集計,因此報告中只會留下字典裡沒有的標籤
-
支援三種字典格式。三者皆讀取第1欄作為標籤
-
僅有標籤的清單
1girl solo -
沒有標題行的格式(如 ComfyUI Custom Scripts)
1girl,4114588 solo,3426446 -
有標題行的格式(如 ComfyUI Auto Complete Plus)
tag,category,count,alias 1girl,0,4974288,"女孩,女性,少女"
-
-
比對時不區分大小寫、空格與底線的差異(
long hair與long_hair)、以及括號的跳脫字元(\(與() -
注意:
Get tags按鈕會在工作流程執行前運作,因此無法讀取從其他節點連接的值。字典請務必在此欄位直接輸入路徑