Nodes/ComfyTV/Video Picker
ComfyUI Node

Video Picker

Keep the take you like, drop the rest

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Video Picker
  • batch
  • video
project_id
parent_output_id0
selected_index1
pool

Generate several clips and you need a way to keep just one. That's this node - the video counterpart to ComfyTV's Image Picker, and it's so core to the pack's flow that it auto-spawns after a Video Stage run. You wire your generated clips in, click the one you want in the node body, and that clip is what flows downstream.

How it works

Video Picker is a Compose stage with a batch input that accepts COMFYTV_VIDEO. Every clip that arrives gets appended to an internal pool - deduplicated by URL, so re-running the upstream stage doesn't double up your choices, and it survives disconnects and regeneration. The pool lives on the node as JSON (the hidden pool field), and there's a Clear button when you want to start over.

There's no Run button here. Clicking a clip sets the hidden selected_index (1-based) and re-emits the chosen clip as the video output instantly, so downstream stages update without you touching the queue. That's the whole point: pick, review, pick again - no rendering.

The inputs that actually matter:

  • batch - upstream video source; each generated clip is added to the pool.
  • selected_index - 1 to 999, but you never type it; clicking a thumbnail sets it.
  • pool - the accumulated JSON list, managed by the UI.

The workflow it enables

This is the classic "generate variants, keep the best" pattern: a Video Stage with a few different seeds or prompts, all feeding one Picker, and you click your winner. It's also how multi-shot Director timelines select per-clip results. Because everything is snapshot-based, your picks persist with the project - close and reopen ComfyUI and the pool is still there, which is something native in-memory tensors can't do.

One honest gotcha: nothing leaves the node until you actually click a clip - hovering doesn't select. And if the pool fills with stale takes from earlier experiments, hit Clear and re-run rather than fighting the accumulated JSON.

Installing and quirks

Install is pack-standard: git clone https://github.com/jtydhr88/ComfyTV into ComfyUI/custom_nodes, restart. It shows up under ComfyTV → Compose. No models, no heavy dependencies - this one is pure project plumbing.

The output is a COMFYTV_VIDEO snapshot, so feeding your chosen clip into native ComfyUI nodes means a ← ComfyTV Video Bridge in between. If you only ever work inside ComfyTV, you won't need it - Picker output feeds Clip, Crop, Transition, or the Director timeline directly. It's a small node with a small job, but once you're generating batches of clips it becomes the one you reach for most.

CategoryComfyTV/Compose

Inputs (5)

NameTypeDefaultDescription
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
selected_indexINT11–999Which clip to extract (1-indexed). Hidden — set by clicking a clip.
poolSTRINGAccumulated video pool (JSON). Managed by the UI: new upstream clips are appended (deduped by URL) and survive regeneration/disconnect; emptied by the Clear button.
batchoptCOMFYTV_VIDEOUpstream video source. Each generated clip is appended to the pool.

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO