Fast Absolute Saver (Metadata)
Save images anywhere, as PNG, WebP, or video, with your scores in the filename
- images
- audio
- latent
- latent
Fast Absolute Saver is the pack's heavyweight: a save node built for dataset pipelines, not for sharing pretty outputs on Civitai. The default output_path - D:\Datasets\Sharp_Output - tells you exactly who this is for: someone assembling a training set folder, usually sharpness-filtered, and wanting every frame saved fast, scored, and named in a way a script can sort. It writes to any absolute path you give it, saves PNG or WebP stills or encodes an image batch straight to video, and can append a quality score to each filename so the dataset curates itself.
How it works
On execution it moves the whole batch off the GPU in one shot, then either runs the image path (threaded PNG/WebP saving via a thread pool - max_threads, 0 = auto) or hands the frames to ffmpeg for video. Filenames follow prefix_NUMBER with configurable padding; auto_increment scans the target folder once and starts at the highest existing number so you don't overwrite previous runs, and use_timestamp instead stamps a unique time suffix.
The scores_info input is the interesting bit: it's a plain STRING that the node parses for per-frame scores (F:<frame> ... Score: <n>). When you connect the text output of a sharpness-scoring node, each file gets its number baked into the name (frame_0001_87.png), and metadata_key (default sharpness_score) names the value written into the PNG's metadata. That's the whole dataset trick - score in the filename, score in the file, sorted folder.
The inputs that matter
output_path- absolute destination. Relative paths are joined onto ComfyUI's base directory, and the default is a Windows path; on Linux/macOS you must change it. Missing folders are created.save_format- 13 options.pngandwebpare stills; the rest are video containers (mp4,webm,h265-mp4,av1-mp4,gif,ffv1-mkv,prores-mov) plus three NVENC GPU variants. The node shows only the widgets relevant to the chosen format.scores_info(optional) - the score text to parse; skip it and you just get cleanprefix_NUMBERnames.audio(optional AUDIO) andlatent(optional LATENT) - audio gets muxed into video encodes;latentis passed through thelatentoutput and, withsave_latent, written as a.latentsidecar next to each media file.
Video and the ffmpeg gotcha
Video formats need a real ffmpeg binary. The node looks for one in this order: a bundled copy in its own folder → imageio_ffmpeg (shipped by VideoHelperSuite if you have it) → system PATH → and if none exists (or you picked an nvenc_* format), it downloads a ~125 MB static NVENC-enabled ffmpeg from BtbN builds into the node's folder. Two things to know: that download is one-time but not instant, and if no NVENC encoder is actually available, it silently falls back to the equivalent CPU codec for the same container (printed as a warning) so your run's output isn't lost. Quality knobs: video_crf (18 default; lower = better, 0 = lossless), video_fps, video_bitrate (NVENC, in Mbps), prores_profile, gif_dither.
Metadata follows the save: PNG stills embed the score plus prompt/workflow chunks when save_workflow_metadata is on; for non-PNG output, save_metadata_png writes a sidecar PNG carrying the workflow, and video gets an ffmetadata stream with score averages. The latent output always passes the connected latent through, so the node slots into a graph without breaking the latent chain.
Install
Part of ComfyUI-JSON-Dynamic. ComfyUI Manager → search JSON Dynamic Loader, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ethanfel/ComfyUI-JSON-Dynamic.git
# restart ComfyUI
No Python packages to install; the only "heavy" dependency is the optional self-downloaded ffmpeg described above.
Verdict
If you're building a dataset - especially a sharpness-filtered one - this is the save node you want: fast, scored filenames, latent sidecars, and video export from the same node. If you just want to save a few images to output/, the built-in SaveImage is simpler. It's a specialist tool that knows exactly who it's for.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| output_path | STRING | D:\Datasets\Sharp_Output | — |
| filename_prefix | STRING | frame | — |
| save_format | COMBO | 13 options: png, webp, mp4, webm, h265-mp4, av1-mp4, +7 | |
| use_timestamp | BOOLEAN | false | — |
| auto_increment | BOOLEAN | true | — |
| counter_digits | INT | 41–12 | — |
| filename_with_score | BOOLEAN | false | — |
| metadata_key | STRING | sharpness_score | — |
| save_workflow_metadata | BOOLEAN | false | — |
| save_metadata_png | BOOLEAN | false | — |
| save_latent | BOOLEAN | true | — |
| max_threads | INT | 00–128 | — |
| webp_lossless | BOOLEAN | true | — |
| webp_quality | INT | 1000–100 | — |
| webp_method | INT | 40–6 | — |
| video_fps | INT | 241–120 | — |
| video_crf | INT | 180–51 | — |
| video_pixel_format | COMBO | 6 options: yuv420p, yuv422p, yuv444p, yuv420p10le, rgb24, bgra | |
| video_bitrate | INT | 101–999 | — |
| prores_profile | COMBO | 5 options: lt, standard, hq, 4444, 4444xq | |
| gif_dither | COMBO | 9 options: sierra2_4a, floyd_steinberg, bayer, sierra2, sierra3, burkes, +3 | |
| scores_infoopt | STRING | — | |
| audioopt | AUDIO | — | |
| latentopt | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |