arkennemasis Prompt At (2B · one variation's prompt)
The node that picks one prompt from the batch and bolts the locks on
- prompt
- key
- report
Step 2A gave you one big JSON array holding every variation's prompt. ArkPromptAt is step 2B: it pulls one prompt out of that array by index, and then it does the part that actually keeps a product-variation set honest - it appends the identity lock and the scene lock verbatim. The authored part varies. The fidelity part cannot.
That split is the whole design. If you let a language model write each prompt free-form, the incidental wording drifts and the camera drifts with it. This node assumes the LLM's drafted change description is fine but never trusts it with the stuff that must stay identical: the product's proportions, the framing, the lighting, the shadow. Those come from the recipe as constants and get glued on here, byte-identical every time.
Why the plate lock is the one to wire
The hosted image backends this pipeline feeds ignore the tool's size parameter - asking for 1024×1536 and 1536×1024 both come back the same square-ish canvas. The only way to control output shape is to say it in the prompt. That's what plate_lock_json is for: the node reads the locked plate's exact pixel size and aspect and writes a sentence stating the canvas you want. Without it the model picks its own shape and reframes the product, which fails every downstream frame check. It's marked optional in the schema but the tooltip is blunt - wire this.
The inputs that matter
prompts_json- the LLM's answer from step 2A.cell_json- which variation this instance is, so the outputkeymatches.index- which prompt in the array this copy of the node pulls.recipe_json- supplies the two locks. Without it, the authored prompt goes out alone and nothing anchors identity.append_locks- default true. Turn it off only to see what the model wrote on its own; it's a debugging switch, not a delivery mode.state_dimensions- default true. Appends the plate's exact pixels and aspect to every prompt. Needsplate_lock_json.
Outputs
prompt- the finished string, wire it into the image generation node.key- the cell key, so the right prompt lands on the right record.report- human-readable status.
Install and gotchas
Part of the arkennemasis pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install -r ComfyUI/custom_nodes/comfyui-arkennemasis/requirements.txt
Restart, or install by repo URL through ComfyUI Manager.
The two failure modes are both wiring mistakes. Missing plate_lock_json and the model re-frames the product. append_locks off and identity isn't anchored - fine for curiosity, useless for delivery. If your variations come back looking like different products rather than different colours, check those two links before you blame the generator. This node is pure string assembly, so there's nothing else to go wrong.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompts_json | STRING | [] | The LLM's answer from step 2A. |
| cell_json | STRING | {} | — |
| index | INT | 00–100000 | — |
| recipe_jsonopt | STRING | Supplies the two locks. Without it the authored prompt is sent alone and identity is not anchored. | |
| plate_lock_jsonopt | STRING | Wire this. The hosted image backend IGNORES the tool's size field, so the ONLY way to control the output shape is to state it in the prompt — and the shape that is wanted is always the locked plate's. Without it the model picks its own canvas and reframes the product. | |
| append_locksopt | BOOLEAN | true | Append the identity and scene locks verbatim. Off only to see what the model wrote on its own. |
| state_dimensionsopt | BOOLEAN | true | Append the plate's exact pixel size and aspect to every prompt. Requires plate_lock_json. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| key | STRING | — |
| report | STRING | — |