Nodes/Comfyui-zhenzhen/zhenzhen-sonilo-video-to-music-fal
ComfyUI Node

zhenzhen-sonilo-video-to-music-fal

Score your clip without scoring it yourself

By T8mars·Created about a year ago·Updated 2 days ago· 740
zhenzhen-sonilo-video-to-music-fal
  • video
  • audio
  • audio_url
  • all_audio_urls
  • response
video_url
api_key
prompt
num_samples1
start_offset0.0
duration5.0
video_wayupload
poll_interval6
max_poll_attempts600
skip_errorfalse
seed0

Every silent AI video eventually needs a soundtrack, and picking music that fits a clip's pacing is the kind of tedious job nobody wants to do by hand. Comfly_sonilo_video_to_music_fal is the zhenzhen pack's FAL wrapper for Sonilo's video-to-music model: feed it a video, get back generated music that matches the mood and rhythm. It lands as a real AUDIO tensor, so you can drop it straight onto your clip in the graph. The whole pitch is "the video is the prompt."

Mechanically it's the standard fal flow: the token goes in the node's api_key field, the video goes up through zhenzhen's proxy (https://ai.t8star.org/fal), the job gets submitted to fal-ai/sonilo/video-to-music, and the node polls until the audio is ready. Pay-per-call, prepaid-style credits.

The inputs that matter

  • video_url (required) or video - the source. The required field is actually video_url (a public URL - when video is connected, the URL is ignored and the tensor is uploaded instead). So wire the video output of any generation node in, or paste a hosted URL.
  • prompt - optional style/mood hint ("upbeat synth-pop, 120bpm"). Empty lets Sonilo infer everything from the video, which is usually the right call.
  • num_samples - 1–3 variations, 1 default. More samples, more cost.
  • start_offset - seconds into the video where scoring starts (0 = unset).
  • duration - seconds of music, default 5.0 (a low-cost default); 0 = full remaining video. If you only need a sting, 5s keeps the bill down.
  • video_way - upload (default, from the tensor) or video_url.

Outputs: audio (the tensor), audio_url, all_audio_urls (all samples if num_samples > 1), and response. Standard 6s × 600 polling defaults and the usual skip_error.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen

or ComfyUI Manager (search "Comfyui-zhenzhen"), restart. Paste a zhenzhen token (overseas https://ai.t8star.org) into api_key. No model downloads; audio handling is in the pack's normal dependency stack.

Common issues

  • "requires a video input" - you left both video and video_url empty. Provide one.
  • Music that ignores the pacing - Sonilo works best on video with clear cuts or beats; a static talking head gives it little to latch onto. Try giving it a prompt instead of relying on inference.
  • Short clip, long silence at the end - check duration; if it's set to a fixed few seconds it won't score the whole video. Set 0 for full-remaining-video.

For the "just give me a soundtrack I don't have to think about" case, this node is the whole answer - and it slots into the same workflow as the pack's TTS nodes if you want voiceover and music on one clip.

Categoryzhenzhen/FAL

Inputs (12)

NameTypeDefaultDescription
video_urlSTRINGPublic video URL. Ignored when video input is connected.
videooptVIDEO
api_keyoptSTRING
promptoptSTRINGOptional music style/mood prompt. Empty lets Sonilo infer from video.
num_samplesoptINT11–3
start_offsetoptFLOAT0.00–600Seconds. 0 leaves unset.
durationoptFLOAT5.00–600Seconds. 0 leaves unset/full remaining video. 5s is a low-cost default.
video_wayoptCOMBOupload2 options: upload, video_url
poll_intervaloptINT61–60
max_poll_attemptsoptINT60010–3600Default 600*6s = 3600s timeout.
skip_erroroptBOOLEANfalse
seedoptINT00–18446744073709550000Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter.

Outputs (4)

NameTypeDescription
audioAUDIO
audio_urlSTRING
all_audio_urlsSTRING
responseSTRING