ComfyUI Node Runs on cloud

Save ZIP

Bundle a workflow's output into an archive and know where it went

By WASasquatch·Created 3 years ago·Updated 4 days ago· 1,844
Save ZIP
  • zip
  • zip_path
  • file_count
root
filename_prefixarchive
filename_delimiter_
filename_number_padding4
filename_suffix

Save ZIP is the output end of WAS Node Suite's archive category: it takes a ZIP - built upstream by the pack's ZIP Add or Open ZIP nodes - and writes it as a numbered file under ComfyUI's output, then tells you exactly where it landed. In a workflow that generates a folder's worth of deliverables per run - images, captions, a styles export, a document - this is the node that hands the customer (or your own archive) one tidy .zip instead of a scatter of files.

It's deliberately thin. It doesn't gather anything itself; the pack's ZIP nodes before it decide what goes in the archive, and Save ZIP only decides where it's written and what it's called. Think of it as the "file this batch" step: everything upstream collects, this node ships.

The controls

  • zip - the archive to write, from ZIP Add or Open ZIP. It's written exactly as it stands, so any naming or structure inside was decided upstream.
  • root - which folder the file lands in: ComfyUI's own output or temp, or any folder you added under paths.allow_write in config.yaml.
  • filename_prefix - start of the name. archive gives archive_0001.zip.
  • filename_delimiter - between prefix and number (_ or -).
  • filename_number_padding - digits padded: 4 gives archive_0001.zip; 0 writes archive.zip with no number, which replaces a file already there rather than incrementing.
  • filename_suffix - extra text after the number and before .zip; _final gives archive_0001_final.zip.

Outputs

zip_path is the full path of the archive written - wire it into a report node or a log so the run records where its deliverable went. file_count is how many files the archive holds, which doubles as a sanity check: if you expected 40 images and it says 3, whatever you fed the ZIP upstream wasn't what you thought.

How it fits

A typical graph: collect your per-run outputs (Number Range drives the loop, Image Save writes frames) → gather the file list → ZIP Add builds the archive on the wire → Save ZIP writes it out. If you want multiple zips per run (one per subject, say), run the collection per-loop and let filename_number_padding keep each write from clobbering the last - set it to 0 only when you deliberately want one archive that overwrites itself each run.

Installing

Save ZIP ships in WAS Node Suite v3. ComfyUI Manager → search WAS Node Suite v3, or:

cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui

Restart after; needs ComfyUI 0.14.0+ and Python 3.10+. Nothing extra installs and nothing downloads - ZIP writing uses Python's own archive support, consistent with v3's zero-dependency stance.

One containment note, same as the pack's other writers: the file must land in a folder the pack may write to (output, temp, or a paths.allow_write entry). If you need archives on another drive for delivery, add that folder to paths.allow_write and restart rather than fighting the boundary.

CategoryWAS Suite/Archive

Inputs (6)

NameTypeDefaultDescription
zipZIPThe archive to write, from ZIP Add or Open ZIP. It is written exactly as it stands.
rootCOMBOWhich folder the file lands in: ComfyUI's own 'output' or 'temp', or any folder added under paths.allow_write in config.yaml, listed by its own name. filename_prefix names the part below it, so '[time(%Y-%m-%d)]/notes' files each day's under a dated folder.
filename_prefixSTRINGarchiveStart of the file name, before the delimiter and the number. 'archive' gives archive_0001.zip. Eg: renders
filename_delimiterSTRING_What sits between the prefix and the number. '_' gives archive_0001.zip and '-' gives archive-0001.zip. Eg: _
filename_number_paddingINT40–9Digits the number is padded to, so 4 gives 'archive_0001.zip'. 0 writes 'archive.zip' with no number, which replaces a file of that name already in the folder.
filename_suffixoptSTRINGAdded after the number and before '.zip'. Empty adds nothing. Eg: _final

Outputs (2)

NameTypeDescription
zip_pathSTRINGThe full path of the archive that was written.
file_countINTHow many files the written archive holds.