Nodes/ComfyUI-UtilsCollection/Video Timeline (Text)
ComfyUI Node

Video Timeline (Text)

A shot list you can paste into your video prompt

By silveroxides·Created 3 months ago·Updated about 17 hours ago· 30
Video Timeline (Text)
  • video
  • timestamps text
  • timeline text
  • video runtime
  • structured timeline text
segment_count5
focus_areas0
focus_one0.50
focus_two0.50
focus_three0.50
timestamp_format00.000s
timeline_text_structureShot <<shot>> at <<timestamp>>.
structured_timeline_text_structureTarget video duration is <<duration>> seconds divided into <<segments>> segments. <<shot>> at <<timestamp>>.
duration5.00

Modern video models are getting good at following a sequence - but only if you tell them the sequence. That's what this node is for: it turns "5 shots over 5 seconds" into a ready-to-paste timeline like Shot 1 at 0.000s. Shot 2 at 1.250s. and so on, so the model knows what's supposed to happen when. It's the text-only sibling of the pack's image-driven timeline nodes: no images in, just structured guidance out, built from a duration you type or a video you connect.

This is the node for the family of video prompts that take timestamped shot guidance - the MiniMax H3 workflows in this same pack being the obvious target, where "Picture timestamps map one-to-one to already-selected images" and the text carries the timeline. If your workflow already has the images, you don't need this node. If you're prompting a video model purely from text, this is your shot list.

How it works

You set a duration in seconds, and segment_count (default 5) decides how many timestamped entries to lay across it. The outputs are:

  • timestamps text - every timestamp in one line.
  • timeline text - each entry formatted via timeline_text_structure, default Shot <<shot>> at <<timestamp>>. You can swap in <<time>> or <<timestamp>> placeholders and any prose you like.
  • structured timeline text - one whole-paragraph template, default Target video duration is <<duration>> seconds divided into <<segments>> segments. <<shot>> at <<timestamp>>., where <<duration>> and <<segments>> are scalars and the shot/timestamp section repeats for every entry.
  • video runtime - the length in seconds as a number, handy if you're driving other nodes off it.

The clever bit is focus_areas (0–3) plus focus_one, focus_two, focus_three. With focus_areas at 0 (default), entries space evenly. Set it to 1 and all entries cluster toward one end of the timeline - the focus values run 0 (early) to 1 (late), 0.5 balanced. Two or three parts lets you cluster different groups at different points: shots bunched in the opening, a gap, shots bunched in the finale. It's a compact way to express pacing without hand-authoring every timestamp.

Two things worth knowing

  • Connect the optional video input and its native duration overrides your duration widget - the widget is only for manual use. Useful when you're building a timeline to match footage you already have.
  • timestamp_format (default 00.000s) is reused verbatim in every output, so change it once and all four outputs follow.

The trap to avoid

This is a text templating node, so the failure mode isn't a crash - it's feeding garbage structure to a model that takes it literally. If your video model ignores the timeline entirely, check that the template placeholders are spelled right (<<timestamp>>, not {timestamp}), and remember focus values only matter for the parts they belong to: focus_two does nothing unless focus_areas is at least 2. It won't generate a great video by itself - nothing will - but it's the fastest way to hand a model a pacing plan it can actually read.

Categoryimage/video

Inputs (10)

NameTypeDefaultDescription
segment_countINT5Number of timestamped timeline entries.
focus_areasINT00–3How many parts to split the timeline into. 0 spaces entries evenly.
focus_oneFLOAT0.500–1Where entries group in the first part. 0 is early, 0.5 is balanced, 1 is late.
focus_twoFLOAT0.500–1Where entries group in the second part. 0 is early, 0.5 is balanced, 1 is late.
focus_threeFLOAT0.500–1Where entries group in the third part. 0 is early, 0.5 is balanced, 1 is late.
timestamp_formatCOMBO00.000sFormatting reused verbatim by every text output.
timeline_text_structureSTRINGShot <<shot>> at <<timestamp>>.One structure repeated for every timeline entry. Use <<shot>> and <<time>> or <<timestamp>>.
structured_timeline_text_structureSTRINGTarget video duration is <<duration>> seconds divided into <<segments>> segments. <<shot>> at <<timestamp>>.One whole-timeline structure. <<duration>> and <<segments>> are scalars; <<timestamps>> is comma-and-space-separated; one <<shot>> … <<timestamp>> section repeats comma-and-space-separated for every timeline entry.
durationoptFLOAT5.00Length of the video in seconds. Ignored when video is connected.
videooptVIDEOOptional video whose native duration overrides the duration widget.

Outputs (4)

NameTypeDescription
timestamps textSTRINGAll formatted timestamps in one line.
timeline textSTRINGTimeline text ready for a prompt.
video runtimeFLOATLength of the video in seconds.
structured timeline textSTRINGText with video length and Picture timestamps.