Extensions/String-Mixer
ComfyUI Extension

String-Mixer

Treat prompts as data: gate, split, toggle, merge, clean and shoot them. Eleven nodes for ComfyUI, plus an optional LLM rulebook writer.

By Tsukihuyu·Created 2 days ago·Updated a day ago· 0
Tsukihuyu/comfyui-string-mixer
Nodes—
On cloudLocal install
Stars0
Updateda day ago
Readme

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

将一段提示词拆分为多个独立模块,再按需组合。

一段完整的提示词通常包含质量描述、主体、服装、环境、光照等不同内容。把它们全部放在同一个文本框里,修改和复用都不方便。

文本混合器提供 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