Nodes/TIPO-extension/TIPO Format
ComfyUI Node

TIPO Format

Turn raw TIPO output into a prompt string without re-running the model

By KohakuBlueleaf·Created 2 years ago·Updated a day ago· 597
TIPO Format
  • full_output
  • addon_output
  • prompt
  • user_prompt
  • unformatted_prompt
  • unformatted_user_prompt
format<|special|>, <|characters|>, <|copyrights|>, <|artist|>, <|general|>, <|extended|>. <|quality|>, <|meta|>, <|rating|>

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 TIPOOperationTIPOFormat 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_output and addon_output - both typed LIST, not STRING. 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 is TIPOOperation'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.

Categoryutils/promptgen

Inputs (3)

NameTypeDefaultDescription
full_outputLIST
addon_outputLIST
formatSTRING<|special|>, <|characters|>, <|copyrights|>, <|artist|>, <|general|>, <|extended|>. <|quality|>, <|meta|>, <|rating|>

Outputs (4)

NameTypeDescription
promptSTRING
user_promptSTRING
unformatted_promptSTRING
unformatted_user_promptSTRING