Nodes/Zerna Pack/Unzip Prompt (Zerna Pack)
ComfyUI Node

Unzip Prompt (Zerna Pack)

Unzipping a batch back into plain prompts

By RaymondProduction·Created about a year ago·Updated about a year ago· 0
Unzip Prompt (Zerna Pack)
  • zipped_prompt
  • positive
  • negative
  • name

If the Dynamic Prompt Injector is the pack's engine, Unzip Prompt is the gearbox. It takes that zipped_prompt output - a list of (prompt, negative, name) tuples - and hands you the pieces back as plain strings you can actually feed into a normal text encoder. It's a ~15-line passthrough, and that's fine. Some nodes earn their keep by being exactly one move.

Why you'd reach for it. Because ComfyUI's built-in CLIP Text Encode takes one string at a time, and the Injector hands you a bundled list. You can't wire a ZIPPED_PROMPT straight into a text encoder, so something has to do the unpacking. That's this node's entire job. The Zerna Pack is built around the Injector → Unzip pair, and this is the node that lets the rest of your graph stay boring and standard.

How it works. Unzip Prompt receives the zipped prompt and returns it unchanged as three named outputs. The "unzipping" happens because of how ComfyUI routes types: the Injector marks zipped_prompt as a list output, so the framework calls Unzip Prompt once per entry, and each call gets a single tuple. The three outputs - positive, negative, name - are just that tuple's three elements pulled apart into STRINGs.

One thing to know before you wire the negative output anywhere: the Injector hardcodes the negative to the literal word "man" and the name to "unknown name". This is placeholder plumbing, not a real negative prompt. The negative output exists because the zipped format has three slots, not because anyone picked a good negative for you. In practice you'll use positive and write your own negative elsewhere - the negative-prompt slot on your own CLIP Text Encode.

Inputs and outputs. One input: zipped_prompt (type ZIPPED_PROMPT, from the Injector). Three outputs, all STRING:

  • positive - the expanded prompt text, this is the one you want.
  • negative - the placeholder ("man"), ignore it.
  • name - another placeholder, ignore it too.

There's nothing to configure. Add it, connect it, done.

The typical wiring. Injector's zipped_prompt → Unzip Prompt → positive → CLIP Text Encode → KSampler. ComfyUI iterates the batch for you, so you get one generation per prompt from a single pass.

Installing. Same as the rest of the pack - ComfyUI Manager, search "Zerna Pack", or:

cd ComfyUI/custom_nodes
git clone https://github.com/RaymondProduction/comfyui-zerna-pack
# restart ComfyUI

No dependencies, no model files. The pack uses only the Python standard library and ComfyUI core - requirements.txt is a comment saying so.

Where people get burned. If you're getting nothing sensible out of Unzip Prompt, the bug is almost always upstream, not here. Check that the Injector's template actually contains [X] (no [X] means one unexpanded entry), and that your text file is in the pack's prompts/ folder - the dropdown only sees files that existed when ComfyUI started. This node is so simple that when its output looks wrong, the honest diagnosis is "your input was already wrong." Also remember the negative output is a stub: if a workflow someone shared wires it straight into the negative conditioning slot, that's a Zerna quirk you should probably replace, not inherit.

CategoryZernaPack/PromptGnerators

Inputs (1)

NameTypeDefaultDescription
zipped_promptZIPPED_PROMPT

Outputs (3)

NameTypeDescription
positiveSTRING
negativeSTRING
nameSTRING