<aside>
π
Cut a Video into Highlight Clips β Driven by an Analysis JSON
Take a source video and a highlight-segments JSON (produced by an upstream Video Analysis node) and cut the video into a list of clips β one per highlight segment. Perfect for going from "long-form footage + LLM analysis" to "publishable short clips" in a single node. Optional per-clip padding (before/after) and a minimum-duration filter make the output clips clean and ready for downstream steps like Hook Teaser and Video Reassemble.
</aside>
What it does
Video Trim takes two inputs β a source video and a highlight-segments JSON (typically emitted by Video Analysis, containing start_sec / end_sec for each highlight) β and produces a list of video clips, one per segment described in the JSON. This is the physical cutting step that turns Video Analysis's description of highlights into actual, usable video files. Advanced controls let you pad each clip's boundaries (to avoid abrupt starts / ends) and filter out clips that would come out too short to be useful.
Problem it solves
- Bridge Video Analysis JSON to actual clips β Video Analysis tells you what the highlight segments are; Video Trim is what turns that description into real video files
- Long-form β short-form pipelines β Cut a long video (podcast, interview, gameplay, lecture) into publishable social clips based on LLM-identified moments
- Batch clip production β One node produces multiple output clips at once, ready for individual editing / publishing
- Clean clip boundaries β Optional pre-/post-padding avoids abrupt cuts that clip words, actions, or reactions
- Filter out fragments β The minimum-duration filter drops clips that would be too short to be useful (bad LLM segmentation, transitional moments, false positives)
- Cap runaway output β The max-clips slider prevents accidentally producing 100+ clips from a very long video
- Feed downstream video-list tools β The output (list of video clips) connects into any tool that consumes a video clip list β Gallery Viewer for review, Hook Teaser for cold-open editing, etc
Input/Output
<aside>
- Input: Source video + highlight-segments JSON
- Video (top input port): The source video to cut. Standard video formats (MP4, MOV, WebM, etc.). Any length.
- JSON (bottom input port): Highlight-segments JSON, typically from Video Analysis. Each entry defines a segment with fields like
start_sec, end_sec, title, hook, hook_sec, score. Video Trim reads start_sec and end_sec (plus applies your padding / filters) to determine each output clip's boundaries
</aside>
<aside>
- Output: List of video clips
- Format: A list of video clips (each clip is a segment of the source video, encoded as a standard video)
- Ordering: Clip order matches the order of segments in the JSON
- Boundaries:
[start_sec β pre_padding, end_sec + post_padding] β clamped to the video's actual duration
- Length filter: Clips shorter than the "skip clips shorter thanβ¦" threshold are dropped from the output
- Cap: No more than the "Maximum number of clips" setting are produced (excess segments are truncated from the tail of the JSON)
</aside>
Configuration Options
- Maximum number of clips to produce: Hard cap on how many output clips are produced.
- Default: 20
- Purpose: Safety net against very long videos or aggressive segmentation producing dozens of clips
- Behavior: If the JSON describes more segments than the cap, only the first N are produced (or the top-N by score, depending on upstream ordering β the JSON's ordering is respected as-is)
Advanced Options
- Seconds of padding added before each clip's start: Extra time added before each segment's start_sec.
- Default: 0
- Purpose: Avoid clipping into the moment β e.g., add 1β2 seconds so the clip includes the setup / breath before the highlight begins
- Behavior: Clamped so the clip can't start before time 0 in the source video
- Seconds of padding added after each clip's end: Extra time added after each segment's end_sec.
- Default: 0
- Purpose: Include the reaction / trailing beat after the highlight moment β avoids awkwardly cut-off endings
- Behavior: Clamped so the clip can't extend past the source video's duration