Nodes/ComfyUI_MieNodes/Load Character Asset ๐Ÿ‘
ComfyUI Node

Load Character Asset ๐Ÿ‘

Six Outputs, One Character, and a Menu You Can't Find It In

By MieMieeeeeยทCreated 2 years agoยทUpdated 2 days agoยท 269
Load Character Asset ๐Ÿ‘
    • name
    • description
    • voice
    • image
    • audio
    • asset
    โ—„library_dirโ–บ
    โ—„name๏ผˆไธ‹ๆ‹‰้€‰ๆ‹ฉ่ต„ไบง๏ผ‰โ–บ

    This node isn't in your node menu, and that's intentional. Load Character Asset ๐Ÿ‘ is the pre-merge version of Load Asset ๐Ÿ‘ with kind locked to character; the pack kept it registered under the hidden category so old workflows keep loading, and pointed new work at the unified node. If you've got one in a graph, it behaves exactly as you remember - six outputs, no kind dropdown to argue with.

    What it reads

    A character in this library is four things: a name, an authored English description of how they look (60โ€“100 words is the house style), a one-line English voice descriptor, exactly one portrait PNG, and one voice sample. All of it sits in characters/<name>/ as character.json, images/01.png and audio/01.wav.

    The outputs mirror that: name, description and voice as strings, image as an IMAGE, audio as an AUDIO, and asset - the whole bundle (MIE_ASSET) on a single wire. Wire asset into a character_N socket on MiniMax H3 Loop Plan Generator V2 (or a character slot on Asset โ†’ Assets ๐Ÿ‘) and the generator gets the appearance text and the reference picture without a vision model ever running. That's the interesting bit: a rostered slot skips the caption call entirely, because you already wrote the description.

    description and voice are inserted verbatim into the H3 prompt. No translation, no paraphrase. If the character reads wrong on screen, edit the JSON - that's the whole feedback loop, and it's refreshingly short.

    The strictness, and why

    Characters here are exactly one image and one audio. Not "up to" - exactly. Loading a folder with three pictures raises does not fit the simple model (one image + one audio): found 3 image(s), naming the asset and telling you to trim it under characters/<name>. Same for zero audio: a character needs the sample.

    That's a V1-migration scar. The earlier multi-image character model meant a slot could mean anything, and downstream nodes had to guess. Fixing it at one-image-one-clip makes <Picture N> unambiguous, at the cost of the occasional annoying error when you inherit an old library.

    The image output is read back from the PNG on disk rather than from whatever tensor went in at save time, so it's the 8-bit quantised version - within a unit of 255 of what you saved, and bit-identical to what the video chain will see next week.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/MieMieeeee/ComfyUI-MieNodes
    pip install -r ComfyUI-MieNodes/requirements.txt
    

    Or ComfyUI Manager, search ComfyUI_MieNodes. No model downloads. library_dir exists in the input list but is ignored at execution - the library root is fixed per machine (the plugin's asset_library/ folder, or $MIE_ASSET_LIBRARY), and the ๐Ÿ“‚ button opens it.

    Should you use it?

    No, probably not, unless you're preserving an old graph. Load Asset ๐Ÿ‘ is the same node with a kind dropdown and it's actually findable. The only mechanical difference is that the unified node also returns empty voice/audio when you flip it to scene, which is a feature, not a compromise.

    Things that go wrong

    Empty name dropdown: no characters in the library yet, or the library root isn't where you think. Check the resolved path shown in the node's picker header - it prints the full path it's using, which settles most arguments.

    does not fit the simple model on a name you just created means the save wrote more than one picture (you wired an IMAGE batch into Save) or none of the audio. Trim or re-save.

    And the cache-key behaviour: this node hashes the asset files, so editing character.json by hand invalidates the cache and the next run reads the new text. Within a single queue, a Load that already ran won't re-read - run it again.

    Categoryhidden

    Inputs (2)

    NameTypeDefaultDescription
    library_dirSTRINGโ€”
    nameCOMBO๏ผˆไธ‹ๆ‹‰้€‰ๆ‹ฉ่ต„ไบง๏ผ‰1 options: ๏ผˆไธ‹ๆ‹‰้€‰ๆ‹ฉ่ต„ไบง๏ผ‰

    Outputs (6)

    NameTypeDescription
    nameSTRINGโ€”
    descriptionSTRINGโ€”
    voiceSTRINGโ€”
    imageIMAGEโ€”
    audioAUDIOโ€”
    assetMIE_ASSETโ€”