Prompt Timeline Splitter
It reformats your prompt timeline — and that's honestly all it does
- STRING
Let's be direct about this one: Prompt Timeline Splitter does not split anything, schedule anything, or call an API. It's a text formatter. You paste in a scene-by-scene timeline and it hands you back a tidied-up block of text. If you're a beginner who saw "timeline" and hoped for automatic per-scene video prompting, temper that expectation now - and you'll still find a use for it.
It's aimed at image-to-video workflows, where the community standard is to think of a clip as a series of short scenes. Real-world video prompting splits into an image prompt (describe the frame flatly, "like a robot") and a motion prompt (describe only what happens, "like George R.R. Martin"). The timeline idea here is the same thing, timestamped: 0-3s: cat walks into room, then 3-6s: cat eats food, and so on.
What it actually does
The whole node is ~20 lines of pure Python, no dependencies, no models. It takes your multi-line timeline text and processes it line by line:
- Each line is split on the first
:. - The part before the colon becomes
TIME = ..., the part after becomesPROMPT = .... - Every line that contains no
:is silently dropped. - Everything is joined back into one string.
So this input:
0-3s: cat walks into room
3-6s: cat eats food
6-9s: cat sleeps near window
comes out as:
TIME = 0-3s | PROMPT = cat walks into room
TIME = 3-6s | PROMPT = cat eats food
TIME = 6-9s | PROMPT = cat sleeps near window
Note the blank line in the middle - gone. That's the mechanism, in full.
The one input, the one output
There's exactly one input, timeline_text (a multiline STRING, pre-filled with a 0-3s: man walking example). And exactly one output: a single STRING. Wire it anywhere ComfyUI accepts a string - a CLIP text encode node, a text field upstream of a video sampler, whatever. It's is_list: false, so don't expect it to iterate over your scenes for you; this node formats the whole timeline into one block and stops.
That's the honest limitation. The TIME = prefix is for you - a readable plan of your shot list. Don't assume the video model parses timestamps out of prompt text; most i2v models treat the whole string as narration, and the timestamp tokens are usually just noise to them. Use this to keep your scene planning organized, not as a scheduling mechanism.
Installing it
No Manager entry needed, but ComfyUI Manager will find it if you search "PromptTimelineSplitter." The manual route is the usual one:
cd ComfyUI/custom_nodes
git clone https://github.com/singhdivyanshi/ComfyUI-PromptTimelineSplitter
Then restart ComfyUI. That's it - no requirements.txt, no model downloads, no Python packages beyond the standard library. It's one of those rare custom nodes that can't break your environment, which puts it ahead of half the ecosystem on the dependency-hell scale.
Gotchas worth knowing
- Lines without a colon vanish. A blank line, a stray note, a heading - all dropped without warning. If your output is missing a scene, that's why.
- Colons inside the prompt survive, because it splits on the first colon only.
3-6s: cat eats: reallykeeps the: really. - Timestamps aren't validated.
banana: whateverbecomesTIME = banana | PROMPT = whatever. Garbage in, formatted garbage out. - The pack is v1.0.0, a single node, from an author who openly says they wrote it while learning Python. It's a beginner's first node - which is fine, it works - but treat it as a utility, not a tool that will grow with you.
If your workflow already has a text-editing node or you're comfortable just writing clean prompts, you don't need this. But if you're sketching shot lists for Wan, LTX, or Hunyuan and want them readable at a glance, it's a lightweight, zero-risk add. Just don't expect it to do the heavy lifting.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| timeline_text | STRING | 0-3s: man walking 3-6s: enters cafe | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |