Prompt Section (MRLN)
One good random element, bolted onto your own prompt
- text
- negative
- choice
The Template node in this pack is the flagship, but sometimes you don't want a whole composed prompt - you just want one good random element dropped into the prompt you already wrote by hand. That's exactly what Prompt Section (MRLN) is. It's one library section as a standalone node: pick an item or roll the dice, and you get the item's text and negative out as plain strings to wire into any text builder.
It uses the same curated library as the Template node - 237 sections, 3502 items covering everything from car paint finishes to wildlife behavior to film stocks - so "random" here means "random from a pool somebody actually wrote well", not "random from whatever I typed yesterday". The library lives in the pack's prompt domain: factory JSON ships with the install, your personal files in ComfyUI/user/mrln/prompt/ extend or shadow it.
How it works
You pick a section - or a folder scope, since a folder entry like location means the union of every section beneath it, which is how you get variety across an entire domain in one draw. Then you either name a specific item or pick 🎲 random. The draw is seed-deterministic: identical section + seed always draws the same item, so it slots into the same reproducibility discipline as the rest of the pack.
Three details are worth knowing. Inline {a|b} wildcards inside item text are resolved, so an item can itself fan out. allow_empty adds "nothing" as one weighted outcome when rolling random - handy for optional add-on sections you don't want every render to include. And this node is deliberately strict where the Template node is forgiving: a named item that no longer exists raises instead of quietly drawing something else. That strictness is a feature. You'd rather be told your animal/behavior/hunting-stalk item vanished than have a surprise animal appear in every render.
The inputs and outputs
Inputs are section (271 choices including folder scopes), item (3503 choices including 🎲 random), seed, and allow_empty. That's the whole node. Outputs: text (the selected or drawn item text), negative (the item's negative plus the section-level negative), and choice (the item name that was selected or drawn - empty when omitted).
Where it fits: wire several Prompt Section nodes into a text-combine or third-party builder node for graph-native composition, and you've got a hand-rolled template of your own without adopting the full engine. The pack's starter workflow, mrln-prompting, is built exactly this way - a Template node and a Section node wired into Show Text nodes, with zero models downloaded, so you can explore the library before you connect anything to a sampler.
How to install it
Same pack, same story: ComfyUI Manager can't find this pack yet (the registry flagged v0.1.1 on six severity: info matches, so it's absent from Manager's search - a review hiccup, not a broken node). The manual install works today:
cd ComfyUI/custom_nodes
git clone https://github.com/master-merlin/comfyui-mrln-nodes ComfyUI-MRLN-Nodes
Restart ComfyUI. No extra Python dependencies - the pack's requirements.txt is deliberately empty.
Common issues
- "item 'X' is not inside section 'Y'" - you picked an item from a different scope than the section widget. The item dropdown is searchable; filter by section name first.
- "prompt library is empty" - you're on a fresh install and the library files haven't been picked up. Add a JSON library file (or let the pack's own files load) and refresh.
- New sections don't appear - "Refresh node definitions" after adding library files.
For a beginner this is the friendliest node in the pack: one section, one seed, one output. It's hard to break, and it's the honest on-ramp before you decide whether you want the full template engine at all.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| section | COMBO | Section or folder scope. Folder entries (e.g. 'location') mean the union of every section beneath them. | |
| item | COMBO | Item to render, listed as 'section-path/item-name' (searchable — type the section name to filter). Must lie inside the chosen scope. '🎲 random' draws from it using the seed. | |
| seed | INT | 00–18446744073709550000 | Seed for the 🎲 random draw. Identical section + seed always draws the same item; vary the seed for a different draw. |
| allow_empty | BOOLEAN | false | When rolling 🎲 random, allow 'nothing' as one weighted outcome (empty text output) — for optional add-on sections. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| text | STRING | The selected/drawn item text (inline {a|b} wildcards resolved). |
| negative | STRING | The item's negative plus the section-level negative, as a plain string. |
| choice | STRING | The name of the item that was selected or drawn (empty when omitted). |