Modelverse HappyHorse I2V
Cheap image-to-video, the pack's workhorse
- client
- first_frame_image
- url
- task_id
If HappyHorse T2V is the sketchpad, this is the pencil - the image-to-video version (happyhorse-1.0-i2v) that takes a still you already like and makes it move, without spending Sora money on the attempt. Same story as the whole pack: it's a UCloud Modelverse API call, so the model runs in the cloud and the only hardware requirement is your ability to pay per run. For animating keyframes, character renders, or product shots on a budget, this is the node most people in this pack actually reach for first.
What it is
Give it a single starting frame - an IMAGE tensor or a URL - and it generates video continuing from that frame. The model is the same HappyHorse 1.0 family as its T2V sibling, so expectations should match: solid motion, not cinematic glory. That's the point. You animate cheaply, and when a take matters, you re-roll it in a pricier model with the same frame.
The inputs that matter
- client - required wire from the Modelverse Client / Secret Client node.
- first_frame_image or first_frame_url - the starting frame. One or the other, never both, never neither - the node enforces this on purpose.
- prompt - optional guidance for the motion. Worth two words even if it's just "slow zoom."
- resolution - 480P, 720P (default), or 1080P.
- duration - 1–15 seconds, default 5.
- seed - 0 for random, or fix it to reproduce a take.
- watermark - off by default; flip it if you want branding on the clip.
Outputs are the pack-standard url + task_id strings. Feed url into the Modelverse Preview Video node to download the mp4 to ComfyUI/output and preview it.
Installing and keying up
One plugin, every node in it. Install via ComfyUI Manager - search "ComfyUl-UCloud" → Install → restart - or:
cd ComfyUI/custom_nodes
git clone https://github.com/ucloud/comfyui-plugin
restart ComfyUI. Deps are the usual light set (requests, pillow, numpy, openai, GitPython), no model downloads. The setup step is the ModelVerse API key from the UCloud console: type a secret name into the Modelverse Secret Client node (the key lives in secrets.json, out of your workflow) or add MODELVERSE_API_KEY=... to the pack's config.ini.
Common issues
- Motion is jittery from low-res frames - the model inherits whatever the starting image gives it. Feed it the best-quality frame you have.
- Both frame inputs filled, or neither - the node raises on purpose. Pick exactly one way to supply the frame.
- "API key is not set" - empty client node. It's always the client node first.
- No preview - the video node returns a URL string, not pixels. Modelverse Preview Video is the missing middle step.
- Slow queue - cloud video polls every 5 seconds and can sit queued. Five-second clips shouldn't take five minutes, but on a busy cloud they can.
The workflow pattern that earns its keep: build the frame in local ComfyUI where you're not paying per pixel, then hand that exact frame to this node to see it move. Best of both worlds, and the cheapest way to iterate on video in this pack.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| client | MODELVERSE_API_CLIENT | — | |
| first_frame_imageopt | IMAGE | First frame image | |
| first_frame_urlopt | STRING | First frame image URL or base64 (use either this OR first_frame_image) | |
| promptopt | STRING | Optional text prompt to guide video generation | |
| resolutionopt | COMBO | 720P | Output resolution tier |
| durationopt | INT | 51–15 | Video duration in seconds |
| seedopt | INT | 00–2147483647 | Random seed (0 for random) |
| watermarkopt | BOOLEAN | false | Add watermark to output video |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |
| task_id | STRING | — |