Symbiotica Prompt Enhancer
Client one-liners in, dense production prompts out — via Claude
- template
- task_sheet
- desc_1
- desc_2
- desc_3
- desc_4
- desc_5
- desc_6
- desc_7
- desc_8
- desc_9
- desc_10
- prompts_json
Client briefs arrive as "a rustic wooden chair, warm feel." An image model does dramatically better with a dense production prompt that pins down materials, light, camera and composition. Symbiotica Prompt Enhancer is the node that rewrites each template region's client text into that denser prompt, using Claude, and grounds the rewrite in the task reference sheet - the actual design art for the region, which the LLM can look at.
This is the classic LLM-in-the-graph job from the KB: a small, tightly-scoped rewrite is exactly what a chat model is good at, and what it's not good at is inventing detail you never asked for. The grounding in the task sheet is what keeps the rewrite honest - the model describes what it sees, not what it imagines.
How it works
You feed it a SYMBIOTICA_TEMPLATE (the region layout), the task_sheet image, and a seed. It calls Claude once per region with the region's crop and client text, and returns one enhanced prompt per region. seed exists so you can re-roll - any change re-runs the node. The descriptions come out on desc_1 through desc_10, which plug straight into ERPK's desc_N sockets, and prompts_json shows the raw parsed list for debugging.
The extra_rules field is worth knowing: it's appended to the enhancer's system prompt, so you can inject game/style conventions, banned vocabulary, or a required tone without editing the node. That's the lever that makes the output consistent with the rest of the project.
The inputs that matter
template(required) - theSYMBIOTICA_TEMPLATEfrom the template editor / builder.task_sheet(required) - the editor's task sheet, the designs the LLM looks at per region.seed(required) - re-run lever; bump it to re-roll the rewrites.model- defaults toclaude-sonnet-5. Change it if your project standardizes elsewhere.api_key- overrides the Settings key. Mostly you'll leave this empty and set the key once in Settings → Symbiotica → ANTHROPIC_API_KEY.
The outputs
desc_1..desc_10 (region order) and prompts_json (the parsed list). If a region's slot comes back empty, downstream ERPK nodes leave that region's original description untouched.
Install and keys
Pack install is standard - search Symbiotica in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Then restart. This node is one of the pack's paid-API nodes: it needs an Anthropic key. Prefer the Settings route (Settings → Symbiotica → ANTHROPIC_API_KEY) over pasting keys into workflows - settings live in comfy.settings.json, workflows get shared.
Gotchas
Watch the bill. This is per-region API calls, so a ten-region template is ten calls every time you re-roll the seed - and re-rolling is the thing you'll do a lot while tuning. Data also leaves your machine, so client art goes to Anthropic; if the briefs are confidential that's a real consideration, same as any LLM-in-the-graph node. And keep extra_rules tight. An enhancer that adds detail is the point, but an enhancer that adds the wrong detail is worse than none - the KB's phrase is "subject drift," and grounding it in the task sheet is the main defense this node gives you.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| template | SYMBIOTICA_TEMPLATE | — | |
| task_sheet | IMAGE | The editor's task sheet — the designs the LLM looks at per region | |
| seed | INT | 0-1–2147483647 | Any change re-runs the node |
| modelopt | STRING | claude-sonnet-5 | — |
| extra_rulesopt | STRING | Appended to the enhancer's system prompt — game/style conventions, bans, vocabulary | |
| max_tokensopt | INT | 4096256–16384 | — |
| api_keyopt | STRING | Overrides Settings > Symbiotica > ANTHROPIC_API_KEY |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| desc_1 | STRING | — |
| desc_2 | STRING | — |
| desc_3 | STRING | — |
| desc_4 | STRING | — |
| desc_5 | STRING | — |
| desc_6 | STRING | — |
| desc_7 | STRING | — |
| desc_8 | STRING | — |
| desc_9 | STRING | — |
| desc_10 | STRING | — |
| prompts_json | STRING | The parsed prompt list, for preview/debugging |