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

Save Image Simple (Umbra Lab)

The save node that figures out your prompt so you don't have to type it

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

    Save Image Simple (Umbra Lab) is the low-friction version of Umbra's metadata save node. Required inputs: images and a filename_prefix. That's it. Everything else - the prompt text, the model name, the generation settings - is either pulled out of your workflow automatically or wired in as optional inputs. If you're tired of maintaining a save node's prompt fields by hand, this is the one that stops asking.

    How it works

    The clever bit is the auto-extraction. When you leave the prompt fields empty, it walks the workflow graph looking for CLIP Text Encode nodes and pulls the text from them, using a keyword heuristic (ugly, bad, worst, blurry, deformed) to guess which one is the negative. It also extracts the model name the same way - from the checkpoint loader upstream, or from a model_info MODEL input if you wire one in. So a plain Latent → KSampler → this node graph saves a PNG whose metadata already says what prompt, model, and settings produced it.

    Like its big sibling, it writes both the ComfyUI workflow chunks and an A1111-compatible parameters string into the PNG, and it supports the same folder organization - save_to_yyyy_mm_dd_folder, save_to_set_subfolder + set_subfolder, save_set_to_style_subfolder, and a custom output_folder. The %date% in the default filename prefix becomes the save date.

    What you actually set

    The full optional list is long but you'll touch a small slice:

    • images and filename_prefix - the only required ones.
    • positive / negative CONDITIONING - optional; feed these and it derives the prompt text from them instead of guessing.
    • seed, steps, cfg, sampler_name, scheduler, model_name - optional, for accurate recorded settings. Wire them from the sampler's outputs if your graph has them; otherwise it records defaults.

    There are two sampler inputs, sampler_name (a dropdown of 14 common samplers) and sampler_name_text (a free-string override) - the wired text value wins if both are present, which is a small compat convenience for graphs that carry the sampler as a string.

    Installing it

    Part of Umbra-Nodes, the ComfyUI companion pack for Umbra Studio (NocturneLabs' open-source local AI 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.

    Gotchas

    The auto-extraction is a heuristic, and heuristics mislabel. If your workflow has more than one positive CLIP Text Encode, or a weirdly-worded negative that avoids the keyword list, the recorded prompt can be wrong - that's exactly why the explicit text and conditioning inputs exist, so wire them when correctness matters. The heuristic only fires when the fields are empty; fill one in and it wins. And remember the universal save-node rule: this writes permanent PNGs to ComfyUI/output/, and any host that recompresses your file will strip the metadata on upload - share the original bytes, not a screenshot or a re-encoded copy.

    CategoryUmbra Lab

    Inputs (19)

    NameTypeDefaultDescription
    imagesIMAGE
    filename_prefixSTRINGUmbraLab_%date%
    positiveoptCONDITIONING
    negativeoptCONDITIONING
    output_folderoptSTRING
    save_to_yyyy_mm_dd_folderoptBOOLEANfalse
    save_to_set_subfolderoptBOOLEANfalse
    set_subfolderoptSTRING
    save_set_to_style_subfolderoptSTRING
    positive_promptoptSTRING
    negative_promptoptSTRING
    model_infooptMODEL
    seedoptINT00–18446744073709550000
    stepsoptINT201–10000
    cfgoptFLOAT7.00–100
    sampler_nameoptCOMBO14 options: euler, euler_ancestral, heun, dpm_2, dpm_2_ancestral, lms, +8
    sampler_name_textoptSTRING
    scheduleroptSTRINGnormal
    model_nameoptSTRING

    Outputs (0)

    No outputs