Nodes/Eden.art nodesuite/Save Param Dict πŸ“
ComfyUI Node Runs on cloud

Save Param Dict πŸ“

Ship the settings with the picture β€” save your workflow params as JSON

By edenartlabΒ·Created 3 years agoΒ·Updated 16 days agoΒ· 120
Save Param Dict πŸ“
  • 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_pathparams.jsonβ–Ί
β—„key_1param1β–Ί
β—„key_2param2β–Ί
β—„key_3param3β–Ί
β—„key_4param4β–Ί
β—„key_5param5β–Ί
β—„key_6param6β–Ί
β—„key_7param7β–Ί
β—„key_8param8β–Ί
β—„key_9param9β–Ί
β—„key_10param10β–Ί

"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.json sidecar 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.

CategoryEden 🌱/Loaders

Inputs (21)

NameTypeDefaultDescription
save_pathSTRINGparams.jsonFile name (or subfolder/name) inside the output folder; a _00001 counter is appended. Supports %date:FORMAT%.
key_1optSTRINGparam1JSON key for value_1. Empty = skip this pair.
value_1opt*β€”
key_2optSTRINGparam2JSON key for value_2. Empty = skip this pair.
value_2opt*β€”
key_3optSTRINGparam3JSON key for value_3. Empty = skip this pair.
value_3opt*β€”
key_4optSTRINGparam4JSON key for value_4. Empty = skip this pair.
value_4opt*β€”
key_5optSTRINGparam5JSON key for value_5. Empty = skip this pair.
value_5opt*β€”
key_6optSTRINGparam6JSON key for value_6. Empty = skip this pair.
value_6opt*β€”
key_7optSTRINGparam7JSON key for value_7. Empty = skip this pair.
value_7opt*β€”
key_8optSTRINGparam8JSON key for value_8. Empty = skip this pair.
value_8opt*β€”
key_9optSTRINGparam9JSON key for value_9. Empty = skip this pair.
value_9opt*β€”
key_10optSTRINGparam10JSON key for value_10. Empty = skip this pair.
value_10opt*β€”

Outputs (2)

NameTypeDescription
saved_pathSTRINGFull path of the saved JSON file.
json_stringSTRINGThe JSON content.