Nodes/ComfyUI_Fill-Nodes/FL Image Layer Planner
ComfyUI Node

FL Image Layer Planner

Let a VLM decide what your poster is made of

By filliptm·Created 3 years ago·Updated a day ago· 638
FL Image Layer Planner
  • image
  • vision_clip
  • plan
  • plan_json
modeauto
maximum_layers6
groupingbalanced
manual_plan[{"name":"Background","kind":"background","prompt":"Plain paper background without text or objects","depth":12}]
artwork_typeauto

The dream pitch for layered generation is "give me a poster, get back a background, a headline, and three cutouts." In practice the hard part isn't generating the layers - it's deciding what the layers should be. FL Image Layer Planner is that decision, made by a vision-language model reading your image.

You feed it one image and a vision-capable CLIP (a Qwen3-VL encoder, loaded as CLIP), and it asks the model to plan the image's decomposition into independently moving 2.5D layers. It returns a plan - a list of entries with a name, a kind (background, art, or text), an extraction prompt written as a short basic-English noun phrase, and a depth. Plus the raw JSON, as a plan_json string, so you can read what the model actually decided.

This is planning, not generation. It runs no diffusion, and the node says so in its own framing. Its output feeds FL Poster Layers, which does the actual extraction.

The inputs

image must be exactly one image. Batch it and you get an error, because a plan describes one picture.

mode is auto or manual. In auto, vision_clip is required - connect nothing and the node tells you. In manual, you write the plan yourself in manual_plan and the machine leaves you alone.

manual_plan defaults to a single-entry JSON array defining a paper background. It's a useful template to copy: name, kind, prompt, depth.

maximum_layers (default 6, up to 32) is the extraction budget including the background, and auto mode may choose fewer. This is the dial that decides whether you get "foreground / midground / background" or twenty fragile fragments.

grouping (broad groups, balanced, individual elements) nudges that same decision. Broad keeps related material together; individual elements asks for more, smaller cutouts and burns your budget fast.

artwork_type (auto, photography, illustration, graphic design, product / 3D, painting / collage) guides the grouping, not the style. Nothing is being restyled here. Auto infers the medium from the actual image, and text layers are only planned when lettering is actually visible.

Why the prompt engineering matters

The instruction this node sends is long, specific, and worth reading if you're going to fight with it. It insists the background describes all permanent scenery - floors, ground, tabletops, room surfaces together - so objects don't float in an empty backdrop. It bans using other objects as location anchors ("stars around the woman" is explicitly called out as wrong, because a control model will then extract the woman too). It forbids inventing invisible objects, and in auto mode the node post-processes the model's output to strip those location-anchor clauses after the fact.

Letting a VLM write extraction prompts is exactly the case where the general problem bites: a model left unconstrained adds detail you didn't ask for. This node constrains hard, asks for JSON only, and - sensibly - validates the result and sends one correction round trip if the plan fails validation. If you write manual plans, imitate the style: name only the target material, describe position with image directions, and don't split a subject's body into pieces.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes

Restart ComfyUI. You need a vision-capable CLIP for auto mode - the same family the poster extraction pass relies on - and a recent enough ComfyUI for the pack's newer node API. The pack's requirements list is long (OpenGL, audio, PDF, API clients) though none of it is needed here.

Where people get burned

Auto mode without a vision CLIP. The most common first-run failure, and the error is explicit about what's missing.

Budget vs. quality. Each layer in the plan is a separate extraction pass downstream, so a 12-entry plan on a graphic poster means twelve diffusion runs. Push maximum_layers down before you push it up.

Expecting a perfect split. Fine transparency, reflections and fine hair don't survive extraction cleanly, and the plan prompt admits it. Fewer coherent layers beat many tiny fragile ones, every time.

CategoryFill Nodes/VFX/Poster

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
modeCOMBOauto2 options: auto, manual
maximum_layersINT61–32Extraction budget including the background; Auto may choose fewer layers.
groupingCOMBObalanced3 options: broad groups, balanced, individual elements
manual_planSTRING[{"name":"Background","kind":"background","prompt":"Plain paper background without text or objects","depth":12}]
vision_clipoptCLIP
artwork_typeoptCOMBOautoGuides layer grouping, not style transfer. Auto follows the actual image; text layers are only planned when text is visible.

Outputs (2)

NameTypeDescription
planFL_POSTER_LAYER_PLAN
plan_jsonSTRING