ComfyUI String Helper 插件完全入门指南
1. 插件简介
ComfyUI String Helper 是一个专门处理文字的工具包,就像给你的 ComfyUI 添加了一个超级强大的文字处理器。这个插件包含了 String Formatter、StringList、StringListFromCSV、StringListToCSV、StringConverter、StringMatcher、TimeFormatter、ShowTranslateString 等多个节点。
插件原地址: https://github.com/liuqianhonga/ComfyUI-String-Helper
想象一下,你在做 AI 绘画时经常需要处理各种文字提示词,比如:
- 把多个提示词组合成一句完整的话
- 从一堆提示词中随机选择几个
- 把中文提示词翻译成英文
- 把当前时间加到文件名里
- 从文件中读取提示词列表
这个插件就是专门帮你解决这些文字处理问题的万能工具箱!
2. 如何安装
安装方法很简单,就像往你的工具箱里添加新工具一样:
- 打开你的 ComfyUI 安装文件夹
- 找到
custom_nodes文件夹(这是放插件的地方) - 在命令行中进入这个文件夹,然后运行:
cd custom_nodes git clone https://github.com/liuqianhonga/ComfyUI-String-Helper.git - 重启 ComfyUI 就可以了
3. 节点详细解析
3.1 String Formatter 节点 - 文字格式化神器
这个节点就像一个智能的文字模板机,你可以设计一个模板,然后把不同的内容填进去,就像填空题一样。
这个节点能干什么?
比如你想生成 "一个美丽的女孩在花园里" 这样的句子,但是你想要 "美丽的" 和 "花园" 这两个词可以随时替换,那你就可以用这个节点。
参数详解:
| 参数名 (界面显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| template | template | 必填文本 | 你好 {arg1},欢迎来到 {arg2}! | 这是你的文字模板,就像一个有空格的句子,{arg1} 就是第一个空格 | 使用 Python f-string 语法的模板字符串 | 写 "一个{arg1}的{arg2}在{arg3}里" |
| arg1 | arg1 | 可选输入 | 任意内容 | 第一个要填入模板的内容,就像填空题的第一个答案 | 模板中 {arg1} 位置的替换内容 | 填入 "美丽",模板中的 {arg1} 就变成 "美丽" |
| arg2 | arg2 | 可选输入 | 任意内容 | 第二个要填入模板的内容 | 模板中 {arg2} 位置的替换内容 | 填入 "女孩",模板中的 {arg2} 就变成 "女孩" |
| arg3 | arg3 | 可选输入 | 任意内容 | 第三个要填入模板的内容 | 模板中 {arg3} 位置的替换内容 | 填入 "花园",模板中的 {arg3} 就变成 "花园" |
| arg4 | arg4 | 可选输入 | 任意内容 | 第四个要填入模板的内容 | 模板中 {arg4} 位置的替换内容 | 可以继续添加更多内容 |
| arg5 | arg5 | 可选输入 | 任意内容 | 第五个要填入模板的内容 | 模板中 {arg5} 位置的替换内容 | 支持最多 10 个参数 |
| arg6 | arg6 | 可选输入 | 任意内容 | 第六个要填入模板的内容 | 模板中 {arg6} 位置的替换内容 | 灵活组合使用 |
| arg7 | arg7 | 可选输入 | 任意内容 | 第七个要填入模板的内容 | 模板中 {arg7} 位置的替换内容 | 处理复杂的文本组合 |
| arg8 | arg8 | 可选输入 | 任意内容 | 第八个要填入模板的内容 | 模板中 {arg8} 位置的替换内容 | 满足高级用户需求 |
| arg9 | arg9 | 可选输入 | 任意内容 | 第九个要填入模板的内容 | 模板中 {arg9} 位置的替换内容 | 几乎无限的组合可能 |
| arg10 | arg10 | 可选输入 | 任意内容 | 第十个要填入模板的内容 | 模板中 {arg10} 位置的替换内容 | 最后一个参数位置 |
3.2 StringList 节点 - 智能提示词选择器
这个节点就像一个智能的提示词抽屉,你可以往里面放很多提示词,然后让它帮你选择,可以随机选、按顺序选、或者指定选哪几个。
这个节点能干什么?
比如你有10个不同的发型描述,你想每次随机选3个,或者你想按顺序一个一个试,这个节点都能帮你做到。
参数详解:
| 参数名 (界面显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| p1_select_by_numbers | p1_select_by_numbers | 可选文本 | 1,3,5 | 最优先的选择方式,直接指定要第几个,就像点菜时说"我要第1个、第3个、第5个菜" | 通过序号选择特定位置的字符串 | 输入"1,3,5"就会选择第1、3、5个字符串 |
| p2_select_sequential | p2_select_sequential | 布尔值 | False | 第二优先的选择方式,像播放列表一样按顺序来,播完了自动从头开始 | 启用顺序循环选择模式 | 设为True,第一次选第1个,第二次选第2个,依此类推 |
| p3_select_random_count | p3_select_random_count | 整数 | 1 | 最后的选择方式,随机选几个,就像摸彩票一样 | 随机选择的字符串数量 | 设为3就随机选3个,设为-1就选全部 |
| translate_output | translate_output | 布尔值 | False | 是否把选出来的内容翻译成英文,就像带了个翻译器 | 是否将选定的字符串翻译为英文 | 设为True,"你好"就会变成"hello" |
| string1 | string1 | 多行文本 | 空 | 第一个提示词文本框,可以写很多行 | 第一个字符串输入字段 | 写"美丽的女孩"或者多行提示词 |
| string2 | string2 | 多行文本 | 空 | 第二个提示词文本框 | 第二个字符串输入字段 | 写"帅气的男孩"或其他描述 |
| string3 | string3 | 多行文本 | 空 | 第三个提示词文本框 | 第三个字符串输入字段 | 继续添加更多选项 |
| string4 | string4 | 多行文本 | 空 | 第四个提示词文本框 | 第四个字符串输入字段 | 扩展你的选择范围 |
| string5 | string5 | 多行文本 | 空 | 第五个提示词文本框 | 第五个字符串输入字段 | 提供更多变化 |
| string6 | string6 | 多行文本 | 空 | 第六个提示词文本框 | 第六个字符串输入字段 | 丰富内容选择 |
| string7 | string7 | 多行文本 | 空 | 第七个提示词文本框 | 第七个字符串输入字段 | 增加选择多样性 |
| string8 | string8 | 多行文本 | 空 | 第八个提示词文本框 | 第八个字符串输入字段 | 满足复杂需求 |
| string9 | string9 | 多行文本 | 空 | 第九个提示词文本框 | 第九个字符串输入字段 | 几乎无限选择 |
| string10 | string10 | 多行文本 | 空 | 第十个提示词文本框 | 第十个字符串输入字段 | 最后一个选项 |
| string_list | string_list | 可选输入 | 空 | 从别的节点接来的提示词列表,可以和上面的文本框内容合并 | 外部字符串列表输入 | 连接其他节点的字符串列表 |
3.3 StringListFromCSV 节点 - 文件提示词读取器
这个节点就像一个智能的文件读取器,专门从 CSV 文件(就像 Excel 表格)中读取提示词。特别适合管理大量提示词的场景。
这个节点能干什么?
比如你有一个包含1000个人物描述的 CSV 文件,你想随机选几个来用,或者你想用中文版本还是英文版本,这个节点都能帮你搞定。
参数详解:
| 参数名 (界面显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| csv_file | csv_file | 文件路径 | template/string_list.csv | 指定要读取的 CSV 文件在哪里,就像告诉程序"去哪个文件夹找文件" | CSV 文件的路径位置 | 写"my_prompts.csv"或完整路径 |
| use_translated | use_translated | 布尔值 | False | 是否使用文件中的翻译版本,就像选择看中文版还是英文版 | 是否使用 translate_string 列的内容 | 设为True使用翻译列的内容 |
| random_select_count | random_select_count | 整数 | 1 | 随机选择多少个提示词,就像抽奖抽几个 | 随机选择的字符串数量 | 设为3就随机选3个,-1选全部 |
| selected_numbers | selected_numbers | 文本 | 空 | 指定选择第几个提示词,优先级最高 | 指定选择的字符串编号 | 输入"1,3,5"选择第1、3、5个 |
| translate_output | translate_output | 布尔值 | False | 是否把选出来的内容翻译成英文 | 是否将选定字符串翻译为英文 | 设为True启用翻译功能 |
| reuse_last_result | reuse_last_result | 布尔值 | False | 是否重复使用上次的随机结果,就像"按住上次的选择不变" | 是否重用上次的随机结果 | 设为True保持上次的随机选择 |
| string_list | string_list | 可选输入 | 空 | 从别的节点接来的额外提示词列表 | 外部字符串列表输入 | 可以和CSV文件内容合并 |
3.4 StringListToCSV 节点 - 提示词文件保存器
这个节点就像一个智能的文件存储器,把你的提示词列表保存到 CSV 文件中,方便以后使用。
这个节点能干什么?
比如你通过各种方式收集了很多好用的提示词,你想把它们保存到文件中,以后可以重复使用,这个节点就是专门干这个的。
参数详解:
| 参数名 (界面显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| csv_file | csv_file | 文件路径 | output/string_list_output.csv | 指定要保存的文件位置和名称 | CSV 文件保存路径 | 写"my_saved_prompts.csv" |
| translate | translate | 布尔值 | False | 是否把提示词翻译成中文后再保存,就像存双语版本 | 是否翻译字符串为中文 | 设为True会生成中文翻译 |
| append_mode | append_mode | 布尔值 | True | 是否添加到现有文件末尾,而不是覆盖整个文件 | 是否以追加模式写入 | True=追加,False=覆盖 |
| string | string | 可选输入 | 空 | 单个要保存的提示词 | 单个字符串输入 | 输入"beautiful girl"这样的单个提示词 |
| string_list | string_list | 可选输入 | 空 | 从别的节点接来的提示词列表 | 字符串列表输入 | 连接其他节点的字符串列表 |
3.5 StringMatcher 节点 - 智能条件匹配器
这个节点就像一个智能的条件判断器,根据不同的条件返回不同的结果,就像 "如果...那么..." 的逻辑。
这个节点能干什么?
比如你想根据不同的模型名称选择不同的参数,或者根据不同的风格选择不同的提示词,这个节点可以帮你自动判断和选择。
参数详解:
| 参数名 (界面显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| condition_list | condition_list | 多行文本 | 红色:这是红色\n蓝色:这是蓝色 | 条件和结果的对应关系列表,每行一个"条件:结果" | 匹配规则列表,格式为"条件:值" | 写"anime:动漫风格\nrealistic:写实风格" |
| target_type | target_type | 下拉选择 | STRING | 返回结果的类型,就像选择答案是文字还是数字 | 返回值的数据类型 | 选STRING返回文字,选INT返回数字 |
| match_value | match_value | 可选输入 | 空 | 要匹配的值,就像要检查的条件 | 要进行匹配的输入值 | 输入"anime"会匹配到"动漫风格" |
| default_value | default_value | 可选输入 | 空 | 如果没有匹配到任何条件时的默认返回值 | 未匹配时的默认值 | 设为"未知风格"作为备选 |
3.6 TimeFormatter 节点 - 时间格式化器
这个节点就像一个智能的时钟,可以按照你想要的格式显示当前时间,特别适合给文件命名或者记录时间。
这个节点能干什么?
比如你想在生成的图片文件名中加入当前时间,或者你想在提示词中加入"现在是2024年12月"这样的时间信息。
参数详解:
| 参数名 (界面显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| format_string | format_string | 文本 | %Y-%m-%d %H:%M:%S | 时间显示格式的模板,就像告诉时钟"你要怎么显示时间" | Python strftime 格式化字符串 | 写"%Y年%m月%d日"显示"2024年12月21日" |
3.7 StringConverter 节点 - 格式转换器
这个节点就像一个智能的格式转换器,可以把文字转换成数字、布尔值、列表等不同的格式。
这个节点能干什么?
比如你有一个写着"123"的文字,你想把它转换成真正的数字123来进行计算,或者你想把"true"转换成真正的布尔值。
参数详解:
| 参数名 (界面显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| input_string | input_string | 文本 | 空 | 要转换的原始文字内容 | 要转换的输入字符串 | 输入"123"或"true"等待转换 |
| target_type | target_type | 下拉选择 | INT | 要转换成的目标格式类型 | 目标数据类型 | 选INT转数字,选BOOL转布尔值 |
3.8 StringTranslate 节点 - 单独翻译器
这个节点就像一个专门的翻译器,只负责把一个文字翻译成英文。
这个节点能干什么?
比如你有一个中文的提示词"美丽的女孩",你想把它翻译成英文"beautiful girl"来使用。
参数详解:
| 参数名 (界面显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| string | string | 文本 | 空 | 要翻译的文字内容 | 要翻译的字符串 | 输入"你好世界"等待翻译 |
| translate_output | translate_output | 布尔值 | False | 是否执行翻译,就像翻译器的开关 | 是否执行翻译操作 | 设为True开始翻译,False直接返回原文 |
4. 使用技巧和建议
4.1 优先级理解
在 StringList 和 StringListFromCSV 节点中,选择方式有优先级:
- 最高优先级: 指定序号选择(p1_select_by_numbers)
- 中等优先级: 顺序循环选择(p2_select_sequential)
- 最低优先级: 随机选择(p3_select_random_count)
4.2 文件路径建议
- 使用相对路径比较安全,比如
prompts/my_list.csv - 如果文件夹不存在,插件会自动创建
- 建议把常用的提示词文件放在
template文件夹中
4.3 翻译功能提示
- 翻译功能使用必应翻译服务,需要网络连接
- 支持自动语言检测,不只是中文,其他语言也可以
- 翻译结果会保存,避免重复翻译
4.4 格式化模板技巧
- 同一个参数可以在模板中多次使用,比如
{arg1} is {arg1} - 支持 Python 的所有格式化语法,比如
{arg1:.2f}控制小数位数 - 模板出错时会显示详细错误信息,方便调试
5. 常见问题解答
Q1: 为什么我的 CSV 文件读取失败?
答: 检查以下几点:
- 文件路径是否正确
- 文件是否包含
string和translate_string两列 - 文件编码是否是 UTF-8(建议使用 UTF-8 编码保存)
Q2: 翻译功能不工作怎么办?
答:
- 检查网络连接是否正常
- 确认
translate_output参数设置为True - 如果还是不行,可能是翻译服务暂时不可用
Q3: StringList 节点的选择逻辑混乱怎么办?
答:
- 记住优先级:指定序号 > 顺序循环 > 随机选择
- 如果设置了
p1_select_by_numbers,其他选择方式会被忽略 - 想要随机选择,确保
p1_select_by_numbers为空
Q4: 时间格式化显示不对怎么办?
答:
- 检查格式化字符串是否正确
- 常用格式:
%Y-%m-%d(年-月-日)、%H:%M:%S(时:分:秒) - 可以参考 Python 的 strftime 格式说明
Q5: 字符串转换失败怎么办?
答:
- 确认输入字符串格式正确
- 转换为数字时,确保字符串只包含数字
- 转换为布尔值时,使用 "true"、"false"、"1"、"0" 等
- 转换为列表时,使用逗号分隔
6. 高级应用场景
6.1 批量提示词管理
结合 StringListFromCSV 和 StringListToCSV,可以建立一个完整的提示词管理系统:
- 用 StringListFromCSV 读取分类好的提示词
- 用 StringList 进行选择和组合
- 用 StringListToCSV 保存新的组合结果
6.2 多语言工作流
利用翻译功能,可以建立中英文混合的工作流:
- 用中文思考和组织提示词
- 自动翻译成英文送给模型
- 保存双语版本便于后续使用
6.3 智能文件命名
结合 TimeFormatter 和 StringFormatter,可以生成智能的文件名:
- 包含时间戳避免重复
- 包含关键参数便于识别
- 格式统一便于管理
这个插件就像给你的 ComfyUI 装了一个超级强大的文字处理工具包,让你在处理各种文字任务时游刃有余!