Nodes/ComfyUI Flux Prompt Saver/πŸˆβ€β¬› Flux Prompt Saver
ComfyUI Node

πŸˆβ€β¬› Flux Prompt Saver

Save Flux images with metadata your Discord bots and organizers can actually read

By markuryyΒ·Created 2 years agoΒ·Updated 2 years agoΒ· 16
πŸˆβ€β¬› Flux Prompt Saver
  • images
  • params
    β—„positiveβ€”β–Ί
    β—„model_nameβ€”β–Ί
    β—„filename_prefix%date:yyyy-MM-dd%β–Ί
    β—„filenameFLUX_%date:HHmmss%β–Ί
    β—„negativeβ€”β–Ί

    Why a separate saver at all

    ComfyUI's default Save Image embeds the full workflow JSON in the PNG - great for dragging the file back into ComfyUI and reconstructing your graph, useless for everything else. The other half of the ecosystem - Discord prompt-reader bots, prompt readers, image organization tools (the README's own list) - reads the classic A1111 "parameters" text chunk instead. This node writes that chunk.

    So the workflow gets one sink: Flux Text Sampler β†’ VAE decode β†’ this, and every PNG carries positive, Negative prompt, Steps, Sampler, CFG scale, Seed, Size, Model in a format Stable Diffusion tools have read for years. If you've ever dragged a ComfyUI render into a bot and got back "no prompt found," you already know why this node exists.

    What it takes in

    • images (IMAGE) - your decoded output.
    • params (SAMPLER_PARAMS) - wire the params output of the bundled Flux Text Sampler here. The fields it reads directly are steps, sampler, scheduler, width, and height, with guidance, seed, and model_hash read leniently - so another SAMPLER_PARAMS source works as long as it carries those keys.
    • positive (STRING) and optional negative (STRING) - wire from your prompt text nodes. An empty negative is recorded as "(not used)", which keeps the metadata clean for A1111 readers.
    • model_name (STRING) - wire from the pack's Model Name node so the saved metadata records which model you actually used.
    • filename_prefix and filename - the two inputs that make this worth having. filename_prefix is the subfolder (default %date:yyyy-MM-dd%), filename is the file name (default FLUX_%date:HHmmss%). Directories get created on the fly, and colliding filenames auto-increment to _1, _2, so nothing gets silently overwritten.

    That split into separate path and filename inputs is the 2.0.0 breaking change - older versions took a single path string, so any pre-2.0 workflow needs its inputs rewired.

    The date formatting

    %date:FORMAT% where FORMAT uses readable tokens: yyyy, MM, dd, HH, mm, ss, each mapped to the equivalent strftime code. %date:yyyy-MM-dd% as the subfolder plus FLUX_%date:HHmmss% as the filename gives you output/2026-08-16/FLUX_143022.png and friends. Predictable and easy to read at a glance.

    Two gotchas the README won't warn you about. First, the README's placeholder list includes %width%, %height%, and %seed% - but the shipped code only expands date tokens, so those stay literal in your filenames. Don't build filenames on the seed; you'll get files literally named img_%seed%.png. Second, this node writes the A1111 chunk and not the ComfyUI workflow JSON, so you can't drag these PNGs back into ComfyUI to restore the graph. They're for the metadata ecosystem, not for workflow sharing. Want both? Run a plain Save Image alongside it.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/markuryy/ComfyUI-Flux-Prompt-Saver
    

    then restart ComfyUI, or search "ComfyUI Flux Prompt Saver" in ComfyUI Manager. Pure Python, no pip dependencies, no models to download. The example workflow in the README needs Impact Pack, ComfyUI-Custom-Scripts, and Comfyroll installed before it loads - but the saver node itself runs on a stock install.

    Categoryimage

    Inputs (7)

    NameTypeDefaultDescription
    imagesIMAGEβ€”
    paramsSAMPLER_PARAMSβ€”
    positiveSTRINGβ€”
    model_nameSTRINGβ€”
    filename_prefixSTRING%date:yyyy-MM-dd%Subfolder to save the images in. Supports date formatting like %date:yyyy-MM-dd%
    filenameSTRINGFLUX_%date:HHmmss%Filename for the image. Supports date formatting like %date:HHmmss%
    negativeoptSTRINGβ€”

    Outputs (0)

    No outputs