EBU LMStudio Brainstormer
An LLM-powered wildcard generator for your prompts
- result
- full_list
Think of this as a wildcard file that writes itself. Instead of maintaining a static text file of "50 fantasy spells" or "30 outfit ideas" and randomly picking a line, you hand this node a topic and a description of what one idea should look like, and a local LLM generates the list fresh, on demand, then picks one for you. The default example is exactly that: topic Fantasy Setting Magic Spells, and a for_each_idea instruction asking for a spell name plus a brief description. Swap those two fields for anything - outfit concepts, background settings, camera angles, whatever axis of variation you want across a batch - and it works the same way.
How the two-stage generation actually works
There are two size knobs and they do different jobs. raw_list_size (default 20) is how many ideas the LLM generates in one pass. return_list_size (default 10) is how many of those it keeps and hands back to you. Generating more than you keep isn't wasteful padding - it's what gives you run-to-run variety even on the exact same topic, since a different subset (or a re-shuffled one, if you're changing the seed) comes back each time instead of a static list you'd memorize after three uses.
ignore_the_first is the one field that needs a little context to make sense. LLMs asked for a numbered list tend to lead with the most obvious, stereotypical answer for a given topic - ask for fantasy spells and "fireball" is showing up first more often than not. Setting ignore_the_first to a small number skips past that predictable opener and biases you toward the list's less obvious middle, which is genuinely useful if you're trying to avoid the same three or four ideas surfacing across every run.
The rest of the fields - additional_notes_1, additional_notes_2, url, context_length, seed, max_tokens, temp, top_p, utf8_safe_replace - are the same shape as EbuLMStudioMakeRequest's request controls, with one difference worth flagging: temp here goes up to 3, not the usual 1. That's a wide-open range built for exactly this use case - cranking temperature well past "coherent chat response" territory is fine, even desirable, when the goal is maximum variety across a batch rather than one careful, considered answer. additional_notes_1/2 are free-text slots for constraints you don't want to rewrite for_each_idea to accommodate - "avoid anything violent," "keep descriptions under 15 words," that kind of thing.
Outputs
result is a single idea, chosen from the filtered list - wire this straight into your prompt conditioning for a one-off generation. full_list is everything that survived the raw-to-return trim, as one string - route this into a Show Text node (or save it to a file) if you want to see the whole batch, curate it by hand, or split it out for a proper batch run instead of taking whatever got picked for you.
Installing it
Via ComfyUI Manager - search "EBU LMStudio" - or manually: cd ComfyUI/custom_nodes && git clone https://github.com/burnsbert/ComfyUI-EBU-LMStudio, restart ComfyUI. As with the rest of the pack, the real setup work is on the LM Studio side: install it separately, turn on Developer Mode for the local server, have at least one model downloaded, and confirm lms ls --detailed lists it before you expect this node to work.
Where people get burned
Structured, numbered-list generation is genuinely harder for small local models than a single free-form reply - a weak 3-4B model can mangle the numbering or merge two ideas together, and if the parser can't cleanly split what came back, you may see fewer results than return_list_size promised. If your list keeps coming back short, that's usually the model, not the node - try a stronger one in LM Studio, or reduce raw_list_size/return_list_size to something more modest. Long for_each_idea instructions combined with a large raw_list_size also eat tokens fast; if full_list looks cut off mid-idea, raise max_tokens before assuming something's broken. And like every node in this pack, nothing here is deterministic on repeat identical inputs unless seed changes - ComfyUI will otherwise serve you a cached result instead of a fresh brainstorm.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| topic | STRING | Fantasy Setting Magic Spells | — |
| for_each_idea | STRING | A magic spell that a wizard or sorceress might cast in a fantasy novel. I want the name of the spell and a brief description of what it does. | — |
| raw_list_size | INT | 20 | — |
| return_list_size | INT | 10 | — |
| ignore_the_first | INT | 0 | — |
| additional_notes_1 | STRING | — | |
| additional_notes_2 | STRING | — | |
| url | STRING | http://127.0.0.1:1234/v1/chat/completions | — |
| context_length | INT | 4096512–65536 | — |
| seed | INT | 00–18446744073709550000 | — |
| max_tokens | INT | 30010–100000 | — |
| temp | FLOAT | 0.700–3 | — |
| top_p | FLOAT | 0.950–1 | — |
| utf8_safe_replace | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| result | STRING | — |
| full_list | STRING | — |