Muse Collective LTX Timeline V2
The One Feature Every LTX User Eventually Wants
- model
- clip
- audio_vae
- vae
- spatial_upscaler
- bg_audio
- base_model
- last_chunk_frames
- audio
- stage1_frames
- seed_hunt_preview_1
- seed_hunt_preview_2
- seed_hunt_preview_3
- seed_hunt_preview_4
- seed_hunt_audio_1
- seed_hunt_audio_2
- seed_hunt_audio_3
- seed_hunt_audio_4
- reference_image
Here's a fact about LTX 2.3 that changes how you work: it's more sensitive to seed than to prompt wording. The community discovered this fast - the highest-leverage workflow isn't endlessly rephrasing your prompt, it's generating a handful of cheap candidates on different seeds and picking the winner. That workflow even has a name in the wild ("ltx23SeedHunter," built around WhatDreamsCost's Director). MuseDirectorSamplerV2 bakes it directly into the director node, and it's the feature that makes V2 the version most people should install.
V2 is V1 - the full LTX 2.3 timeline director with chunking, per-segment prompts, lipsync, and layered audio - plus a scouting pass. Everything about V1 applies here; read that article for the base. This one is about what V2 adds.
How Seed Hunt works
The old way: flip a seed, run the whole pipeline, decide you don't like it, repeat. That's brutal when each full run is minutes long. Seed Hunt splits the loop in two:
- Scout. Flip
seed_huntON and leave all fouruse_seed_hunt_1..4toggles OFF. The node runs four candidates at Stage 1's real resolution - the actual timeline data, audio and all - each on a fresh random seed. You get previews on theseed_hunt_preview_1..4outputs, and each candidate's real Stage 1 latent is cached in memory. - Commit. Look at the previews, flip exactly one
use_seed_hunt_NON, run again. The node skips regenerating Stage 1 and carries that candidate's actual cached latent into Stage 2 (upscale + refine). What you saw in the preview is what carries through.
That last bit is the subtle part, and it's the whole point. This isn't "re-run with the same seed number and hope it matches" - the candidate's real latent is carried forward, so the seed number doesn't need to magically match across resolutions. Stage 2 is refining content you've already seen, not re-rolling a noise field.
If the cache is empty - say, the server restarted between scouting and committing - it falls back to overriding seed with the candidate's seed_hunt_N widget value and running Stage 1 fresh. Slightly worse, but it works.
The settings
seed_hunt- master toggle. OFF means this node is identical to V1.use_seed_hunt_1..4- flip exactly one to commit to a candidate.seed_hunt_steps- sampler steps for the scouting pass, independent ofstage1_steps. Hidden behind the Settings toggle by default, and honestly you rarely need it.seed_hunt_1..4- fallback seeds, only used on a cache miss. Advanced; leave them.seed_hunt_scale- unused as of 1.0.4; scouting always renders at Stage 1's real resolution now. Kept purely so old workflows load.
One deliberate V2 change worth knowing: V1 uses seed - 1 for Stage 2's noise seed; V2 uses the same seed for both stages. The faithfulness of a picked candidate doesn't come from that - it comes from the carried latent - but if you A/B against V1 outputs, seeds won't line up 1:1.
The extra outputs are seed_hunt_preview_1..4 (images), seed_hunt_audio_1..4 (audio), and reference_image.
Installing it
Same pack, same install:
cd ComfyUI/custom_nodes
git clone https://github.com/muse-collective-26/muse-ltx-timeline
Restart, pip install av torchaudio soundfile, plus the full LTX 2.3 model stack (22B transformer, audio/video VAEs, Gemma 3 encoder, spatial upscaler, talking-head LoRA for lipsync). The repo ships an example workflow, Muse-Director-V2 - seed scout.json, that wires all four previews into Video Combine nodes - load it and swap in your own image and audio.
The honest take
Seed Hunt is the single most useful addition in this whole pack, and it's aimed at a real quirk of the model rather than a checkbox feature. The one thing to know: scouting four candidates at Stage 1 resolution isn't free, but it's dramatically cheaper than four full runs, and it purges VRAM after the scouting pass so you're not juggling latents. If you're deciding between V1 and V2, this is the answer.
Inputs (65)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| audio_vae | VAE | — | |
| vae | VAE | — | |
| spatial_upscaler | LATENT_UPSCALE_MODEL | — | |
| start_second | FLOAT | 0.000–3600 | — |
| end_second | FLOAT | 10.000–3600 | — |
| duration_seconds | FLOAT | 10.000–3600 | — |
| start_frame | INT | 00–86400 | — |
| end_frame | INT | 2400–86400 | — |
| duration_frames | INT | 2401–86400 | — |
| timeline_data | STRING | {} | — |
| local_prompts | STRING | — | |
| segment_lengths | STRING | — | |
| global_prompt | STRING | — | |
| guide_strength | STRING | — | |
| epsilon | FLOAT | 0.00100–1 | — |
| frame_rate | FLOAT | 24.001–120 | — |
| display_mode | COMBO | seconds | 2 options: seconds, frames |
| custom_width | INT | 96064–4096 | — |
| custom_height | INT | 54464–4096 | — |
| resize_method | COMBO | maintain aspect ratio | 4 options: maintain aspect ratio, stretch to fit, crop, pad |
| divisible_by | INT | 321–256 | — |
| img_compression | INT | 180–51 | — |
| generate_audio | BOOLEAN | true | LTX generates ambient/sfx audio from [SOUNDS] prompts. |
| custom_audio_on | BOOLEAN | false | Use audio file(s) from the AUDIO timeline track. |
| lipsync | BOOLEAN | true | Sync mouth movements to custom audio. Requires Custom Audio ON and talking head LoRA. |
| motion_guide_on | BOOLEAN | true | Use motion guide segments from the timeline. |
| chunk_duration_seconds | FLOAT | 10.02–120 | — |
| auto_chunk_threshold | FLOAT | 10.00–3600 | — |
| carry_frames | INT | 731–240 | Reference frames from previous chunk locked at chunk start. 73 ≈ 3s at 24fps. |
| carry_strength | FLOAT | 1.000–1 | — |
| crossfade_frames | INT | 00–120 | — |
| ic_lora_name | COMBO | None | 1 options: None |
| ic_lora_strength | FLOAT | 1.00-10–10 | — |
| stage1_steps | INT | 81–50 | — |
| stage2_steps | INT | 41–50 | — |
| stage2_denoise | FLOAT | 0.420–1 | — |
| cfg | FLOAT | 1.00–20 | — |
| seed | INT | 420–18446744073709550000 | — |
| filename_prefix | STRING | muse | — |
| bg_volume | FLOAT | 1.000–2 | — |
| guide_scale_by | FLOAT | 0.500.01–8 | — |
| guide_scale_by_s2 | FLOAT | 1.000.01–8 | — |
| guide_upscale_method | COMBO | bicubic | 5 options: bicubic, bilinear, nearest-exact, area, bislerp |
| guide_image_attn_strength | FLOAT | 1.000–1 | — |
| guide_crop | COMBO | center | 2 options: center, disabled |
| guide_auto_snap_ic_grid | BOOLEAN | true | — |
| guide_use_tiled_encode | BOOLEAN | false | — |
| guide_tile_size | INT | 25664–512 | — |
| guide_tile_overlap | INT | 6416–256 | — |
| timeline_ui | STRING | — | |
| seed_hunt | BOOLEAN | false | ON + no candidate chosen: run a 4-seed Stage-1-resolution preview instead of the full pipeline. ON + one use_seed_hunt_N chosen: commit to that candidate — Stage 2 refines its actual cached latent instead of regenerating Stage 1 from scratch. |
| seed_hunt_steps | INT | 61–50 | — |
| seed_hunt_scale | FLOAT | 0.250.05–1 | Unused as of 1.0.4 — Seed Hunt now scouts at Stage 1's real resolution automatically (so the picked candidate's actual latent can carry forward into Stage 2). Kept as a widget only so older saved workflows still load correctly. |
| seed_hunt_1 | INT | 10–18446744073709550000 | Unused as of 1.0.4 — scouting now draws a fresh random seed for each candidate every run instead of reusing these fixed values (the actual latent carries forward on commit, so the seed number no longer needs to be fixed or reproducible). |
| seed_hunt_2 | INT | 20–18446744073709550000 | — |
| seed_hunt_3 | INT | 30–18446744073709550000 | — |
| seed_hunt_4 | INT | 40–18446744073709550000 | — |
| use_seed_hunt_1 | BOOLEAN | false | — |
| use_seed_hunt_2 | BOOLEAN | false | — |
| use_seed_hunt_3 | BOOLEAN | false | — |
| use_seed_hunt_4 | BOOLEAN | false | — |
| bg_audioopt | AUDIO | — | |
| base_modelopt | MODEL | Base model without talking-head LoRA. Connect the UNETLoader output directly here so the ambient audio pass generates sounds without speech. |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| last_chunk_frames | IMAGE | — |
| audio | AUDIO | — |
| stage1_frames | IMAGE | — |
| seed_hunt_preview_1 | IMAGE | — |
| seed_hunt_preview_2 | IMAGE | — |
| seed_hunt_preview_3 | IMAGE | — |
| seed_hunt_preview_4 | IMAGE | — |
| seed_hunt_audio_1 | AUDIO | — |
| seed_hunt_audio_2 | AUDIO | — |
| seed_hunt_audio_3 | AUDIO | — |
| seed_hunt_audio_4 | AUDIO | — |
| reference_image | IMAGE | — |