Save Param Dict π
Ship the settings with the picture β save your workflow params as JSON
- value_1
- value_2
- value_3
- value_4
- value_5
- value_6
- value_7
- value_8
- value_9
- value_10
- saved_path
- json_string
"Save Param Dict" (displayed as Save Param Dict π) is the node that answers a very specific complaint: you generated something great, and six weeks later you can't remember which seed, which prompt, which CFG produced it. ComfyUI already bakes the workflow JSON into the PNG metadata, but that's not always enough - maybe you're building an automated batch, maybe you want a clean human-readable sidecar file next to every render, maybe you're scripting against an output folder and need the params as structured data, not as image metadata you have to parse.
The node's own description nails it: "Collects various inputs with custom keys and saves them as a JSON file in the output directory." It's from eden_comfy_pipelines, Eden.art's 70+ node suite.
What you set
One required input, then a lot of optional pairs:
- save_path - the filename (or relative path) for the JSON, default
params.json. It lands in ComfyUI's output directory.
Then up to ten key_N / value_N pairs. The key is a string you type (say "seed"), and the value is a wildcard input - you can wire in an INT, FLOAT, STRING, or just about anything else. You set key_1 = "prompt", wire value_1 to your prompt text; key_2 = "seed", wire value_2 to your seed; and so on. The value_* inputs are all optional, so you only fill the pairs you actually care about.
What comes out
Two outputs, and both are useful:
- saved_path - a STRING with the path the file was written to, so you can chain it into a filename or a log.
- json_string - the JSON as a string, if you want to feed it onward instead of (or as well as) writing it.
Behind the scenes it does a little coercion work: booleans stay booleans, numbers keep their types, and keys whose names look like lists (things containing "images", "files", "paths"...) are kept as lists rather than flattened. It also leaves strings that look like file paths untouched. That's the kind of detail that means the JSON you get back is actually re-loadable, not a pile of stringified everything.
Where it shines
- Batch pipelines: log every parameter across a sweep without hunting through image metadata.
- Reproducibility: keep a
params.jsonsidecar next to every output so a run is fully documented even if the image is re-encoded and stripped of metadata. - Downstream scripting: save_path feeds a workflow that moves files around, or json_string feeds an LLM node that summarizes the run.
The honest caveat: for a single interactive render, this is more ceremony than you need - ComfyUI already records the workflow. Reach for it when you're automating, batching, or archiving in a way where metadata gets lost.
Installing it
Standard pack install - ComfyUI Manager (search "eden"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/edenartlab/eden_comfy_pipelines.git
cd eden_comfy_pipelines
pip install -r requirements.txt
Restart ComfyUI. No models, no keys, no downloads - it just needs the output directory to exist, which it always does.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| save_path | STRING | params.json | β |
| key_1opt | STRING | param1 | β |
| value_1opt | * | β | |
| key_2opt | STRING | param2 | β |
| value_2opt | * | β | |
| key_3opt | STRING | param3 | β |
| value_3opt | * | β | |
| key_4opt | STRING | param4 | β |
| value_4opt | * | β | |
| key_5opt | STRING | param5 | β |
| value_5opt | * | β | |
| key_6opt | STRING | param6 | β |
| value_6opt | * | β | |
| key_7opt | STRING | param7 | β |
| value_7opt | * | β | |
| key_8opt | STRING | param8 | β |
| value_8opt | * | β | |
| key_9opt | STRING | param9 | β |
| value_9opt | * | β | |
| key_10opt | STRING | param10 | β |
| value_10opt | * | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| saved_path | STRING | β |
| json_string | STRING | β |