ComfyUI Node

(AV) Preset

The (AV) Preset node for hand-built ArchViz prompts

By ArrowsVisuals·Created 4 months ago·Updated 3 months ago· 3
(AV) Preset
    • text
    preset
    passthrough
    separator,

    The (AV) Preset node is the manual-shift version of the ArchViz preset library. Where the (AV) Matrix gives you all 13 categories on one node, this one is a single dropdown - 122 entries, every category flattened into one list - with a text output you wire wherever a prompt string goes. It's for when you want exactly one curated fragment rather than the whole stack. It generates nothing, calls no API, and needs no key; it's a text lookup, full stop.

    What it is

    Part of the ArchViz Preset System pack (MIT, by ArrowsVisuals), a library of hand-written architectural visualization prompt fragments: golden_hour lighting, photoreal_editorial style, people_only_minimal_change preservation, and so on. The pack is built for image-to-image workflows where a screenshot or basic render becomes a high-end render, and where the prompt should describe what's missing rather than the geometry that's already in the input. The Matrix is the recommended default because it assembles everything at once. The Preset node is the escape hatch: pull a single curated line and glue it onto your own text, or chain a few fragments together by hand.

    How it works

    The dropdown value is category/preset_name - like atmosphere/golden_hour - and the node splits it on the slash, looks up the fragment in your presets file, and hands it out as a STRING. That lookup is the whole mechanism. The presets live in ComfyUI/user/archviz_presets.json, auto-copied on first launch; edit that file and the next workflow run picks up the new text without a restart.

    The interesting bit is passthrough, the optional string input. Wire one Preset node's text output into another's passthrough and you get concatenation: passthrough + separator + text. That's how you hand-assemble a stack without the Matrix - a lighting fragment from one Preset feeding a second Preset that appends the people fragment.

    The inputs and outputs that matter

    • preset (required) - the category/name dropdown. The only thing most runs touch.
    • passthrough (optional) - text to prepend. The chaining trick lives here.
    • separator (optional, default ", ") - how the fragment joins onto passthrough. Note it's comma-space here, where the Matrix and Assembler default to ". ".
    • Output: text (STRING) - the resolved fragment (or the joined result). Wire it into the prompt/text slot of your image node - for closed models like Nano Banana, that's the Gemini Image node's prompt input.

    Installing it

    The node ships with the whole pack, so you install once and get all four nodes under the "ArchViz" category:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/ArrowsVisuals/archviz-preset-system.git
    

    then restart ComfyUI. ComfyUI Manager users can search "ArchViz Preset System". There are no Python dependencies (pure stdlib) and no model files to download - the heavy lifting is the closed model you point the resulting text at, which needs its own node and, for Nano Banana Pro / Gemini Image and friends, an API key. On first launch you'll see [ArchViz] First run - copied default presets to …/archviz_presets.json in the console.

    Common issues

    The flat 122-item dropdown is the main friction - nothing visually groups categories, so you'll end up memorizing your favorites. Two editing gotchas straight from the README: changing existing preset text applies on the next run, but adding a new preset name or category requires a ComfyUI restart so the dropdown refreshes. And the Preset node is model-agnostic - it always returns the default text, not a per-model dialect. If you're feeding a Flux 2 workflow fragments written in Nano Banana's edit-instruction voice, that's exactly the mismatch the Matrix's target_model was built to fix.

    CategoryArchViz

    Inputs (3)

    NameTypeDefaultDescription
    presetCOMBO122 options: atmosphere/aerial_perspective_strong, atmosphere/clear_aerial_sharp, atmosphere/clear_air, atmosphere/dramatic_clouds, atmosphere/humid_coastal_air, atmosphere/light_haze, +116
    passthroughoptSTRING
    separatoroptSTRING,

    Outputs (1)

    NameTypeDescription
    textSTRING