Nodes/SDXL Auto Prompter/APNext Keywords
ComfyUI Node

APNext Keywords

Bolt quality and style keywords onto a prompt from category banks

By dagthomas·Created 3 years ago·Updated 13 days ago· 283
APNext Keywords
    • prompt
    • random
    prompt
    separator,
    string
    seed0
    attributesfalse
    negativesNone
    genresNone
    modifiersNone
    unusualNone
    detailedNone
    epicNone
    glitchNone
    prayersNone
    trendingNone

    KeywordsPromptNode (APNext Keywords) is a purely offline prompt builder - no API, no key, no model. You give it a base prompt and it appends keywords drawn from a stack of curated category banks: style modifiers, genres, "epic" adjectives, glitch terms, quality boosters, trending tags. Set a dropdown to a specific value to force it, or to Random / Multiple Random to let it roll the dice each queue. It's the classic Auto Prompter mechanic this whole pack grew out of, and it's genuinely useful for churning out varied prompts fast.

    That said, read this next part before you go wild with it, because the keyword-spam era is over on a lot of models.

    How it works

    The node keeps JSON lists of keywords by category and stitches your selections onto your base prompt with the separator (default ,). Everything's local and instant. The category dropdowns each offer None, Random, Multiple Random, or a specific pick:

    • modifiers - art styles (afrofuturism, anime, avant-garde, anaglyph…).
    • genres - aesthetic genres (art deco, cyber-gothic, cyber-steampunk…).
    • epic, detailed, unusual - adjective banks for grandeur, precision, weirdness.
    • prayers and trending - the quality-booster lists: 4k, 8k, cinematic, award winning, and trending on artstation-style tags.
    • glitch and negatives - databending terms, and a bank of negative-prompt keywords.

    seed makes the random rolls reproducible; the attributes toggle pulls in the extra descriptor attributes some category entries carry. Two outputs - prompt (your base with the picks appended) and random (a randomized selection) - wire whichever you want into your text encode.

    The honest take on those keyword banks

    Here's where a beginner gets misled. On SDXL-lineage models (Illustrious, Pony, NoobAI, plain SDXL), quality tags and style keywords still work - that's what these banks were built for, and they're handy.

    But on modern LLM-encoded models (Flux, Z-Image, Qwen, and most 2026 releases), masterpiece, 8k, ultra detailed does close to nothing - the vocabulary was never trained in, and it just eats attention that should go to your actual description. trending on artstation in particular is a 2022 SD 1.5 relic. So use this node's style and genre banks (those name real aesthetics the model can move toward), and go easy on the prayers/trending quality-spam banks unless you're on an SDXL checkpoint that actually rewards them.

    Installing it

    ComfyUI Manager: search comfyui_dagthomas, install, restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/dagthomas/comfyui_dagthomas
    cd comfyui_dagthomas
    pip install -r requirements.txt
    

    The pack's requirements.txt is heavy (it bundles a dozen LLM providers), but this node needs none of that - it's pure Python string assembly. It'll work even if the API-dependent nodes in the pack can't reach a provider.

    Common issues

    Output is keyword soup. Turning on five categories at Multiple Random stacks a lot of terms, and each one dilutes the others. Pick two or three banks, not all of them.

    The negatives bank went into my positive. These are just keyword lists; the node appends what you select to the output string. If you want those in a negative prompt, route the output to your negative encode - the node doesn't know the difference.

    No effect on a Flux/Z-Image render. Expected for the quality-booster banks - those keywords are inert on LLM-encoded models. Lean on style/genre names and your own description instead.

    Categorycomfyui_dagthomas

    Inputs (14)

    NameTypeDefaultDescription
    promptSTRING
    separatorSTRING,
    stringoptSTRING
    seedoptINT00–18446744073709550000
    attributesoptBOOLEANfalse
    negativesoptCOMBONone72 options: None, Random, Multiple Random, 3d, artifacts, asymmetry, +66
    genresoptCOMBONone48 options: None, Random, Multiple Random, ancient, art deco, cyber gothic, +42
    modifiersoptCOMBONone71 options: None, Random, Multiple Random, 60s kitsch and psychedelia, abstract illusionism, afrofuturism, +65
    unusualoptCOMBONone47 options: None, Random, Multiple Random, abnormal, amazing, atypical, +41
    detailedoptCOMBONone43 options: None, Random, Multiple Random, accurate, artistically-detailed, carefully-detailed, +37
    epicoptCOMBONone112 options: None, Random, Multiple Random, admirable, apotheotic, artistic, +106
    glitchoptCOMBONone41 options: None, Random, Multiple Random, anomaly, artifact, banding, +35
    prayersoptCOMBONone52 options: None, Random, Multiple Random, 4k, 8k, advanced, +46
    trendingoptCOMBONone21 options: None, Random, Multiple Random, featured on 500px, featured on cgsociety, featured on conceptartworld, +15

    Outputs (2)

    NameTypeDescription
    promptSTRING
    randomSTRING