Film Stock Prompt Manager
Film-stock prompts without memorizing the recipe
- wof_print_intent
- positive_prompt
- negative_prompt
- filename
Getting a photorealistic film look out of a diffusion model is 20% model and 80% prompt craft - the lighting language, the era vocabulary, the subtle "shot on" grammar that nudges a checkpoint toward a documentary frame instead of a skincare ad. PromptLab is the pack's answer to that: instead of re-typing the same film-stock recipe every run, it retrieves a curated prompt from bundled decks and hands you positive and negative prompt strings, ready to feed your KSampler.
The description spells out the two flavors: 'Text-based prompts' for FLUX-style models (descriptive natural language) and 'Tag-based prompts' for SDXL-style models (short comma tags). Pick your architecture, pick a deck, pick an index, and the node does the vocabulary work.
How it works
The required inputs: prompt_mode (Text-based for FLUX / Tag-based for SDXL), deck (the curated theme set: Photojournalism, Studio (1950s-1970s), World View, 1930s-1940s Cinema, Boudoir and Intimate Portraiture, Pinup and Bikini, Classic Nudes), set (a dynamic dropdown that fills with the deck's sub-sets - e.g. Photojournalism opens into "Hard Noir (Shadow Density)" and friends), and prompt_index (1–50) to walk through variations within a set.
The prompts live in the pack's config (film_stock_prompt_v4.flux.json / .sdxl.json), decked out with per-set descriptions so each option reads like a brief - gritty documentary aesthetic for Photojournalism, that 1930s cinema shadow language for the cinema deck. The node pulls the entry at prompt_index for the chosen deck+set and outputs positive_prompt, negative_prompt, and filename (the source entry's file name, handy for bookkeeping and reproducibility).
Two optional inputs: prepend_positive and prepend_negative - plain strings pasted onto the front of the retrieved prompts, so you can bolt on your own subject ("brunette portrait, 1950s studio") without editing the deck. And the interesting one: wof_print_intent, a WOF_PRINT_INTENT object from WOFPrintLab. When connected, PromptLab validates the retrieved prompt against your print intent, checking that its tonal emphasis and contrast class are compatible with the selected film stock and era - the schema catching the incoherent combos before you generate them.
How to use it
Choose prompt_mode by your base model (Text-based → FLUX, Tag-based → SDXL - mixing them up gives you tag soup in a natural-language model or a paragraph in a tag model). Then the practical loop: pick a deck, browse sets, walk prompt_index through a few variations, and when one lands, lock it and prepend your actual subject. The prompt is a starting point, not a verdict - prepend your subject, and treat the retrieved text as the "film look" seasoning.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/AlbertJBurton/comfyui-jbnodes.git
cd comfyui-jbnodes
pip install -r requirements.txt
Restart ComfyUI, or ComfyUI Manager → "comfyui-jbnodes."
Gotchas
- The
setdropdown is dynamic (it depends ondeck), so it populates in the browser UI; over a raw API call it can arrive as a null option, same known dynamic-widget behavior as the pack's other cascading dropdowns. - Decks ship in the pack - updating the pack can add, rename, or reorder sets, and
prompt_indexis position-based, so a saved workflow can silently point at a different prompt after an update. Keepfilenamevisible to catch it. - These are curated prompts for a specific aesthetic range (documentary, studio, cinema, portraiture). Don't expect a sci-fi or fantasy deck - pick the era that matches your subject, or prepend your own.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_mode | COMBO | 2 options: Text-based prompts, Tag-based prompts | |
| deck | COMBO | 7 options: Photojournalism, Studio (1950s-1970s), World View, 1930s-1940s Cinema, Bouidoir and Intimate Portraiture, Pinup and Bikini, +1 | |
| set | COMBO | 1 options: | |
| prompt_index | INT | 11–50 | — |
| prepend_positiveopt | STRING | — | |
| prepend_negativeopt | STRING | — | |
| wof_print_intentopt | WOF_PRINT_INTENT | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive_prompt | STRING | — |
| negative_prompt | STRING | — |
| filename | STRING | — |