Nodes/Vsaan212-workflow-utilities/Lazy Multi Frame Select
ComfyUI Node

Lazy Multi Frame Select

Pause your video workflow and hand-pick up to 6 frames

By vsaan212·Created 10 months ago·Updated 9 days ago· 1
Lazy Multi Frame Select
  • images
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
show_every4

What it actually is

You generate a video, VAE Decode spits out a batch of frames, and you want a handful of stills to do something with - re-roll one as img2img, feed the first and last frames back into the next clip, upscale a hero frame. Normally that means decoding twice or eyeballing a strip of tiny previews and guessing indices. Lazy Multi Frame Select skips all that: it shows you every frame in a grid right on the node, pauses the workflow, and waits for you to click up to six. Then it hands those out as image_1 through image_6 and the rest of the graph keeps going.

It's part of the vsaan212 Workflow Utilities pack, a grab-bag of "lazy" nodes for video pipelines (MiniMax, Wan, LTX) that all live under the vsaan212/lazy menu. This one is a pure interactive utility - no models, no API calls, no keys. It does exactly one thing and mostly gets out of the way.

How it works

The fun part is that ComfyUI normally runs a queue to completion without stopping for your input. This node is the exception, and the mechanism is worth knowing because it explains every gotcha below.

  • It's an output node whose IS_CHANGED returns float("NaN") - the always-rerun trick from the plumbing playbook. It fires on every execution no matter what, which is what lets it reliably stop the graph.
  • When it runs, it copies the batch to CPU, saves each frame as a small temp thumbnail (256px max), and pushes a vsaan212-multi-frame-select event to the browser. Then it just… blocks, in a thread waiting on an event, polling every quarter-second to make sure the run wasn't interrupted.
  • On the browser side, a small JS extension (js/lazy_multi_frame_select.js) renders the grid as a DOM widget with Continue / Clear / Cancel. Click Continue and the frontend POSTs your chosen indices to /vsaan212/multi-frame-select, waking the waiting thread. The node slices those frames out of the batch and returns them in click order.
  • Cancel does what ComfyUI's stop button does - interrupts the whole prompt.

The "lazy" in the name is doing real work: the frames are already decoded, so you're paying for a selection, not a second decode.

Inputs and outputs that matter

There's exactly one input: images (IMAGE) - the batch from VAE Decode, or really any IMAGE batch. The author's tooltip says it plainly: "IMAGE batch from VAE Decode (video frames)." A single image counts as a batch of one.

Outputs are the six sockets image_1image_6. Selection is in click order, not frame order - the first frame you click is image_1, the second is image_2, and so on up to six. Unused slots come out as None, which is safe for optional IMAGE inputs downstream. Don't get the numbering confused: the little numbers on the thumbnails are 1-based frame indices, while the gold badges on top show your output slot. The pack's docs recommend the natural MiniMax H3 use: image_1first_frame, image_2last_frame, image_3image_6 → reference images for I2V/FL2V/R2V. Or just feed any slot to an upscaler or a Save Image.

Install

Two ways, same as any custom node:

  • ComfyUI Manager: search vsaan212/Vsaan212-workflow-utilities and click Install.
  • Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/vsaan212/Vsaan212-workflow-utilities

Restart ComfyUI either way - this node needs its JS extension loaded, and the pack warns that a frontend refresh (R) isn't always enough the first time. No model files to download. The pack's requirements.txt lists heavy stuff (transformers, qwen-vl-utils) for its LazyPrompt node, but this node itself only touches torch, Pillow and numpy - everything ComfyUI already ships.

Common issues

  • Grid empty or Continue does nothing. Almost always the JS didn't load. Restart ComfyUI after installing or updating the pack; this is the README's #1 troubleshooting entry for a reason.
  • Don't queue a second prompt to "confirm" your pick. The run is already paused and waiting - Continue is what unblocks it. Queuing again starts a whole new wait, and thanks to the always-rerun behavior the node will stop the graph on every single run until you make a choice.
  • Don't wire downstream nodes expecting all six outputs. Unused slots are None. If a consumer needs a real image and you only picked two frames, feed it one of the filled slots.
  • It blocks the queue. That's the point - but don't put this in a workflow you intend to leave running unattended overnight, because it will park at this node waiting for a human.
Categoryvsaan212/lazy

Inputs (2)

NameTypeDefaultDescription
imagesIMAGEIMAGE batch from VAE Decode (video frames). The node pauses until you pick up to 6 frames.
show_everyINT41–64Show every Nth frame in the grid (1 = all frames). Default 4. The last frame is always included.

Outputs (6)

NameTypeDescription
image_1IMAGE
image_2IMAGE
image_3IMAGE
image_4IMAGE
image_5IMAGE
image_6IMAGE