Nodes/ComfyUI-Ollama-Describer/πŸ¦™ Ollama Video Describer πŸ¦™
ComfyUI Node

πŸ¦™ Ollama Video Describer πŸ¦™

Describe a clip by feeding a vision LLM its frames

By alisson-anjosΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 125
πŸ¦™ Ollama Video Describer πŸ¦™
  • video_frames
  • result
β—„modelβ–Ύβ–Ί
β—„custom_modelβ–Ί
β—„api_hosthttp://localhost:11434β–Ί
β—„timeout300β–Ί
β—„temperature0.2β–Ί
β—„top_k40β–Ί
β—„top_p0.9β–Ί
β—„repeat_penalty1.1β–Ί
β—„seed_number42β–Ί
β—„num_ctx4096β–Ί
β—„max_tokens4096β–Ί
β—„keep_model_alive-1β–Ί
β—„frame_skip5β–Ί
β—„max_frames16β–Ί
β—„system_contextYou are a helpful AI assistant specialized in analyzing a sequence of video frames and generating a detailed and accurate textual description of the events. Describe the actions, people, objects, and how the scene evolves across the frames.β–Ί
β—„promptDescribe the events happening in this sequence of video frames in detail. Provide a clear and concise description that highlights the most important actions. Video:β–Ί
β—„structured_output_formatβ€”β–Ί

There's no such thing as a "video model" in Ollama - LLaVA and friends only understand images. So what this node actually does is take the frames you feed it (an IMAGE batch, the same shape you'd get out of a Load Video node), sample a subset of them, and hand that sequence to a vision LLM with a prompt that says "here's a sequence, describe what's happening across it." It's the sibling of OllamaImageDescriber, adapted for temporal content instead of a single still.

It's genuinely useful for the boring-but-real job of "what is even in this clip" - auto-summarizing a batch of generated videos, writing an alt-text-style description for a render, or sanity-checking that a video model actually followed your prompt before you burn more compute on a longer run. Don't expect frame-perfect motion analysis, though - you're getting a still-image model reasoning over a handful of stills, not a purpose-built video-understanding model, so fast or subtle motion between sampled frames just won't be seen.

How it works

Same mechanism as the image describer: it calls your local Ollama server over HTTP (default http://localhost:11434), so Ollama has to be running with a vision model already pulled. The twist here is frame_skip and max_frames - the node doesn't send every frame in your batch (that would blow past the model's context and take forever), it samples every Nth frame up to a cap, then sends that reduced sequence in one shot.

The inputs and outputs that matter

  • video_frames (IMAGE) - your frame batch, the required input this whole node exists for.
  • frame_skip (default 5) - take every 5th frame. Lower it if your clip is short or the action is fast and subtle; raise it for long clips where you just want the gist.
  • max_frames (default 16) - hard cap on how many sampled frames actually get sent, regardless of frame_skip. This is your real lever against context blowup and slow requests.
  • model / custom_model - same dropdown of vision models as the image describer (LLaVA variants, MiniCPM-V, Moondream); type a custom Ollama model name if yours isn't listed.
  • prompt / system_context - default to "describe the events happening in this sequence," but rewrite them if you want a specific angle (camera movement, subject actions, scene changes).

num_ctx defaults higher here than on the image node (4096 vs 2048) and max_tokens defaults to 4096, since a video description genuinely needs more room than a single-image one. The rest - temperature, top_k, top_p, repeat_penalty, seed_number, keep_model_alive - are the same LLM sampling knobs as every other node in this pack; leave them alone until you have a reason not to. There's an optional structured_output_format too, if you want the description constrained to a JSON shape you can pull apart with the JSON Property Extractor node.

Output is one result STRING.

How to install it

Requires Ollama installed and running, plus a vision-capable model pulled (ollama pull llava or similar - this node uses the same model list as OllamaImageDescriber, it just feeds them multiple frames instead of one). Get the node pack through ComfyUI Manager (search "ComfyUI-Ollama-Describer") or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/alisson-anjos/ComfyUI-Ollama-Describer.git
pip install -r requirements.txt   # or install.bat on Windows

Restart ComfyUI after.

Common issues & troubleshooting

If nothing happens or you get a connection error pointing at localhost:11434, Ollama isn't running - start it before queuing the workflow, same as every node in this pack. If the response takes forever or times out, check max_frames before touching timeout - sending 16+ full-resolution frames through a vision model on a modest GPU is genuinely slow, and dropping max_frames to 8 or lowering frame_skip's effective sample count is usually the faster fix than just extending the timeout. And don't expect this node to catch anything happening between your sampled frames - if frame_skip is 10 and something important happens on frame 4, it simply won't be in what the model sees.

CategoryOllama

Inputs (18)

NameTypeDefaultDescription
modelCOMBO19 options: llava:7b-v1.6-vicuna-q2_K (Q2_K, 3.2GB), llava:7b-v1.6-mistral-q2_K (Q2_K, 3.3GB), llava:7b-v1.6 (Q4_0, 4.7GB), llava:13b-v1.6 (Q4_0, 8.0GB), llava:34b-v1.6 (Q4_0, 20.0GB), llava-llama3:8b (Q4_K_M, 5.5GB), +13
custom_modelSTRINGβ€”
api_hostSTRINGhttp://localhost:11434β€”
timeoutINT3000–18446744073709550000β€”
temperatureFLOAT0.20–10β€”
top_kINT400–100β€”
top_pFLOAT0.90–10β€”
repeat_penaltyFLOAT1.10–10β€”
seed_numberINT42-1–18446744073709550000β€”
num_ctxINT4096β€”
max_tokensINT40961–18446744073709550000β€”
keep_model_aliveINT-1-1–18446744073709550000β€”
video_framesIMAGEβ€”
frame_skipINT51–1000β€”
max_framesINT161–128β€”
system_contextSTRINGYou are a helpful AI assistant specialized in analyzing a sequence of video frames and generating a detailed and accurate textual description of the events. Describe the actions, people, objects, and how the scene evolves across the frames.β€”
promptSTRINGDescribe the events happening in this sequence of video frames in detail. Provide a clear and concise description that highlights the most important actions. Video:β€”
structured_output_formatoptSTRINGβ€”

Outputs (1)

NameTypeDescription
resultSTRINGβ€”