jan-prompt-presets
A collection of small utility nodes for ComfyUI that make common prompt-building and sampler configuration tasks faster.
Nodes (8)
Shot language you don't have to type from memory
The other half of the cinematic prompt formula
The tiny node that makes prompt lists usable
Turn a start image into a Wan motion prompt with a local LLM
A dropdown that plugs straight into KSampler
The dropdown half of the sampler equation
Why your SDXL faces look melted — and the bucket-preset node that stops it
One big text box, a hundred prompts
jan-prompt-presets
A collection of small utility nodes for ComfyUI that make common prompt-building and sampler configuration tasks faster. All nodes live under the prompt/presets category.
Nodes
Camera Presets
Outputs a prompt string for common camera angles and shot types.
| Option | Description | |---|---| | None / Custom | Empty output — use the custom override field | | Cinematic Hero | Low angle, dramatic perspective, foreshortening | | Dynamic Action | Dutch angle, tilted camera, wide angle lens | | Intimate Portrait | Close-up, eye level, shallow depth of field | | Character Showcase | Full body, eye level, centered composition | | Over-the-Shoulder Scene | OTS framing, medium shot, depth of field | | Epic Wide Scene | Wide shot, low angle, cinematic framing |
Output: camera_prompt (STRING)
Optional input: custom_override — if filled, replaces the dropdown entirely.
Lighting Presets
Outputs a prompt string for common lighting setups.
| Option | Description | |---|---| | None / Custom | Empty output — use the custom override field | | Dramatic | Strong directional light, deep shadows, chiaroscuro | | Cinematic | Three-point lighting, colour grading, anamorphic flare | | Golden Hour | Warm sunlight, long soft shadows, amber tones | | Neon Night | Vibrant neon, cyan/magenta spill, cyberpunk atmosphere | | Moody Thriller | Low key, cool tones, noir atmosphere | | Soft Natural Daylight | Diffused overcast light, even illumination, airy feel | | Moonlit Night | Cool pale moonlight, silver and deep blue tones | | Studio | Professional softbox, clean white background |
Output: lighting_prompt (STRING)
Optional input: custom_override — if filled, replaces the dropdown entirely.
SDXL Resolution Picker
Outputs width and height for all standard SDXL bucket resolutions (the aspect ratios the model was trained on).
| Option | Resolution | |---|---| | 1024 x 1024 (1:1 Square) | 1024 × 1024 | | 1152 x 896 (9:7 Landscape) | 1152 × 896 | | 1216 x 832 (3:2 Landscape) | 1216 × 832 | | 1344 x 768 (16:9 Landscape) | 1344 × 768 | | 1536 x 640 (12:5 Wide) | 1536 × 640 | | 896 x 1152 (7:9 Portrait) | 896 × 1152 | | 832 x 1216 (2:3 Portrait) | 832 × 1216 | | 768 x 1344 (9:16 Portrait) | 768 × 1344 | | 640 x 1536 (5:12 Tall) | 640 × 1536 |
Outputs: width (INT), height (INT)
Scheduler Selector
A clean dropdown for picking a scheduler, sourced directly from ComfyUI's core (comfy.samplers.KSampler.SCHEDULERS). Automatically includes any schedulers added by other installed packages.
Output: scheduler — type-compatible with the scheduler input on KSampler and similar nodes.
Sampler Selector
Same as Scheduler Selector but for samplers, sourced from comfy.samplers.KSampler.SAMPLERS.
Output: sampler_name — type-compatible with the sampler input on KSampler and similar nodes.
Text Split
Splits a multiline string into a list, one element per line.
Input: text (STRING, multiline), skip_empty_lines (BOOLEAN, default: true)
Output: list (STRING_LIST)
List Get Index
Returns a single element from a STRING_LIST by index. Supports negative indices (-1 = last element).
Input: list (STRING_LIST), index (INT)
Output: element (STRING)
LM Studio Vision Prompt Enhancer
Takes a start image and an optional short scene description, sends both to a vision-capable LLM running in LM Studio, and returns a Wan-optimised motion prompt ready to feed into a text encoder.
Designed to work alongside the ComfyUI-EBU-LMStudio node pack — use the EBU Load and Unload nodes to manage the LLM lifecycle around this node.
| Input | Type | Description |
|---|---|---|
| image | IMAGE | The start image to describe and expand |
| model_name | STRING | Partial name of the model loaded in LM Studio (e.g. "qwen") |
| url | STRING | LM Studio API endpoint (default: http://127.0.0.1:1234/v1/chat/completions) |
| max_tokens | INT | Maximum response length (default: 300) |
| temperature | FLOAT | Sampling temperature (default: 0.5) |
| scene_description | STRING (optional) | Short hint to guide the output, e.g. "A girl dances on a tropical beach." — if empty, the LLM works from the image alone |
| system_prompt | STRING (optional) | System prompt sent to the LLM — editable in the node for tuning without touching code |
Output: enhanced_prompt (STRING)
Requirements:
- LM Studio running with Developer Mode enabled
- A vision-capable model loaded (e.g. Qwen3 9B with mmproj file)
Installation
- Clone or copy this folder into
ComfyUI/custom_nodes/:git clone https://github.com/kursopiko/jan-prompt-presets.git - Restart ComfyUI.
- All nodes will appear under the
prompt/presetscategory.
Credits
Created by JAN (@kursopiko) with assistance from Claude (Anthropic).