KIE • Review Video Events
The human gate between a vision model's guesses and your audio
- reviewed_events_json
What it is
A small node with a strong opinion. You watched your clip, you ran a vision model over sampled frames, and its descriptions are nearly right - it called the letter an envelope, it missed the door closing between frames. This node takes your corrected JSON and stamps it as editor-verified, in a format the music and sound-cue nodes will trust.
Its opinion is the whole point: nothing downstream treats a vision model's output as fact until a human signs off on it. It literally refuses to run if you haven't ticked the box saying you reviewed it.
How it works
Three inputs, all required:
frame_times_json- aforceInputsocket, so it must be wired. It comes fromKIE • Sample Video Frames, and what the node needs out of it is a validduration_seconds. That duration is the bound every event time is validated against.corrected_events_json- your edited JSON. The default is{"events":[]}, which will fail validation because the node requires between 1 and 30 events. Paste the vision model's output here and fix it.editor_reviewed- the gate, default off.
Flip it on and each event is checked: must be an object, time_seconds must be a real finite number between 0 and the video duration, and description must be a non-empty string of at most 250 characters. Anything failing that gets a numbered error naming the event, so a 30-event paste doesn't leave you hunting.
What comes back is a fresh timeline object: schema_version, the duration, a start marker at 0.0, then your events sorted by time and typed editor_verified_event with "source": "editor-reviewed vision notes". There's also an interpretation field that says exactly what this is - "Editor-reviewed still-frame notes, not an automatically verified audiovisual transcript." The node is careful about its own epistemics, which is refreshing in a category that usually isn't.
Output is a single STRING: reviewed_events_json. Wire it into KIE • Music Brief from Video or KIE • Sound Cue Sheet, which both look for editor_verified_event entries and treat them differently from raw pixel-change markers. That difference is why the workflow exists.
Why the gate is worth the annoyance
Left alone, the pipeline degrades into confident nonsense. KIE • Video Event Analysis only detects that pixels changed - it cannot know what happened. A vision model looking at eight sparse stills will describe scenes that never existed and miss action that happened between samples. If those guesses flow into a music brief, you get a score that swells at 0:06 because somebody's jacket moved.
Watch the clip. Correct the JSON. Tick the box. Then the descriptions that reach the composer prompt are things that actually happened.
No provider call, no credits, no network.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
python -m pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
This node is pure JSON validation - no API key needed. The pack's templates/review-video-events.json shows the sampling half of the chain; the reviewing half is this node with the vision model's JSON pasted in.
Where people get burned
- "Inspect the video and model descriptions, correct any mistakes, then enable editor_reviewed." You forgot the checkbox. It's the most common encounter with this node, and it's intentional.
- An empty events array.
{"events":[]}is the default and it fails - the node wants at least one event. If your clip genuinely has nothing to cue, don't run this node. - Times outside the video. An event at 12.4s in a 12.0s clip is rejected. Vision models are happy to invent a timestamp past the end.
- Long descriptions. 250 characters, hard limit. Write cue text, not a paragraph.
- Skipping the watch. The node can't detect that you didn't actually review the footage. It's a gate, not a conscience.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| frame_times_json | STRING | — | |
| corrected_events_json | STRING | {"events":[]} | — |
| editor_reviewed | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| reviewed_events_json | STRING | — |