Nodes/Spellcaster Nodes/Spellcaster Output (Privacy)
ComfyUI Node

Spellcaster Output (Privacy)

Save PNGs without leaking your exact prompt and workflow in the metadata

By laboratoiresonore·Created 5 months ago·Updated 3 months ago· 1
Spellcaster Output (Privacy)
  • samples
  • vae
  • image
filename_prefixSpellcaster
strip_metadatatrue

Here's the thing most people don't realize about ComfyUI's stock SaveImage: it embeds the entire workflow JSON into the PNG's metadata. Your exact prompt, the negative, the seed, the node graph - all of it, readable by anyone who opens the file. "Workflow included" is a culture norm in this community, and it's genuinely useful for sharing, but it's also a prompt leak if you post images anywhere you don't want your process public. SpellcasterOutput is a VAEDecode + SaveImage combo with metadata stripping turned on by default. You get the image; the PNG carries a clean slate.

It's the end of the ComfyUI-Spellcaster chain: SpellcasterSampler hands it a latent, the VAE from SpellcasterLoader decodes it, and out comes a file.

How it works

Not magic - it follows ComfyUI's own save pattern exactly. The samples latent goes through vae.decode(), then the result is saved to your output folder with a timestamped, numbered filename like Spellcaster_00001_.png. The privacy part is in the metadata branch:

  • strip_metadata = true (default) - no PngInfo is attached at all. No prompt, no workflow, no generator string. The PNG is just pixels.
  • strip_metadata = false - it writes a Generator: Spellcaster tag plus the prompt and any extra PNG info, the standard ComfyUI way.

Same PNG, two completely different footprints. The node also returns the decoded image tensor, so you can chain it into a preview or further processing without a separate VAEDecode.

The inputs that matter

  • samples - the LATENT from your sampler.
  • vae - the VAE decoder, from the Loader or any standalone VAELoader.
  • filename_prefix - default Spellcaster; supports ComfyUI formatting like %date:yyyy-MM-dd% so you can get dated filenames.
  • strip_metadata - boolean, default true. This is the whole point of the node; flip it off only when you want the workflow embedded.

Install

It's one of the four core nodes in the ComfyUI-Spellcaster pack, so:

cd ComfyUI/custom_nodes
git clone https://github.com/laboratoiresonore/ComfyUI-Spellcaster.git

or search "Spellcaster" in ComfyUI Manager, then restart. The README claims no pip dependencies, and while requirements.txt lists huggingface_hub and zeroconf they're soft-optional - this node in particular uses only what ComfyUI already ships (Pillow, numpy).

The trade-off to be honest about

Metadata stripping is a privacy feature with a price: a stripped PNG can't be dragged back into ComfyUI to reconstruct the workflow. That's the entire point - but it means you're breaking the "workflow included" convention, and if you're sharing a recipe people want to learn from, you'll be the annoying person who posts "wish I could see your workflow." If you want the best of both, keep stripping on for your public exports and toggle it off when you save the canonical copy you intend to share as a tutorial. Also worth knowing: this strips metadata but does not encrypt anything. If you need the file unreadable even by people who have disk access, that's what the pack's sibling PrivateEncryptSaveImage is for.

CategorySpellcaster

Inputs (4)

NameTypeDefaultDescription
samplesLATENTLatent samples from the sampler.
vaeVAEVAE decoder (from Spellcaster Loader or standalone).
filename_prefixSTRINGSpellcasterPrefix for saved files. Supports ComfyUI formatting like %date:yyyy-MM-dd%.
strip_metadataoptBOOLEANtrueStrip generation parameters from PNG metadata (prompt, workflow). Enabled by default for privacy.

Outputs (1)

NameTypeDescription
imageIMAGEDecoded image tensor (for chaining to preview/other nodes).