ComfyUI Node

Prompt Pro

A structured prompt builder that thinks in scenes, not keywords

By cdanielp·Created 9 months ago·Updated 2 months ago· 28
Prompt Pro
    • text
    disenoRetrato Pro
    sujeto
    accion
    emocion
    vestuario
    fondo
    estilo
    paleta
    iluminacion
    camara
    materiales
    composicion
    detalle
    atmosfera
    calidad
    restricciones
    extra
    separador,
    prefijo
    sufijo
    normalizartrue
    evitar_duplicadosfalse

    This node is a prompt-assembly machine with opinions. Instead of typing one long string, you fill in labeled fields - subject, action, emotion, wardrobe, background, style, palette, lighting, camera, materials, composition, detail, atmosphere, quality, restrictions - and it arranges them into a coherent prompt for you. If you're the kind of person who keeps a checklist in your head every time you write "cinematic portrait, rim light, 85mm," this externalizes the checklist.

    The genuinely smart part is diseno (design). You pick one of ten presets - Retrato Pro, Cinemático, Producto E-commerce, Anime Clean, Concept Art, Arquitectura, Moda Editorial, Interior Design, Vertical Reels (9:16), or Thumbnail YouTube (16:9) - and it changes which fields get prioritized and how they're grouped. A Cinemático prompt weights subject+action, atmosphere, and camera heavily. A Product shot pushes materials, palette, and background. Same inputs, different assembly logic per genre. That's a lot more useful than a generic "combine these tokens" node.

    How it works

    The node walks the preset's field order, groups the fields you've filled into comma-joined clusters, and joins those clusters with your separador (default , ). Then it applies the polish steps:

    • prefijo / sufijo - text prepended/appended to the whole prompt.
    • normalizar - cleans up spacing, collapses double commas, and fixes punctuation. Leave it on; it's what keeps the output readable.
    • evitar_duplicados - drops repeated phrases from the joined output. Useful when your subject and style fields accidentally say the same thing.

    One hard rule: sujeto is required. Leave it empty and the node raises - by design, because a prompt without a subject is meaningless.

    The inputs that matter

    The field boxes are all single-line except extra (multiline, for anything that doesn't fit). Honestly, you'll use four or five fields per image, not all sixteen - the presets are designed so partial input still produces a sensible prompt. diseno, sujeto, separador, and normalizar are the ones to know; the rest are slots you fill as needed.

    Output: a single text STRING, wired to a CLIP text encoder.

    Installing it

    ComfyUI Manager → search "COMFYUI_PROMPTMODELS" → install → restart, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/cdanielp/COMFYUI_PROMPTMODELS
    

    No API key. ComfyUI >= 0.26.0 required.

    The honest take

    The presets are tuned for realism/portrait/editorial styles, so if your whole world is anime or sci-fi concept work, one of the ten presets will sort of fit but not perfectly - treat them as starting templates you bend with extra. And remember this is assembly, not magic: a well-organized weak idea is still weak. The node earns its keep when your images are inconsistent because you keep forgetting the lighting or camera field; it won't make an underdeveloped concept good.

    CategorySelectores Pro

    Inputs (22)

    NameTypeDefaultDescription
    disenoCOMBORetrato Pro10 options: Retrato Pro, Cinemático, Producto E-commerce, Anime Clean, Concept Art, Arquitectura, +4
    sujetoSTRING
    accionSTRING
    emocionSTRING
    vestuarioSTRING
    fondoSTRING
    estiloSTRING
    paletaSTRING
    iluminacionSTRING
    camaraSTRING
    materialesSTRING
    composicionSTRING
    detalleSTRING
    atmosferaSTRING
    calidadSTRING
    restriccionesSTRING
    extraSTRING
    separadorCOMBO, 4 options: , , , \n, |
    prefijoSTRING
    sufijoSTRING
    normalizarBOOLEANtrue
    evitar_duplicadosBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    textSTRING