ComfyUI Node

SVD_txt2vid_ConditioningwithLatent

SVD wasn't built for prompts — this node tries anyway

By SpaceKendo·Created 3 years ago·Updated about a year ago· 7
SVD_txt2vid_ConditioningwithLatent
  • clip
  • samples_to
  • positive
  • negative
  • latent
motion_bucket_id127
fps6
augmentation_level0.00
text1
text2

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. text1 is what you're asking for, text2 what 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 VAEDecodeVideoCombine. 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_cfg 18 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.

Categoryconditioning/video_models

Inputs (7)

NameTypeDefaultDescription
clipCLIP
samples_toLATENT
motion_bucket_idINT1271–1023
fpsINT61–1024
augmentation_levelFLOAT0.000–10
text1STRING
text2STRING

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT