Nodes/ComfyUI VIDU/Character to Video (VIDU)
ComfyUI Node

Character to Video (VIDU)

Animate one photo of a character through Vidu's API

By 1zhangyy1·Created 2 years ago·Updated about a year ago· 10
Character to Video (VIDU)
  • character_image
  • video_url
  • cover_url
  • task_id
prompt
duration
token
api_basehttps://api.vidu.cn
model_version
resolution
enhancetrue
moderationtrue
seed0
aspect_ratio
movement_amplitude

Feed this node one image of a character and a prompt, and it asks Vidu's cloud model to animate that character - not "image to video" in the generic sense, but a mode specifically tuned for keeping a character's identity intact while they move. If you've been fighting local models to keep a face from drifting across a clip, this is the node built to skip that fight entirely, at the cost of sending your image to someone else's server and paying per generation.

Why this exists, and why it's not local

This node is part of comfyui-vidu-nodes, a thin wrapper around Vidu's REST API. Vidu is a real closed-source Chinese video generation company - in a community thread cataloguing which labs still ship open weights, Vidu gets named in the same breath as Kling and Hailuo: "Vidu, Kling, Hailuo, all closed source." Nothing about this node runs on your GPU. It uploads your character image and prompt to Vidu, polls until the job finishes, and hands you back a URL - the character-consistency work happens entirely on their infrastructure, which is exactly why it can do things local checkpoints currently struggle with.

That gap is real, not just marketing. In a thread from someone shipping an AI-animated series, they specifically credited Vidu's newer models for expression fidelity that local Wan 2.2 and LTX 2.3 workflows "only get maybe 60-70% of the way" toward - the subtle eye and ear movement that sells a character reaction. It's not free: they put the cost of an episode's worth of generation (Vidu plus Kling, with a 4K upscale) at roughly $200-250. That's the trade this node makes on your behalf - quality you can't easily get locally, billed per clip.

One honest caveat: that praise was specifically about Vidu's newest model line. This node's model_version dropdown only exposes 1.5 and 2.0 - if Vidu has shipped something newer since, you won't see it here until the pack's maintainer (a solo dev, going by the repo) updates the code to expose it.

The inputs and outputs that matter

Required fields:

  • character_image - your reference photo. Vidu's own limits apply: JPG/PNG (the pack's v2 upload path also accepts JPEG/WebP), under 50MB, and for this specific node the image can't be smaller than 128×128 and its aspect ratio has to stay under 1:16 or 16:1 - looser than the general image limit, since character crops are often extreme.
  • prompt - a multiline text description of what the character should do.
  • duration - 4 or 8 seconds.
  • token - your Vidu API token, obtained from Vidu directly.
  • api_base - defaults to https://api.vidu.cn; leave it unless Vidu's told you otherwise.
  • model_version - 1.5 or 2.0.
  • resolution - 512, 720p, or 1080p.

Worth setting from the optional block: aspect_ratio (16:9 / 9:16 / 1:1) and movement_amplitude (auto / small / medium / large, controlling how much motion Vidu injects). enhance (prompt enhancement, on by default) and moderation (content moderation, on by default) you can usually leave alone. seed is there if you want reproducibility across runs.

Outputs are video_url, cover_url (thumbnail), and task_id. Route video_url into the pack's Video Downloader node promptly - Vidu's generated links expire after one hour.

Installing it

ComfyUI Manager: search ComfyUI VIDU. Or by hand: cd ComfyUI/custom_nodes && git clone https://github.com/1zhangyy1/comfyui-vidu-nodes, then restart. No model weights to download since nothing runs locally - the only setup step that isn't automatic is getting your own API token from Vidu.

Where people get stuck

Character to Video's image constraints are the tightest in the pack, so most failures trace back to those: an image under 128×128, or one whose aspect ratio blows past the 1:16 limit, gets rejected before generation even starts. Beyond that, the pack's documented failure modes apply here same as everywhere else in it - a 404 or JSON parse error almost always means a bad or expired token, and upload failures point to image format or size. Check the console for the [Vidu Character2Video]-prefixed log line; it prints the actual request and response Vidu sent back, which is more informative than the error ComfyUI surfaces in the UI.

CategoryVIDU

Inputs (12)

NameTypeDefaultDescription
character_imageIMAGE
promptSTRING
durationCOMBO2 options: 4, 8
tokenSTRING
api_baseSTRINGhttps://api.vidu.cn
model_versionCOMBO2 options: 1.5, 2.0
resolutionCOMBO3 options: 512, 720p, 1080p
enhanceoptBOOLEANtrue
moderationoptBOOLEANtrue
seedoptINT00–2147483647
aspect_ratiooptCOMBO3 options: 16:9, 9:16, 1:1
movement_amplitudeoptCOMBO4 options: auto, small, medium, large

Outputs (3)

NameTypeDescription
video_urlSTRING
cover_urlSTRING
task_idSTRING