Seedance Load Video (Ace Data Cloud)
Turning a cloud URL back into a VIDEO you can wire up
- video
Seedance is one of the closed video models you simply cannot download - ByteDance has never open-weighted the Seedance line, so inside ComfyUI the model is a network call and the thing it hands back is a URL. This node is the other half of that arrangement: a small loader that takes an Ace Data Cloud CDN link and gives you a honest-to-goodness native VIDEO object you can pass to the rest of your graph. It is the least glamorous node in the pack and the one you will touch on every single run.
What it does, mechanically
Download the URL, wrap the bytes in ComfyUI's native video type. That's the whole node. It fetches with requests in 1 MB chunks, 10-second connect / 90-second read timeouts, three attempts with a short backoff on connection failures, then calls VideoFromFile from comfy_api.latest over an in-memory buffer and returns it as VIDEO. Nothing is decoded at this point - the downstream node that wants frames does that.
The interesting part is what it refuses. The download has to be HTTPS, has to land on one of four Ace CDN hostnames (cdn.acedata.cloud, cdn.acedata2.cloud, platform.cdn.acedata.cloud, platform2.cdn.acedata.cloud), must not use redirects, and must not carry credentials in the URL. There's also a hard 128 MiB ceiling enforced while streaming, not just from a Content-Length header. That is a deliberate safety fence around "download an arbitrary URL" and it means this node is not a general-purpose video fetch tool. Point it at a fal link, your own bucket, or a local file and you get Media URL must be an Ace Data Cloud HTTPS CDN link. It also never asks for an API key - worth knowing, because half the tutorials floating around suggest stuffing one in. You don't need it here.
Inputs and outputs
There are exactly two things on this node, which is why it's easy to trust:
media_url- required STRING, empty by default. Paste the URL, or wire it from thefirst_media_urloutput of the generate or retrieve nodes.video- the single output, typeVIDEO.
VIDEO here is ComfyUI's native video type, not an image batch, so wire it into a native consumer - core's SaveVideo, or whatever else declares a VIDEO input. That distinction trips people coming from the old VHS_LoadVideo world, where "video" meant a pile of frames plus an audio dict. This is not that.
Installing it
ComfyUI Manager is the easy path: search Seedance, check the publisher reads acedatacloud and the package is Seedance by Ace Data Cloud, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/SeedanceComfyUI
python -m pip install -r SeedanceComfyUI/requirements.txt
Dependencies are about as light as this gets - requests and jsonschema, no torch, no ffmpeg bindings. The README's one real requirement is ComfyUI 0.39.0 or newer, because native video types and comfy_api.latest don't exist in older builds. The tool nodes need ACEDATACLOUD_API_KEY (or ACEDATACLOUD_API_TOKEN) in the ComfyUI process environment; this loader doesn't, but you'll set it anyway to use the rest of the pack.
Where people get burned
"Task is pending; retrieve the same task ID again." That's the node telling you media_url was empty. Nine times out of ten the upstream first_media_url was blank because the job hadn't finished - re-run the retrieve node with a longer wait_seconds, then re-queue this one. Don't paste a stale URL into the widget and forget you did it.
Your URL is rejected and it looks like a bug. It isn't: only Ace CDN links pass. If you re-hosted the clip somewhere friendlier, or you're holding a signed URL from a different provider, this node is the wrong tool.
The 128 MiB wall. Fine for normal 720p/1080p mp4s; a long 4K clip in mov can bump it. If you're hitting it, drop output_format to mp4 and the resolution a notch rather than fighting the loader.
Missing output, or an import error on startup. That's a ComfyUI version problem, not a pack problem. Update ComfyUI before you go deleting nodes.
And the obvious one: a video URL is not a video file. If your workflow dies halfway through a run, the CDN link can still be alive - keep the task ID, re-run the retrieve node, and load the result again instead of paying for a fresh generation.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| media_url | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |