Nodes/ComfyUI-MAINodes/MAI Seed Hunter (compare + winner seed)
ComfyUI Node

MAI Seed Hunter (compare + winner seed)

Find the keepable seed by watching 2-6 candidates side by side

By matlowai·Created 17 days ago·Updated about 18 hours ago· 112
MAI Seed Hunter (compare + winner seed)
  • video_1
  • video_2
  • video_3
  • video_4
  • video_5
  • video_6
  • winner_video
  • winner_seed
  • winner_index
  • manifest
winner1
preview_crf23
label_1
label_2
label_3
label_4
label_5
label_6
seed_10
seed_20
seed_30
seed_40
seed_50
seed_60
hold_map
curves

Seed hunting for video is miserable when it's done blind. Generate six clips, save them, open them one at a time, try to remember which was which. MAI Seed Hunter is the pack's answer: wire in 2-6 cheap candidate renders plus the seed each ran on, watch them synchronized in a browser widget (hover to hear, flicker, frame-lock), star the keeper, and let the next queue pass the winner's seed out to your finalize pass. Pick, then finalize - two executions, and the graph never waits on a human mid-run.

That split is the design and it's the right one. Video generation is expensive enough that you don't want to pay full price for every candidate, and H3 is expensive enough that you want to hunt on cheap renders. The pack's own guidance agrees: iterate prompts and seeds on turbo/preview-grade passes, then run the winner through the full pipeline. Seed Hunter is built exactly for that - cheap candidates in, one seed out.

The inputs that matter

The optional inputs are where the real interface lives: video_1 through video_6, label_1 through label_6, and - the thing that makes it a seed hunter - seed_1 through seed_6, the seed each candidate actually ran on. There's no way for the node to read those off the clips, so you type them; that's the contract. winner (default 1) is set by the widget's star and preview_crf (23) controls the h264 preview quality. Both hold_map (from H3 Time Smear's hold_map_used, draws the regenerated window as a band with enter/exit blips) and curves (a JSON {name: [per-frame floats]} drawn as lanes under the playhead) are optional, for when you're comparing de-roped windows specifically.

Outputs: winner_video, winner_seed, winner_index, and a manifest describing the comparison. Wire winner_seed into the finalize pass's noise node and winner_video onward, queue once more, done.

How it stays cheap

No VRAM. Each wired VIDEO is written once to a temp directory as a small h264 preview - CPU encode, no VAE, no tensors kept - and the browser decodes them. Six 3-second clips as previews cost you a little disk and basically nothing in GPU memory, which is the entire point when the alternative is loading six decoded frame stacks.

Alpha caveats are modest but real: the in-node playback sync between sources is approximate and can drift or stagger, and scrubbing during playback can wedge the transport - re-queue or reload recovers. For frame-exact review the pack points you at its standalone deck tooling instead; this is the quick triage surface.

It ships in ComfyUI-MAINodes (matlowai, GPL-3.0), under image/minimax/video:

cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes

Restart and queue. Also worth remembering before you go: H3's open weights are licence-restricted in the US, EU, UK and Korea - seed hunting assumes you're legally running the model in the first place.

Categoryimage/minimax/video

Inputs (22)

NameTypeDefaultDescription
winnerINT11–6set by the viewer's star; which source winner_video passes through
preview_crfINT2310–40
video_1optVIDEO
video_2optVIDEO
video_3optVIDEO
video_4optVIDEO
video_5optVIDEO
video_6optVIDEO
label_1optSTRING
label_2optSTRING
label_3optSTRING
label_4optSTRING
label_5optSTRING
label_6optSTRING
seed_1optINT00–9007199254740991the seed candidate 1 ran on
seed_2optINT00–9007199254740991the seed candidate 2 ran on
seed_3optINT00–9007199254740991the seed candidate 3 ran on
seed_4optINT00–9007199254740991the seed candidate 4 ran on
seed_5optINT00–9007199254740991the seed candidate 5 ran on
seed_6optINT00–9007199254740991the seed candidate 6 ran on
hold_mapoptSTRINGH3 Time Smear's hold_map_used: the viewer draws the regenerated window as a band and fires enter/exit blips on it
curvesoptSTRINGJSON {name: [per-frame floats]}; drawn as lanes under the playhead

Outputs (4)

NameTypeDescription
winner_videoVIDEO
winner_seedINT
winner_indexINT
manifestSTRING