H3 Save Clip
A checkpoint for a video, not a video you can only watch
- latent
- latent
- path
- report
You can decode an H3 clip and save an MP4, and you'll have a video. What you won't have is anything you can continue. The MP4 has pixels; the latent has the frames, the audio steps, and the loop's own memory of where each scene ends and which frames each cut trimmed. H3 Save Clip writes that second thing to disk.
How it works
The output is a .h3clip file: a safetensors file where every tensor the latent holds is written under its own name, and the latent's structure - which entries are tensors, which are nested dicts, which are plain values like the segment records - is written as JSON in the file's header metadata. That means it's re-loadable with the exact shape it had, not a lossy "here are some frames" export.
Because it's safetensors with a JSON layout, the file is also inspectable. If you want to know what scene boundaries a clip carries before committing two hours to extending it, you can read the header without loading gigabytes of tensor.
The node is an output node, so it always runs, and it hands the clip straight back out unchanged. That's not filler: it means you can drop Save Clip in the middle of a graph, keep the decode wiring intact either side of it, and get a resumable checkpoint as a side effect of a normal run.
The inputs
latent- the clip to keep, either from H3 Extend Append or from the value a While Loop Close hands out when the loop finishes. The second is what you usually want: the whole video, not segment 11 of 14.root-outputfor a file you keep until you delete it,tempfor one that's cleared when ComfyUI restarts, or any folder you've added underpaths.allow_writeinconfig.yaml. Note that Load Clip reads a different list (input,output,temp, andpaths.allow_read), so a write-only folder produces files that don't show up in the load menu until you permit reading there too.name- the filename belowroot, numbered on every run.h3_clips/episodegives youh3_clips/episode_00001.h3clip,_00002, and so on, so a run that goes wrong doesn't overwrite the run that went right. Tokens expand, which is how you date a folder:[time(%Y-%m-%d)]/clip.
Three outputs: latent passed through for a decode such as H3 Decode Video, path with the full path written, and report naming the scenes, frames and seconds saved along with the frames each scene spans.
Installing it
It's part of WAS Node Suite v3. In ComfyUI Manager, search WAS Node Suite v3 and install - or:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Restart. That's it: ComfyUI 0.14.0+ and Python 3.10+, no packages installed, no downloads triggered. The pack writes its config and folders under <ComfyUI user dir>/was-node-suite/ on first start, which is why the very first boot after install takes a second longer than usual.
Where it goes wrong
Nothing appears in output. Check the log line rather than the folder listing - if root is a paths.allow_write folder, the file is there and you're looking in the wrong place. A write that resolves inside input/ gets rewritten to temp/ and logged with both paths, which surprises people who expected a file in input.
Filename collisions. They shouldn't happen, since files are numbered per run - but [time(...)] tokens make a folder per day, and the counter restarts per folder. That's usually what you want and occasionally isn't.
The clip loads but the loop re-renders everything. That's H3 Load Clip's next_index, not this node. Saving was never the problem.
Every scene starts from scratch after loading. You loaded a clip saved before an extend pass, or from a run whose loop didn't accumulate. The report lists the scenes it actually found; if it says one scene and you rendered eight, you saved too early in the graph.
Big files. A 2K-ish, thirty-second H3 clip is a serious amount of latent. Budget disk for the .h3clip files, not just for the MP4s - that's the price of being able to go back.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | The clip to keep, from H3 Extend Append or the value While Loop Close hands out once the loop finishes. | |
| root | COMBO | output | Which folder the file lands in: 'output' = kept until deleted; 'temp' = cleared when ComfyUI restarts; or a folder added under paths.allow_write in config.yaml. H3 Load Clip lists input, output, temp and paths.allow_read. |
| name | STRING | h3_clips/clip | The file's name below root, numbered on each run, as `h3_clips/episode` for `h3_clips/episode_00001.h3clip`. Tokens expand, so `[time(%Y-%m-%d)]/clip` dates the folder. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | The same clip, unchanged, for a decode such as H3 Decode Video. |
| path | STRING | Full path of the file written, ending in `h3_clips/clip_00001.h3clip`. |
| report | STRING | Scenes, frames and seconds saved, and the frames each scene spans. |