This ComfyUI workflow builds personalized, lip-synced video clips by conditioning LTX-2.3 on three inputs: a reference image (appearance), a short audio clip (timing and vocal style), and a structured prompt (scene, transcript, and sound context). The core logic is encapsulated in a subgraph (the custom node with ID 98ee9e5b-467b-40aa-a534-36033f27d0b4), which orchestrates LTX-2.3 generation with ID-LoRA identity conditioning. LoadImage provides the face/pose reference, LoadAudio or RecordAudio supplies your speech, and SaveVideo writes the final video. A MarkdownNote in the canvas summarizes the structured prompt format and links to the LTX-2.3 and ID-LoRA resources.

Technically, ID-LoRA injects a lightweight identity adapter into the LTX-2.3 video diffusion process so the generated person matches the reference image without a full fine-tune. The prompt is split into three tags the subgraph expects: [VISUAL] (scene and appearance), [SPEECH] (the exact words to say), and [SOUNDS] (speaker style and ambient cues). The audio drives mouth shapes and timing, while [SPEECH] helps the model resolve phoneme-level detail for clearer lip articulation. The result is a short video of your subject speaking the provided line, visually aligned to the reference image and temporally synced to the audio.

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.

video_ltx2_3_id_lora.json
Fetching workflow JSON…

Run it from TypeScript or Python with the Comfy SDK. The same code targets Comfy Cloud or a ComfyUI you host yourself — only the base URL changes.

// Install (beta)
npm i @comfyorg/sdk

// Run "LTX-2.3: ID LoRA" (TypeScript)
import { Comfy } from "@comfyorg/sdk";

const client = new Comfy({ apiKey: "comfyui-..." });

// This workflow, exported in API format (see note below)
const wf = await client.workflows.fromFile("video_ltx2_3_id_lora_api.json");

const asset = client.assets.fromFile("input.png");
wf.setInput("269", "image", asset); // LoadImage

const job = await client.run(wf);
await job.getOutputs("341")[0].toFile("output.png"); // SaveVideo

The SDK takes a workflow in API format: open this workflow in ComfyUI and use File → Export Workflow (API).

Comfy Cloud API access requires a plan with an API key.

FAQ

Frequently Asked Questions

View all workflows
Showing 30 of 30 templates