IAMCCS CinePrompt Architect
A prompt building block for people who think in shots, not sentences
- global_prompt
- local_prompts
- segment_lengths
- shotboard_timeline_json
- board_json
- markdown_preview
- report
IAMCCS Cine Prompt Architect is the "think like a director" node. Where most prompt builders hand you one big text block, this one assembles a beat structure: a global scene prompt plus per-beat local prompts, segment lengths, and a shotboard timeline JSON - all from a template and a handful of fields you fill in like a shooting script. It's aimed at LTX 2.3 / PromptRelay / Shotboard V3 workflows, which is a mouthful, but the idea is simple: a video isn't one prompt, it's several beats of prompts.
The catch, stated plainly: this is a node for people already inside the IAMCCS Cine pipeline. It produces prompts and JSON that the rest of that ecosystem (PromptRelay encoders, shotboard planners) knows how to eat. If you're not running that stack, its outputs are still readable strings - you can absolutely just steal the phrasing.
How it works
You pick a cinematic template - one of continuous_dolly, future_keyframe, image_text_image, dialogue_lipsync, reveal, environmental_transition - and each one injects its own camera + continuity rules into the assembled prompts. Then you fill the creative fields:
subject_identity,environment,lighting_weather,visual_style,camera_language,continuity_rules,shot_goal,movement_path- the standard cinematic shot vocabulary.target_reveal,performance_or_emotion,audio_or_dialogue,avoid- the beat-specific stuff.
The beat_data JSON (default three beats: opening contract, development, arrival) defines the temporal structure - each beat gets a duration, an image role, an action, and a bridge note telling the next beat how to carry over without a hard cut. beat_count and duration_seconds size the scene. The node then composes a global prompt and a pipe-joined local_prompts list, computes proportional segment lengths, and also emits a shotboard_timeline_json and board_json for downstream planners.
The outputs that matter
global_prompt- the scene-wide prompt.local_prompts- one per beat, pipe-separated.segment_lengths- comma-separated frame counts.shotboard_timeline_json/board_json- structured plans for the shotboard side.markdown_preview- a human-readable render of the whole beat structure. Genuinely useful as a "show me what I wrote" check before you commit a 400-frame generation to it.
Install
Part of IAMCCS-nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
or Manager → search IAMCCS. README floor: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8. Pure string work, no extra deps.
Where people get burned
- It's a writer, not a director of reality. Beautiful beat structure doesn't stop LTX from doing whatever LTX does. The KB's honest take on LTX prompting: detailed human-written prompts still beat auto-enhancers, but a well-planned beat JSON is only as good as the conditioning mechanism (PromptRelay/guides) that actually applies it.
beat_countvs.beat_datamismatch. If you say 3 beats but paste an 8-beat JSON, behavior depends on which one the code trusts for duration math. Keep them consistent.- Empty fields.
target_reveal,performance_or_emotion, andaudio_or_dialoguedefault to empty and get skipped cleanly - but if a template expects a reveal target and you leave it blank, you'll get a generic "reveal" beat with nothing to reveal. Fill the fields that match your template. - Zero search impressions, one-author tooling. It's a leaf node that's safe to borrow prompts from, but the full value needs the shotboard/PromptRelay stack around it.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| template | COMBO | continuous_dolly | 6 options: continuous_dolly, future_keyframe, image_text_image, dialogue_lipsync, reveal, environmental_transition |
| subject_identity | STRING | the same main subject, stable identity | — |
| environment | STRING | a cinematic physical environment with readable depth | — |
| lighting_weather | STRING | natural realistic lighting, atmospheric depth | — |
| visual_style | STRING | cinematic realism, grounded camera physics, detailed texture | — |
| camera_language | STRING | slow controlled camera movement | — |
| continuity_rules | STRING | no hard cuts, coherent spatial continuity, stable subject identity | — |
| shot_goal | STRING | direct one continuous cinematic shot with clear temporal progression | — |
| movement_path | STRING | the camera moves forward through the scene with physical parallax | — |
| target_reveal | STRING | — | |
| performance_or_emotion | STRING | — | |
| audio_or_dialogue | STRING | — | |
| avoid | STRING | hard cuts, identity drift, duplicated subjects, frozen motion, early reveal | — |
| duration_seconds | FLOAT | 9.00.1–600 | — |
| frame_rate | FLOAT | 241–120 | — |
| beat_count | INT | 31–8 | — |
| beat_data | STRING | { "beats": [ { "label": "opening_contract", "duration": 3.0, "image_role": "opening anchor", "action": "the camera establishes the subject and begins one continuous physical movement", "bridge": "carry the same camera movement into the next beat without a hard cut" }, { "label": "development", "duration": 3.0, "image_role": "motion checkpoint", "action": "the movement deepens; environment details react physically as the camera advances", "bridge": "arrive toward the next visual target only near the end of the beat" }, { "label": "arrival", "duration": 3.0, "image_role": "target keyframe", "action": "the shot arrives at the strongest visual target with coherent identity and space", "bridge": "" } ] } | Edited by the CinePrompt Architect UI. JSON with beats: label, duration, image_role, action, bridge. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| global_prompt | STRING | — |
| local_prompts | STRING | — |
| segment_lengths | STRING | — |
| shotboard_timeline_json | STRING | — |
| board_json | STRING | — |
| markdown_preview | STRING | — |
| report | STRING | — |