AnimateDiff Loader [Legacy] ππ π β
The original one-node AnimateDiff loader
- model
- context_options
- motion_lora
- ad_settings
- sample_settings
- ad_keyframes
- MODEL
This is the node that started it all - the one-stop loader that made AnimateDiff usable in ComfyUI back when "Vid2Vid will never be the same" was the pitch. Plug in an SD 1.5 model, pick a motion module from a dropdown, and it comes out the other side able to generate coherent motion. No separate load-then-apply dance, no wiring five nodes together. Just one box.
It's tagged [Legacy] in the node picker for a reason, though. Kosinkadink later split this into a plain AnimateDiff Loader (ADE_AnimateDiffLoaderGen1) that does the same job but adds scale/effect multival and per-block controls this one doesn't have. If you're starting a fresh workflow, grab that one instead. If you inherited a workflow (or a YouTube tutorial) that uses this exact node, it still works exactly as documented - nothing about it is broken or deprecated in the "stop using this" sense, it's just not the node the author points newcomers to anymore.
What it does
Under the hood this is doing what the KB calls the core AnimateDiff trick: injecting a temporal motion module - a set of attention layers trained once on WebVid-10M - into your SD 1.5 UNet's spatial layers without touching them. That's why any checkpoint, LoRA, or embedding you already have just works once you slot this node in. It's also why it doesn't work on SDXL or Flux checkpoints: the motion module is architecture-specific to SD 1.5.
The inputs and outputs that matter
You feed it model (your checkpoint) and pick model_name from the dropdown of motion modules ComfyUI found on disk. beta_schedule defaults to autoselect, which is right for almost everyone - the exception is if you loaded a HotshotXL or AnimateDiff-SDXL module, both of which the README says need their own specific schedule, not autoselect.
The optional side is where the actual video-length trick lives: plug a Context Options node into context_options and you get sliding-window generation past the native 16-frame ceiling - this is literally the feature the "Unlimited Context Length" announcement was about. motion_lora takes a camera-movement LoRA (zoom, pan, tilt), ad_settings and sample_settings take tweak bundles from their respective nodes, and motion_scale is a blunt float dial on overall motion strength. Leave apply_v2_models_properly on true unless you have a specific reason not to - it's a compatibility fix for v2-family modules. Output is just MODEL, straight into your KSampler.
How to install it
ComfyUI Manager: search AnimateDiff Evolved, confirm the author is Kosinkadink, install, restart. Manually:
cd ComfyUI/custom_nodes && git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
Then you need at least one motion module - the pack ships none. Grab mm_sd_v15_v2 or v3_sd15_mm (links to HuggingFace/Google Drive/CivitAI are in the README) and drop it in either ComfyUI/models/animatediff_models or ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models. That's what populates the model_name dropdown - an empty dropdown almost always means the file landed in the wrong folder.
Common issues & troubleshooting
Weird warped or "melty" output. Community threads consistently trace this to a beta_schedule mismatch - someone left autoselect on while loading a HotshotXL module, or picked the wrong SDXL VAE alongside an SD1.5-trained module. Match the schedule to the module family and double-check your VAE matches your checkpoint's base architecture.
Visible watermark, especially with mm_sd_v15. Not a bug - the AnimateDiff paper's training data (WebVid-10M) had Shutterstock watermarks baked in, and mm_sd_v15's finer-motion tuning makes it more visible than mm_sd_v14. Switch modules if it bothers you.
Motion looks fine per-window but "seams" at the edges of long clips. That's the sliding-context boundary showing through. Lowering denoise strength a bit tends to hide it; a true fix is picking overlap-heavy Context Options settings, which is exactly what that optional input is for.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| model_name | COMBO | 0 options: | |
| beta_schedule | COMBO | autoselect | 13 options: autoselect, use existing, sqrt_linear (AnimateDiff), linear (AnimateDiff-SDXL), linear (HotshotXL/default), avg(sqrt_linear,linear), +7 |
| context_optionsopt | CONTEXT_OPTIONS | β | |
| motion_loraopt | MOTION_LORA | β | |
| ad_settingsopt | AD_SETTINGS | β | |
| sample_settingsopt | SAMPLE_SETTINGS | β | |
| motion_scaleopt | FLOAT | 1.000 | β |
| apply_v2_models_properlyopt | BOOLEAN | true | β |
| ad_keyframesopt | AD_KEYFRAMES | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | β |