在 ComfyUI 里做可点选提示词:wildcards、默认节点和最小自定义节点
有人想在 ComfyUI 里用表格点选替换提示词,回帖给出了几条路线:wildcards、Impact Wildcards、默认节点组合、Prompt Palette,以及十几行代码的自定义节点。
在 ComfyUI 里,想把提示词拆成可点选的槽位,不用每次手改整句,这件事已经有现成解法。r/StableDiffusion 上有人贴了需求截图,想做一个简单的 prompt builder,点表格里的选项,替换 prompt 中的某段文字。

最省事的答案是 wildcards。有网友说这类东西叫 wildcard,已经有十几种实现。常见做法是把候选词写进文本文件或内联语法,运行时随机或按规则选中。Impact Wildcards 是回帖里提到的方案:每个变量一个文本文件,用 __haircolor__、__lighting__ 这类占位符调用,也可以写 {red|blonde|brunette} 这样的内联候选。文本文件放进 Impact 自定义节点的 wildcards 目录,能用于任意工作流。
如果不想装插件,有网友用默认节点搭:CustomComboNode 提供下拉选择,Replace Text 逐个替换变量,最后接到 CLIP Text Encode 前。多个变量就叠多个 Replace Text。下面两张截图分别是这种思路的节点图。


另一种更易维护的思路是用 Select Per-Line Text by Index。把候选列表整段粘进去,用索引选行。把索引改成随机值,就能自动随机。有网友说,直接喂随机索引没那么简单,所以改了原节点,让随机索引可以直接接进去。两个概念的工作流 JSON 放在 pastebin。
想要面板式交互,可以看 Prompt Palette。回帖里的动图显示它可以在 ComfyUI 里做一个可配置的提示词面板,简单或复杂按需来。

如果只需要一个下拉,一个槽位一个下拉,可以抄这个最小节点。把下面内容放到 custom_nodes/pick_text/__init__.py,重启 ComfyUI。每个槽位复制一份类,改 OPTIONS 列表,再用 concat 节点拼成完整 prompt,接到 CLIP Text Encode。
class PickText:
OPTIONS = ['red silk dress', 'white shirt', 'black leather jacket']
@classmethod
def INPUT_TYPES(cls):
return {'required': {'choice': (cls.OPTIONS,)}}
RETURN_TYPES = ('STRING',)
FUNCTION = 'run'
CATEGORY = 'text'
def run(self, choice):
return (choice,)
NODE_CLASS_MAPPINGS = {'PickText': PickText}
回帖里还有几位说,把需求草图丢给 Claude Code、Codex 或本地 agent,让它生成自定义节点,很快。对开发者来说这是最短路径,尤其想给每个选项配预览图时。不过生成完还是要自己测输入输出和 ComfyUI 版本兼容。
选哪条路,看你要随机还是要点选。随机选词,wildcards 最省事;要鼠标点选且尽量不装插件,用 CustomComboNode 加 Replace Text;要面板式交互,试 Prompt Palette;要完全贴合自己的工作流,写个最小节点或让 LLM 生成一个。
发布时间: 2026-11-05 22:19