StepFun Video Chat
Ask a cloud model what's happening in a video — no frame extraction, no VRAM
- client
- response
- total_tokens
- finish_reason
StepFun Video Chat is the pack's answer to the annoying part of video understanding: you don't have to extract frames, run an image model over each one, and stitch the captions back together. You hand the node a link to a video, it asks StepFun's vision model what's going on, and you get a description back as a single string. It's the video sibling of StepFun Chat Completion, and it's built around the same idea - understanding happens in the cloud, so your only local cost is a network call.
Where does that link come from? Either a public URL to any video the API can reach, or a stepfile:// link produced by the pack's VideoFileUploader node. That's the flow the README's StepFunVideo2Caption workflow uses: upload your file once, get a stepfile:// string, feed it straight into the video_url input here. If you've got a local video, the uploader is a necessary first step - this node only takes URLs.
How it works
The node builds a chat request where the user message contains a video_url content block alongside your text prompt, then sends it to the StepFun API using the STEPFUN_CLIENT from the StepFunClient node. The heavy lifting - decoding, sampling frames, understanding - happens server-side. You don't even need FFmpeg on your machine for the API call itself; you only need it if you're shrinking videos before uploading (more on that below).
Inputs and outputs that matter
- client - the
STEPFUN_CLIENTfrom StepFunClient. Required. - model -
step-1v-8k,step-1v-32k, orstep-1.5v-mini. Defaultstep-1.5v-mini. Nostep-2model here, which is a relief - no silent image-ignoring gotcha like its sibling. - system_prompt - defaults to
Description What happened to the uploaded video. It's misspelled ("Description" instead of "Describe") but it works fine; change it to anything you like. - user_prompt - optional extra instruction, like "only mention the main character's actions."
- video_url - the URL or
stepfile://link. - json_mode - forces a JSON object response, handy for structured scene analysis.
- temperature, top_p, max_tokens - standard sampling knobs;
max_tokensdefaults to 1024.
The outputs are three strings, same shape as the image node: response (the description - the one that matters), total_tokens, and finish_reason. Wire response into a ShowText node to read it, or into anything that wants a caption string.
Installing and setting up
Same pack as the rest of the StepFun nodes. Manager (search "ComfyUI-SCStepFun") or:
cd ComfyUI/custom_nodes
git clone https://github.com/chenbaiyujason/ComfyUI_StepFun
cd ComfyUI_StepFun
pip install -r requirements.txt
Then restart ComfyUI and grab an API key from platform.stepfun.com. The only hard dependency is openai.
Common issues
- Videos over ~128MB - the README is explicit that you should compress or split before uploading. The pack's own guide ships two FFmpeg one-liners; the split one is the useful one:
ffmpeg -i sample.mp4 -acodec copy -f segment -segment_time 120 -vcodec copy -reset_timestamps 1 -map 0 output_time_%d.mp4
- Wrong format - if the API rejects a file, convert to MP4:
ffmpeg -i sample.mkv -codec copy sample.mp4. - Stale README warning - the very top of the README says "video upload is not implemented," then the uploader section describes it. The shipped code clearly implements upload; trust the code and the uploader, not that first line. It's README rot.
- Network errors - this node is pure API. No internet, no result, and errors show up as node failures rather than friendly messages.
It's a niche node - a small pack with single-digit impressions - but if you're captioning videos at scale or building a video-to-prompt pipeline without a big GPU, this is exactly the shortcut that saves you an hour of frame-extraction plumbing.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| client | STEPFUN_CLIENT | — | |
| model | COMBO | step-1.5v-mini | 3 options: step-1v-8k, step-1v-32k, step-1.5v-mini |
| system_prompt | STRING | Description What happened to the uploaded video | — |
| user_prompt | STRING | — | |
| video_url | STRING | — | |
| json_mode | BOOLEAN | false | — |
| temperature | FLOAT | 0.50–2 | — |
| top_p | FLOAT | 0.90–1 | — |
| max_tokens | INT | 10241–8192 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| response | STRING | — |
| total_tokens | STRING | — |
| finish_reason | STRING | — |