Nodes/ComfyUI-NetflixVoid/VOID Prepare VLM Analysis
ComfyUI Node

VOID Prepare VLM Analysis

The node that turns 'what breaks if I delete this?' into a question a vision model can answer

By jaskirat05·Created 5 months ago·Updated 5 months ago· 0
VOID Prepare VLM Analysis
  • images
  • black_mask_video
  • masked_grid_first_frame
  • grid_reference_frames
  • qwen_input_frames
  • vlm_prompt
  • grid_rows
  • grid_cols
instructionremove the object
min_grid8
use_multi_frame_gridstrue

This is the most interesting node in the VOID pack, because it's where the "physics" of video object removal actually happens. Removing a person isn't just painting them out - if they're holding a guitar, the guitar falls; if they're standing in sun, the shadow goes with them. The VOID framework solves this by asking a vision-language model to think it through before any pixels get regenerated, and this node builds the question.

Here's the trick: a VLM can't tell you "the mug on frame 30 is at pixel (412, 287)" - but it can tell you "the mug occupies grid cells (row 5, col 3) at 44% through the video" if you give it a coordinate system. So this node draws one. It takes your video plus the black mask (what's being removed), overlays a yellow grid, paints the removal target red, and packages everything into a big, carefully-crafted prompt that demands strict JSON back.

How it works

First it computes a grid from your video's aspect ratio (min_grid, default 8 - so a 16:9 video gets 8 rows × 14 cols rather than a square). It then builds:

  • a first frame with the red removal overlay + grid,
  • and, when use_multi_frame_grids is on (the default), ten reference frames sampled at 0%, 11%, 22% ... 100% of the video, each gridded and labeled, so the model can track objects that appear or move mid-video.

Then it assembles a long prompt that instructs the VLM to identify three things: integral belongings (the bike being ridden, the backpack - stuff removed with the person), affected objects (things that fall, stay, or change: held guitars, shadows, reflections), and a scene description, all with grid coordinates, trajectories, and a confidence score. The prompt even encodes rules like "supporting vs acting on" - if the person holds the guitar up against gravity it falls (trajectory needed); if they're just crushing a can on a table, the can stays (no trajectory). The author clearly spent time on this prompt.

The inputs and outputs that matter

  • images (IMAGE) - your video frames.
  • black_mask_video (IMAGE) - the stage-1 mask from VOID Export Black Mask.
  • instruction (STRING, default "remove the object") - your edit intent, passed straight into the prompt.
  • min_grid (INT, default 8) - minimum grid resolution. More cells = finer coordinates but harder for the model.
  • use_multi_frame_grids (BOOLEAN, default true) - off gives you only the single masked first frame; useful if your VLM chokes on many images.

Outputs:

  • vlm_prompt (STRING) and qwen_input_frames (IMAGE) - feed these to your VLM. The example workflow wires them into the pack's VOID Gemma 4 E2B Video Prompt, but any Qwen-VL-style setup works; qwen_input_frames is built for that.
  • masked_grid_first_frame and grid_reference_frames (IMAGE) - the pieces, if you want to eyeball or reuse them.
  • grid_rows / grid_cols (INT) - keep these connected to VOID Build Grey Mask. The README is explicit about it: the grey-mask stage interprets the VLM's grid coordinates using the same grid this node computed. Disconnect them and coordinates drift.

Install

Same as the rest of the pack: ComfyUI Manager → search "ComfyUI-NetflixVoid", or git clone https://github.com/jaskirat05/ComfyUI-NetflixVoid into custom_nodes, then restart. Heavy requirements.txt, nothing special for this node beyond that.

Common issues

  • Shape mismatch errors - images and black_mask_video must be identical frame counts and resolution. Feed both straight from the same loader/mask path.
  • VLM returns garbage - the prompt is demanding and wants strict JSON. A weaker VLM will occasionally hallucinate coordinates. That's why there's a confidence score in the output schema; learn to trust it, and re-run with a stronger model before blaming the pipeline.
CategoryVOID

Inputs (5)

NameTypeDefaultDescription
imagesIMAGE
black_mask_videoIMAGE
instructionSTRINGremove the object
min_gridINT82–64
use_multi_frame_gridsBOOLEANtrue

Outputs (6)

NameTypeDescription
masked_grid_first_frameIMAGE
grid_reference_framesIMAGE
qwen_input_framesIMAGE
vlm_promptSTRING
grid_rowsINT
grid_colsINT