Power Save Image
The save node that thinks about your CivitAI upload before you do
- image
Most ComfyUI save nodes do one of two things: dump every scrap of workflow data into the PNG (which is great for you, annoying for everyone you share with), or write a bare image with no metadata at all (which CivitAI may quietly down-rank, and since its 2025 policy, outright won't keep visible for NSFW uploads). Power Save Image is the "read the room" option: it writes a clean, CivitAI-ready file to one folder for sharing, and - if you want it - a separate full archive of the entire workflow somewhere else. Two outputs, two audiences, one node.
How it works
The node saves two independent things, each with its own toggle and its own path:
- Share image (on by default). Writes a PNG or JPEG into your share folder carrying an A1111-style
parametersstring - prompt, negative prompt, steps, sampler, scheduler, CFG, seed, size, model - as PNG tEXt metadata, or as an EXIFUserCommentfor JPEG. This is the exact format CivitAI's metadata reader knows, which is the "CivitAI-ready" claim and it's accurate. - Full flow archive (off by default). Writes a PNG with the complete prompt and workflow embedded, plus a separate
.txtwith the whole thing as pretty-printed JSON. This is your reproducibility copy - the file you keep, never the one you post.
The philosophy is deliberately "share-safe by default": the share file only ever contains the metadata you explicitly wired in, not your entire node graph. If you want the archive, you turn it on.
Inputs that matter
- image - what you're saving, from a VAE Decode.
- share_output_path / full_output_path - subfolders under your ComfyUI output dir (defaults
output/shareandoutput/full). Both support time macros like[time(%Y-%m-%d)]in the path, which is handy for dated folders. - save_share_image / save_full_flow - the two toggles above.
- filename_prefix - base name (default
power); the node appends a timestamp. - format - PNG or JPEG, with jpeg_quality (70–100, default 95) when JPEG.
Then the optional metadata fields: positive_prompt, negative_prompt, model_name, seed, steps, cfg, sampler, scheduler, width, height. These build the parameters string, and here's the trap for beginners: they're all empty by default. If you only wire in the image and save, you'll get a perfectly valid file with a metadata line that reads "Negative prompt: " and zeros for everything else.
The wiring that makes it good
This is where the rest of the pack pays off. Feed the Power Diffusion Model Loader's model_name output into this node's model_name. Feed your actual prompt text in (the Power Text Concat output works great), your seed, your sampler names. Then the parameters string is real, and your uploads carry the whole story. The pack is built so this node is the end of a deliberate pipeline, not a bolt-on.
Install
It's part of the CornmeisterNL PowerPack - install once, use all seven nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Cornmeister/ComfyUI-CornmeisterNL-PowerPack.git
Restart ComfyUI. Or ComfyUI Manager → search "CornmeisterNL PowerPack". Dependencies are just requests and Pillow, both already in any normal ComfyUI install.
Where people get burned
- Blank metadata - you wired image only. Wire the optional fields, or accept that the share file says nothing useful.
- "Invalid output path" - the node deliberately blocks
..and absolute paths; everything must stay inside your output folder. That's a safety feature, not a bug. - JPEG vs PNG metadata differences - PNG gets a
parameterschunk, JPEG gets EXIF. Both are readable by CivitAI's tooling; if some reader complains about one, that's why. - Full flow is off by default - if you came for the archive, flip
save_full_flowon. Plenty of people run with just the share half and never notice.
It's one of those nodes you don't appreciate until you upload a batch and every image has its prompt attached - and the ones you'd rather keep private have nothing but pixels.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| share_output_path | STRING | output/share | — |
| full_output_path | STRING | output/full | — |
| save_share_image | BOOLEAN | true | — |
| save_full_flow | BOOLEAN | false | — |
| filename_prefix | STRING | power | — |
| format | COMBO | PNG | 2 options: PNG, JPEG |
| positive_promptopt | STRING | — | |
| negative_promptopt | STRING | — | |
| model_nameopt | STRING | — | |
| seedopt | INT | 0 | — |
| stepsopt | INT | 0 | — |
| cfgopt | FLOAT | 0.00 | — |
| sampleropt | STRING | — | |
| scheduleropt | STRING | — | |
| widthopt | INT | 0 | — |
| heightopt | INT | 0 | — |
| jpeg_qualityopt | INT | 9570–100 | — |
Outputs (0)
No outputs