Nodes/ComfyUI-Kling-Direct/Kling Lip Sync (URLs)
ComfyUI Node

Kling Lip Sync (URLs)

The URLs-only shortcut

By IxMxAMAR·Created 5 months ago·Updated 2 months ago· 4
Kling Lip Sync (URLs)
  • auth
  • video
  • video_file
  • audio
  • url
  • task_id
video_url
audio_url

This is the thin convenience wrapper the main Kling Lip Sync node doesn't quite cover: the case where both your video and your audio already live on the internet. It takes two URLs, submits a lip-sync job to Kling, and hands back the rendered clip - no local file handling, no upload round-trip, nothing to host.

The pack's authors added it in v2.1 precisely because the plain LipSync node takes a video_url plus an audio tensor or audio_url, which leaves you juggling local paths when your source material is already hosted somewhere like a catbox link or a public bucket. KlingDirect_LipSyncFromUrl collapses that to the two fields that matter: video_url (the source footage) and audio_url (the speech track, mp3 or wav). Both are required - the node refuses to run if either is blank, which saves you a failed API call.

What it is and what it isn't

Mechanically, it's a hardwired audio2video lip-sync. There's no mode input, no text field, no voice picking - if you want Kling to speak text for you, that's the job of the main LipSync node in text2video mode. This one just says "sync this clip to this audio file." Under the hood it's the same /v1/videos/lip-sync endpoint, the same task polling, the same download-to-output handling as its sibling.

Where it genuinely shines is chaining: you can pipe the url output of a Kling TTS or Video to Audio call straight into audio_url, or grab video_url from any generation node's hosted result, and never touch local storage at all. That's the whole pitch, and it's a real one for anyone building reusable pipelines rather than one-off renders.

Outputs

The standard five, identical to the rest of the video nodes: video (IMAGE frames for preview and post-processing), video_file (downloaded path), audio (the synced soundtrack), url (hosted result), and task_id for chaining into Task Status or Video Extend.

Install and requirements

It ships in ComfyUI-Kling-Direct: ComfyUI Manager → search "Kling Direct" → install, or git clone https://github.com/IxMxAMAR/ComfyUI-Kling-Direct into ComfyUI/custom_nodes and restart. Nothing heavy to download - the pack runs on stdlib plus requests/Pillow/numpy/torch/opencv-python, which ComfyUI already has. What you do need is a Kling access key + secret key from https://app.klingai.com/global/dev (KYC required), wired in via the Kling AI Authentication node (or KLING_ACCESS_KEY / KLING_SECRET_KEY env vars), and the correct region selected for your account - Singapore is the default, fine for global signups.

Where people get burned

  • Privacy, in both directions. Your video and audio URLs are sent to Kling's servers, and your results are hosted on their CDN at a shareable URL. That's inherent to the design, not a bug - but it means you shouldn't point this at footage you'd rather keep private. Kling's moderation applies to whatever you feed it.
  • Dead or auth-walled URLs. Kling has to be able to fetch both URLs. A signed, expiring S3 link, a login-gated host, or a URL that 403s will fail the job server-side. The pack v2.1 also blocks downloads from loopback/RFC1918 addresses unless you set KLING_ALLOW_INTERNAL_HTTP=1, so a URL pointing at localhost won't silently work.
  • Mode confusion. Since there's no mode input, people occasionally feed this node a local file path and wonder why it fails. A local file isn't a URL - use the main LipSync node with its audio tensor input, or host the file first via the pack's Cloud Uploader.

If your media is local and you want the same convenience without hosting anything, the main KlingDirect_LipSync with an audio input is the better fit. This one is the answer when everything's already on the internet.

CategoryKling AI/Video

Inputs (3)

NameTypeDefaultDescription
authKLING_AUTH
video_urlSTRINGPublic URL of the source video.
audio_urlSTRINGPublic URL of the audio (mp3/wav).

Outputs (5)

NameTypeDescription
videoIMAGE
video_fileSTRING
audioAUDIO
urlSTRING
task_idSTRING