Studio Selection Set
Mark the keepers, get a CSV out
- selection_json
- selection_manifest_json
- frames_csv
- selection_summary
- selection_count
Reviewing a batch means deciding what survives: which frames are keeps, which need work, which are dead. MKRStudioSelectionSet is where you record those decisions, and it's the rare review node that accepts input like a human actually talks. The default text box spells it out: 12:hero|best lighting, 14-15:select, 18:revise|hair needs cleanup. One line per frame range, a status after the colon, an optional note after a pipe. That's the whole language.
The mechanism is a tiny parser: split the text into lines, read frame:status|note for each, apply a default_status to any frame not explicitly marked, optionally sort the output, and emit the result as structured JSON plus a CSV. It turns a note you'd write on a printout into data the rest of the Studio pipeline can consume.
The inputs
- marked_frames - the range lines. Formats:
12:hero,14-15:select,18:revise|note. Frame ranges, statuses, and notes in one string. This is the field you'll live in. - default_status -
SELECT,APPROVE,HERO,HOLD,REVISE, orKILL. Applied to every frame you didn't explicitly mark, so an unmarked frame is a "SELECT" unless you say otherwise. - sort_output - sort the result by frame index (default true). Keep it on unless you're tracking review order.
- Optional: base_selection_json (merge with a prior selection), delivery_plan_json (from
MKRStudioDeliveryPlan, for context), reviewer and round_label (stamp who and which round).
What comes out
- selection_json - the full structured selection.
- selection_manifest_json - the version other Studio nodes expect; feed it into
MKRStudioDeliverySheet,MKRStudioReviewNotes, andMKRStudioContactSheet. - frames_csv - the same data as CSV, for spreadsheets and cut lists.
- selection_summary and selection_count (INT) - the count is handy for a "3 of 40 selected" line downstream.
Installing it
Part of criskb/MKRShift_Nodes from Cris K B. ComfyUI Manager search "MKRShift_Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart. No pip requirements, no models.
The traps
Statuses are case-sensitive and the parser expects them after the colon - 12:HERO works, 12:hero may not be what downstream expects, so stick to the listed enum values. Ranges are inclusive (14-15 covers both frames), and overlapping lines can double-mark a frame, so keep the text tidy. It's a text-format node: no fancy UI, no thumbnails. That's fine - its job is to turn your margin notes into selection_manifest_json that makes the whole Studio review pipeline speak one language.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| marked_frames | STRING | 12:hero|best lighting 14-15:select 18:revise|hair needs cleanup | — |
| default_status | COMBO | SELECT | 6 options: SELECT, APPROVE, HERO, HOLD, REVISE, KILL |
| sort_output | BOOLEAN | true | — |
| base_selection_jsonopt | STRING | — | |
| delivery_plan_jsonopt | STRING | — | |
| revieweropt | STRING | — | |
| round_labelopt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| selection_json | STRING | — |
| selection_manifest_json | STRING | — |
| frames_csv | STRING | — |
| selection_summary | STRING | — |
| selection_count | INT | — |