ColorDictionary (custom)
Build your own named color dictionary
- colors
- COLOR_DICT
The stock ColorDictionary gives you a fixed twelve-color palette and stops at that. ColorDictionary (custom) is the escape hatch: you supply your own names and your own colors, and it assembles them into a COLOR_DICT - the name → RGB map that the pack's color-analysis CV nodes consume.
This is the node you want when the standard palette doesn't have your brand colors, your dataset's label colors, or the specific tint you're hunting for in an image.
How it works
Two inputs, both list-aware:
- color_names - a STRING input. Because the node is list-input (
INPUT_IS_LIST), this expects a list of names. - colors - a COLOR input, also a list.
The node zips the two lists into a dict: {"skin_tone": (r,g,b), "logo_blue": (...)}. It expects the lists to match in size; if they don't, it prints a yellow warning, truncates the longer list to the shorter one, and proceeds with the overlap. So a mismatch won't crash you - it'll just silently drop the extra entries, and you should notice the warning in the console.
Wiring it up
You need parallel lists of names and colors. Practical ways to build them:
- Two of the pack's list nodes -
ExtendStringListfor names,ExtendColorListfor colors - each fed the same number of items. - Any other node that outputs a
STRINGlist and aCOLORlist of equal length.
Then the COLOR_DICT output feeds FindComplementaryColor and the other color-analysis nodes, exactly like the default dictionary does. The whole point of going custom is that the analysis results are named - the node returns the matching color and its name, and "best match: logo_blue" is far more useful than "best match: (12, 83, 200)".
Gotchas
The size-mismatch behavior is the main footgun, and it's quiet about it: if your name list is longer than your color list, the extras are dropped with only a console warning. Build the lists in pairs and you'll never trip it.
Also note there's no de-duplication or validation - you can name two colors the same thing and the later one silently wins in the dict. Keep the names unique.
Install
Same pack install as everything else:
cd ComfyUI/custom_nodes
git clone https://github.com/bmad4ever/comfyui_bmad_nodes
cd comfyui_bmad_nodes
pip install -r requirements.txt
or install "comfyui_bmad_nodes" via ComfyUI Manager and restart. No models, no extra downloads - this one is pure dict assembly. If you only ever use the default palette, skip it; the moment you need colors the author didn't think of, this is the node that unblocks you.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| color_names | STRING | — | |
| colors | COLOR | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| COLOR_DICT | COLOR_DICT | — |