One Button Prompt
A node that writes the whole prompt for you
- prompt
- prompt_g
- prompt_l
Leave the prompt box empty, hit run, get a full Stable Diffusion prompt you never typed a word of. That's the entire pitch, and it's a weirder, more useful idea than it sounds. This isn't an LLM bolted onto ComfyUI - it's an older, more mechanical trick: a huge curated library of subjects, artists, lighting and camera language, wired together with rules and a random-number generator, so every run comes out coherent instead of word salad. The author (Reddit's u/AIrjen) built it in 2023 for Automatic1111, inspired by StylePile and Dynamic Prompts but pushed further than either - instead of filling gaps in a template, it writes the whole thing from a blank field. It got ported to ComfyUI a few months later as this node, and it's stuck around as one of the more distinctive random-generation packs out there: five subject families and a pool of roughly 3,483 artists to draw from.
Put it ahead of your CLIP Text Encode when you genuinely don't have an idea, or when you've run out of good ones. Beginners reach for it because a blank prompt box is its own kind of writer's block; people who've been doing this a while reach for it to break their own ruts - everyone settles into the same five prompt habits eventually, and a generator that surprises you is a real cure for that. The author's own honest estimate, carried over from the A1111 days: about one in five results is genuinely great, and every one is at least interesting.
How it works
Each run, the node picks a subject from one of five families - object, animal, humanoid, landscape, or concept - then layers on descriptive terms, a lighting/composition pass, and, with some probability, zero to three named artists from that ~3,483-artist pool. It's controlled randomness, not "any tokens": everything comes from curated, hand-built lists, so combinations mostly hang together instead of reading like noise.
The inputs and outputs that matter
insanitylevel(required, 1–10, default 5) - the one dial you actually need, controlling how many extra elements pile onto the base prompt. The author's own guidance: keep it around 3–7 for something usable; 10 is "at your own risk" and tends toward noun-piles.subject- pick a family (object / animal / humanoid / landscape / concept) instead of "all" if you want a specific kind of image.custom_subjectandcustom_outfit- override the random subject with your own text (say, "obese man wearing a kimono") and the generator builds lighting, framing and artists around it. It's smart enough to notice "wearing" and skip generating a random outfit on top of what you already specified.artist,imagetype,base_model- steer style, image category (photograph / concept art / anime / etc.), and which model family you're targeting.base_modelmatters because "an all-purpose SD1.5 or SDXL checkpoint" is what this generator was actually built and tuned for.prompt_prefix/prompt_suffix- plain text glued onto the final result; the usual spot for LoRA trigger words or textual inversions.prompt_enhancer- set tosuperprompt-v1and the finished prompt gets run through a small dedicated language model that expands it into a longer, more descriptive version (see the standaloneOneButtonSuperPromptnode for the same trick on demand).- Outputs:
promptis what you want for a normal SD1.5 CLIP Text Encode.prompt_gandprompt_lexist for SDXL's dual text encoder - wire those into aCLIPTextEncodeSDXLnode'stext_g/text_linputs instead if you're targeting SDXL specifically.
How to install it
Easiest path: ComfyUI Manager → search "One Button Prompt" → install → restart. Manually, from your ComfyUI root:
cd ComfyUI/custom_nodes
git clone https://github.com/AIrjen/OneButtonPrompt
Restart ComfyUI. No GPU-heavy models to fetch and no fussy requirements.txt - it's pure Python string manipulation over bundled word lists. The one thing that pulls in extra weight is prompt_enhancer: set it to superprompt-v1 and the node needs that small language model available, a much lighter download than any checkpoint.
Common issues & troubleshooting
It doesn't touch your negative prompt. By design - everything it writes goes into the positive side. Wire up AutoNegativePrompt from the same pack, or write your own separately.
Results look like nonsense at high insanitylevel. Not a bug - 8–10 is deliberately over the top. Pull it back to 5–7 for something you'd actually spend GPU time rendering at full resolution.
It doesn't know what your checkpoint actually responds to. The vocabulary - artist names especially - comes from the SD1.5/SDXL era, when a CLIP encoder read your prompt as a bag of tags. A 2026-era LLM-encoded checkpoint (Z-Image, Flux, Anima) reads a prompt as an instruction, and artist name-dropping often does nothing or gets read as literal text. Treat this as an SD1.5/SDXL tool; on anything newer, use its output as a rough draft and rewrite by hand.
Nothing happens, or the node fails to load. Confirm the pack cloned into custom_nodes/OneButtonPrompt, not a nested subfolder, and that you restarted ComfyUI rather than just refreshing the browser tab - custom node folders are only scanned on startup.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| insanitylevel | INT | 51–10 | — |
| artistopt | COMBO | all | 77 options: all, all (wild), none, popular, greg mode, 3D, +71 |
| imagetypeopt | COMBO | all | 23 options: all, all - force multiple, all - anime, none, photograph, octane render, +17 |
| imagemodechanceopt | INT | 201–100 | — |
| subjectopt | COMBO | ------ all | 40 options: ------ all, --- object - all, object - generic, object - vehicle, object - food, object - building, +34 |
| custom_subjectopt | STRING | — | |
| custom_outfitopt | STRING | — | |
| prompt_prefixopt | STRING | — | |
| prompt_suffixopt | STRING | — | |
| humanoids_genderopt | COMBO | all | 3 options: all, male, female |
| emojisopt | COMBO | false | 2 options: false, true |
| base_modelopt | COMBO | SDXL | 4 options: SD1.5, SDXL, Stable Cascade, Anime Model |
| prompt_enhanceropt | COMBO | none | 2 options: none, superprompt-v1 |
| seedopt | INT | 00–18446744073709550000 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| prompt_g | STRING | — |
| prompt_l | STRING | — |