Nodes/Symbiotica/Hypereel Highlight Pick
ComfyUI Node

Hypereel Highlight Pick

Turn an LLM's highlight list into actual cut timestamps

By symbiotica-ai·Created 6 months ago·Updated about 12 hours ago· 2
Hypereel Highlight Pick
    • start_sec
    • end_sec
    • duration_sec
    • label
    • highlight
    • count
    highlights
    index0
    source_duration0.00

    Somewhere between "the LLM found the good moments" and "the reel is cut" there's a boring parse step: take the model's text, find the numbers, and turn them into something a video node can actually use. That's Hypereel Highlight Pick. It parses the Gemini highlight list that Hypereel Analysis Prompt's prompt was designed to produce, and exposes one highlight's timing and text as separate outputs.

    The format it parses is the one the analysis prompt asks for - lines like HIGHLIGHT 1 | start=120 | end=130 | Label | WHY: ... | MOOD: ... - and it accepts timestamps in either seconds or MM:SS. You pick a highlight with an index, and out come start_sec, end_sec, duration_sec, a label, the full original row, and a count of how many highlights were found.

    The input that saves you

    source_duration (optional) is the guard. Wire in the analyzed video's real length - the natural source is Hypereel Clip's actual_duration output - and any highlight whose start is beyond it gets dropped. This catches the classic failure where the analysis ran against a different clock than the footage: an LLM told "chapter timestamps" returns absolute-vs-chapter times, and suddenly your cut is at minute 47 of a 3-minute clip. The node is blunt about it: if every highlight is out of range it raises with a message naming the mismatch, rather than quietly handing you garbage.

    Two subtleties worth knowing:

    • If you ask for index 5 but only 3 highlights parsed, it clamps to the last one rather than erroring. Fine in practice; just don't assume the index is literally "highlight #5."
    • count tells you how many parsed highlights survived the range filter, so you can see if a source-duration guard quietly ate most of your list.

    Outputs and how they wire up

    • start_sec / end_sec / duration_sec → into Hypereel Clip's start_sec and duration_sec. That's the intended cut path.
    • label → the punchy one-liner, handy for file names or a caption.
    • highlight → the full original row, which the Hypereel flow hands to the script LLM so the voiceover matches the on-screen moment.
    • count → sanity check / fan-out count.

    Install

    Part of symbiotica-ai/comfyui-nodes - ComfyUI Manager search "Symbiotica", or clone + pip install -r requirements.txt as with the rest of the pack. Pure parsing, no API key, no ffmpeg needed here (though the nodes you wire it into will want ffmpeg on PATH).

    Gotchas

    The parser is strict by design. Feed it a highlight list that doesn't match the HIGHLIGHT n | start=.. | end=.. shape and it raises with the exact format it expected - that's the error to look for when an LLM got chatty instead of structured. If highlights keep getting dropped by source_duration, the clocks disagree: re-run the analysis with Hypereel Analysis Prompt wired to the same video you're cutting, and the mismatch disappears by construction.

    CategorySymbiotica/Hypereel

    Inputs (3)

    NameTypeDefaultDescription
    highlightsSTRING
    indexINT00–99
    source_durationoptFLOAT0.000–359999Length of the analyzed video in seconds (wire the Clip node's actual_duration). Highlights beyond it are dropped — catches absolute-vs-chapter clock mismatches.

    Outputs (6)

    NameTypeDescription
    start_secFLOAT
    end_secFLOAT
    duration_secFLOAT
    labelSTRING
    highlightSTRING
    countINT