Nodes/ComfyUI-Minds/Minds · Prepare Creative Test
ComfyUI Node

Minds · Prepare Creative Test

Minds · Prepare Creative Test

By minds-ai-co·Created 3 days ago·Updated 2 days ago· 0
Minds · Prepare Creative Test
  • creatives
  • draft
  • review_json
◄audience_ids►
◄questionWhich creative do you prefer?►
◄context►
◄study_localeen►
◄request_id►

Half a node, on purpose

This node prepares a research test and then stops. It uploads your creatives, builds the draft question, validates the Audiences, and hands back a fingerprint that says "this exact configuration." It does not run the research. Nothing gets spent, no Audience answers anything.

Why split it? Because the thing you're about to run costs money and produces an answer other people will act on, and the failure modes are all quiet ones: a label inverted, a question that reads ambiguously next to creative 3, the wrong Audience from a list of eleven. The pack's split is an explicit pause. Read the draft, then approve it. The docs put it plainly - preparation does not run research, and downstream nodes stay blocked until approval.

If you're building something new, note that 0.2.2 marks this node DEPRECATED = True; Minds · Audience Preferences does the same review-then-approve dance inside one node, with the review in a dialog instead of a wire. This node is for the classic chain - Candidates → Prepare → Run → Select → Selected - or for anyone who wants the draft as an inspectable object rather than a modal.

How it works

prepare parses your Audience IDs (comma-separated UUIDs, 1–100, no duplicates), then runs the shared workflow's prepare stage. That stage does more than you'd guess:

  • It checks the creative count - minimum 2, unlike the candidate nodes which accept 1.
  • It hashes a fingerprint over the creatives, Audiences, the authored question and the locale.
  • It reads or creates a retry receipt under ComfyUI's user directory (minds/receipts). If the receipt exists with a different fingerprint, you get told to use a new request ID - that's how it stops a half-finished test from being quietly redefined.
  • It uploads any local bytes, or passes hosted URLs for import, then creates a research draft and asks Minds to preview it.
  • It checks the returned draft matches what you asked for: one question, exact text, same Audiences, and startReadiness.ready true.

Then it computes an approval hash over the whole reviewed snapshot. That hash is the thing you carry to the Run node.

The question itself gets assembled for you: context, then one reference line per creative (Label: attached creative 1), then your question. The whole string must fit 2,000 characters.

Inputs and outputs

creatives - a MINDS_CREATIVES. Comes from Image Candidates, Video Candidate, Hosted Assets, or a Combine.

audience_ids - comma-separated UUIDs. question - defaults to "Which creative do you prefer?", which is fine but says nothing; write a real one. context - the framing, and the cheapest place to make the answer useful ("mobile feed placement, 1:1 crop, brand tone is dry").

study_locale - one of nine: ar, de, en, es, fr, ja, ko, tr, zh. This is the study's language, not a UI preference.

request_id - a UUID, and it's required in practice. The receipt system is keyed on it, so a blank string fails with "Use a valid UUID for each Audience and request ID."

draft - a MINDS_CREATIVE_DRAFT that only Minds · Run Reviewed Test accepts. review_json - the human-readable review, and where the approval string lives.

Because it's an output node, the review also renders in the node's text display. Read it there. The creativeLabels array in that JSON is the cheapest sanity check you'll ever get: if creative 2 is labelled what creative 1 should be, you've just caught it for free.

Install

Manager → search comfyui-minds (publisher minds), or:

cd ComfyUI/custom_nodes
git clone https://github.com/minds-ai-co/ComfyUI-Minds
cd ComfyUI-Minds && pip install -r requirements.txt

Restart with MINDS_API_KEY in the server environment. requests and Pillow; no models, nothing on your GPU. Do note this node does upload your creatives - that's the preparing, and it's why it needs a key and a network.

Common issues

"Use a valid UUID for each Audience and request ID." Either a name where an ID belongs, or a blank request_id. Both are UUID checks.

"The creatives, question or Audiences changed. Use a new request ID and review again." You edited inputs while reusing the receipt's ID. That's the safety working. Give it a fresh UUID.

"This draft needs further review in Minds before it can run." The draft came back with startReadiness not ready, missing inputs, or a method that needs explicit opt-in - usually an Audience that isn't ready. Check readiness, fix in Minds, prepare again.

"Its text, creative labels and context must fit 2,000 characters." Trim context first. It's the only one that's optional.

It ran, and nothing downstream ran. Correct - the Run node won't execute without an approval that matches the draft. That's the whole design.

CategoryMinds/Research

Inputs (6)

NameTypeDefaultDescription
creativesMINDS_CREATIVES—
audience_idsSTRING—
questionSTRINGWhich creative do you prefer?—
contextSTRING—
study_localeCOMBOen9 options: ar, de, en, es, fr, ja, +3
request_idSTRING—

Outputs (2)

NameTypeDescription
draftMINDS_CREATIVE_DRAFT—
review_jsonSTRING—