🎬 Veo3.1 参考图生成同步 (Grsai)
Veo 3.1 with up to three reference images — keep the subject, move the camera
- ref_image_1
- ref_image_2
- ref_image_3
- video
- video_url
- response
Where the frames node pins down your start and end, this one pins down your subject. Feed Veo 3.1 up to three reference images - a character turnaround, a product, an environment - and it generates video that keeps those references consistent while the prompt supplies the motion. It's the multi-reference path for Veo on the Grsai channel, and it's the node you reach for when "same person, new scene" matters more than "exact framing."
Inputs:
- prompt - multiline; what happens in the video. Default "A cute cat playing on the grass".
- model -
veo3.1-fast,veo3.1-fast-1080p,veo3.1-fast-4k. Note the difference from the frames node: no Pro models here. The multi-ref path only exposes the fast family, per the pack's own model list - if you need Pro, you'll want to check the frames node or the async multi-ref node. - aspect_ratio - 16:9 / 9:16.
- ref_image_1 / ref_image_2 / ref_image_3 - IMAGE inputs, all optional. One to three references; the node uploads whichever you connect. The KB's character-consistency framing applies directly here: references are how you drag the same identity across shots.
- api_key - optional, pack-wide Grsai fallback.
Outputs: video (ComfyUI VIDEO, local MP4), video_url (remote URL), response (status/task/credits).
Mechanically it uploads the references to Grsai (/v1/video/veo with a urls array), then polls /v1/draw/result every ~5s for up to 900s with a live progress bar, and downloads via yt-dlp-first/curl-fallback. It blocks while doing it, and like every sync node here it re-runs on each queue pass (IS_CHANGED), so leaving it in an always-queueing workflow means repeated generations and repeated credit hits.
Install is pack-wide:
cd ComfyUI/custom_nodes
git clone https://github.com/jieg9341-lab/ComfyUI-nkxx
Restart; auto-install handles requests, pandas, yt-dlp, opencv-python, aiohttp. Grsai key from nkxx.grsai.ai.
Grounded gotchas:
- Reference upload failure aborts the run. The node raises on the first reference image that fails to upload ("部分参考图上传失败"), rather than silently generating without it - so a bad image can kill an otherwise-fine job. Check your reference images are real, decodable files.
- One reference is fine; three is not automatically better. Veo's reference handling does best with a few high-quality, consistent angles (a turnaround) rather than three random crops.
- Fast-only model list is a real constraint - the pack's own
VEO_MODELS_FAST_ONLYlist governs this node, so don't hunt for a Pro option that isn't there. - Moderation (
output_moderation/input_moderation) shows up as a Chinese status reason inresponseinstead of a crash - Veo filters are strict, especially on faces/celebrities.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A cute cat playing on the grass | — |
| model | COMBO | veo3.1-fast | 3 options: veo3.1-fast, veo3.1-fast-1080p, veo3.1-fast-4k |
| aspect_ratio | COMBO | 16:9 | 2 options: 16:9, 9:16 |
| api_keyopt | STRING | — | |
| ref_image_1opt | IMAGE | — | |
| ref_image_2opt | IMAGE | — | |
| ref_image_3opt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| response | STRING | — |