Nodes/ComfyUI-OC-Generator/OC Character Accessories Block
ComfyUI Node

OC Character Accessories Block

The body-add-on block

By Zhuozhuo-219·Created 3 months ago·Updated 2 months ago· 0
OC Character Accessories Block
    • oc_block
    • prompt_preview
    • debug_text
    group__all_groups__
    modefixed
    option穿刺、穿环、纹身 / 身体穿刺 | 动物耳穿刺 -> animal_ear_piercing
    enabledtrue
    seed0
    step1

    OC Character Accessories Block covers the stuff your character wears on their body that isn't clothes: piercings, earrings, and tattoos. The pack's own description calls it "non-clothing body add-ons," and that's the boundary that keeps it distinct from the outfit layer - if it's a piece of clothing, it belongs to the outfit parts; if it's metal in your skin or ink on it, it's this block.

    There are 58 options across the group's subcategories: body piercings (ear_piercing, barbell_piercing, animal-ear and bow earrings, crescent_earrings, cross_earrings), tattoos (arm_tattoo, back_tattoo, breast_tattoo, barcode_tattoo), and the general piercing/ring set. It's a genuinely useful slice of Danbooru vocabulary for character design - the kind of tags that make an OC feel designed instead of generated, and that models in the Illustrious/NoobAI lineage understand precisely because they were trained on exactly this tag vocabulary.

    How it works

    Standard block-node controls:

    • group - filter to one subgroup (穿刺、穿环、纹身 / 纹身 for tattoos, / 耳环 for earrings, / 身体穿刺 for piercings). Default __all_groups__ shows everything.
    • mode - fixed / randomize / increment / decrement. The step modes cycle through the group's pool.
    • option - static dropdown over all 58, formatted subcategory | Chinese label -> English tag (e.g. 穿刺、穿环、纹身 / 耳环 | 蝴蝶结耳环 -> bow_earrings).

    And the pack-wide gotcha, which this block demonstrates nicely: the option dropdown is static and doesn't shrink when you change group. Pick arm_tattoo, switch group to the piercing subgroup, and execution finds the tattoo isn't in that pool - it silently falls back to the first piercing and logs it in debug_text. Every block in this pack behaves this way; it's the single most common source of "why did it pick that?" confusion.

    Two of the three outputs matter every run: oc_block (wire into OC Generator, which sorts it into the Accessories position), prompt_preview (the resolved tag), and debug_text (fallback and pool-index detail) for when things go sideways.

    Where it sits in the workflow

    Accessories lands late in OC Generator's sort order - after hair and outfit, before pose and camera - which is roughly right for how tag ordering works on this model family. If you're building a full OC, run the body block first (identity), then face, hair, outfit, and let this block add the finishing non-clothing details. There's real overlap with the outfit's jewelry part (earrings appear in both catalogs) - that's fine, dedupe on the downstream nodes handles the double-insertion of the same tag.

    Installing it

    cd ComfyUI/custom_nodes
    git clone https://github.com/Zhuozhuo-219/ComfyUI-OC-Generator
    

    Restart ComfyUI, or use ComfyUI Manager and search ComfyUI-OC-Generator. No PyPI dependencies beyond the host ComfyUI runtime, no model downloads, and the tag catalog ships in-repo so the dropdown populates offline.

    Fair warning: this is a young, quiet pack with no real community trail yet, and 58 options is a curated cut rather than the full Danbooru list. If your OC needs a specific tattoo the catalog doesn't have, type it into OC Generator's prefix_prompt - the block handles the common cases, the prefix handles the bespoke ones.

    CategoryOC Generator/Blocks

    Inputs (6)

    NameTypeDefaultDescription
    groupCOMBO__all_groups__Limit selection to one subgroup. The option dropdown itself is static and will not visually shrink when group changes.
    modeCOMBOfixedfixed keeps the chosen option when valid for the current group. randomize / increment / decrement operate only within the selected group pool.
    optionCOMBO穿刺、穿环、纹身 / 身体穿刺 | 动物耳穿刺 -> animal_ear_piercingStatic dropdown for the whole catalog. If the chosen option does not belong to the current group, execution falls back to the first valid item in that group.
    enabledoptBOOLEANtrueDisable this block without deleting it from the workflow.
    seedoptINT00–4294967295Seed used by randomize mode to get reproducible results inside the current group pool.
    stepoptINT11–1024Step size for increment / decrement mode inside the current group pool.

    Outputs (3)

    NameTypeDescription
    oc_blockOC_BLOCKStructured OC block data for downstream aggregation in OC Generator.
    prompt_previewSTRINGThe prompt fragment resolved by this dimension node.
    debug_textSTRINGExecution details, including group filtering and selection behavior.