Krea2 Moodboard Adapter
The Compatibility Shim Your Moodboard Cards Need
- Metadata JSON
- Style-only Positive
Krea's hosted service has moodboards. The open weights don't - the style-reference and moodboard module stayed behind, and Krea has said it may release older ones when future models ship. The community's workaround is the Krea Moodboard Visual Browser from Andro-Meta/ComfyUI-Krea-Moodboards, which resolves a style card and hands you four strings: positive, title, uuid and metadata_json.
That should be everything the harness needs. It roughly isn't. Krea2 Moodboard Adapter exists because an earlier local moodboard build stored a field in metadata that the GitHub-baseline browser doesn't, and the downstream sanitizers still expect it. Rather than fork the browser, this node recovers the missing piece from the strings you already have.
How it recovers the missing field
The browser's positive output is a formatted block starting with Style-only Krea moodboard guidance:, followed by the card title and a set of labelled sections, and ending with a Style keywords: tail. Buried in there is exactly the text the old build used to store as prompt_guidance.
The adapter finds that marker, trims the wrapper and the card title, cuts everything from Style keywords: onward, and writes the result into your metadata JSON as prompt_guidance - but only if the field is missing. An existing value is never overwritten, and invalid JSON passes through untouched. There's also exactly one hardcoded inverse correction, for the card "cinematic gothic noir", where a rewrite in the old local build made the text unrecoverable by parsing alone. That's the author telling you precisely how narrow the compatibility promise is.
The style-only positive, and why it's cleaned
The second output is the part most people actually feed forward. It removes the wrapper and the title first - which matters more than it sounds, because cards whose titles end in a word like "Atmosphere" would otherwise have that word parsed as a section header - then rebuilds the sections as clean labelled text: Palette: ..., Lighting: ..., Contrast: ..., and so on. The Composition section is the interesting case: instead of passing layout instructions through, the adapter keeps only recognised optical keywords and rewrites them as localised effects, so fisheye becomes localized fisheye distortion on existing subject geometry. Style cards get to influence optics, not staging.
If the string it receives doesn't contain the guidance marker, the node returns it unchanged. That's the right behaviour for a hand-written style line, and a confusing one if you assume everything gets parsed.
Inputs and outputs
positive,title,uuid,metadata_json- all four required, all forced connections straight from the browser.uuidexists to match the browser's ports; the code doesn't use it to look anything up. Odd, and honestly documented.- Metadata JSON - into
metadata_jsonon Krea2 Prompt–Moodboard Compiler and on Krea2 Moodboard Harness. - Style-only Positive - into
style_only_positiveon Krea2 Moodboard Harness.
That's the whole node. It reads strings. It does not read card images, query a catalog or download anything, which is why it's cheap and why it can't help you if you have no cards.
Where people get burned
Install the browser first. This pack bundles no browser, no card catalog and no assets. Symptom of skipping it: a red missing-node box where KreaMoodboardVisualBrowser should be, and nothing to wire into this adapter.
An empty Style-only Positive usually means the wrong upstream string. If you accidentally feed the metadata JSON into positive, there's no guidance marker, so the output is whatever you passed - no error, no clue. Put a text preview on both outputs before you blame the style.
Don't expect this to be version-proof. It parses the browser's output format with regexes. If that format changes, this node is the piece that breaks, and the failure is quiet: no prompt_guidance restored, and the Stage 2 lighting repair loses its authoritative source. If your moodboards suddenly look flat, that's the first place to look.
The browser's negative output doesn't come through here. Wire it directly to your negative conditioning. The README is explicit, and it's easy to lose ten minutes trying to route it.
Installing it
ComfyUI Manager, search Krea2 Harness - one install gets all six nodes. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ANe5s/ComfyUI-Krea2-Harness.git
Fully restart ComfyUI rather than refreshing the tab. Nodes land under Nodes → ANe5s Nodes → Krea2. No additional Python dependencies for the pack, Python 3.10+ and ComfyUI 0.3.0+.
The browser is a second install from its own repo, and the example workflows need the usual Krea 2 trio - a Turbo checkpoint in models/diffusion_models/, qwen3vl_4b_bf16.safetensors in models/text_encoders/, qwen_image_vae.safetensors in models/vae/. Each example JSON carries a MarkdownNote with the links and directories; if a loader reports a missing model, point it at a compatible file you already have rather than chasing an exact filename.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | STRING | Positive output from the GitHub-baseline Krea Moodboard Visual Browser. | |
| title | STRING | Selected moodboard title. | |
| uuid | STRING | Selected moodboard UUID. | |
| metadata_json | STRING | Metadata JSON output from the GitHub-baseline moodboard browser. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| Metadata JSON | STRING | Metadata JSON restored to the legacy Krea2 Harness contract. |
| Style-only Positive | STRING | Style-only positive extracted from the selected moodboard. |