arkennemasis Prompt Request (2A · ask for all N prompts)
Ask for every variation prompt in one LLM call, then never ask again
- request
- count
- keys
If a product has 30 variations, you can ask a language model to write 30 prompts, or you can ask it once to write all 30. ArkPromptRequest exists because the first way quietly destroys the whole job. Thirty individually-authored prompts drift - one says "softly illuminated", the next "warm glow", a third mentions the surface the product sits on - and every one of those incidental words moves the camera. Ask for the whole set in a single call, written against the same instructions, and the set stays parallel.
This is step 2A of the arkennemasis variation pipeline. The pipeline takes a client's variation spreadsheet plus one locked base photograph and produces a verified, consistently-framed product image library. The node before this (Cell Matrix / Cell At) hands you the cartesian product of every axis × plate as cells_json; this node turns that list into one prompt for your LLM.
How it works
Each cell's slots get flattened into a row: axis = value, which region it changes, the target hex stated numerically (twice - the model is told to "write this exact value into the prompt", because no colour chip is attached for it), and any reference images with their roles. All the rows go into a template that demands a JSON array back - exactly %(count)d objects, each with n, key and prompt, in order, and nothing else.
The template is a widget, not magic. It uses %(count)d and %(rows)s placeholders, and you can edit it, but the default is good enough that most people never touch it.
The inputs and outputs that matter
cells_json- the cell list from the matrix stage. The only required input.template- the request text, with%(count)dand%(rows)s.request- wire this into your LLM node's prompt input, withjson_onlyON, alongside the customised system instructions from step 1B.keys- a JSON list of the cell keys in order. Wire it into the LLM'sbatch_keysso a batched reply names which item each object answers. That's the difference between a prompt reaching its own cell and reaching whichever cell happens to share its position.count- the number of variations, handy for sanity-checking downstream.
Install
ArkPromptRequest is one of 61 nodes in the arkennemasis pack. The node itself is pure string plumbing - no API, no key. The LLM it feeds is a separate node in the same pack, which is where any Replicate or Codex setup happens.
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install -r ComfyUI/custom_nodes/comfyui-arkennemasis/requirements.txt
Or use ComfyUI Manager → Install via Git URL and paste the repo URL. Restart after.
Common issues
- The LLM returns prose instead of a JSON array. This node can't fix that - make sure
json_onlyis ON on the LLM node. - Keys mismatch. If the reply is numbered from the model's own viewpoint rather than your keys, the
batch_keyswire is missing. Every prompt reaching the wrong cell looks like drift and wastes a paid generation. - Empty cell list. An empty
cells_jsonraises immediately rather than shipping an empty request, so if you see that error, the problem is upstream in the matrix stage.
The pack's own runbook pushes an even further step - ArkPromptBuild, which drops the LLM from prompt assembly entirely and does pure substitution. 2A/2B is the route where one LLM call drafts all the change instructions and you bolt the fidelity locks on after. Both exist on the canvas; you get to pick which one your prompts deserve.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| cells_json | STRING | [] | — |
| templateopt | STRING | Uses %(count)d and %(rows)s. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| request | STRING | — |
| count | INT | — |
| keys | STRING | — |