Nodes/BigPlayer Prompting/BigPlayer ControlNet State
ComfyUI Node

BigPlayer ControlNet State

Tell the LLM about your ControlNets so the prompt cooperates instead of fighting them

By josh-ent·Created 6 months ago·Updated 6 months ago· 0
BigPlayer ControlNet State
  • preset_config
  • controlnets_also
  • preset_config
controlnets

BigPlayer ControlNet State is the ControlNet half of the pack's state-indication trio, and like its siblings it does one quiet job: it tells the LLM what your graph already has so the prompt it writes works with the constraints instead of against them. Nothing is loaded, applied, or conditioned here - this node just packages context.

The input

controlnets is a multiline string. Per the tooltip, you enter one ControlNet per line or comma-separated - so depth, canny, openpose works, and so does a list from another node. controlnets_also (optional) concatenates a string or list-of-strings onto the main field, with linked entries winning dedupe ties if the same name shows up twice. Entries are deduplicated case-insensitively, and the output is a single preset_config.

Why this matters

Here's the real-world case for it. ControlNet conditioning and a text prompt can silently contradict each other: you run a depth ControlNet but the LLM writes "flat illustration, no perspective" and you get a worse image for reasons you can't see. When the LLM knows a ControlNet is active, it can write a prompt that works with the depth map rather than against it. The root renders the preset as "Workflow preset state provided explicitly: ControlNets: - canny" and the prompt fragments tell the LLM to account for "any checkpoints, LoRAs, ControlNets, and other supplied context."

Chain this node with Checkpoint State and LoRA State - preset_config flows through all three - and the root gets one combined picture: here's the checkpoint, here's the LoRA, here's the ControlNet, now write me a prompt that fits. That's the pack's core design working as intended.

The honest caveat

This is advisory context, not enforcement. The LLM knows a ControlNet is loaded, but the node doesn't validate that the names match your actual ControlNet setup - it accepts what you type. If you write canny but your graph runs a pose ControlNet, the LLM will confidently write for the wrong constraint. Keep the names accurate; the node is only as honest as the context you feed it. (The one thing it does enforce: empty input adds no context, which is fine.)

Install and troubleshooting

Pack install: ComfyUI Manager, search "BigPlayer Prompting", or git clone https://github.com/josh-ent/comfyui-bigplayer-llm-nodes into ComfyUI/custom_nodes, then restart. Deps are httpx and pydantic; no model downloads, and this node needs no API key by itself - only the root you chain it into does. One practical gotcha: commas split entries, so a ControlNet name containing a comma will be split in two. Keep names clean, one per line if you're unsure.

CategoryBigPlayer/State Indication

Inputs (3)

NameTypeDefaultDescription
controlnetsSTRINGEnter one ControlNet per line or comma-separated. You can also connect a string or string-list output.
preset_configoptBIGPLAYER_PRESET_CONFIGOptional preset config emitted by another BigPlayer state-indication node.
controlnets_alsoopt*Takes a string or list of strings and concatenates it onto `controlnets`; linked entries win ties where needed.

Outputs (1)

NameTypeDescription
preset_configBIGPLAYER_PRESET_CONFIG