Prompt Camera Assistant
Stop typing camera specs from memory — drop them down instead
- STRING
If you chase photorealistic output in ComfyUI, you already know the single highest-leverage trick in the current prompt playbook: name a physical camera, not a mood. "Shot on a point-and-shoot film camera" drops a model out of beauty-default mode faster than any stack of masterpiece, 8k, hyper detailed ever did, and modern text encoders (Flux's T5, Z-Image, anything LLM-based) were trained on real captions, so they actually know what a Sony A7R V or an ARRI Alexa is. The catch is remembering the gear, spelling it right, and keeping it consistent.
Prompt Camera Assistant is a tiny dropdown-first answer to that. It's one node from Bill Casadei's pack of the same name: pick a camera, a lens, an aperture, a film stock, a bokeh style, and it assembles a clean comma-joined camera block for you. No free-text chaos, no memorized spec sheet. You get the "equipment word" that the photorealism guides keep telling you to use, without the typing.
How it works
Under the hood there's a Python class called PromptCameraLibrary - just static lists of real gear, split into DSLR, mirrorless, film, cinema, and action/drone cameras - and the node itself is pure string assembly. It takes every dropdown you set, silently drops the section headers (anything starting with ---), prefixes the exposure fields (aperture f/1.4, ISO 100, shutter 1/125), and joins the survivors with commas. A typical output looks like:
Canon EOS R5, 85mm, Prime lens, aperture f/1.4, ISO 100, shutter 1/250, Creamy bokeh, Kodak Portra 400, golden hour light
That whole thing is one STRING output, and the shipped example workflows feed it straight into a CLIPTextEncode text input. You'll still write the actual subject yourself ("candid portrait of a woman reading at a café") - this node is the gear clause, the part people usually botch from memory.
The inputs that matter
It's all dropdowns, so there's no syntax to learn. Three of them do most of the work:
- camera - the big one: 54 choices spanning Canon/Nikon/Sony/Fujifilm/Hasselblad, ARRI Alexa, RED, Blackmagic, plus fun junk like the GoPro and DJI.
- film_stock - the most reliable color-grading control there is. Kodak Portra 400 for warm skin, Ilford HP5 for real B&W grain. This is the field worth geeking out over.
- bokeh - swirly, soap-bubble, cat-eye. These map directly to the optical tells that give AI away (uniform, characterless blur), so they pull real weight.
The exposure trio (aperture, ISO, shutter_speed) is honest flavor: models render light, not shutter math. Fun fact, they thought about video too - the aperture dropdown mixes f-stops and T-stops, and shutter mixes still speeds with 180° video angles, so you can build a cinema-look string for video models. Three additional_options fields let you stack lighting/look tags (handheld, golden hour light, film grain) because each one is single-select.
Install
This is the easiest install you'll hit all week - there are zero Python dependencies and no model files to download. Pure standard-library string work.
- ComfyUI Manager: search "Prompt Camera Assistant" and install.
- Or by hand:
cd ComfyUI/custom_nodes && git clone https://github.com/bcasadei/ComfyUI-Prompt-Camera-Assistant, then restart ComfyUI.
The node lands under Prompt Helpers in the node menu.
Where people get burned
One honest warning: the README promises a Still/Video Mode selector, and it doesn't exist. The shipped code never exposes one - it just merges every camera, f-stop, and shutter speed into single mega-dropdowns. The "still vs video" split in the library is dead scaffolding. Don't go hunting for a mode toggle; there isn't one.
Second gotcha: ISO defaults to 100 and can't be turned off, so every prompt you build will carry an ISO 100 whether you asked for it or not. Harmless flavor, but it's always there.
Otherwise this is a genuinely frictionless little node - a quality-of-life tool, not a magic realism switch. It writes the gear clause you'd write anyway; pairing it with an actual subject prompt is still on you. For a pack that claims "photography-accurate and cinema-aware" output, that's refreshingly honest about what a string assembler can do.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| camera | COMBO | --- DSLR --- | 54 options: --- DSLR ---, Canon EOS 5D Mark IV, Canon EOS 1DX Mark III, Nikon D850, Pentax 645Z, --- MIRRORLESS ---, +48 |
| focal_length | COMBO | --- | 16 options: ---, 14mm, 16mm, 18mm, 20mm, 24mm, +10 |
| lens_type | COMBO | --- | 16 options: ---, Prime lens, Zoom lens, Wide-angle lens, Telephoto lens, Ultra-wide lens, +10 |
| aperture | COMBO | --- F-STOPS --- | 22 options: --- F-STOPS ---, f/0.95, f/1.2, f/1.4, f/1.8, f/2, +16 |
| iso | COMBO | 100 | 12 options: 50, 100, 200, 400, 800, 1600, +6 |
| shutter_speed | COMBO | --- STILL SHUTTER SPEEDS --- | 34 options: --- STILL SHUTTER SPEEDS ---, 1/8000, 1/4000, 1/2000, 1/1000, 1/500, +28 |
| film_stockopt | COMBO | --- | 28 options: ---, --- COLOR NEGATIVE ---, Kodak Portra 160, Kodak Portra 400, Kodak Portra 800, Fujifilm Pro 400H, +22 |
| bokehopt | COMBO | --- | 7 options: ---, Creamy bokeh, Swirly bokeh, Soap-bubble bokeh, Cat-eye bokeh, Smooth gaussian bokeh, +1 |
| focus_styleopt | COMBO | --- | 7 options: ---, Manual focus, Autofocus single-shot, Continuous autofocus, Rack focus, Deep focus, +1 |
| motion_bluropt | COMBO | --- | 6 options: ---, No motion blur, Natural handheld motion blur, Fast action motion blur, Long exposure motion streaks, Cinematic 180-degree shutter motion blur |
| additional_optionsopt | COMBO | --- | 35 options: ---, handheld, tripod, gimbal stabilized, shoulder rig, drone / aerial, +29 |
| additional_options_2opt | COMBO | --- | 35 options: ---, handheld, tripod, gimbal stabilized, shoulder rig, drone / aerial, +29 |
| additional_options_3opt | COMBO | --- | 35 options: ---, handheld, tripod, gimbal stabilized, shoulder rig, drone / aerial, +29 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |