ComfyUI-DioBrando-Nodes
Grok Vision Analyze — send an image (tensor or URL) to xAI's Grok vision API and get a text response back.
ComfyUI-DioBrando-Nodes
ComfyUI custom nodes I use day-to-day:
- Grok Vision Analyze — send an image (tensor or URL) to xAI's Grok vision API and get a text response back. Useful for auto-captioning, prompt generation from reference images, or quick visual QA.
- Load Image From URL — fetch a remote image directly into ComfyUI as
IMAGE+MASKtensors. No download/upload step needed. - SCAIL-2 Infinity (auto window) — generate arbitrarily long SCAIL-2 character animation from one node, instead of hand-wiring chunk after chunk.
Install
Clone into your ComfyUI custom_nodes folder:
cd ComfyUI/custom_nodes
git clone https://github.com/DanielBartolic/ComfyUI-DioBrando-Nodes
cd ComfyUI-DioBrando-Nodes
pip install -r requirements.txt # only Pillow + numpy + torch, all standard ComfyUI deps
Restart ComfyUI. The nodes show up under the DioBrando/ category.
Grok Vision setup
Set your xAI API key as an environment variable before launching ComfyUI:
export XAI_API="xai-..."
Or paste it into the optional api_key input on the node (overrides env var).
Models supported
grok-4.3-latest ← default
grok-4.3
grok-4.20-multi-agent-0309
grok-4.20-0309-reasoning
grok-4.20-0309-non-reasoning
grok-4-1-fast-reasoning ← fastest + cheapest
grok-4-1-fast-non-reasoning ← fastest + cheapest
grok-4-vision
grok-3-vision-beta
grok-2-vision-1212
grok-vision-beta
SCAIL-2 Infinity
SCAIL-2 is trained on 81-frame chunks with a 5-frame overlap (76-frame step). Going past
81 frames normally means wiring multiple WanSCAILToVideo → KSampler → VAEDecode blocks
by hand, feeding each chunk's decoded tail into the next via previous_frames /
video_frame_offset. This node runs that loop internally — chunk → sample → decode →
re-anchor on the last 5 frames → repeat until the driving pose video is exhausted — and
stitches the result into one continuous video.
Nothing is reimplemented: it calls core WanSCAILToVideo.execute() for per-chunk
conditioning, common_ksampler() to sample, and VAE.decode / decode_tiled to decode. All
SCAIL-2 features (pose mask, reference mask, replacement mode, clip-vision, pose
strength/start/end) pass straight through. Peak VRAM stays at one 81-frame window regardless
of total length — each decoded chunk moves to CPU immediately and the cache is freed per
window.
| Param | Default | Notes |
|---|---|---|
| window_length | 81 | Frames per chunk. SCAIL-2 trained at 81 — keep it. |
| previous_frame_count | 5 | Overlap frames anchored from the previous chunk. Trained at 5. |
| max_frames | 0 | Hard cap on total frames. 0 = run until the pose video ends. |
| decode_tiled | off | Tiled VAE decode, to bound decode VRAM at high resolution. |
| vary_seed_per_window | off | Off = same seed each chunk (best continuity). |
With a pose_video it generates fixed 81-frame windows stepping by 76 until the output
reaches the driving video length, then trims the overshoot (228 driving frames = exactly 3
windows). Without one, it does a single window. The first 81 frames are identical to the
stock single-chunk graph.
Requires a ComfyUI build with SCAIL-2 core support (comfy_extras.nodes_scail, added in
PR #14373, merged 2026-06-09). On older
builds this one node is skipped with a warning and the rest of the pack still loads. Models:
Comfy-Org/SCAIL-2.
Nodes
| Node | Inputs | Outputs |
|---|---|---|
| Grok Vision Analyze (Image) | IMAGE tensor + prompt | response, usage |
| Grok Vision Analyze (URL) | image URL string + prompt | response, usage |
| Load Image From URL | URL string | IMAGE, MASK, url |
| SCAIL-2 Infinity (auto window) | model, vae, conditioning, pose video + masks, reference image, sampler settings | images, latent, total_frames |
Author
@diobrando0 on HuggingFace · @workordie on Civitai · DanielBartolic on GitHub.
License
MIT — see LICENSE.