Shot Assembler
How Mickmumpitz stitches your 81-frame clips into one video
- _dep_1
- _dep_2
- _dep_3
- _dep_4
- _dep_5
- _dep_6
- _dep_7
- _dep_8
- _dep_9
- _dep_10
- _dep_11
- _dep_12
- _dep_13
- _dep_14
- _dep_15
- _dep_16
- _dep_17
- _dep_18
- _dep_19
- _dep_20
- assembled_video
Wan gives you ~81 frames per clip and no amount of prompting changes that. So a long-form workflow is really a collection problem: you generate ten clips and need them glued into one watchable video, in order, even when you only re-render one of them. Shot Assembler is the end of that pipeline - the node where all your shot videos land and come out as a single assembled clip.
It's the payoff node in the Shot system of Mickmumpitz-Nodes (the pack behind the YouTuber's iterative-video workflows), and it has one genuinely clever trick: it has no visible video inputs at all, and that's the feature.
How it works
You never wire videos into a Shot Assembler manually. Instead, each of your shots ends in a Shot Video Output node carrying a shot_number, and the pack's prompt handler does the wiring for you. On every run it scans the graph, collects every enabled Shot Video Output, sorts them by shot_number, and injects their outputs into the assembler's hidden _dep_N slots - which is why the docs call them "hidden dependency slots."
The payoff: ComfyUI passes cached outputs through dependency slots. So on any given run, every shot feeds the assembler - including the ones that were cached and never re-executed. Re-render shot 3, and shots 1, 2 and 4 come from cache; the assembler still builds the complete video. That's the single-shot-regeneration behavior that makes this system worth building around, and it only works because the wiring is injected server-side rather than drawn on the canvas.
Once it has the videos, it concatenates them in order with the same engine as the pack's Video Concatenate node - same resolution handling, audio preserved.
The inputs that matter
- resolution_mode - the 7-mode enum (default
letterbox_to_first): letterbox or crop to the first/largest/smallest clip, or stretch to the first. If your shots are all generated at the same size - and they should be - you'll never touch this. - save_individual_shots - default false. Flip it on and each shot is also written as
shot_01.mp4,shot_02.mp4, … into your output folder. - shots_folder - where those individual shots land (default
shots). Path traversal is sanitized, so you can't accidentally write outside the output dir.
Output
assembled_video - one VIDEO, ready to preview or save. The node is an output node, so it shows up as a terminal.
Install
It's part of Mickmumpitz-Nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/mickmumpitz/ComfyUI-Mickmumpitz-Nodes
then restart - or search "Mickmumpitz" in ComfyUI Manager. No model downloads; deps are numpy/Pillow/opencv-python.
Troubleshooting
The signature error is "no videos found. Ensure ShotVideoOutput nodes are in the workflow." - you either don't have any Shot Video Outputs, or they're all disabled. If your assembled video has weird black bars, your shots disagree on resolution; fix that at generation time rather than patching it in the assembler. And like all the VIDEO-typed nodes in the pack, this needs a current ComfyUI with native video support - an old install won't even load it.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| resolution_mode | COMBO | letterbox_to_first | 7 options: letterbox_to_first, letterbox_to_largest, letterbox_to_smallest, crop_to_first, crop_to_largest, crop_to_smallest, +1 |
| save_individual_shots | BOOLEAN | false | — |
| shots_folder | STRING | shots | — |
| _dep_1opt | * | — | |
| _dep_2opt | * | — | |
| _dep_3opt | * | — | |
| _dep_4opt | * | — | |
| _dep_5opt | * | — | |
| _dep_6opt | * | — | |
| _dep_7opt | * | — | |
| _dep_8opt | * | — | |
| _dep_9opt | * | — | |
| _dep_10opt | * | — | |
| _dep_11opt | * | — | |
| _dep_12opt | * | — | |
| _dep_13opt | * | — | |
| _dep_14opt | * | — | |
| _dep_15opt | * | — | |
| _dep_16opt | * | — | |
| _dep_17opt | * | — | |
| _dep_18opt | * | — | |
| _dep_19opt | * | — | |
| _dep_20opt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| assembled_video | VIDEO | — |