Prompt Garnish
Bolt a quality-tail onto any prompt, on demand
- output
- selected_phrase
Prompt Garnish does one small thing well: it appends a few phrases to the end of a prompt using a joiner, and you pick which phrases by number. The default list is a trio of "subtle" quality nudges - Subtle high resolution, subtle color correction, subtle denoise - so you can think of it as a quality-tail that you attach to whatever prompt is upstream, or flip off entirely by selecting nothing.
The idea comes from a real habit: a lot of people keep a small set of stability-ish phrases they append to nearly every prompt, and it's easy to forget to add them or paste them wrong. This node makes that tail explicit and switchable - one place to define the phrases, a comma-separated list of indices to choose which ones go out, and the whole thing rides on top of whatever source string you wire in.
How it works
Three required widgets:
phrase_list- one phrase per line. Your garnishes, editable in the node.joiner- what glues things together; default", ".selected_indices- comma-separated, 0-based line numbers.0,2means the first and third lines.
Plus an optional source STRING input - the base prompt you're garnishing. It's a socket, not a text box, so it only exists when you wire something in. That detail matters: disconnect source and the node starts a workflow from phrases alone, which makes it handy as a standalone quality-tail starter.
Outputs are two strings:
output- source + joiner + chosen phrases. Wire this into your CLIP Text Encode or prompt builder.selected_phrase- just the tail that was appended (or empty), in case a downstream node wants the garnish alone.
Real behavior worth knowing: indices that are out of range or garbage are silently ignored, so 0,2,99 safely yields just the first and third lines. If you select nothing, output is your source unchanged - which is your "garnish off" state.
The honest take
It's a thin utility, and it knows it. If you already have a template node or a fixed prompt string with the quality-tail baked in, you don't need this. Where it earns its keep is the moment you want to toggle the garnish - swap selected_indices from an upstream switch or string node, or edit the phrase list in one place and have every workflow that uses it pick up the change. For that, it's cleaner than editing the tail in five different text nodes.
Install
Standard pack install: ComfyUI Manager → search vsaan212/Vsaan212-workflow-utilities, or clone into custom_nodes and restart. Menu: vsaan212/Text. Zero extra dependencies - this is pure string handling, no models, no downloads. The one trap is the 0-based indexing, which trips people coming from one-based counting: index 0 is the first line of your list.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| phrase_list | STRING | Subtle high resolution subtle color correction subtle denoise | — |
| joiner | STRING | , | — |
| selected_indices | STRING | — | |
| sourceopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| output | STRING | — |
| selected_phrase | STRING | — |