
This ComfyUI tutorial workflow turns a single image into a short, lip‑synced UGC-style video with cloned or selected voice. It chains three stages: prompt creation from your uploaded image, speech synthesis with ElevenLabs, and video generation with LTX‑2.3. The Create Prompt group routes the image from LoadImage into GeminiNode to auto-generate two texts: a performance-ready speech script (with expression tags) and a scene description. RegexExtract parses the Gemini response to separate the “speech” and “scene” sections cleanly for downstream nodes.
For audio, you can pick a preset voice via ElevenLabsVoiceSelector or bring your own tone with ElevenLabsInstantVoiceClone, then synthesize the final narration in ElevenLabsTextToSpeech and optionally save it with SaveAudioMP3. The Create Video group feeds the scene description and the audio into the LTX‑2.3 video node (UUID: 98fb87e2-23b5-4ecb-aacc-365912414a12) to produce a talking-style video with accurate lip sync, previewed by PreviewAny and written with SaveVideo. This setup is practical for rapid UGC, product explainers, testimonials, or social posts because it automates script writing from an image and guarantees voice-to-lips alignment through ElevenLabs + LTX.
API
Use this workflow from code
Every Comfy workflow is a JSON graph. The payload below is this workflow, exactly as ComfyUI runs it — fetch it from the URL, keep it in version control, or load it in ComfyUI and run it node by node.
GET https://comfy.org/workflows/download/bd874c5e02d6.jsonFetching workflow JSON…
Run it from Python or TypeScript with the Comfy SDK. The same code targets Comfy Cloud or a ComfyUI you host yourself — only the base URL changes.
# Install (beta)
pip install comfy-sdk # Python
npm i @comfyorg/sdk # TypeScript
# Run "Generate UGC Video With Voice Clone" (Python)
from comfy_sdk import Comfy
client = Comfy(api_key="comfyui-...")
# This workflow, exported in API format (see note below)
wf = client.workflows.from_file("template_image_speech_to_video_api.json")
asset = client.assets.from_file("input.png")
wf.set_input("440", "image", asset) # LoadImage
job = client.run(wf)
for output in job.get_outputs("445"): # SaveAudioMP3
output.to_file(output.name)The SDK takes a workflow in API format: open this workflow in ComfyUI and use File → Export Workflow (API). API access requires a Comfy Cloud plan with an API key. SDK docs · Get an API key
FAQ














