Animate Diff Module Loader
Point ComfyUI's original AnimateDiff nodes at a motion module
- lora_stack
- MOTION_MODULE
If you've opened a workflow with an AnimateDiffModuleLoader node sitting near the top, with a dropdown full of .ckpt or .safetensors files, that's the entry point for motion on SD 1.5. It reads a motion module - a block of temporal-attention weights trained once by the AnimateDiff researchers - off disk and hands it downstream as a MOTION_MODULE object that this pack's sampler uses to inject motion into an otherwise-static SD 1.5 checkpoint. Nothing about your base model, your LoRAs, or your ControlNets has to change; the motion module bolts onto the frozen UNet at sample time, which is the whole trick that made AnimateDiff spread as fast as it did back in 2023.
Worth knowing going in: AnimateDiff-the-technology peaked in 2023–24 and the reference repo hasn't been pushed since mid-2024. Wan 2.2 has since matched or beaten it on every practical front that used to keep people here - arbitrary length, loops, per-frame ControlNet, even the "runs on a potato" VRAM argument. If you're starting a fresh video project, look at Wan first. What's genuinely left for AnimateDiff is a specific look - that dreamy, morphing keyframe-interpolation feel some artists still chase - plus existing SD 1.5 pipelines nobody wants to rebuild. If that's you, this loader is where you start.
One more orientation note before you go hunting for tutorials: the pack this node ships in is the older, simpler ComfyUI implementation of AnimateDiff (its own README screenshots still point back at github.com/ArtVentureX/comfyui-animatediff, which is where the code originated before landing under the SipherAGI org). It's a different codebase from Kosinkadink's ComfyUI-AnimateDiff-Evolved, which is the one most current guides and YouTube walkthroughs assume - ADE_-prefixed nodes, fancier per-frame context scheduling, motion masking. You won't find ADE_AnimateDiffLoaderWithContext here. What you've got instead is the plainer original set: loader, sampler, combine, sliding-window options, and a video loader for feeding GIFs into ControlNet.
Inputs and outputs
There's really one decision on this node: model_name, a dropdown populated from whatever motion-module files sit in your comfyui-animatediff/models/ folder. Grab mm_sd_v15_v2.ckpt if you want Motion LoRA support later - it's the only module version those LoRAs actually work with. The optional lora_stack input takes a MOTION_LORA_STACK, built from a chain of AnimateDiffLoraLoader nodes, letting you bake in camera moves (zoom, pan, tilt, roll) at load time instead of patching them in separately later. Leave it unplugged if you're not using motion LoRAs - most workflows aren't.
Output is a single MOTION_MODULE, which plugs straight into the motion_module input on AnimateDiffSampler, the node that actually runs the denoising loop with motion injected. That's the whole handoff - this node's only job is getting the right weights loaded and named correctly for the sampler to pick up.
Installing it
Through ComfyUI Manager: search "AnimateDiff" and install this pack. Manually, it's the standard drill:
cd ComfyUI/custom_nodes
git clone https://github.com/SipherAGI/comfyui-animatediff
Restart ComfyUI after either method. Then - and this is the step people skip - download an actual motion module and drop it into comfyui-animatediff/models/. That folder lives inside the cloned repo, not ComfyUI's top-level models/ directory, which is the single most common reason this node shows up empty. The README links the original modules on Google Drive, HuggingFace, and CivitAI, plus a couple of community-finetuned ones (AD_Stabilized_Motion, TemporalDiff); mm_sd_v15_v2.ckpt from HuggingFace is the one to grab if you want LoRA support down the line. If you're stacking motion LoRAs, those go in a sibling loras/ folder instead.
Where people get stuck
An empty or missing dropdown almost always means the module is in the wrong folder - it has to sit inside the node pack's own models/ directory, not ComfyUI's shared one, and you need a restart after adding a file. A CUDA error: invalid configuration argument at sample time is a known xformers incompatibility with this pack's attention code; the documented workaround is booting ComfyUI with --disable-xformers. And if you load an SDXL checkpoint upstream, don't expect this to do anything useful - AnimateDiff's motion modules are trained for SD 1.5 specifically and don't transfer; the SDXL variant never left beta, and the community consensus on it has consistently been "garbage."
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: | |
| lora_stackopt | MOTION_LORA_STACK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MOTION_MODULE | MOTION_MODULE | — |