Nodes/SDXL Auto Prompter/APNext Geography
ComfyUI Node

APNext Geography

Countries, territories and nationalities as dropdowns

By dagthomas·Created 3 years ago·Updated 17 days ago· 285
APNext Geography
    • prompt
    • random
    prompt
    separator,
    string
    seed0
    attributesfalse
    countriesNone
    territoriesNone
    nationalitiesNone

    GeographyPromptNode does one small thing: it gives you dropdowns of 202 countries, 82 territories and 209 nationalities and appends your pick to the prompt. It's part of dagthomas's "SDXL Auto Prompter" pack, and its two real uses are steering place - the architecture, landscape and light of a country - and steering people - the appearance a nationality tag biases toward. Naming a nationality is a genuinely strong lever for face and features; naming a country biases setting.

    It's also blunt, and worth being thoughtful about. A nationality tag pulls the model toward whatever average it learned from its training data, stereotypes and all. That's fine when you want "a street in Marrakech" or a specific regional look, and it's a footgun if you lean on it as a lazy substitute for describing an actual person. Use it as a starting bias, then describe the individual you actually want.

    How it works

    No model, no API key - it joins your prompt with the selected geographic terms via the separator (comma default) and returns a string. As with the whole family, each menu opens with None / Random / Multiple Random, so a seed lets you roll a location or nationality. It's tag-style injection, native to SDXL-lineage checkpoints; on LLM-encoded 2026 models the terms read as instruction text.

    The inputs and outputs that matter

    • prompt - your base text; the geography folds in.
    • countries (202) - biases setting, architecture and landscape.
    • nationalities (209) - biases a subject's appearance; the strongest lever of the three.
    • territories (82) - regions, dependencies and specific locales for finer place-setting.
    • seed - drives Random / Multiple Random.
    • attributes (off by default) - adds the pack's extra descriptor words for each entry.

    Outputs are prompt and random, both strings, into a CLIP Text Encode.

    How to install it

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

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

    then restart. The requirements.txt installs the whole pack - openai, anthropic, google-generativeai, transformers, decord, scipy - because dagthomas also ships cloud-LLM and video nodes. This builder needs none of it; decord is the usual build headache, and the plain nodes generally load if it fails.

    Where people get burned

    • Nationality as a crutch. It biases toward an average, stereotypes included. Set the direction with it, then describe the specific person - features, age, expression - so you're not shipping a caricature.
    • Country vs nationality confusion. countries steers the place; nationalities steers the person. Mixing both can send the setting and the subject in different directions. Decide which you're steering.
    • Model era. On SDXL/Illustrious these behave like tags. On Flux 2 / Z-Image, fold the place or nationality into a plain sentence rather than appending it as a bare tag.
    • Redundant picks. "Japan" plus "japanese" plus a Tokyo landmark is three ways of saying the same thing and can over-bias. One well-chosen term usually does it.
    Categorycomfyui_dagthomas

    Inputs (8)

    NameTypeDefaultDescription
    promptSTRING
    separatorSTRING,
    stringoptSTRING
    seedoptINT00–18446744073709550000
    attributesoptBOOLEANfalse
    countriesoptCOMBONone202 options: None, Random, Multiple Random, Afghanistan, Albania, Algeria, +196
    territoriesoptCOMBONone82 options: None, Random, Multiple Random, Abu Dhabi, Ajman, Akrotiri, +76
    nationalitiesoptCOMBONone209 options: None, Random, Multiple Random, afghan, albanian, algerian, +203

    Outputs (2)

    NameTypeDescription
    promptSTRING
    randomSTRING