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 about a month ago· 1
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