ComfyUI Node
Character Shot Planner
Plan one close, mid and wide candidate per requested image, then select one. Project owns the history; batch ID names one saved plan. Reserve records all candidates before image generation, including skipped options; it does not track completed images. Use preview while testing, then reserve for final generation.
Character Shot Planner
- plan
- prompts
- seeds
- shot_ids
- report
◄projectmy-character►
◄batch_idbatch-001►
◄count40►
◄character_lockThe same character as the reference images; preserve facial identity, hair and body proportions.►
◄outfit_lock►
◄sceneAn uninterrupted featureless white background and light floor, soft natural light.►
◄body_modeany►
◄selectionbalanced►
◄choices►
◄seed0►
◄pose_cooldown3►
◄expression_cooldown3►
◄camera_cooldown2►
◄operationreserve►
◄pose_categoryall►
◄expressionrandom►
◄stop_whenposes►
Category🌒 Eclipse/ Text
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| project | STRING | my-character | Name of the persistent history under output/eclipse/shot_ledgers. All batches with this project name share camera reservations. Use Reset reservations to start fresh with the same name. Changing batch_id or reloading prompt files does not clear history. The report shows the ledger file for manual backup/removal while the queue is stopped. |
| batch_id | STRING | batch-001 | Names one plan within this project. Same ID and settings replay saved shots, useful when generation fails. Changed settings automatically use -2, -3, etc.; report shows the actual ID. A new ID requests fresh shots from the remaining pool, not a history reset. Pool-file edits need a new ID to take effect. |
| count | INT | 401–100 | Maximum selected prompts in this batch, not completed images. Each shot has three candidates recorded in reserve mode. Coverage completion can return fewer prompts. Reserve stops automatic queueing with a yellow popup; preview shows an informational capacity notice and continues. Try 3 while testing; this is not the project's lifetime limit. |
| character_lock | STRING | The same character as the reference images; preserve facial identity, hair and body proportions. | Identity and reference-role instructions included in every shot. Connect Character Reference Pack's character_lock here. Keep fixed pose/framing instructions out of this field so the planner can vary them. Changing it creates a new batch variant in reserve mode. |
| outfit_lock | STRING | Optional wardrobe instructions added to every shot. Leave empty if the connected character_lock already specifies the outfit. Keep this consistent with clothing references and the approved anchor. | |
| scene | STRING | An uninterrupted featureless white background and light floor, soft natural light. | Background and lighting for dataset shots. Applied to every planned prompt; camera, pose and expression come from the shot pools. This does not change the separate character-review scene. |
| body_mode | COMBO | any | Posture filter: any mixes seated, standing and lying poses. Seated includes benches, stools, floor cushions and supported reclining; lying keeps the body horizontal on a support. Standing + sports includes boxing and martial arts. Close portraits retain posture but cannot show full-body actions. Filters need compatible poses in your editable files; high cooldowns can exhaust small pools. |
| selection | COMBO | balanced | Which candidate becomes the output image prompt. Balanced favors the least-used distance across project history; close/mid/wide always select that distance. All three candidates are still planned and reserved. Nonempty choices overrides this setting. |
| choices | STRING | Optional manual selection, one close/mid/wide per requested shot, separated by commas or newlines. Example for count=3: close, wide, mid. Overrides selection. Choices affect later cooldowns, so preview again after editing. | |
| seed | INT | 00–18446744073709550000 | Controls new candidate draws and the per-shot generation seeds. A connected seed overrides this widget. Keep it fixed for retries; changing it requests a new batch variant in reserve mode. It does not reset reservations or control reference/anchor sampler seeds. |
| pose_cooldown | INT | 30–20 | Number of previous selected shots whose poses cannot be offered again, including earlier batches. 0 allows immediate reuse between sets; the three candidates within a set still have distinct poses. Lower this if a restricted pose pool runs out. |
| expression_cooldown | INT | 30–20 | Applies only to expression=random: number of previous selected shots whose expressions cannot be offered again, including earlier batches. 0 allows immediate reuse between sets; random candidates within a set still have distinct expressions. Fixed expressions and off ignore this cooldown. |
| camera_cooldown | INT | 20–20 | Number of previous selected shots whose camera families are excluded, including earlier batches. In cameras stop mode, exact combinations never repeat even at 0. Other stop modes cycle depleted camera pools and relax this cooldown if necessary, with a warning, so cameras do not end pose/expression coverage. |
| operation | COMBO | reserve | preview: plan from empty history using current files, ignoring all saved reservations and batches; no history is saved and downstream generation remains enabled. reserve: save all three candidates per shot before generation, including skipped ones. Later generation failure does not undo reservations; retry unchanged settings to replay. Planning failure saves none of the batch. Existing batches replay only in reserve mode. Preview and reserve match when project history is empty. |
| pose_categoryopt | COMBO | all | Activity filter, combined with body_mode. all includes everyday, sports and sexy. Everyday selects casual poses; sports selects solo boxing, martial arts, warm-ups and exercise; sexy selects suggestive solo glamour poses for standing, seated and lying subjects. Does not change wardrobe, facial expression or location. Edit category on poses in prompts/shot_planner/poses.json; omitted category means everyday. Existing reserved batches replay their saved prompts. |
| expressionopt | COMBO | random | random draws distinct expressions with cooldowns. A specific ID applies that expression to every candidate and ignores expression_cooldown. off omits planner expression wording while preserving your prompt text. Edit expressions.json and click Reload planner files to refresh choices. Removed IDs fail for new batches; reserved batches replay their snapshots. |
| stop_whenopt | COMBO | poses | poses (default): finish when every compatible pose has appeared in a selected output. expressions: cover each selected expression; fixed/off has one variant. poses_and_expressions: finish both lists, cycling the shorter one. cameras: legacy unique-camera limit. never: keep cycling. Camera pools cycle in all modes except cameras; camera cooldown may relax to continue. Reserve coverage uses project history; preview starts empty. Both use current body/category/output-distance filters. The final coverage batch can be shorter than count. Reserve shows a yellow popup and stops automatic queueing; preview shows capacity information. Reserved batches replay unchanged in reserve mode. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| plan | ECLIPSE_SHOT_PLAN | Complete plan with all three candidates, selected choices and saved settings. Connect to Shot Plan Slice to split generation into ranges. This contains reservations, not image-completion records. |
| prompts | STRING | One selected positive prompt per shot, in order. Connect to the dataset text encoder. Keep aligned with seeds and shot_ids. |
| seeds | INT | One generation seed per selected prompt. Connect to the dataset sampler's seed input; do not reuse the planner seed as a substitute. |
| shot_ids | STRING | Stable IDs for selected shots: resolved batch ID / shot number / distance. Aligned with prompts and seeds; useful for filenames or captions. |
| report | STRING | Readable plan showing the resolved batch ID, ledger path and all candidates; * marks the selected candidate. Connect to Show Any to inspect it before generating images. |