PromptControlSimple
PromptControlSimple — LoRA scheduling and positive/negative encoding in one node
- model
- clip
- model
- positive
- negative
- model_filtered
- pos_filtered
- neg_filtered
The pack's core workflow normally means three or four separate nodes wired together: a PCLazyLoraLoader for LoRA scheduling, then a PCLazyTextEncode each for your positive and negative prompt. PromptControlSimple collapses that into a single node. It's not documented as one of the pack's headline nodes in the README - the author's own core-node list only calls out PCLazyTextEncode/Advanced and PCLazyLoraLoader/Advanced - but the schema tells you exactly what it does, and it's a genuinely convenient shortcut once you know it's there.
What it does
You feed it your checkpoint's model and clip, plus separate positive and negative prompt strings - each one free to contain the pack's scheduling syntax, LoRA tags, and everything else PCTextEncode understands. In one shot it returns a model with any scheduled LoRAs applied via ComfyUI's hook system, and both prompts encoded to conditioning. That's the three-node combo done in one.
It also carries the same multi-pass filtering the Advanced text-encode nodes have. The optional tags string plus start/end range let you define a second, filtered slice of the same prompts - and the node hands that back as a second set of outputs (model_filtered, pos_filtered, neg_filtered) alongside the unfiltered ones, so a single node can feed both your base pass and a filtered second pass without duplicating the prompt text.
Inputs and outputs
Required: model, clip, positive (multiline string), negative (multiline string). Optional: tags (filter selector, default empty), start / end (0–1 range for the filtered pass, defaults 0 and 1).
Six outputs: model, positive, negative - the full, unfiltered results, ready to wire straight into a KSampler - and model_filtered, pos_filtered, neg_filtered, the same three but resolved for just the tags/start/end window. If you're not using the filtering feature, just ignore the _filtered outputs.
Installing it
ComfyUI Manager: search "ComfyUI Prompt Control", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/asagi4/comfyui-prompt-control
No models to fetch for this node itself - it's graph generation on top of what ComfyUI and your loaded checkpoint already provide.
Where people get tripped up
Because this bundles LoRA scheduling and prompt scheduling into one call, remember that LoRA weight interactions are still whatever they'd be anywhere else - stacking multiple LoRAs through the positive/negative text is unpredictable, so if you get a black image or odd artifacts after adding a second scheduled LoRA, that's a stacking issue to debug (try reordering, put the larger LoRA first), not a bug in this node.
The bigger trap is reaching for PromptControlSimple by default and then wanting the caching benefits of the separate lazy nodes. Bundling everything into one node means ComfyUI's cache has less granularity to work with - if you're doing heavy iteration on just the negative prompt while the positive and LoRAs stay fixed, splitting back out into PCLazyLoraLoader + two PCLazyTextEncode nodes gives ComfyUI more opportunity to skip re-encoding what hasn't changed. Use PromptControlSimple for a clean, low-node-count graph; go granular when you're iterating fast and want the caching to actually pay off.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| positive | STRING | — | |
| negative | STRING | — | |
| tagsopt | STRING | — | |
| startopt | FLOAT | 0.00–1 | — |
| endopt | FLOAT | 1.00–1 | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| model_filtered | MODEL | — |
| pos_filtered | CONDITIONING | — |
| neg_filtered | CONDITIONING | — |