Nodes/PromptDeckComposer/PromptDeckComposer
ComfyUI Node

PromptDeckComposer

Stop typing prompts. Roll them instead.

By chkeeho80·Created 4 months ago·Updated 4 months ago· 0
PromptDeckComposer
    • prompt
    randomizetrue
    seed0
    separator,
    PRIMARY_SUBJECTyoung woman
    SUBJECT_MODIFIER<none>
    SECONDARY_SUBJECT_1<none>
    SECONDARY_SUBJECT_2<none>
    RELATIONSHIP<none>
    ENVIRONMENT<none>
    LOCK_SCENE_STRUCTUREfalse
    LOCK_SUBJECT_MODIFIERfalse
    STYLE_RENDER<none>
    STYLE_LIGHTING<none>
    STYLE_COLOR<none>
    STYLE_TEXTURE<none>
    STYLE_MOOD<none>
    LOCK_STYLE_LAYERSfalse
    ARTIST_COUNT2
    ARTIST_1<none>
    ARTIST_2<none>
    ARTIST_3<none>
    LOCK_ARTIST_MIXfalse
    STYLE_BLOCK_LIGHTING<none>
    STYLE_BLOCK_TEXTURE<none>
    STYLE_BLOCK_ATMOSPHERE<none>
    STYLE_BLOCK_CAMERA<none>
    STYLE_BLOCK_CONCEPT<none>
    LOCK_STYLE_BLOCKSfalse
    CHAOS_LEVEL0.50
    USER_PROMPT
    LOCK_PRIMARY_SUBJECTfalse
    LOCK_SECONDARY_SUBJECT_1false
    LOCK_SECONDARY_SUBJECT_2false
    LOCK_RELATIONSHIPfalse
    LOCK_ENVIRONMENTfalse
    LOCK_STYLE_RENDERfalse
    LOCK_STYLE_LIGHTINGfalse
    LOCK_STYLE_COLORfalse
    LOCK_STYLE_TEXTUREfalse
    LOCK_STYLE_MOODfalse
    LOCK_ARTIST_COUNTfalse
    LOCK_ARTIST_1false
    LOCK_ARTIST_2false
    LOCK_ARTIST_3false
    LOCK_STYLE_BLOCK_LIGHTINGfalse
    LOCK_STYLE_BLOCK_TEXTUREfalse
    LOCK_STYLE_BLOCK_ATMOSPHEREfalse
    LOCK_STYLE_BLOCK_CAMERAfalse
    LOCK_STYLE_BLOCK_CONCEPTfalse
    STRUCTURED_MODEtrue
    TONE_PRESETneutral
    TONE_PRESET_PRIMARYneutral
    TONE_PRESET_SECONDARYnone
    TONE_MIX0.00
    RANDOM_TONEfalse
    LOCK_TONEfalse
    CONSISTENCY_MODEfalse
    CONSISTENCY_THEMEany
    CONSISTENCY_STRENGTH0.65
    OLLAMA_ENABLEfalse
    OLLAMA_MODEL
    OLLAMA_TEMPERATURE0.75
    OLLAMA_STATUSOllama: OFF
    OLLAMA_SYSTEM_PROMPTYou are a high-detail visual scene prompt generator for Flux-based image models. You will receive a 'Theme' input. LOGIC: If 'Theme' is empty: invent a dense, visually rich scene across any genre. If 'Theme' contains a concept: build the scene around that concept as the central anchor. MANDATORY VISUAL ELEMENTS: Subject: Define a clear primary subject appropriate to the theme. If human, include anatomy and skin detail. If non-human, emphasize material, structure, or form. Environment: Specify location, spatial context, and physical surroundings. Lighting: Use clear, physically grounded lighting descriptions (e.g., rim light, volumetric light, fluorescent flicker). Camera / Style: Use professional or cinematic framing (lens, focal length, perspective). Atmosphere: Include visual micro-details only (particles, dust, moisture, grain). SENSORY RESTRICTION: Describe only what is visually observable. Do not include sound, smell, or internal thoughts. FORMAT: Output one dense paragraph only. No introduction, no labels, no meta commentary. GENDER: Do not assume gender unless explicitly specified in the input.
    OLLAMA_URLhttp://127.0.0.1:11434
    OLLAMA_TIMEOUT30
    RANDOM_CHAOS_LEVELfalse
    RANDOM_CONSISTENCY_STRENGTHfalse
    CONSISTENCY_WORLD_THEMEany
    CONSISTENCY_CULTURE_THEMEany
    CONSISTENCY_MATERIAL_THEMEany
    CONSISTENCY_CONCEPT_THEMEany
    CONSISTENCY_WORLD_WEIGHT0.50
    CONSISTENCY_CULTURE_WEIGHT0.50
    CONSISTENCY_MATERIAL_WEIGHT0.50
    CONSISTENCY_CONCEPT_WEIGHT0.50
    world_weight_randomfalse
    culture_weight_randomfalse
    material_weight_randomfalse
    concept_weight_randomfalse

    Type "forest ritual" into PromptDeckComposer and it hands you back a full scene description - a ritual priestess made of herbs surrounded by floating fragments in an abandoned temple, lit with soft volumetric light, in the voice of an artist you didn't pick. That's the whole pitch: the node treats prompting as a slot machine you pull instead of a paragraph you write, and it's aimed at the "I have no idea what I want, show me options" mood. For that it's genuinely handy - especially if you're feeding a modern model like Flux that wants dense natural-language descriptions rather than a comma bag of tags.

    What it actually does

    Under the hood it's a pool-picker with a random number generator and a pen. On startup it reads composer_deck.json, which ships with the pools: 25 primary subjects, 54 subject modifiers, 24 secondary subjects, 25 environments, 21 each of lighting/color/texture/mood/render layers, 42 artists (Caravaggio to Beeple), and 21+ full-sentence "style blocks" describing atmosphere, camera, and concept.

    When you queue it, compose() builds a random.Random from your seed and walks the pools, picking each field with a probability that scales with CHAOS_LEVEL (0–1, default 0.5). Low chaos keeps the output tight and conventional; high chaos starts throwing in secondary subjects and style blocks you'd never think to combine. The picked values then get assembled by a prompt writer - there's a neutral, concise, cinematic, poetic, and technical TONE_PRESET that each phrase the same values completely differently, which is a nice touch. What comes out the prompt output is a single STRING you wire straight into your sampler's positive prompt.

    The inputs that matter

    The node looks intimidating - there are about seventy widgets. You really set a handful:

    • randomize - the master switch. On (default) and it re-rolls on every queue, using time.time_ns() as the seed when seed is 0, so you get a different prompt each run. Off, and it uses exactly the values you've selected in the widgets.
    • USER_PROMPT - your fixed anchor. It gets appended to whatever randomness produces, and unlike everything else it's never re-rolled. This is how you say "okay, but make it about this."
    • CHAOS_LEVEL - how far the roll can wander. The one dial most people end up touching.
    • The LOCK_ toggles* - one per field (LOCK_PRIMARY_SUBJECT, LOCK_ENVIRONMENT, LOCK_ARTIST_1, and friends). Flip the lock on the bits you like and let the rest keep rolling. This is the "evolve, don't rebuild" workflow the README talks about, and it works better than it has any right to.
    • OLLAMA_ENABLE - the optional LLM expansion, off by default.

    The Ollama bit

    The built-in LLM hook is the most overhyped part, and also the safest one. With OLLAMA_ENABLE on, the node POSTs the composed prompt to http://127.0.0.1:11434/api/generate (the OLLAMA_URL, and OLLAMA_MODEL must name a model you've already pulled) and replaces the output with the model's expanded prose. The kicker: if Ollama isn't installed, isn't running, times out, or the model doesn't exist, it silently falls back to the structured prompt and reports the reason in OLLAMA_STATUS. The node never hard-fails on it. Where people get burned is expecting it to just work - Ollama is a separate program you have to install and run, and the default system prompt is written for Flux-style sentence prompting, so an SDXL checkpoint isn't going to love the output the same way.

    Installing

    No pip dependencies, no model downloads - the whole thing is pure Python stdlib plus its bundled JSON. Clone it in:

    cd ComfyUI/custom_nodes
    git clone https://github.com/chkeeho80/PromptDeckComposer
    

    Then restart ComfyUI. You'll find it under prompt/PromptDeckComposer → PromptDeckComposer. It's new and obscure enough that ComfyUI Manager may or may not have it listed yet; the clone is the reliable path. The only optional extra is Ollama itself, which you install separately.

    Gotchas

    Two things trip people up. First, with randomize on and seed left at 0, your queue is different every single run - that's the feature, but if you land on a prompt you love and want it back, set a fixed seed or switch randomize off before you queue again. Second, the node's web UI does a lot of front-end work - reroll buttons, a saved-results list, refine/restyle/reimagine menus - and it stashes recent results and thumbnails inside its own folder (custom_nodes/PromptDeckComposer/). That's not a bug; it's just where your "kept" prompts live if you ever want to back them up.

    If you want one perfect result, this isn't the node for you. If you want fifty interesting starting points in an afternoon, it's quietly excellent.

    Categoryprompt/PromptDeckComposer

    Inputs (80)

    NameTypeDefaultDescription
    randomizeBOOLEANtrue
    seedINT00–4294967295
    separatorSTRING,
    PRIMARY_SUBJECTCOMBOyoung woman25 options: young woman, young man, android, cyborg, forest spirit, mechanical being, +19
    SUBJECT_MODIFIERCOMBO<none>54 options: <none>, made of herbs, wreathed in bioluminescent moss, covered in cracked porcelain, formed from smoke and wet ink, lit from within by blue circuitry, +48
    SECONDARY_SUBJECT_1COMBO<none>24 options: <none>, mechanical raven, floating drone, small animal companion, glowing orb, holographic interface, +18
    SECONDARY_SUBJECT_2COMBO<none>24 options: <none>, mechanical raven, floating drone, small animal companion, glowing orb, holographic interface, +18
    RELATIONSHIPCOMBO<none>25 options: <none>, standing with, looking at, holding, surrounded by, emerging from, +19
    ENVIRONMENTCOMBO<none>25 options: <none>, neon-lit alley, foggy forest, abandoned temple, cyberpunk cityscape, desert wasteland, +19
    LOCK_SCENE_STRUCTUREBOOLEANfalse
    LOCK_SUBJECT_MODIFIERBOOLEANfalse
    STYLE_RENDERCOMBO<none>21 options: <none>, digital painting, photorealistic rendering, cinematic still, watercolor painting, oil painting, +15
    STYLE_LIGHTINGCOMBO<none>21 options: <none>, neon rim lighting, soft diffused lighting, dramatic chiaroscuro lighting, cinematic backlighting, low key lighting, +15
    STYLE_COLORCOMBO<none>21 options: <none>, teal and orange color grade, muted earth tones, high saturation palette, monochrome palette, pastel color palette, +15
    STYLE_TEXTURECOMBO<none>21 options: <none>, film grain, charcoal grain texture, watercolor paper texture, painterly brush strokes, impasto paint texture, +15
    STYLE_MOODCOMBO<none>21 options: <none>, melancholic, dreamlike, mysterious, ominous, serene, +15
    LOCK_STYLE_LAYERSBOOLEANfalse
    ARTIST_COUNTCOMBO24 options: 0, 1, 2, 3
    ARTIST_1COMBO<none>42 options: <none>, Caravaggio, Gustav Klimt, H.R. Giger, Ash Thorp, Beeple, +36
    ARTIST_2COMBO<none>42 options: <none>, Caravaggio, Gustav Klimt, H.R. Giger, Ash Thorp, Beeple, +36
    ARTIST_3COMBO<none>42 options: <none>, Caravaggio, Gustav Klimt, H.R. Giger, Ash Thorp, Beeple, +36
    LOCK_ARTIST_MIXBOOLEANfalse
    STYLE_BLOCK_LIGHTINGCOMBO<none>21 options: <none>, The lighting fractures into multiple color spectrums, creating a surreal chromatic vibration across the subject., A subtle red halation blooms around the brightest light sources, giving the scene a vintage optical softness., Hard directional light carves deep shadows while faint ambient glow preserves delicate detail., Soft diffusion scatters the light evenly, creating a hazy, dreamlike visual field., Pockets of light drift through the environment, illuminating only fragments of the scene., +15
    STYLE_BLOCK_TEXTURECOMBO<none>21 options: <none>, Surface textures blend cracked stone, soft organic material, and worn metal into a unified tactile language., Fine grain and subtle imperfections give the image a raw, analog feel., Thick painterly marks create a sense of physical depth and pressure., Smooth surfaces contrast with areas of decay and erosion., Materials feel aged, weathered, and rich with history., +15
    STYLE_BLOCK_ATMOSPHERECOMBO<none>21 options: <none>, The atmosphere carries quiet narrative tension, as though something has just happened or is about to unfold., The scene feels suspended between memory and reality., A heavy sense of isolation permeates the environment., The space feels ceremonial, as if part of an unknown ritual., The environment suggests a larger unseen world beyond the frame., +15
    STYLE_BLOCK_CAMERACOMBO<none>21 options: <none>, The image feels captured through a vintage anamorphic lens with blooming highlights and deep blacks., A shallow depth of field isolates the subject against a blurred background., The composition emphasizes foreground framing and layered depth., The perspective feels slightly distorted, adding visual tension., The framing suggests a cinematic still rather than a static composition., +15
    STYLE_BLOCK_CONCEPTCOMBO<none>23 options: <none>, Organic warmth clashes against artificial illumination, emphasizing the boundary between human and machine., The subject feels like a sacred object from a future civilization., The image transforms ordinary elements into something ritualistic and symbolic., The scene suggests a world where memory and technology are intertwined., The design feels both ancient and futuristic at the same time., +17
    LOCK_STYLE_BLOCKSBOOLEANfalse
    CHAOS_LEVELFLOAT0.500–1
    USER_PROMPTSTRING
    LOCK_PRIMARY_SUBJECTBOOLEANfalse
    LOCK_SECONDARY_SUBJECT_1BOOLEANfalse
    LOCK_SECONDARY_SUBJECT_2BOOLEANfalse
    LOCK_RELATIONSHIPBOOLEANfalse
    LOCK_ENVIRONMENTBOOLEANfalse
    LOCK_STYLE_RENDERBOOLEANfalse
    LOCK_STYLE_LIGHTINGBOOLEANfalse
    LOCK_STYLE_COLORBOOLEANfalse
    LOCK_STYLE_TEXTUREBOOLEANfalse
    LOCK_STYLE_MOODBOOLEANfalse
    LOCK_ARTIST_COUNTBOOLEANfalse
    LOCK_ARTIST_1BOOLEANfalse
    LOCK_ARTIST_2BOOLEANfalse
    LOCK_ARTIST_3BOOLEANfalse
    LOCK_STYLE_BLOCK_LIGHTINGBOOLEANfalse
    LOCK_STYLE_BLOCK_TEXTUREBOOLEANfalse
    LOCK_STYLE_BLOCK_ATMOSPHEREBOOLEANfalse
    LOCK_STYLE_BLOCK_CAMERABOOLEANfalse
    LOCK_STYLE_BLOCK_CONCEPTBOOLEANfalse
    STRUCTURED_MODEBOOLEANtrue
    TONE_PRESETCOMBOneutral5 options: neutral, concise, cinematic, poetic, technical
    TONE_PRESET_PRIMARYCOMBOneutral5 options: neutral, concise, cinematic, poetic, technical
    TONE_PRESET_SECONDARYCOMBOnone6 options: none, neutral, concise, cinematic, poetic, technical
    TONE_MIXFLOAT0.000–1
    RANDOM_TONEBOOLEANfalse
    LOCK_TONEBOOLEANfalse
    CONSISTENCY_MODEBOOLEANfalse
    CONSISTENCY_THEMECOMBOany10 options: any, random, ancient, cyberpunk, organic, industrial, +4
    CONSISTENCY_STRENGTHFLOAT0.650–1
    OLLAMA_ENABLEBOOLEANfalse
    OLLAMA_MODELSTRING
    OLLAMA_TEMPERATUREFLOAT0.750–2
    OLLAMA_STATUSSTRINGOllama: OFF
    OLLAMA_SYSTEM_PROMPTSTRINGYou are a high-detail visual scene prompt generator for Flux-based image models. You will receive a 'Theme' input. LOGIC: If 'Theme' is empty: invent a dense, visually rich scene across any genre. If 'Theme' contains a concept: build the scene around that concept as the central anchor. MANDATORY VISUAL ELEMENTS: Subject: Define a clear primary subject appropriate to the theme. If human, include anatomy and skin detail. If non-human, emphasize material, structure, or form. Environment: Specify location, spatial context, and physical surroundings. Lighting: Use clear, physically grounded lighting descriptions (e.g., rim light, volumetric light, fluorescent flicker). Camera / Style: Use professional or cinematic framing (lens, focal length, perspective). Atmosphere: Include visual micro-details only (particles, dust, moisture, grain). SENSORY RESTRICTION: Describe only what is visually observable. Do not include sound, smell, or internal thoughts. FORMAT: Output one dense paragraph only. No introduction, no labels, no meta commentary. GENDER: Do not assume gender unless explicitly specified in the input.
    OLLAMA_URLSTRINGhttp://127.0.0.1:11434
    OLLAMA_TIMEOUTINT301–300
    RANDOM_CHAOS_LEVELBOOLEANfalse
    RANDOM_CONSISTENCY_STRENGTHBOOLEANfalse
    CONSISTENCY_WORLD_THEMECOMBOany26 options: any, random, urban, wilderness, desert, oceanic, +20
    CONSISTENCY_CULTURE_THEMECOMBOany25 options: any, random, nomadic, monastic, aristocratic, mercantile, +19
    CONSISTENCY_MATERIAL_THEMECOMBOany26 options: any, random, stone, metal, glass, porcelain, +20
    CONSISTENCY_CONCEPT_THEMECOMBOany26 options: any, random, sacred, liminal, melancholy, uncanny, +20
    CONSISTENCY_WORLD_WEIGHTFLOAT0.500–1
    CONSISTENCY_CULTURE_WEIGHTFLOAT0.500–1
    CONSISTENCY_MATERIAL_WEIGHTFLOAT0.500–1
    CONSISTENCY_CONCEPT_WEIGHTFLOAT0.500–1
    world_weight_randomBOOLEANfalse
    culture_weight_randomBOOLEANfalse
    material_weight_randomBOOLEANfalse
    concept_weight_randomBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    promptSTRING