Prompt Stack Splitter
The unpacker that makes prompt stacks actually usable
- prompt_set
- master_prmt
- pos_prompt
- neg_prompt
- is_relay_prompt
- trail_prmt
Sequential video workflows are a pain for one specific reason: each part of the video wants its own prompt, and there's no clean way to store them. That's what prompt stacks solve. Prompt Stack Splitter is the boring second half of that solution - it takes the bundled DX_PROMPT_SET that the pack's Prompt Stack Manager emits and unpacks it into the plain STRING outputs the rest of your graph can actually use.
This node does nothing on its own, and that's fine. You pair it with Prompt Stack Manager, which stores named stacks of up to 10 prompts (each a master/positive/negative with a type), and bundles a slot's whole prompt into one DX_PROMPT_SET value on outputs like prompt_seq_1. But your text encoder speaks STRING, not DX_PROMPT_SET, so something has to split it back apart. This is that something. Feed it None - an unused slot from the Manager - and it politely returns empty strings and False, so you don't need special handling for empty slots.
It has exactly one input, prompt_set (type DX_PROMPT_SET), and five outputs:
- master_prmt - the base prompt on its own
- pos_prompt - the effective positive: master + positive combined per the pack's rule, with the trail/qualifiers prompt appended on the end
- neg_prompt - the negative text
- is_relay_prompt (BOOLEAN) -
Truewhen the prompt is typed as Smart (relay),Falseotherwise - trail_prmt - the qualifiers text on its own, so you can wire it separately if you want
The is_relay_prompt flag is the useful bit. In this pack's world, Smart prompts are pipe-separated segments meant for a downstream relay node that distributes them across frames; Simple/Beats/Timecode prompts are flat text for a normal text encoder. So a common pattern is one splitter per slot, using the flag to branch: relay for the multi-segment prompts, straight CLIP encode for the flat ones.
One thing worth knowing: the master+positive combination rule here is identical to the one the pack's WorkflowConfig nodes use, so a prompt behaves exactly the same whether it came from a stack or a scene. That's deliberate, and it means you can mix both sources in one workflow without surprises.
Installation is just the pack - there's no reason to install a splitter standalone, since the Manager is its other half:
cd ComfyUI/custom_nodes
git clone https://github.com/denyazzolin/comfyui-daz-tools
Restart ComfyUI, or use ComfyUI Manager and search comfyui-daz-tools. No extra Python dependencies, no model files.
Gotchas are thin because the node is thin. If you wire in something that isn't a Manager output, you'll just get empty strings out - there's no error to catch you. And if your stack's prompts all come back empty, check the Manager side first; the splitter faithfully unpacks whatever it's handed.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_set | DX_PROMPT_SET | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| master_prmt | STRING | — |
| pos_prompt | STRING | — |
| neg_prompt | STRING | — |
| is_relay_prompt | BOOLEAN | — |
| trail_prmt | STRING | — |