Nodes/Prompt Helpers/Concatenate JSON
ComfyUI Node

Concatenate JSON

Prompt libraries without the copy-paste

By Pauan·Created 8 months ago·Updated 5 months ago· 3
Concatenate JSON
  • jsons
  • JSON

Concatenate JSON is the glue node for anyone who treats prompts as reusable assets. The Prompt Helpers pack runs on a JSON prompt format, and this node is how you build a prompt from smaller pieces instead of maintaining one giant blob.

The mechanics are boring in the best way: it takes up to 20 JSON prompt lists (an autogrow input - sockets appear as you plug things in) and concatenates them in order into a single EZ_JSON output. That output feeds straight into EZ Prompt, which is what actually turns a JSON prompt into conditioning. Nothing is parsed, validated, or clever here - it's list.extend with a schema, which is exactly what you want from a building block.

The workflow it unlocks

The classic setup is a prompt library. You keep a base "style" JSON (quality tags, artist, camera), a "character" JSON, and maybe a "scene" JSON - each in its own Parse Lines or Parse YAML node, or even a Prompt Toggle node - and Concatenate Json joins whichever subset you want for this render:

Parse Lines (style) ───┐
                        ├─ Concatenate Json ──► EZ Prompt
Parse Lines (char) ────┘

Because concatenation is just ordering, you get compositional control: same character, different style, without duplicating tags.

Inputs and outputs

  • jsons - autogrow input, 1–20 EZ_JSON values. Each must be an array; the node raises a clear error if you feed it something that isn't.
  • JSON (EZ_JSON) - the merged result, wired into EZ Prompt (or another Concatenate Json, if you want a bigger tree).

The one gotcha that bites

The pack's JSON format has named bundles (bundle: name), and bundle names must be unique across everything that ends up in one prompt. Concatenate two JSON files that both define a bundle called style and you'll get Duplicate bundle: style at processing time. This isn't a bug - it's the pack refusing to guess which one you meant.

The fix is namespacing: name your bundles with a prefix (char_style, scene_style) rather than bare words, so combining never collides. There's no equivalent collision problem for plain prompt chunks or LoRA entries, so this only bites once you lean on bundles - and if you're building a prompt library, you probably will.

Installing it

It ships with the Prompt Helpers pack. In ComfyUI Manager search "Prompt Helpers" (Pauan/comfyui-prompt-helpers), install, restart. Manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/Pauan/comfyui-prompt-helpers

Then restart ComfyUI. It needs no model downloads; the only dependencies are PyYAML and desktop-notifier (used by EZ Notify), and it requires ComfyUI 0.8.0+ because the pack is built on the Nodes 2.0 API.

If your combined prompt produces nothing, remember that Debug JSON is your friend here - wire the concatenated output through it to see the final structure before you blame the join.

Categoryprompt_helpers/prompt

Inputs (1)

NameTypeDefaultDescription
jsonsCOMFY_AUTOGROW_V3

Outputs (1)

NameTypeDescription
JSONEZ_JSON