π H3 Library Save - LD
Save a Take So the Next One Can Extend It Seamlessly
- images
- audio
- latent
- report
Saving a video isn't the same as saving a shot you'll continue
You've rendered a take you like and you want the next render to pick up where it left off. If you just save the mp4 and reload it as reference video, the continuation has to re-encode the tail - the join comes out softer, slightly re-interpreted, and the "same moment" your new clip starts from is a decode of a decode. H3 Library Save (π H3 Library Save - LD, under LD / PromptMaster / Long form, in PromptMasterLD) exists to make continuation bit-exact: it writes the clip into the extend library as the mp4 plus the sampler's latent, so a later extension joins against the exact pixels and audio the original sample produced, not a lossy echo of them.
Hang it off your decode chain - VAEDecode's frames, VAEDecodeAudio's output, and the sampler's own latent - and a finished render lands in the library with everything a future continuation needs. (H3 Master already does this internally for its own clips; this node is for when you're saving a single take you want to extend later by hand.)
The inputs that matter
- images - the finished frames, straight from VAEDecode. The tooltip is emphatic: before RIFE and before any upscale. The library copy exists to be continued from, and you do not want to extend an interpolated file - the motion context would be the upscaler's invention, not your render's.
- name - the stem for the saved files. A short counter is appended, so a re-run never silently overwrites the take you were about to extend.
- prompt - the prompt this clip was rendered from. Stored beside it so a later extension can inherit its look and its person instead of re-deriving them from a vision scan of one dim frame. Worth filling in even when it feels redundant.
- fps - default 24.
- audio (optional) - VAEDecodeAudio's output. Without it the saved clip is silent, and so is anything continuing it. This is the one people forget.
- latent (optional) - the SAMPLER's own output (SamplerCustomAdvanced's
.output), not a re-encode. This is what makes the extend join bit-exact. Omit it and the file is still extendable - just with a re-encoded tail and a slightly softer join.
The single output is report (STRING), telling you what landed where. This is an output node - it ends the rail.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Lora-Daddy/PromptMasterLD
cd PromptMasterLD
pip install -r requirements.txt
Restart ComfyUI, or ComfyUI Manager β search "PromptMasterLD". Saved clips go to input/h3_extend/, which is the same folder H3 Library Load reads from - the two are a matched pair.
Where people get burned
Two mistakes. First, saving after an upscaler or frame-interpolator instead of before - you get a prettier file and a worse continuation, because you've stored synthetic motion as ground truth. Save the pristine decode; upscale the copy you're going to watch. Second, skipping the latent wire because it's optional. It is optional, and "optional" here means "the difference between a perfect join and a slightly soft one" - if seamless extension is the point of using this node at all, wire the sampler's latent. And if you wire audio to VAEDecodeAudio's output, make sure that decode came from the same render as the frames - mismatched picture and sound in the library make for confusing failures two queues later.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The finished frames, straight from VAEDecode. Before RIFE and before any upscale: the library copy exists to be CONTINUED FROM, and you do not want to extend an interpolated file. | |
| name | STRING | shot | Stem for the saved files. A short counter is appended so a re-run never silently overwrites the take you were about to extend. |
| fps | INT | 241β120 | β |
| prompt | STRING | The prompt this clip was rendered from. Stored beside it so a later extension can inherit its look and its person instead of re-deriving them from a vision scan of one dim frame. | |
| audioopt | AUDIO | VAEDecodeAudio's output. Without it the saved clip is silent and so is anything continuing it. | |
| latentopt | LATENT | The SAMPLER's own output (SamplerCustomAdvanced .output), not a re-encode. This is what makes the extend join bit-exact. Omit it and the file is still extendable, just with a re-encoded tail and a slightly softer join. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| report | STRING | β |