Nodes/Pipedream/πŸ’­ PD Output Relative
ComfyUI Node

πŸ’­ PD Output Relative

Token-based saving into your output folder

By TheOnlyAaronΒ·Created 5 months agoΒ·Updated 5 months agoΒ· 4
πŸ’­ PD Output Relative
  • images
  • context
  • written_path
β—„template{project}/{sequence}/{shot}/{shot}_{version}_{date}β–Ί
β—„frame_padding4β–Ί
β—„extensionβ–Ύβ–Ί
β—„create_dirstrueβ–Ί
β—„overwritefalseβ–Ί

Every ComfyUI user has a folder full of ComfyUI_00001_.png and no idea which render is which. The stock Save Image node names everything by date and a counter, and renaming files by hand is the kind of task you should never do twice. πŸ’­ PD Output Relative fixes this the way a studio would: you write one template like {project}/{sequence}/{shot}/{shot}_{version}_{date}, and every image it saves lands in ComfyUI's output directory at the correct path with the correct name, resolved automatically from your project metadata.

It's the default-output variant of the Pipedream pack. If you need to write somewhere outside ComfyUI's output folder - a network share, a mapped drive - use πŸ’­ PD Output Absolute instead. (And if you've seen a node called PDOutputNamer in an old workflow, that's this node under its previous name; it used to only build the filename, and in 0.2.0 it learned to actually save the image.)

The inputs that matter

  • images - your IMAGE tensor from the VAE decode. This is an output node; it replaces Save Image.
  • template - the pattern, default {project}/{sequence}/{shot}/{shot}_{version}_{date}. Slashes become subfolders, and the node creates them for you.
  • frame_padding (default 4) and extension (png, exr, jpg, webp) - how the {frame} placeholder pads out and which encoder to use.
  • context - the PROJECT_CONTEXT from πŸ’­ PD Project Context / πŸ’­ PD Custom Context. This is where {project}, {shot}, and any custom tokens come from; leave it disconnected and auto tokens like {date} and {time} still work, but your metadata tokens stay literal.

The single output, written_path, is the path of the first file written. There's also a nice touch: after execution, a read-only panel on the node lists every token and its current value, so you can see at a glance what {shot} resolved to.

The two toggles that bite

  • create_dirs (default on) - builds the folder tree automatically. Turn it off if you'd rather fail loudly on a missing directory.
  • overwrite (default off) - here's the trap. Re-run the same workflow and the target file already exists, so the node skips writing and prints an error to the console. In shot work that's protection for approved frames; mid-iteration it's confusing until you realize the old file is shadowing the new one. Also note a multi-image batch gets _0001, _0002… appended, so one batch becomes a proper sequence.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/TheOnlyAaron/comfyui-pipedream

Restart ComfyUI, or install "Pipedream" via ComfyUI Manager. No dependencies, no model downloads - the pack is pure stdlib, which after a few rounds of custom-node dependency hell is genuinely refreshing.

Gotchas

  • The token engine is strict in the most helpful way: unknown tokens are left in the filename (so {versoin} shows up literally) and a warning goes to the console. Read the console, fix the typo.
  • {date} and {time} resolve at execution time to YYYYMMDD and HHMMSS. Great for uniqueness, terrible for stable file names - if you're iterating on one shot, drop {date} from the template and pin the version via context instead, or the filename changes every day and your overwrite guard never gets the chance to do its job.
CategoryPipedream

Inputs (7)

NameTypeDefaultDescription
imagesIMAGEβ€”
templateSTRING{project}/{sequence}/{shot}/{shot}_{version}_{date}β€”
frame_paddingINT41–8β€”
extensionCOMBO4 options: png, exr, jpg, webp
contextoptPROJECT_CONTEXTβ€”
create_dirsoptBOOLEANtrueβ€”
overwriteoptBOOLEANfalseβ€”

Outputs (1)

NameTypeDescription
written_pathSTRINGβ€”