Asset → Assets 🐑
The Collector You Wire Before Asset → Slots
- character_1
- character_2
- character_3
- character_4
- character_5
- character_6
- character_7
- character_8
- character_9
- scene_1
- scene_2
- scene_3
- scene_4
- scene_5
- scene_6
- scene_7
- scene_8
- scene_9
- assets
You've got a Load Asset 🐑 for the hero, one for the grandmother, one for the kitchen - and downstream you have a node that wants a roster, not six separate wires. Asset → Assets 🐑 is that adapter. It takes the individual asset bundles your Load nodes hand out and squashes them into one ordered MIE_ASSET_ROSTER that Asset → Slots 🐑 can split back apart into numbered picture and audio outputs.
If you're using MiniMax H3 Loop Plan Generator V2 🐑, you probably don't need this node - the generator already emits its own assets roster from its sockets, aligned with the prompts by construction. This one exists for the other case: a plain video chain where the Load nodes talk to Asset → Slots directly, with no prompt generator in the middle.
How it collects, and why order is the entire contract
The node has eighteen optional sockets, character_1 through character_9 and scene_1 through scene_9, and it grows the next socket as you wire the tail one, so an empty node looks like it has two inputs and not eighteen. On execution it walks all nine character slots in index order, then all nine scene slots, skips whatever isn't wired, and appends each bundle to one flat list. That list is the output.
The consequence is the whole point: slot order is <Picture N>. The first character you wire becomes Picture 1, the second Picture 2, and scenes come after every character no matter which socket they sit in. This is the same numbering rule the prompt generator uses, so if you wire both nodes in the same order you get the same numbers - and the canvas label on both shows the wired names in slot order, so you can eyeball whether they agree instead of counting sockets.
It's the "one wire instead of forty" pattern that ComfyUI plumbing settled on years ago: the bundle carries name, description, voice, image and audio together, and there's nothing to unpack and re-thread. The trade-off is the one that pattern always has - a single wire is legible, but it hides what's inside it. If you wire a scene into character_1, nothing on the canvas tells you. What you get instead is a hard error at execution.
Inputs and outputs
All eighteen slots are MIE_ASSET and all are optional; there's nothing to type. Wire the asset output of a Load Asset node into each one.
The one output is assets (MIE_ASSET_ROSTER), and it goes into exactly one place: the assets input of Asset → Slots. Nothing else in the pack eats a roster.
Execution enforces three things, all loudly: a bundle whose kind doesn't match the socket prefix (character_N fed a scene, or the reverse) raises and names the socket; the same asset wired into two slots raises duplicate asset in the roster; and more than nine assets raises, because the H3 manifest only supports nine pictures.
Install
Grab the pack through ComfyUI Manager (search ComfyUI_MieNodes) or clone it and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/MieMieeeee/ComfyUI-MieNodes
pip install -r ComfyUI-MieNodes/requirements.txt
The asset-library nodes don't download any models - the "assets" are plain files on disk (a JSON plus a PNG, plus a WAV for characters) under the plugin's asset_library/ folder, or whatever $MIE_ASSET_LIBRARY points at. The pack's requirements are all small utilities (pillow, soundfile, imagehash, huggingface_hub and friends), so this is a light install compared to a video-model pack. You'll still need the video model itself elsewhere in the graph.
Things that go wrong
The error messages here are unusually specific, which is good, because the failure modes are user-side. character_2 is not a character asset bundle means you wired a scene Load into a character slot - the fix is the socket, not the node. duplicate asset in the roster means the same name went in twice, and it's almost always a copy-pasted Load node that still points at the first asset.
The subtler one is a roster that builds fine and produces the wrong video. That's not the node's fault: you wired the sockets in a different order than the plan that's generating your <Picture N> references. Re-wire in the same order, or just put the generator back in front and use its own assets output - that's the version where alignment can't drift.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| character_1opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| character_2opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| character_3opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| character_4opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| character_5opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| character_6opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| character_7opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| character_8opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| character_9opt | MIE_ASSET | 接 Load Asset(角色)的 asset 输出;按序号排 <Picture N>,接上尾槽自动露出下一个。 Wire a character Load Asset's asset output; slot order = <Picture N>; wiring the tail socket grows the next. | |
| scene_1opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. | |
| scene_2opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. | |
| scene_3opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. | |
| scene_4opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. | |
| scene_5opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. | |
| scene_6opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. | |
| scene_7opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. | |
| scene_8opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. | |
| scene_9opt | MIE_ASSET | 接 Load Asset(场景)的 asset 输出;排在全部角色之后。 Wire a scene Load Asset's asset output; scenes come after all characters. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| assets | MIE_ASSET_ROSTER | — |