Stylebook Sheet
One subject, forty styles, one run — the contact sheet node
- style_chain
- prompt
- negative
- style_names
Ever rendered the same subject in six styles, one at a time, re-typing the prompt each go? Stylebook Sheet is the node that makes that a single batch. Give it one subject, and it emits one prompt per style as a real list - wire the list into a CLIPTextEncode and a batched sampler renders the whole contact sheet in one run. It's the fastest way to answer the question "what does this character look like as ukiyo-e, risograph, and a 1960s colour press job?"
It's also the node that makes the pack's gallery useful for decision-making instead of just browsing: set up a sheet, and let the model cast its own vote.
How it works
The sheet takes a style_chain as a base and copies it for every style in the list - so anything you pin on the chain (an artist, a lighting modifier) applies to every entry. It then swaps in each style and re-renders the whole prompt from scratch, collecting the results into three parallel lists: prompt, negative, and style_names.
style_names is the quietly brilliant output. It's the list of which style produced which image, in the same order the prompts render - so when the batch comes back, you can tell image #14 is the gum bichromate one without counting tiles by hand. If you're automating, it's the thing that lets you label each output.
One rule worth knowing: any style already sitting on the input chain is replaced by the sheet's own picks. The sheet is the boss of the medium axis; you supply the artists and modifiers, it supplies the styles.
The inputs
user_prompt- the one subject every style renders. The whole point of the node, and the one thing you always set.styles- the exact styles, one per line or comma-separated, in the order you want them. Click Choose styles fills this from the gallery (it stays open and numbers each pick as you go). The moment this box has anything in it, it wins:count,categoryandtag_filterare all ignored, because a list you typed out shouldn't be silently trimmed.count(2–32, default 4) - how many styles to draw whenstylesis empty. Each becomes one image in the batch, so raise it with your VRAM in mind.categoryandtag_filter- restrict the seeded draw. No effect whilestyleshas entries.seed- which styles get drawn when the box is empty; same seed and filter always produce the same sheet.style_chain(optional) - artists and modifiers to apply to every entry.
Outputs are prompt, negative, and style_names - all lists, all in matching order.
Installing
ComfyUI Manager → search Stylebook, or:
cd ComfyUI/custom_nodes
git clone https://github.com/EnragedAntelope/comfyui-stylebook.git
Restart ComfyUI; it's under conditioning/stylebook. No third-party dependencies, no downloads, no API keys - offline and self-contained, same as every node in the pack. Needs ComfyUI 0.25.0+ (the pack is written against the newer V3 node API), so update ComfyUI if the nodes won't register.
Where people get burned
VRAM is the obvious one. Each entry in the sheet is its own image in the batch, and a 32-style sheet at high resolution is a great way to OOM a mid-range card. Start at the default of 4, confirm the batch works, then scale up.
Typing style names into the box works, and aliases work too - Ukiyo-e finds Woodblock Print. But a name that matches nothing is skipped and the node tells you so, and an alias claimed by two styles comes back naming both rather than guessing between them. So if the sheet comes back one entry short, that's not a bug - that's an unknown name being quietly dropped.
And a planning note, not a bug: a sheet renders every entry with the same seed by default. That's what makes the comparison fair - same subject, same seed, different styles - but if you were hoping for style + random variation together, bump the seed per run instead of expecting it.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| count | INT | 42–32 | How many styles to draw when the styles box is empty. Each becomes one image in the batch, so raise it with your VRAM in mind. |
| category | COMBO | All categories | Restrict the seeded draw to one category. No effect while the styles box has entries. |
| tag_filter | STRING | Comma-separated; every term must match. Matches tags, prose, label and aliases. No effect while the styles box has entries. | |
| seed | INT | 00–18446744073709550000 | Which styles get drawn when the styles box is empty. The same seed and filter always produce the same sheet. |
| style_chainopt | STYLEBOOK_CHAIN | Optional. Artists and modifiers on this chain apply to every style in the sheet. Any style on it is replaced by the sheet's own picks. | |
| user_promptopt | STRING | The one subject that every style in the sheet renders. | |
| stylesopt | STRING | The exact styles to render, one per line or comma-separated, in the order you want them. Click Choose styles to fill this in from the gallery. While this box has anything in it, it wins: count, category and tag_filter are ignored, because a list you typed out should not be silently trimmed. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| negative | STRING | — |
| style_names | STRING | — |