Zhenzhen Doubao_Seedance2_0_AssetIdBundle
The glue node that wires Seedance 2.0 assets into one bundle
- asset_bundle
This is a pure plumbing node, and it's honest about it: no prompt, no generation, no flash. Comfly_Doubao_Seedance2_0_AssetIdBundle collects the asset_id strings you got from Comfly_Doubao_Seedance2_0_Asset uploads, arranges them per slot, and emits one asset_bundle string that Comfly_Doubao_Seedance2_0 swallows as a single input. Think of it as the adapter that turns "a bunch of uploaded files" into "the reference set my video call expects."
The inputs, which are all strings
Every optional input takes an asset_id from the Asset Upload node - the tooltips say it plainly ("asset_id from Asset Upload"):
- first_frame / last_frame - the start and end frames.
- ref_image1 … ref_image9 - up to nine reference images for style/subject grounding.
- video1 … video3 - reference video clips.
- audio1 … audio3 - reference audio clips.
Wire the matching asset_id outputs into the slots you care about. You don't have to fill them all - an empty bundle with only a first frame is a perfectly valid input.
The output
One asset_bundle STRING. It's JSON under the hood, built from whatever ids you fed in, and it goes straight into the asset_bundle input on Comfly_Doubao_Seedance2_0. That's the entire job.
Why bother
The whole point is that the Seedance 2.0 node's asset_bundle path avoids re-uploading media (and re-paying upload token fees) on every generation. With this bundle, you upload once, then reuse the same reference set across dozens of runs - just re-run the bundle and the video node, not the uploads. If you're doing batch work with a fixed character reference or a signature audio clip, this is the setup that stops the bleeding on fees.
Install
Same as the whole pack:
cd ComfyUI/custom_nodes
git clone https://github.com/ainewsto/Comfyui_Comfly
Or ComfyUI Manager → "Comfyui_Comfly" → restart. Nothing runs locally and nothing downloads - it's string plumbing, so all you need is the pack installed and the key from ai.comfly.chat in Comflyapi.json.
Gotchas
It does exactly nothing on its own - wire it or don't bother. The one real footgun is slot confusion: ref_image1 on the bundle must map to the reference role you intend in the video prompt, and the generation node treats the slots as separate roles, so mixing up which id goes in which slot produces "why is my character wearing the wrong outfit" results. Also, asset ids can go stale if the relay's storage expires, so a bundle that worked last week may need a re-upload of the assets before it works today. Keep the workflow file ("seedance2.0 上传素材ID 多参工作流.json") around as a reference - it shows the intended wiring end to end.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| apikeyopt | STRING | — | |
| first_frameopt | STRING | asset_id from Asset Upload | |
| last_frameopt | STRING | asset_id from Asset Upload | |
| ref_image1opt | STRING | asset_id from Asset Upload | |
| ref_image2opt | STRING | asset_id from Asset Upload | |
| ref_image3opt | STRING | asset_id from Asset Upload | |
| ref_image4opt | STRING | asset_id from Asset Upload | |
| ref_image5opt | STRING | asset_id from Asset Upload | |
| ref_image6opt | STRING | asset_id from Asset Upload | |
| ref_image7opt | STRING | asset_id from Asset Upload | |
| ref_image8opt | STRING | asset_id from Asset Upload | |
| ref_image9opt | STRING | asset_id from Asset Upload | |
| video1opt | STRING | asset_id from Asset Upload | |
| video2opt | STRING | asset_id from Asset Upload | |
| video3opt | STRING | asset_id from Asset Upload | |
| audio1opt | STRING | asset_id from Asset Upload | |
| audio2opt | STRING | asset_id from Asset Upload | |
| audio3opt | STRING | asset_id from Asset Upload |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| asset_bundle | STRING | — |