TIPO Format
Turn raw TIPO output into a prompt string without re-running the model
- full_output
- addon_output
- prompt
- user_prompt
- unformatted_prompt
- unformatted_user_prompt
This one's plumbing, not generation. TIPO Format doesn't call any model - it takes the raw structured output TIPO's generator already produced and stamps a template onto it to get an actual prompt string. You'll rarely reach for it on its own; it exists as the second half of a split workflow, paired with TIPOOperation (the node that does the actual LLM generation and outputs unformatted results).
Why split generation from formatting at all
The plain TIPO node does both steps internally - generate, then format - in one node, which is what most people want and is covered in its own article. But formatting is just string templating; generation is the expensive part that actually runs the model. If you want to try three different prompt layouts on the exact same generation, re-running TIPO three times means re-running the LLM three times for no reason. Splitting the pipeline into TIPOOperation → TIPOFormat means you generate once and reformat as many times as you like for free.
The inputs and outputs that matter
Only three fields, and two of them aren't meant for you to type into:
full_outputandaddon_output- both typedLIST, notSTRING. These aren't free text; they're the raw structured generation results, and in practice the only thing that produces the right shape to plug in here isTIPOOperation's matching outputs. If you're trying to wire arbitrary text into this node, that's the wrong node - it wants TIPOOperation's output specifically.format- the same kind of template used by the plain TIPO node: a string built from placeholders like<|special|>,<|characters|>,<|copyrights|>,<|artist|>,<|general|>,<|meta|>,<|quality|>,<|rating|>, and the natural-language slots<|generated|>/<|extended|>. The default matches Kohaku XL Zeta's recommended layout, same as TIPO's default.
The four outputs mirror TIPO's exactly: prompt (the finished, formatted string - wire this into CLIP Text Encode), user_prompt (formatted, but sticking to what you originally fed the generator rather than everything it added), and unformatted_prompt / unformatted_user_prompt (the same two before any template is applied - mostly useful for debugging or a second reformat pass).
Installing it
It ships in the same repo as every other node in this pack, so there's nothing separate to install. ComfyUI Manager: search "TIPO-extension." Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/KohakuBlueleaf/z-tipo-extension
Restart, and you'll find it under utils/promptgen alongside TIPO and TIPOOperation. No model weights of its own to download - formatting is pure string manipulation, so this node has none of TIPO's first-run "downloads a GGUF from Hugging Face" step.
Common issues
The main trip-up is graph wiring: because full_output/addon_output are LIST type, ComfyUI won't let you connect a plain STRING output into them - you can't feed it a hand-written prompt or another node's text output and expect it to work. It's specifically the receiving half of TIPOOperation's output, not a general-purpose formatter.
The other thing worth knowing is when you don't need this node at all: if you're not doing the multi-format-per-generation trick, just use the plain TIPO node. It does generation and formatting together with one fewer node cluttering your graph, and for the vast majority of workflows that's genuinely all you need - TIPOFormat earns its keep specifically when you're iterating on prompt layout without wanting to burn a fresh model call every time.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| full_output | LIST | — | |
| addon_output | LIST | — | |
| format | STRING | <|special|>, <|characters|>, <|copyrights|>, <|artist|>, <|general|>, <|extended|>. <|quality|>, <|meta|>, <|rating|> | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| user_prompt | STRING | — |
| unformatted_prompt | STRING | — |
| unformatted_user_prompt | STRING | — |