MarvelousBox
One node that loads your prompt, your LoRAs, and makes conditioning
- model
- clip
- text
- MODEL
- CLIP
- conditioning
MarvelousBox is the reason this whole pack exists. Instead of the usual chain - a text node, a LoraLoader, a CLIP text encode node, and three wires of spaghetti - it folds all of it into one box: you give it a prompt and a bit of JSON describing your LoRAs, and it hands you a ready-to-use CONDITIONING plus the patched MODEL and CLIP. It's the workhorse node of the Marvelous-Box-Comfyui pack, a Chinese-origin "prompt collection" tool whose web UI pushes saved prompts straight into your graph. Think of it as the output side of that app: the box where your collected prompts actually get used.
How it actually works
Under the hood it's three ComfyUI steps fused together. It clones your MODEL and CLIP, applies every LoRA in the list to both (model strength and clip strength separately, just like the stock loader), then tokenizes and encodes the prompt through the patched CLIP into conditioning. The code even handles SDXL's pooled_output properly via encode_from_tokens(..., return_pooled=True), so it isn't just a toy for SD 1.5.
Two nice touches you won't find in the README (it's one sentence long). First, it caches the patched model/clip pairs keyed by a hash of the LoRA JSON, keeping the last two around so reruns don't reload everything from disk. Second, it degrades gracefully: if clip is missing it returns an empty conditioning list, and if model is missing it encodes the text without touching any LoRA. That means it won't hard-crash a half-wired graph - you'll just silently get no LoRA applied and an empty prompt, so keep an eye on the console.
The inputs that matter
Only two, really:
prompt_text- a plain multiline string. This is what gets encoded. If the pack's web UI is connected, it can rewrite this live, which is the whole point.loras_json- a JSON array, default[]. Each entry looks like{"lora_name": "my_lora.safetensors", "strength_model": 1.0, "strength_clip": 1.0}. Filenames resolve againstmodels/loras, though a full filesystem path works too.
The optional model and clip sockets take whatever your checkpoint loader outputs. Wire the outputs to the obvious places: conditioning into the KSampler's positive (or negative - it's just conditioning), MODEL and CLIP down to your sampler and anything that needs them. If you only need one, you can leave the others dangling.
Installing it
Same as any custom node - via ComfyUI Manager (search "Marvelous-Box-Comfyui"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/ChaosHL/Marvelous-Box-Comfyui
Then restart ComfyUI. No model downloads, no requirements.txt to fight - the nodes themselves only use ComfyUI's own APIs. One thing to expect: the pack registers its HTTP routes and creates an example.db SQLite file next to the plugin on first load. That's the prompt library doing its thing, not an error.
Where people get burned
The single most common failure is a typo in the JSON - a missing quote or comma - and the node won't throw in your face. It prints an error to the console and returns your model and clip untouched, so your LoRA just silently doesn't apply. Same outcome if lora_name doesn't match anything in models/loras. The tell is the Chinese warning messages (this is a Chinese-maintained pack; the console chatter is not translated). If your prompt renders with no style at all, check the JSON first.
Honest caveat: this pack has essentially zero community footprint - no Reddit mentions, no impression history. It's a personal tool open-sourced by its author (ChaosHL, one commit, September 2025). If the web UI part doesn't interest you, the stock LoraLoader plus CLIPTextEncode combo does the identical job with more battle-testing. Reach for MarvelousBox when you want your saved prompt library driving the workflow.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_text | STRING | — | |
| loras_json | STRING | [] | — |
| modelopt | MODEL | — | |
| clipopt | CLIP | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| conditioning | CONDITIONING | — |