LC Save Metadata π·οΈ
Fill in the details LC Save Image embeds
- pipe
- metadata
- parameters
LC Save Image πΎ does the heavy lifting of writing PNGs that Civitai's uploader can auto-link. What it doesn't do is know your prompts, seed, sampler, or model names - that's this node's job. LC Save Metadata π·οΈ is the companion that collects all the "what made this image" details into an LC_SAVE_META object, hands it to LC Save Image over one wire, and also prints the human-readable parameter string so you can check it before committing.
It's deliberately a separate node rather than more widgets on the saver. The metadata collector takes an optional LC_PIPE input - the bundle type the pack's LC Sampler Configure and pipe nodes carry - and pulls whatever it can out of it: positive and negative prompts, seed, total steps, CFG, sampler, scheduler, size, denoise. That's the clean path: run your sampler through a pipe, feed it in here, and the metadata fills itself. There's no pipe output - it's a dead end in the pipe chain by design, because its only job is to collect and emit metadata.
Then come the widget overrides, and the rule is simple and consistent: a widget overrides the pipe when set, and falls back to the pipe when it isn't. Concretely:
positive/negative- multiline text. Set them to override the pipe's prompts.seed_value- a plain INT where-1means "use the pipe seed." Note it has no control-after-generate randomize - the author left that off deliberately; this is metadata capture, not a seed source.stepsandcfg-0means "use the pipe'stotal_steps/cfg_1."sampler/scheduler- empty means "use the pipe's."models- checkpoint names as one comma-separated string. The pack supports two-model dual-pass workflows, so this is literally "Model 1, Model 2" in a single field.civitai_air- a single Civitai AIR or model-page URL, the primary model only. No hash lookup, no multiple entries - LC Save Image turns this into thecivitaiResourcesJSON chunk.width/height/denoise-0means "use the pipe." And even if you leave them unset, the save node still writes the real pixel size of the image it saved, soSize:in the parameters line is always honest.extra_params- free text appended to the end of the parameters line, for LoRA tags, notes, or anything the widgets don't cover.
What comes out: metadata (the LC_SAVE_META socket) wires into LC Save Image's metadata input, and parameters is the actual A1111-style text block - positive prompt, Negative prompt:, then Steps: / Sampler: / CFG scale: / Seed: / Size: / Model: plus the Civitai resources JSON. Wire parameters into LC Show Text and you can eyeball exactly what's about to be embedded before you run. That flat string is the dialect Civitai's auto-detection reads, which is the whole reason this two-node setup exists: the built-in saver writes a graph nobody else parses, and this pair writes both the graph and the readable, hash-matched parameters. If you've ever uploaded a ComfyUI image to Civitai and watched it fail to credit the checkpoint, this is the fix.
The mental model for troubleshooting: empty widget + no pipe = that field simply isn't in the metadata, which is fine - nothing errors, the parameters line just lacks it. A seed of -1 with no pipe stays absent rather than randomizing. And because LC Save Image skips muted and bypassed branches when it collects hashes, feed this node from the live path of the graph, not a branch you've turned off.
Install is the pack-wide routine: ComfyUI Manager β search "LC123" (repo ComfyUI_LC123_nodes), or clone https://github.com/lonecatone23/ComfyUI_LC123_nodes into ComfyUI/custom_nodes, then restart. No extra pip dependencies or model files. Mind the nested-folder warning if you unzip a release inside an existing clone, and on hosted ComfyUI the pack generally needs to be installed by the platform before these nodes will appear.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | LC_PIPE | LC_PIPE in. Fills prompts, seed, steps, CFG, sampler, scheduler, size, denoise. Widgets override. | |
| positiveopt | STRING | Override pipe positive prompt. | |
| negativeopt | STRING | Override pipe negative prompt. | |
| seed_valueopt | INT | -1-1β18446744073709550000 | Seed. -1 = use pipe seed if present. Plain INT β no control-after-generate. |
| stepsopt | INT | 00β10000 | 0 = use pipe total_steps. |
| cfgopt | FLOAT | 0.000β100 | 0 = use pipe cfg_1. |
| sampleropt | STRING | Empty = use pipe sampler_name. | |
| scheduleropt | STRING | Empty = use pipe scheduler. | |
| modelsopt | STRING | Checkpoint names. Model 1 and Model 2 in one field, comma-separated. | |
| civitai_airopt | STRING | Primary Civitai AIR or model URL only. No hash lookup. | |
| widthopt | INT | 00β65536 | 0 = use pipe width (save node still writes the real pixel size). |
| heightopt | INT | 00β65536 | 0 = use pipe height. |
| denoiseopt | FLOAT | 0.000β1 | 0 = use pipe denoise if set. |
| extra_paramsopt | STRING | Appended to the parameters line (LoRAs, hashes, notes). |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| metadata | LC_SAVE_META | β |
| parameters | STRING | β |