Nodes/Violet Tools ๐Ÿ’…/๐Ÿงœโ€โ™€๏ธ Save Siren
ComfyUI Node

๐Ÿงœโ€โ™€๏ธ Save Siren

Save PNGs with upload-ready A1111 metadata

By leylahvioletยทCreated 12 months agoยทUpdated 10 months agoยท 14
๐Ÿงœโ€โ™€๏ธ Save Siren
  • image
  • model
  • metadata
โ—„steps25โ–บ
โ—„cfg7.5โ–บ
โ—„samplereuler_ancestralโ–บ
โ—„filename_prefixVioletโ–บ
โ—„positiveโ€”โ–บ
โ—„negativeโ€”โ–บ
โ—„seedโ€”โ–บ

Save Siren is the pack's image saver, and it exists to solve one very specific annoyance: your PNGs losing their generation info the moment you upload them. ComfyUI's default save node embeds a huge workflow blob that some image-hosting sites choke on or strip, which is why an image you generated with a gorgeous, shareable prompt sometimes arrives at its destination as a bare picture with no metadata. Save Siren instead writes a compact metadata block in the A1111 "parameters" format, the one Civitai and the rest of the stable-diffusion ecosystem actually recognize.

So the pitch: generate an image, save it through Save Siren, and your positive prompt, negative prompt, model name and hash, LoRAs, steps, CFG, sampler, and seed all ride along in the file and get picked up automatically when you post it. If you share outputs anywhere, this node quietly earns its place at the end of the graph.

How it works

Save Siren inspects the workflow's prompt and extra_pnginfo (the hidden inputs it grabs from ComfyUI) to detect which checkpoint and LoRAs you used, then resolves model names and hashes - including a Civitai filename resolution pass so the metadata references the model by a name the ecosystem recognizes. It then embeds the compact JSON under a custom vt_json key and writes an A1111-style parameters text chunk, plus separate model_name, model_hash, and loras fields, so uploaders find what they're looking for regardless of which field they prefer.

The actual save handles the fiddly stuff too: folder paths in filename_prefix create nested output directories automatically (sanitized for safety), and batches save every image - each named Violet-timestamp-000.png, 001, etc., with the seed incremented per image so each file's metadata matches what generated it.

The fields that matter

The required four are the ones you type to describe your run:

  • steps, cfg, sampler - just re-enter what your KSampler used. The metadata is only as truthful as what you type, so keep them in sync.
  • filename_prefix - filename base; supports folders like portraits/Violet or projects/client1/fantasy/Violet.

Optional inputs make the metadata complete: image (the image to save), model (for name/hash extraction), positive / negative (the actual prompts), and seed. The output, metadata, is a STRING containing the A1111 parameters block - wire it to a Show Text node if you want to eyeball what got embedded.

Installing it

Same pack, same story. Via ComfyUI Manager, search Violet Tools, or:

cd ComfyUI/custom_nodes
git clone https://github.com/leylahviolet/ComfyUI-Violet-Tools.git

Restart ComfyUI; it appears under Violet Tools ๐Ÿ’… โ†’ Utility. No model downloads; dependencies are PyYAML, rapidfuzz, and requests. (One note: the README's tooltip mentions a placeholder image when none is connected, but in the shipped code an unwired image just returns a "No image provided" status - you need the image wired in to get a file.)

Where people get tripped up

  • Missing image. The node saves the image you give it; nothing connected means no file, just a status string. Wire the image output from your VAE Decode.
  • Stale metadata. If you change sampler or CFG after the fact, update the node's fields - the embedded info is whatever you typed, and an upload site will read it as ground truth.
  • Batch naming. Batches save with -000, -001 suffixes and per-image seed increments. That's the feature, not a bug - each file's metadata matches its actual content.
  • Upload still not reading it. Some sites only trust their own formats; Save Siren covers JSON, A1111 parameters, and the common model_name/model_hash/loras fields, which is broad, but if a site ignores all of those, no saver will fix it.

It's a small, niche pack with a thin community footprint, so troubleshooting usually means reading the README rather than finding a thread. The good news: Save Siren is the most self-contained node in the pack - if it's installed, it just works.

CategoryViolet Tools ๐Ÿ’…/Utility

Inputs (9)

NameTypeDefaultDescription
stepsINT251โ€“1000โ€”
cfgFLOAT7.50โ€“100โ€”
samplerCOMBOeuler_ancestral44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
filename_prefixSTRINGVioletPrefix for saved filename. Supports folders: 'folder/Violet', 'portraits/fantasy/Violet', etc.
imageoptIMAGEImage to save (creates 1x1 placeholder if missing)
modeloptMODELModel object to extract name/hash from
positiveoptSTRINGPositive prompt
negativeoptSTRINGNegative prompt
seedoptINTGeneration seed

Outputs (1)

NameTypeDescription
metadataSTRINGโ€”