String-Mixer
Treat prompts as data: gate, split, toggle, merge, clean and shoot them. Eleven nodes for ComfyUI, plus an optional LLM rulebook writer.
String-Mixer
Let AI generate. Let humans compose.
一个为 ComfyUI 开发的文本处理与提示词编排工具集。
它始于一个很简单的想法:为什么修改一段提示词,总是要在长长的文本框里反复寻找、复制和删除?
于是有了文本混合器,后来又有了提示词炸词、文本闸门,以及它们之间的组合。
现在,你可以把一段提示词拆成独立的词片,随时启用或禁用;可以接收 LLM 动态生成的内容,也可以在需要时接管输入,保留自己的修改;还可以将不同来源的文本自由组合,构建自己的提示词工作流。
除此之外,项目还包含提示词清理、文件管理、可视化镜头控制,以及基于 Skill 的提示词辅助工具。
这套节点干的就是这些活:拆开、拼起、拦住、洗干净。
这是一个从实际使用需求出发,逐渐长出来的小工具集。希望它也能让你的 ComfyUI 工作流变得更顺手。
English: README.en.md
目录
安装 · 节点一览 · 文本闸门 · 闸门炸词 · 提示词炸词 · 文本混合 3/5/7 · 提示词净化 · 提示词文件 · 相机镜头 · 技能写词/排版 · SkillPrompt 配置 · 注意事项
安装
放到 ComfyUI/custom_nodes/ 下,重启 ComfyUI:
cd ComfyUI/custom_nodes
git clone <本仓库地址> comfyui-string-mixer
- 前端改动只需
Ctrl+Shift+R;Python 改动必须重启 ComfyUI。 - 核心节点零依赖;
📄 提示词文件的缩略图用到 Pillow(没有也能用,只是不缩图)。 - 所有节点在右键菜单的
String-Mixer分类里,SkillPrompt是它的子分类。
节点一览
| 节点 | 作用 | 一句话场景 | |---|---|---| | ⛩ 文本闸门 / Text Gate | 上游进来的字,要么放行,要么换成你写的 | "上游给的我想改两个字" | | ⛩ 闸门炸词 / Text Gate Toggle | 闸门 + 逐词开关(没动过手就自动跟上游) | "在这批词里挑一部分用" | | 💥 提示词炸词 / Prompt Toggle | 一句话拆成词片,逐片开关 | "这个词先关掉试试" | | 🧵 文本混合 3 / 5 / 7 / Text Mix | 外部输入 + N 个格子合并 | "质量词、主体、服装分开管" | | 🧼 提示词净化 / Prompt Cleaner | 去乱括号、重复词、多余空格 | "从别处复制来的脏提示词" | | 📄 提示词文件 / Prompt File | 从目录读 .txt | "提示词想当文件管" | | 🎥 相机镜头 / Camera Rig | 可视化选机位,出镜头语言 | "记不住 from above 这些" | | ✍️ 技能写词 / Skill Writer | 规则书 + LLM 写出成稿 | "把怎么写的规矩固定下来" | | 🧭 技能排版 / Skill Layout | 结构化布局 → 布局提示词 | "位置用数字定,不靠 left/right" |
节点功能说明
⛩ 文本闸门 / Text Gate

⛩ 文本闸门 / Text Gate
在上游输入与手动编辑之间自由切换。
当上游节点、LLM 或文件提供了一段文本,而你只想对其中一部分进行修改时,不必复制整段内容,也不必回到上游节点重新编辑。
文本闸门提供了一个可直接编辑的文本框:
- 自动放行:文本框为空时,自动接收并输出上游文本。
- 手动接管:在文本框中输入内容后,拦截上游输入,改为输出手动编辑的文本。
- 恢复跟随:清空文本框,即可重新接收上游内容。
文本框既是内容显示区,也是实际编辑区。你看到的内容,就是下游节点收到的内容。
适合需要在动态文本与人工修改之间切换的工作流。
实际效果:上游 81 字,框里写了 6 段,输出就是框里这 6 段:
上游:masterpiece, best quality, 1girl, blue hair, kimono, cherry blossoms, smile, ...
输出:masterpiece, best quality, 1girl, blue hair, kimono, cherry blossoms
状态条里的"上次执行"是真时间:它记录的是队列跑到这个节点时的上游内容,所以你能判断"这份快照是不是最新的"。
⛩ 闸门炸词 / Text Gate Toggle


让动态生成的提示词,也能逐词编辑和控制。
这是文本闸门与提示词炸词的结合。它不仅可以接收上游动态文本,还能将文本拆分为独立词片,允许你逐项选择最终参与输出的内容。
它最重要的特点是:系统会判断你是否干预过文本,而不是简单地根据文本框是否为空决定是否接管。
- 自动跟随:没有进行任何修改时,每次执行都会自动接收最新的上游文本。
- 逐词开关:点击词片即可启用或禁用对应内容,关闭的词片仍然保留,可以随时恢复。
- 手动编辑:修改文本或删除词片后,自动进入人工接管状态。
- 手动锁定:即使没有修改内容,也可以主动锁定当前文本,防止后续上游更新覆盖它。
- 恢复跟随:解除锁定或重置干预状态,即可重新接收上游文本。
支持逗号分隔与原始标点保留两种重组模式,并对 Style:、Subject: 等冒号标签以及比例、权重语法进行特殊处理。
适合处理大多数来自上游的提示词,让你可以在保留自动化的同时,随时介入并调整最终结果。
实际效果:10 段关 3 段
输入:masterpiece, best quality, 1girl, blue hair, kimono, cherry blossoms, smile, looking at viewer, shallow depth of field, cinematic light
输出:masterpiece, best quality, 1girl, kimono, cherry blossoms, smile, cinematic light
💥 提示词炸词 / Prompt Toggle

把一整段提示词拆成可以独立控制的词片。
当你想测试某个提示词是否真的影响生成结果时,不必反复复制、删除和恢复整段文本。
提示词炸词会自动识别文本中的独立片段,并将它们转换为可交互的词片:
- 逐项启用与禁用:点击词片即可控制它是否参与最终输出。
- 保留原文:禁用的词片不会被删除,重新启用即可恢复。
- 彻底删除:通过删除按钮移除不需要的词片,并支持限时撤销。
- 灵活重组:支持逗号分隔与原始标点保留两种模式。
- 特殊语法保护:识别冒号标签、数字比例、权重表达式、括号及特殊 Token,尽量避免错误拆分。
可以选择只编辑节点内部的文本,也可以接入上游文本,将其原样添加到最终输出的前面。
适合逐项测试提示词、调整标签组合,以及精细控制 AI 绘图的文本输入。
输入:masterpiece, best quality, 1girl, blue hair, kimono, cherry blossoms, smile, looking at viewer, shallow depth of field, cinematic light
关掉:best quality / cherry blossoms / looking at viewer / shallow depth of field
输出:masterpiece, 1girl, blue hair, kimono, smile, cinematic light
🧵 文本混合 3 / 5 / 7

将一段提示词拆分为多个独立模块,再按需组合。
一段完整的提示词通常包含质量描述、主体、服装、环境、光照等不同内容。把它们全部放在同一个文本框里,修改和复用都不方便。
文本混合器提供 3、5、7 个独立文本输入格,可以将不同部分分别管理,最后按照固定顺序组合为一段完整文本。
- 独立编辑:每个输入格都可以单独编写和修改。
- 独立开关:不需要的模块可以暂时关闭,不影响其他内容。
- 外部输入:支持接收上游文本,并将其放在组合结果的最前面。
- 自定义分隔符:可以选择使用空格、逗号等分隔方式。
- 多版本选择:根据工作流复杂程度选择 3、5 或 7 个输入格。
适合将常用提示词模块化管理,在不同工作流和生成任务之间重复使用。
方便在哪:换服装只动第 3 格;试其他光线只动第 7 格然后开关一下。同一套骨架可以在多个工作流里复用,因为每格的内容都是明摆着的。
外部输入:(空)
第 1 格:masterpiece, best quality
第 2 格:1girl, blue hair ← 关掉
第 3 格:cherry blossoms, soft light
分隔符:", "
输出:masterpiece, best quality, cherry blossoms, soft light
🧼 提示词净化 / Prompt Cleaner

清理提示词中的冗余格式,让文本更加规范。
从不同模型、工作流或外部资料复制提示词时,经常会遇到重复词、冗余括号、多余空格以及不统一的权重格式。
提示词净化器可以对这些问题进行集中处理:
- 权重处理:归一化提示词权重,或直接移除权重表达式。
- 重复词清理:识别并删除重复出现的提示词。
- 格式整理:统一逗号、空格等文本格式。
- 权重范围控制:设置权重上下限,避免出现过高或过低的权重值。
各项处理均可独立启用,方便根据实际需求选择清理方式。
适合整理外部导入的提示词、清理复杂权重表达式,以及规范化工作流中的文本输入。
输入:(((best quality))), masterpiece, masterpiece , ((1girl)), 1girl, blue hair, [blurry], (smile:1.2)
输出:(best quality:1.21), masterpiece, (1girl:1.1), blue hair, (blurry:0.9), (smile:1.2)
📄 提示词文件 / Prompt File

将提示词保存为文件,在不同工作流之间共享和复用。
对于经常使用的提示词,与其在多个工作流中重复复制,不如直接将它们保存为独立的文本文件。
提示词文件节点可以从指定目录读取 .txt 文件,并通过下拉菜单选择需要使用的内容。
- 目录读取:从 ComfyUI 的输入目录中读取指定文件夹内的提示词文件。
- 快速切换:通过下拉菜单选择不同的提示词文件。
- 缩略图预览:如果同名图片存在,可以通过节点悬停预览对应图片。
- 前后缀模板:支持普通文本、MOSS、Krea2 和自定义前后缀格式。
- 文件复用:同一份提示词文件可以被多个工作流读取,修改文件即可更新后续读取的内容。
适合管理常用提示词模板、角色描述和风格配置,让提示词不再分散在各个工作流中。
方便在哪:提示词变成文件,就能版本管理、能分享、能在多个工作流里共用同一份。改文件即改所有引用它的工作流。
🎥 相机镜头 / Camera Rig

通过可视化控制机位参数,生成对应的英文镜头描述。
镜头语言往往包含大量需要记忆的英文表达,例如 from above、high angle、cowboy shot 和 85mm。单纯依靠手写,不仅记忆成本高,也不容易直观判断不同参数组合的效果。
相机镜头节点将常见镜头参数整合到一个可视化界面中:
- 机位控制:通过示意图拖动调整相机的观察方位。
- 高度控制:选择不同的俯仰角度和拍摄高度。
- 景别选择:调整近景、中景、远景等画面范围。
- 透视与焦距:设置透视效果和镜头焦距。
- 倾斜控制:调整画面的倾斜角度。
- 权重模式:选择带权重的镜头描述,或直接输出原始标签。
节点提供实时文本预览,显示实际排队执行时输出的镜头描述。
适合不熟悉英文镜头术语的用户,也适合希望在工作流中精确、直观地控制画面构图的人。
方便在哪:所见即所得。你调的是"从右边、略高、中景",节点给的是带权重的镜头词;权重模式可以选"保守上限"或"裸词"。
方位 = 右侧、高度 = 略高、景别 = 中景、焦距 50mm
输出:(from front:1.05), (from right:1.35), (high angle:1.14), (from above:1.14), (cowboy shot:1.40)
✍️ 技能写词 / Skill Writer
让 LLM 按照你定义的规则生成提示词。
不同模型和绘图工作流对提示词的格式、结构与表达习惯有不同要求。与其每次重新编写提示词或重复描述规则,不如将这些要求整理成独立的规则书。
技能写词节点通过 OpenAI 兼容 API 调用指定的 LLM,并根据用户输入、规则书和输出格式生成提示词。
- 自定义规则书:通过
SKILL.md定义提示词生成规则。 - 多套技能配置:可以创建不同的规则书,按需切换。
- 多种输出格式:支持 Caption、Tag 和 Layout 等输出模式。
- 模型自由选择:通过配置文件管理不同的 OpenAI 兼容 API Endpoint。
- 规则复用:修改规则书即可更新所有使用该规则的工作流。
规则书负责定义生成规范,节点负责调用模型并组织输入。
适合建立自己的提示词生成规范,让 LLM 按照固定要求输出适用于不同模型和工作流的文本。
🧭 技能排版 / Skill Layout
将结构化画面布局转换为精确的位置描述提示词。
使用自然语言描述画面布局时,left、right、center 等词语往往不够精确,也容易产生歧义。
技能排版节点不依赖 LLM,而是直接读取结构化布局数据,将其中的元素位置转换为对应的提示词。
- 结构化输入:接收包含
summary和元素box坐标信息的布局数据。 - 数字化定位:使用坐标和尺寸描述元素在画面中的位置。
- 自动生成描述:将布局信息整理为适合图像生成模型使用的文本。
- 本地处理:无需 API、无需联网,也不需要额外调用模型。
适合将视觉布局分析结果转换为提示词,帮助模型更准确地理解多个主体之间的位置关系与画面构成。
SkillPrompt 配置
skillprompt 子包要两样东西:
1. 一个 OpenAI 兼容的 endpoint
cp skillprompt/skillprompt.ini.example skillprompt/skillprompt.ini
[lmstudio]
name = LM Studio 8B
base_url = http://127.0.0.1:1234/v1
model = qwen3-8b-instruct
每个 [section] 就是下拉里的一个选项;改完重启 ComfyUI。
skillprompt.ini里会有地址、可能有 key,已在.gitignore里,不要提交。
2. 规则书
skillprompt/skills/<名字>/SKILL.md
一个文件夹一本规则书,节点下拉里按文件夹名显示。仓库里自带的 skillprompt/skills/demo/SKILL.md 是个空文件,只用来演示目录结构——真正要用得自己写内容。
License
MIT