Text Line Selector (Text-Driven)
A character/scenario preset switcher where the dropdown shows readable labels
- string
Text Line Selector (Text-Driven) is the pack's "keep a library of prompts on hand and switch between them" node. It's a multiline text box full of presets plus a dropdown to recall them - but with one smart twist: each entry can have a human-readable label separate from the prompt that actually gets output. So your dropdown reads Character A (Standard), Character B (Cinematic) instead of a wall of <lora:char_a_v1:1.0>, character_a, blue hair, school uniform. That label/value split is the whole reason this node exists, and it's the difference between a workflow you can read and one you have to decode.
How it works
The text_list input is a multiline box. Each line is one preset, and the |-| character splits it: label on the left, actual prompt on the right.
Character A (Standard)|-|<lora:char_a_v1:1.0>, character_a, blue hair, school uniform
Character B (Cinematic)|-|<lora:char_b_fantasy:1.2>, character_b, armor, holding sword
The selected_line dropdown shows the labels; a bit of JavaScript swaps in the prompt value when the graph runs. Lines without a |-| still work - the whole line becomes both label and value. The output is a single string pin carrying the chosen prompt, ready to feed your prompt-assembly chain (Join Strings is the obvious downstream partner).
The defaults are character presets with LoRA tags baked into the prompt, which tells you exactly what the author had in mind: keep the character core in this node and swap the staging via Prompt Line. That decoupling - fixed character, variable scene - is the pack's whole design philosophy, and this is the node that plays the "fixed" role.
What to watch
The dropdown shows labels but the backend receives the prompt value, so don't expect to read the full prompt in the combo - that's the point, but it's worth knowing when you're debugging ("wait, which preset is selected?" is a real moment). Editing the text_list re-derives the dropdown live, so keeping this thing up to date is just text editing. And like every node here, the LoRA-tag-in-prompt pattern is pure CLIP-era convention - it works great on SD 1.5/SDXL/Illustrious-lineage checkpoints, and the tags themselves are just strings your checkpoint resolves or ignores.
Install
Part of ComfyUI Text-Driven Workflows. Install via ComfyUI Manager (search "ComfyUI Text-Driven Workflows") or:
cd ComfyUI/custom_nodes
git clone https://github.com/kanryu/ComfyUI-Text-Driven-Workflows.git
Restart. No pip dependencies, no models. The usual pack-level caveat applies: it's built on ComfyUI's V3 extension API, so you need a current ComfyUI - on an old one you'll get "Failed to load nodes" in the console and no Text-Driven Workflows category until you update.
Bottom line
It's a small, focused idea executed cleanly: labeled presets for prompt assets you reuse constantly. If you juggle multiple characters or staging configurations and want to switch them from a readable dropdown, this is exactly the node for it. Nothing to fear, nothing heavy, just a tidy quality-of-life win.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| text_list | STRING | Character A (Standard)|-|<lora:char_a_v1:1.0>, character_a, blue hair, school uniform Character B (Paper-Ratio Style)|-|<lora:char_b_v2:0.8>, character_b, red dress, long hair Character C (Cinematic)|-|<lora:char_c_fantasy:1.2>, character_c, armor, holding sword | — |
| selected_line | COMBO | <lora:char_a_v1:1.0>, character_a, blue hair, school uniform | 3 options: <lora:char_a_v1:1.0>, character_a, blue hair, school uniform, <lora:char_b_v2:0.8>, character_b, red dress, long hair, <lora:char_c_fantasy:1.2>, character_c, armor, holding sword |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| string | STRING | — |