(Down)Load MagicDance Model
The node that quietly drags in a 2.3GB checkpoint on your first run
- pipe
Start here, because nothing else in the pack renders until this node finishes. (Down)Load MagicDance Model builds the entire pipeline - UNet, SD 1.5 VAE, text encoder, and the two ControlNet-style branches - and, if the weights aren't on disk yet, downloads them from HuggingFace. It's the reason your first run stalls for a while on a download bar before any of the interesting nodes do anything.
The pack is a ComfyUI port of MagicPose (USC + ByteDance, Nov 2023), the research model that animates a single reference photo along a sequence of OpenPose poses. This loader is where the whole thing comes together, and it's the only node with a genuinely surprising behavior: "Load" is doing a lot of heavy lifting.
What it actually does
The node reads a yaml config that describes the SD 1.5-based architecture (model_lib/ControlNet/models/cldm_v15_reference_only_pose.yaml, bundled with the repo), then loads the checkpoint on top of it. Look at the source and you'll see a lazy fallback chain for the weights file: it checks the exact path you give, then relative to the pack, then relative to your ComfyUI install, then the default pretrained_weights/ folder, and only if all of those fail does it call snapshot_download and pull model_state-110000.th (~2.3GB) from Boese0601/MagicDance on HuggingFace into pretrained_weights/. Hence the "(Down)Load" in the display name - it's a downloader masquerading as a loader.
You can skip the surprise download by grabbing the file yourself beforehand:
cd ComfyUI/custom_nodes/ComfyUI-MagicDance
wget https://huggingface.co/Boese0601/MagicDance/resolve/main/model_state-110000.th \
-O pretrained_weights/model_state-110000.th
(There's an hf-mirror.com variant of that URL in the README if you're in a region where HuggingFace is slow or blocked.)
The inputs
Both are plain text boxes, not ComfyUI file pickers - this is a port, and it shows.
config- path to the architecture yaml, defaulting to the bundledcldm_v15_reference_only_pose.yaml. Leave it alone. If the file's missing the node raises an error telling you to clone the original repo - that error only fires if the repo layout is broken.model- the checkpoint, defaulting topretrained_weights/model_state-110000.th. Leave it alone too. It's the fallback chain above that makes this work whether you pre-downloaded or not.
Output and what comes next
The single output is the pipe (MAGICDANCEPIPE), which you wire into all three other nodes in the pack: MagicDanceEncoder (reference image → latent), MagicDanceSampler (the actual generation), and MagicDanceDecoder (latents → frames). One pipe, one run - you load the model once and thread it through.
Getting it installed
ComfyUI Manager can install the pack (search "ComfyUI-MagicDance"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/bombax-xiaoice/ComfyUI-MagicDance
pip install -r ComfyUI-MagicDance/requirements.txt
Two gotchas worth knowing before the first run. The folder must be named ComfyUI-MagicDance - the code hardcodes that path for its imports, so renaming breaks it. And requirements.txt is the original MagicDance conda environment flattened into a giant pip list; most packages are already present in a stock ComfyUI install, and if one or two fail to build (looking at you, triton and xformers), it's usually fine to move on - ComfyUI brings its own. The README says the whole thing runs on an RTX 3070 8GB with components offloaded separately, so don't assume you need a big card.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| config | STRING | model_lib/ControlNet/models/cldm_v15_reference_only_pose.yaml | — |
| model | STRING | pretrained_weights/model_state-110000.th | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | MAGICDANCEPIPE | — |