SVD_txt2vid_ConditioningwithLatent
SVD wasn't built for prompts — this node tries anyway
- clip
- samples_to
- positive
- negative
- latent
Stable Video Diffusion is an image-to-video model. Feed it a frame and it animates that frame; there is no real "describe a scene, get video" mode, because that's not how it was trained. So when a tiny one-node pack called ComfyUI-svd_txt2vid showed up claiming you could prompt SVD with text instead, the interesting question wasn't "does it work" - it was "does SVD even have text-conditioning tokens inside it to exploit?"
This node is that experiment, written by SpaceKendo in mid-2025. It swaps the init-image input of the stock SVD_img2vid_Conditioning node for a positive/negative text pair, then feeds the model a latent as the conditioning frame. The author's own verdict, right in the README: it was a quick test, it's no longer maintained, and it's headed for the archive. You can still learn something from it - but go in with that expectation set.
How it works
The mechanism is refreshingly small. Read the __init__.py and you'll see the whole thing: it lifts the exact text-encoding path from ComfyUI's CLIPTextEncode (clip.tokenize + encode_from_tokens), builds a positive conditioning from text1 and a negative from text2, then stuffs the same conditioning dict the stock SVD node uses - motion_bucket_id, fps, augmentation_level, and critically concat_latent_image - into each. That concat_latent_image is the trick. In stock SVD conditioning it's the VAE-encoded init image, stitched into the sample during sampling so the model knows its starting frame. Here it's whatever latent you hand in as samples_to. Same conditioning shape, different source of the frame.
So "txt2vid" is doing some heavy lifting in that name. You're not generating from nothing: you're prompting the model and pinning a latent as frame zero. The model still wants a frame to hold onto.
The inputs that matter
Six inputs, and you'll realistically touch four:
clip(CLIP) - the CLIP from your SVD checkpoint, same as the stock workflow.samples_to(LATENT) - the input that replaces the init image. This is your conditioning frame, and the README is blunt about it: feed it in a noisy state, because ComfyUI's default noise doesn't produce good results. Power-Law noise is explicitly recommended over the default.text1/text2(multiline strings) - your positive and negative prompts.text1is what you're asking for,text2what you're trying to push away.motion_bucket_id(INT, 1–1023, default 127) - SVD's motion dial. Lower = subtle, higher = more motion. 127 is the middle of the road.
fps (default 6) and augmentation_level (default 0) are carried over from stock SVD conditioning; leave them alone unless you know why you're changing them.
What comes out
Three outputs: positive and negative CONDITIONING, plus latent - which is just your samples_to passed through untouched, a convenience passthrough. Wire the two conditionings into your sampler (the README suggests VideoLinearCFGGuidance ahead of it), then VAEDecode → VideoCombine. It drops into a standard SVD workflow as a drop-in replacement for SVD_img2vid_Conditioning.
Installing it
One node, one file, no requirements.txt - the only dependency is ComfyUI core itself. Through ComfyUI Manager, search "ComfyUI-svd_txt2vid", or:
cd ComfyUI/custom_nodes
git clone https://github.com/SpaceKendo/ComfyUI-svd_txt2vid
Restart ComfyUI. You'll still need an SVD checkpoint (e.g. svd_xt or svd_xt_1_1) on top of this - the pack ships no models.
Troubleshooting and the honest verdict
Everything below comes from the author's own README, and it reads like a list of things they hit while testing:
- The start of your video will be rough. The README says generation needs "a couple frames to get on its feet." Don't judge a clip by its first two seconds.
- Colors wash out. Max out the EDM sigma and lean on prompts like "realistic" to coax saturation back.
- CFG behaves differently here. The author recommends raising it way above normal with
VideoLinearCFGGuidance, keeping a small spread of about 2 - e.g.min_cfg18 and sampler CFG 20 - for consistent image quality. - Default noise is the wrong noise. If your results look broken, the latent's noise state is the first suspect.
Which brings us to the bigger picture. This was always a science experiment: the finding - that SVD carries text-conditioning tokens and will sort of follow a prompt - matters more than the output quality, which the wider community found hit-or-miss even at the time (one early 2024 thread sums it up as "the output is hit or miss... with broken images"). SVD is a 2023 model from Andreas Blattmann's line of work at Stability, and the video scene has moved decisively past it. The author says it plainly: use WAN 2.1, HunyuanVideo, or LTXV instead. If you want to see SVD prompted properly, this node is a fun afternoon. If you want text-to-video that ships, go with the newer models.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| samples_to | LATENT | — | |
| motion_bucket_id | INT | 1271–1023 | — |
| fps | INT | 61–1024 | — |
| augmentation_level | FLOAT | 0.000–10 | — |
| text1 | STRING | — | |
| text2 | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |