Nodes/Umbra Nodes/Save Image (Umbra Lab)
ComfyUI Node

Save Image (Umbra Lab)

A save node that writes your PNG, your workflow, and an A1111-readable settings string

By Nocturne-Ai-Labs·Created 2 months ago·Updated 10 days ago· 0
Save Image (Umbra Lab)
  • images
  • positive
  • negative
    filename_prefixUmbraLab_%date%
    positive_prompt
    negative_prompt
    output_folder
    save_to_yyyy_mm_dd_folderfalse
    save_to_set_subfolderfalse
    set_subfolder
    save_set_to_style_subfolder
    model_name
    seed0
    steps20
    cfg7.0
    sampler_nameeuler
    schedulernormal
    output_formatpng
    output_quality90

    ComfyUI's default SaveImage already embeds the workflow in the PNG. Save Image (Umbra Lab) does that, then keeps going: it also writes an A1111-style parameters string and a civitai_metadata block, so the same file is readable by ComfyUI, by A1111's PNG Info tab, and by CivitAI's uploader. If you've ever dragged a PNG into CivitAI and watched it fail to detect the prompt, this is the node that fixes the class of problem - the file gets the dialect every tool in the ecosystem expects.

    How it works

    On every save it writes three kinds of metadata into the PNG text chunks:

    • ComfyUI standard - the workflow and prompt JSON chunks, so dragging the PNG back into ComfyUI rebuilds the graph as usual.
    • A1111 parameters - a flat prompt\nNegative prompt: ...\nSteps: ..., Sampler: ..., CFG scale: ..., Seed: ..., Model: ..., Size: ... string. That's exactly the format A1111's PNG Info reads and re-applies.
    • civitai_metadata - a structured payload with the prompt and model resources, which CivitAI's uploader picks up.

    Beyond the metadata, there's real file-management muscle. filename_prefix supports %date% (the default is UmbraLab_%date%). The optional folder inputs give you save_to_yyyy_mm_dd_folder (date-dated subfolders that roll over at midnight), save_to_set_subfolder + set_subfolder for grouping batches, and save_set_to_style_subfolder for organizing a set by style. output_folder lets you point saves anywhere instead of the default output dir.

    The inputs a beginner sets

    • images - what to save.
    • filename_prefix - the base name; %date% becomes the date.
    • positive_prompt / negative_prompt - the text to record. The node also accepts positive / negative CONDITIONING inputs and, cleverly, can pull the actual prompt text out of your workflow if you leave the text fields empty, so you don't have to maintain prompts twice.

    The rest - model_name, seed, steps, cfg, sampler_name, scheduler - are all optional and exist so you can wire the real values from a sampler (the Umbra KSamplers output exactly these) rather than typing them. Per-batch values are supported, so a batch of images records each image's own seed.

    Installing it

    Part of Umbra-Nodes, the ComfyUI companion pack for Umbra Studio (NocturneLabs' open-source local AI creation suite). ComfyUI Manager → search "Umbra Nodes", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Nocturne-Ai-Labs/Umbra-Nodes
    

    Restart ComfyUI. No pip deps, no models - it uses ComfyUI's own PNG-saving machinery.

    Gotchas

    The metadata is written into the PNG text chunks, which means the same rules as every ComfyUI save apply: re-encoding kills it. Upload to a host that recompresses (Reddit, most Discord previews) and the workflow and A1111 string are gone - share the original file. Also, SaveImage-class nodes write to ComfyUI/output/ permanently, unlike PreviewImage's temp folder, so don't leave this in the graph during heavy iteration or you'll bury yourself in PNGs; swap in a preview node until you're ready to commit. If positive_prompt is empty and you didn't wire conditioning, the recorded prompt may be blank - the workflow-extraction fallback only kicks in when it can find a CLIP Text Encode upstream.

    CategoryUmbra Lab

    Inputs (19)

    NameTypeDefaultDescription
    imagesIMAGE
    filename_prefixSTRINGUmbraLab_%date%
    positive_promptSTRING
    negative_promptSTRING
    positiveoptCONDITIONING
    negativeoptCONDITIONING
    output_folderoptSTRING
    save_to_yyyy_mm_dd_folderoptBOOLEANfalse
    save_to_set_subfolderoptBOOLEANfalse
    set_subfolderoptSTRING
    save_set_to_style_subfolderoptSTRING
    model_nameoptSTRING
    seedoptINT00–18446744073709550000
    stepsoptINT201–10000
    cfgoptFLOAT7.00–100
    sampler_nameoptSTRINGeuler
    scheduleroptSTRINGnormal
    output_formatoptCOMBOpng3 options: png, jpeg, webp
    output_qualityoptINT901–100

    Outputs (0)

    No outputs