Nodes/Bawk Nodes Collection/πŸ’Ύ Bawk Image Saver
ComfyUI Node

πŸ’Ύ Bawk Image Saver

Save, organize, and optionally shout your renders into Discord

By juddisjuddΒ·Created about a year agoΒ·Updated 10 days agoΒ· 7
πŸ’Ύ Bawk Image Saver
  • images
    β—„prefixflux_imageβ–Ί
    β—„formatpngβ–Ί
    β—„quality95β–Ί
    β—„save_metadatatrueβ–Ί
    β—„save_prompttrueβ–Ί
    β—„send_to_discordfalseβ–Ί
    β—„discord_webhook_urlβ–Ί
    β—„model_stringβ€”β–Ί
    β—„processed_promptβ€”β–Ί
    β—„lora_infoβ€”β–Ί

    The pack's output node, and where the "organized" part of the pitch lands. Bawk Image Saver takes the images from Bawk Sampler, names them, files them under model-and-date folders, saves a sidecar text file of the exact prompt that made them, and - if you want - posts them to a Discord channel via webhook. For batch content work, that last bit is what turns "generate 50 images" into "generate 50 images and they show up in my team's channel."

    How it works

    It saves into ComfyUI/output/ under a folder named [modelname]-DD-MM-YYYY, built from the model_string you pass in (that's the MODEL_STRING output of Bawk Model Loader or Z-Image Loader) and today's date. Files are named prefix_DD-MM-YYYY_HH-MM-SS_NNN.ext, with a counter so you never overwrite. It writes PNG metadata when save_metadata is on, drops a _prompt.txt beside the image when save_prompt is on, and if send_to_discord is true it posts the saved files to your discord_webhook_url via a plain HTTP POST.

    The inputs that matter

    • images - from Bawk Sampler's images output.
    • model_string - from the loader's MODEL_STRING output. Wire it or your folders get ugly.
    • processed_prompt - from Bawk Wildcard Encoder's PROMPT_OUT. This is the resolved prompt (post-wildcard), so the saved text file reflects what actually rendered, not the {random|template}.
    • prefix - filename prefix, default flux_image.
    • format - png, jpg, or webp, with quality (1–100, default 95) for the lossy ones.
    • save_metadata / save_prompt - both default true. Turn save_prompt off if your batch floods your disk with .txt files.
    • send_to_discord + discord_webhook_url - the webhook only matters when the toggle is on. Empty URL + toggle on = a logged failure, no crash.

    It has no outputs - it's a terminal node, the last thing in your graph. The images show up in the ComfyUI UI preview from its ui result.

    Install

    Same pack install - ComfyUI Manager β†’ search "Bawk Nodes" β†’ install β†’ restart, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/juddisjudd/ComfyUI-BawkNodes.git
    

    It uses requests (in the pack's requirements) for the Discord post; everything else is stock.

    Gotchas

    • Discord needs a webhook URL, created in a Discord server's channel settings (Integrations β†’ Webhooks). The node won't create one for you.
    • model_string is optional-looking but not optional in spirit. Leave it empty and your folder name degrades to []-16-08-2026. Feed it and you get [flux1-dev]-16-08-2026. One wire, worth it.
    • Metadata travels differently per format. PNG gets proper embedded metadata via pnginfo; for JPG/WebP the node writes a JSON metadata file alongside instead.
    • Batch-aware: each image in a multi-image batch gets its own file with a _001, _002 counter, so nothing collides.

    It's the least glamorous node in the pack and the one you'll thank yourself for when you're digging through 400 renders looking for the good seed.

    CategoryBawkNodes/image

    Inputs (11)

    NameTypeDefaultDescription
    imagesIMAGEβ€”
    prefixSTRINGflux_imageβ€”
    formatCOMBOpng3 options: png, jpg, webp
    qualityINT951–100jpg / webp quality
    save_metadataBOOLEANtrueEmbed the workflow in PNG files (drag back into ComfyUI). jpg / webp get a .json sidecar
    save_promptBOOLEANtrueAlso write the final prompt to a .txt file
    send_to_discordBOOLEANfalsePost the images to a Discord webhook
    discord_webhook_urlSTRINGβ€”
    model_stringoptSTRINGMODEL_STRING from Bawk Model Loader (used for the folder name)
    processed_promptoptSTRINGPROMPT_OUT from Bawk Wildcard Encoder
    lora_infooptSTRINGLORA_INFO from Bawk Wildcard Encoder

    Outputs (0)

    No outputs