Nodes/Mickmumpitz-Nodes/Shot Assembler
ComfyUI Node

Shot Assembler

How Mickmumpitz stitches your 81-frame clips into one video

By mickmumpitz·Created 8 months ago·Updated 9 days ago· 47
Shot Assembler
  • _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
resolution_modeletterbox_to_first
save_individual_shotsfalse
shots_foldershots

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.

CategoryMickmumpitz/Shot

Inputs (23)

NameTypeDefaultDescription
resolution_modeCOMBOletterbox_to_first7 options: letterbox_to_first, letterbox_to_largest, letterbox_to_smallest, crop_to_first, crop_to_largest, crop_to_smallest, +1
save_individual_shotsBOOLEANfalse
shots_folderSTRINGshots
_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)

NameTypeDescription
assembled_videoVIDEO