☁️BizyAir IPAdapterStyleComposition
BizyAir IPAdapterStyleComposition — ComfyUI Node
- model
- ipadapter
- image_style
- image_composition
- image_negative
- attn_mask
- clip_vision
- model
What it is
This is IP-Adapter's more advanced trick: instead of one reference image doing double duty for "what it looks like" and "how it's arranged," you split that job across two separate images. One supplies style - palette, texture, rendering feel. The other supplies composition - the actual layout and structure of the scene. It's the node cubiq's IPAdapter Plus popularized for exactly this use case, and it's genuinely useful when the single-image version of IP-Adapter keeps giving you the right vibe in the wrong arrangement, or vice versa.
Under the hood it's still the same decoupled cross-attention mechanism every IP-Adapter node uses - image embeddings get injected through their own attention path alongside your text prompt - but this node runs it twice, once per reference, and blends the two embedding streams before applying them to the model.
The inputs that matter
- model -
BIZYAIR_MODEL, your generation model. - ipadapter - the
IPADAPTERhandle from BizyAir IPAdapterModelLoader. - image_style / image_composition - your two reference images, doing the two separate jobs described above.
- weight_style / weight_composition - independent strength dials for each (default 1.0, range -1 to 5). Push style up and composition down (or vice versa) to shift the balance.
- combine_embeds - how the two embedding streams merge:
concat,add,subtract,average(default), ornorm average.averageis the sane starting point; the others are worth experimenting with if the blend feels muddy. - start_at / end_at - the step range (0-1) during which this conditioning applies. Ending it early (rather than running through 1.0) tends to preserve more fine detail in the output, a known trade-off with any IP-Adapter-style injection.
- embeds_scaling - a lower-level control over how the embeddings scale (
V only,K+V,K+V w/ C penalty,K+mean(V) w/ C penalty). Leave this on its default unless you're specifically chasing an artifact you've traced back to it. - expand_style (optional-feeling but required, default off) - expands the style influence.
- image_negative / attn_mask / clip_vision (all optional) - a negative reference image to steer away from, a mask to restrict where the effect applies, and an explicit CLIP vision model if you need to override the default.
Output is a single model (BIZYAIR_MODEL) - feed that straight into your BizyAir sampler like you would any conditioned model.
How to install it
ComfyUI Manager: search "BizyAir," install, restart. Manual clone:
cd ComfyUI/custom_nodes
git clone https://github.com/siliconflow/BizyAir.git
A BizyAir API key is required - this node's inputs get bundled up and sent to SiliconFlow's cloud for the actual inference.
Common issues
Output looks like neither reference. This is usually a weight balance problem, not a node problem - with two images competing for influence, it's easy to land in a middle ground that resembles both poorly instead of either well. Try pushing one weight toward 0 temporarily to isolate what each reference is actually contributing before dialing both back in together.
Composition reference gets ignored. Composition is generally the harder signal to hold onto against a strong text prompt - if your prompt describes a layout that fights the composition image, the prompt often wins. Try softening the prompt's own layout language, or raising weight_composition relative to weight_style.
Detail looks soft or mushy. Running IP-Adapter-style conditioning across the entire step range is a known cause of reduced detail in the final image - bring end_at down from 1.0 so the effect only applies during the earlier denoising steps, then let the later steps sharpen up unconstrained.
Type errors on the model socket. It's BIZYAIR_MODEL, not a stock ComfyUI MODEL - you need a BizyAir model loader feeding it, not a local checkpoint loader.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | BIZYAIR_MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image_style | IMAGE | — | |
| image_composition | IMAGE | — | |
| weight_style | FLOAT | 1.00-1–5 | — |
| weight_composition | FLOAT | 1.00-1–5 | — |
| expand_style | BOOLEAN | false | — |
| combine_embeds | COMBO | average | 5 options: concat, add, subtract, average, norm average |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| embeds_scaling | COMBO | 4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty | |
| image_negativeopt | IMAGE | — | |
| attn_maskopt | MASK | — | |
| clip_visionopt | CLIP_VISION | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | BIZYAIR_MODEL | — |