video

Generate video clips on the user's own GPU through Guaardvark: text-to-video, image-to-video, first+last frame animation, clips with their own soundtrack and dialogue (MiniMax H3), short looping anima

SKILL.md

GitHub

Video with Guaardvark

Read setup first if the backend or the comfyui plugin state is unknown. Video needs a 16 GB-class NVIDIA card. Clips take minutes, so every route is queued.

Pick the model

GET ${GUAARDVARK_URL:-http://localhost:5000}/api/batch-video/models lists the registry with is_downloaded / is_ready (and missing_files), capabilities (modes t2v/i2v, max_frames, native_fps, aspect_ratios, min_steps, speed_profiles, audio_out), vram_mb, size_gb, license. Installed on a typical box:

id what it is notes
wan22-5b Wan 2.2 TI2V-5B, t2v + i2v, 24 fps, up to 121 frames the everyday default
wan22-14b / wan22-14b-i2v Wan 2.2 14B MoE, 16 fps, 81 frames best quality; speed_profile: lightx2v-4 for 4-step Lightning
ltx23-distilled-fp8 LTX-2.3 distilled, 8 steps, 161 frames fastest long clips
minimax-h3-int8 MiniMax H3, text / first / last / first+last frame, generates its own stereo soundtrack and spoken lines pass audio: true; ~6.5 min for 5 s on a 16 GB card
cogvideox-5b / -i2v CogVideoX, 8 fps, 49 frames legacy

The active default is GET /api/settings/active_video_model (resolved.t2v, resolved.i2v, resolved.scene). Never pass a step count below the model's min_steps; the server raises it and the result would be smeared anyway.

One clip: MCP generate_video

  • prompt: scene, subject, motion, style, and any spoken lines (H3 speaks them).
  • model, duration_s (clamped to the model), aspect_ratio (one the model declares), style (cinematic, realistic, anime, 3d_animation, ...), num_inference_steps, speed_profile.
  • audio: true forces a soundtrack-capable model (H3) and fails on a silent family.
  • first_image / last_image: document id or path; last frame needs a first+last mode model.
  • reference_images (up to 9), reference_clips (up to 3, 2-15 s, their own sound left out) and reference_audio (up to 3): lock a person, look, motion or voice on the reference build (minimax-h3-ref2va-int8, picked when no model is named). The prompt names them <Picture N>, <Video N>, <Audio N>; to keep a clip's sound, pass its track as reference_audio. In the Studio this is the References input on Video Gen.
  • wait_for_result default false: the tool returns a batch id and a Studio deep link at once. Give the user the link; poll get_generation_status(batch_id=...) (MCP) or GET /api/batch-video/status/<batch_id> if they ask you to wait. wait_for_result: true blocks for the clip, up to 30 minutes.

Looping animation: MCP generate_animation

Frame-morph GIF/MP4 via img2img: prompt, motion, frames 2-24, strength 0.1-0.5, format gif|mp4|both. Use for short loops and stickers, not for cinema clips. Over MCP it answers at once with a job id (tooljob_...); poll get_generation_status for the GIF and MP4 URLs, or pass wait_for_result: true to wait up to 60 s for them.

Batch: REST

B=${GUAARDVARK_URL:-http://localhost:5000}
# text to video, one clip per prompt
curl -s -X POST $B/api/batch-video/generate/text -H 'Content-Type: application/json' -d '{
  "prompts": ["a red kite over a grey sea", "the same kite at dusk"],
  "model": "wan22-5b", "prompt_style": "cinematic", "enhance_prompt": true, "seed": 42
}'
# image to video
curl -s -X POST $B/api/batch-video/generate/image -H 'Content-Type: application/json' -d '{
  "image_paths": ["/abs/path/frame.png"], "prompt": "slow push in, wind in the grass", "model": "wan22-5b"
}'

Optional keys the server honours: negative_prompt, guidance_scale, motion_strength, interpolation_multiplier (RIFE frame interpolation), combine_frames, lora_name + lora_strength, adapters, guides (per-prompt audio/image anchors on models that declare them), last_frame_paths (image route), storyboard_concept / storyboard_shots. Poll GET $B/api/batch-video/status/<batch_id>; files via GET $B/api/batch-video/video/<batch_id>/<video_name>; cancel POST $B/api/batch-video/batch/<batch_id>/cancel; retry POST $B/api/batch-video/retry/<batch_id>.

Rules

  • Quote the model and the queued batch id back to the user. Never claim a clip is done until the status route says so.
  • The GPU is exclusive: while video renders, chat models are evicted. Warn before queuing a long batch.
  • The Studio page (Video Gen) shows the same queue; the user may prefer to watch it there.