ComfyUI Node

PVL StylePicker

Sixteen art styles behind one dropdown

By pvlprk·Created about a year ago·Updated 8 months ago· 1
PVL StylePicker
    • style_name
    • style_prompt
    style

    There are two ways to A/B test art styles in ComfyUI: write the same prompt fifteen times with different style descriptions, or pick from a dropdown. PVL StylePicker is the dropdown. It ships with sixteen hand-written style presets - Ghibli, Pixar 3D Animation, Anime (Shōnen), ukiyo-e woodblock, sumi-e ink wash, ligne claire, pixel art, and more - and each one spits out both the style's name and a ready-to-paste style prompt for your text encoder.

    It's from pvlprk/comfyui-pvl-api-nodes ("ComfyUI Assistant Node"). The value is less the sixteen defaults and more that you can edit the list to be yours.

    How it works

    The node loads its styles from pvl_style_picker.json, which lives in the pack's folder next to the node's Python file. At startup it reads that file (falling back to sixteen embedded presets if the JSON is missing or empty) and builds the dropdown from the style names. When you pick one, it returns:

    • style_name - the name you selected.
    • style_prompt - the full style description, meant to be concatenated into your positive prompt.

    You can edit pvl_style_picker.json to add, remove, or rewrite styles - it's just a styles list of {name, prompt} objects. The node watches the file's modification time and reloads it, so a restart-free-ish workflow is possible (the dropdown refreshes on the next load). This is the real reason to adopt it: a shared JSON of your go-to style prompts, driven by one dropdown across all your workflows.

    Each preset prompt is deliberately long and descriptive prose ("hand-painted watercolor/gouache backgrounds, warm pastel palette...") - the kind that works well on SDXL/Flux-style models that respond to natural-language descriptors. Expect mixed results on tag-based anime models that want danbooru-style tokens; that's a model mismatch, not a broken node.

    Inputs and outputs

    • style - the dropdown (enum), the only input.
    • Outputs: style_name and style_prompt, both STRING. Wire style_prompt into a prompt concat (the pack's Concat x3/x8 are right there) feeding your CLIP text encode.

    Installing

    cd ComfyUI/custom_nodes
    git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
    

    restart, or install via ComfyUI Manager (search "ComfyUI Assistant Node"). No models, no dependencies beyond Python's json module.

    Where people get tripped up

    • Edit the JSON, not the code. If you edit pvl_style_picker.py directly, a pack update overwrites your changes. The JSON is the supported customization point. If the node keeps falling back to embedded styles, your JSON has a parse error - check it with a JSON linter.
    • The dropdown is fixed at load time. It re-reads the file on node refresh, but you still have to reload the graph (or restart) to see new entries in an existing node.
    • It outputs text, not a finished prompt. Forgetting to concat style_prompt into your actual prompt string is the classic no-op failure - you'll pick "Ghibli" and get an unchanged image because the style never reached the encoder.
    CategoryPVL/Style

    Inputs (1)

    NameTypeDefaultDescription
    styleCOMBO16 options: Ghibli, Pixar 3D Animation, Anime (Shōnen), Seinen Manga Ink, Western Cartoon (Retro), Ligne Claire (Franco‑Belgian), +10

    Outputs (2)

    NameTypeDescription
    style_nameSTRING
    style_promptSTRING