Initial release — OpenMontage: the first open-source agentic video production system

11 production pipelines, 47 tools, 124 agent skills.
Supports cloud APIs (fal.ai, OpenAI, ElevenLabs, Suno, HeyGen, Runway) and
free local providers (diffusers, Piper TTS, WAN 2.1, Hunyuan, CogVideo).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
calesthio
2026-03-29 08:25:17 -07:00
commit a3e735cc7a
1147 changed files with 240221 additions and 0 deletions
@@ -0,0 +1,78 @@
# Asset Director - Cinematic Pipeline
## When To Use
This stage prepares the usable media for the final cinematic edit: source selects, title-card assets, optional support inserts, music, ambience, and subtitle assets when needed.
## Prerequisites
| Layer | Resource | Purpose |
|-------|----------|---------|
| Schema | `schemas/artifacts/asset_manifest.schema.json` | Artifact validation |
| Prior artifacts | `state.artifacts["scene_plan"]["scene_plan"]`, `state.artifacts["script"]["script"]`, `state.artifacts["idea"]["brief"]` | Scene intent and beat plan |
| Tools | `subtitle_gen`, `audio_enhance`, `image_selector`, `video_selector`, `music_gen` — selectors auto-discover all available providers from the registry | Optional support asset creation |
| Playbook | Active style playbook | Brand and typography consistency |
## Process
### 1. Prioritize Source Selects
Start with:
- source footage selects,
- stills,
- title-card backgrounds,
- any approved provided music or ambient beds.
These are the primary materials. Everything else is support.
### 1b. Sample Preview (Prevents Wasted Spend)
Before batch-generating support assets, produce one sample of each expensive generated type and show the user:
1. **Generated insert sample** (if using `image_selector` or `video_selector`): Generate one representative visual. Confirm it complements the source footage before batching.
2. **Music sample** (if using `music_gen`): Generate a short clip. Confirm mood and energy match the beat plan.
If rejected, adjust parameters and retry (max 3 iterations). Do not batch until approved.
### 2. Generate Support Assets Only Where Needed
Optional generated assets should fill clear gaps:
- missing transitional b-roll,
- concept-led inserts,
- texture or atmosphere cards,
- simple textural motion backgrounds.
### 3. Prepare A Real Audio Plan
Store:
- chosen music track or prompt,
- ambience layers,
- impact or transition sounds,
- subtitle assets if dialogue or narration is present.
### 4. Use Metadata For Rights And Intent
Recommended metadata keys:
- `source_selects`
- `music_plan`
- `ambience_plan`
- `title_assets`
- `generated_support_assets`
- `rights_notes`
### 5. Quality Gate
- source and support assets are clearly distinguished,
- generated inserts are limited and purposeful,
- audio plan matches the beat map,
- every referenced file exists.
## Common Pitfalls
- Generating extra shots before proving the source edit works.
- Treating music as a single loop instead of a beat-aware element.
- Forgetting rights or provenance notes for supplied assets.
@@ -0,0 +1,53 @@
# Compose Director - Cinematic Pipeline
## When To Use
Render the cinematic piece with careful attention to grade, audio dynamics, and frame treatment. This is not a generic export step.
## Prerequisites
| Layer | Resource | Purpose |
|-------|----------|---------|
| Schema | `schemas/artifacts/render_report.schema.json` | Artifact validation |
| Prior artifacts | `state.artifacts["edit"]["edit_decisions"]`, `state.artifacts["assets"]["asset_manifest"]` | Edit plan and media assets |
| Tools | `video_compose`, `audio_mixer`, `video_stitch`, `video_trimmer`, `color_grade`, `audio_enhance` | Render and finishing |
| Playbook | Active style playbook | Finish consistency |
## Process
### 1. Use Frame Treatment Deliberately
Only use letterbox, 24fps intent, or heavy grading if they help the piece. Do not apply them because the pipeline name says cinematic.
### 2. Preserve Audio Dynamics
The mix should allow:
- quiet moments,
- impact moments,
- clear dialogue or narration,
- controlled music swells.
### 3. Verify The Final Mood
Check:
- opening frame,
- reveal beat,
- final landing,
- subtitle readability where relevant.
### 4. Use Render Metadata
Recommended metadata keys:
- `frame_treatment`
- `grade_profile`
- `mix_notes`
- `variant_outputs`
## Common Pitfalls
- Flattening the audio so the piece loses dynamics.
- Applying letterbox to footage that needs every pixel.
- Letting grading or sharpening damage faces or text.
@@ -0,0 +1,56 @@
# Edit Director - Cinematic Pipeline
## When To Use
This stage turns the beat map into a paced cinematic timeline. Rhythm and restraint matter more than effect count.
## Prerequisites
| Layer | Resource | Purpose |
|-------|----------|---------|
| Schema | `schemas/artifacts/edit_decisions.schema.json` | Artifact validation |
| Prior artifacts | `state.artifacts["assets"]["asset_manifest"]`, `state.artifacts["scene_plan"]["scene_plan"]`, `state.artifacts["script"]["script"]` | Assets, hero frames, beat map |
| Playbook | Active style playbook | Typography and transition consistency |
## Process
### 1. Cut By Emotion First
Cuts should follow:
- emotional emphasis,
- reveal timing,
- musical turns,
- visual contrast.
Do not optimize only for information density.
### 2. Protect Strong Moments
If a look, line, or gesture is doing the work, let it live. Do not over-cover it with extra inserts.
### 3. Use Sound To Push The Edit
Ambience, impacts, dropouts, and music changes should help create momentum between scenes.
### 4. Use Metadata For Timing Logic
Recommended metadata keys:
- `beat_timing`
- `audio_turns`
- `title_card_windows`
- `reframe_notes`
### 5. Quality Gate
- the emotional arc is intact,
- reveals land clearly,
- title cards are sparse and timed with intent,
- strong moments are not buried under coverage.
## Common Pitfalls
- Overcutting emotional material.
- Using speed ramps or flashy transitions by default.
- Letting title cards replace editorial clarity.
@@ -0,0 +1,147 @@
# Executive Producer — Cinematic Pipeline
## When to Use
You are the **Executive Producer (EP)** for a cinematic video (trailers, brand films, montages, short dramatic edits). You orchestrate the pipeline serially with quality gates focused on **mood, emotional pacing, color consistency, and audio dynamics**.
**No pre-production stages.** Source footage or direction exists. The EP adds cross-stage gates that enforce emotional arc integrity and cinematic polish.
## Prerequisites
| Layer | Resource | Purpose |
|-------|----------|---------|
| Pipeline | `pipeline_defs/cinematic.yaml` | Stage definitions |
| Skills | All 7 director skills + `meta/reviewer` | Stage execution |
| Schemas | All artifact schemas | Validation |
| Playbook | Active style playbook | Quality constraints |
## Cumulative State
```
EP_STATE:
pipeline: cinematic
playbook: <selected>
target_duration_seconds: <from brief>
budget_total_usd: <configured>
budget_spent_usd: 0.0
# Cinematic-specific
emotional_arc: null # from brief: build → reveal → landing
color_grade_target: null # mood-driven color palette
hero_moments: [] # key reveal/climax frames
music_beat_map: null # audio-driven pacing reference
artifacts:
idea: null
script: null
scene_plan: null
assets: null
edit: null
compose: null
publish: null
revision_counts: {}
issues_log: []
```
## Execution Protocol
Same as standard EP: Initialize → Execute stages serially (idea → script → scene_plan → assets → edit → compose → publish) → Final QA.
Each stage: PREPARE → SPAWN DIRECTOR → REVIEW → GATE DECISION (pass / revise / send-back).
## EP-Specific Cross-Stage Checks
### After IDEA stage:
```
CHECK: Emotional arc definition
- Is the emotional arc explicit (build → reveal → landing)?
- Is source mode clear (supplied footage vs generated inserts)?
- Is the target mood defined and achievable?
```
### After SCRIPT stage:
```
CHECK: Beat escalation
- Does the beat map escalate cleanly toward the reveal?
- Are dialogue/title cards sparse and purposeful?
- Is the landing beat distinct from the build?
CHECK: Duration fit
- Word count aligns with cinematic pacing (slower than explainer — ~120 WPM)
```
### After SCENE_PLAN stage:
```
CHECK: Hero moment definition
- Are hero frames (climax, reveal) explicitly identified?
- Is source footage prioritized over generated inserts?
- Do transitions support mood (not distract)?
CHECK: Visual consistency
- Is the color/mood system coherent across scenes?
- Are aspect ratio choices consistent (letterbox if used)?
```
### After ASSETS stage:
```
CHECK: Music/ambience alignment
- Does the music beat map align with the script beat map?
- Are generated inserts limited and justified?
- Budget gate: 90% threshold warning
CHECK: Source selects quality
- Are source clips properly identified and accessible?
- Do support assets (generated or stock) match source quality level?
```
### After EDIT stage:
```
CHECK: Emotional pacing
- Strong moments are not overcut
- Audio cues reinforce story beats
- Title-card timing is restrained
CHECK: Timeline completeness
- Full runtime covered, no gaps
- All asset references valid
```
### After COMPOSE stage:
```
CHECK: Output validation
- ffprobe: duration, resolution, codec
- Color grade applied and consistent
- Audio dynamics controlled — dialogue intelligible, music balanced
- Letterbox or frame treatment improves (not harms) the output
```
## Quality Gates Summary
| Gate | After Stage | What's Checked | Fail Action |
|------|-------------|---------------|-------------|
| G1 | idea | Emotional arc, source mode | Revise |
| G2 | script | Beat escalation, duration | Revise |
| G3 | scene_plan | Hero moments, visual consistency | Revise |
| G4 | assets | Music alignment, source quality, budget | Revise |
| G5 | edit | Emotional pacing, timeline | Revise |
| G6 | compose | Output probe, color grade, audio dynamics | Revise or send-back |
| G7 | publish | Metadata, poster frame | Revise |
| FINAL | all | Mood coherence, audio, visual polish | Send-back |
## Execution Limits
| Limit | Value |
|-------|-------|
| Max revisions per stage | 3 |
| Max send-backs per stage pair | 1 |
| Max total send-backs | 3 |
| Max total budget | Configurable (default $2) |
| Max total wall-time | 12 minutes |
## Common Pitfalls
- **Over-grading**: Color grade should enhance mood, not make footage look artificial.
- **Overuse of generated inserts**: Source footage should be primary. Generated content fills gaps, not replaces.
- **Ignoring audio dynamics**: Cinematic videos live and die by their audio. Music/dialogue balance is critical.
- **Rushing the reveal**: The climax moment needs breathing room. Don't let pacing compress it.
@@ -0,0 +1,79 @@
# Idea Director - Cinematic Pipeline
## When To Use
Use this pipeline for trailers, brand films, dramatic montages, or mood-led short videos where rhythm, atmosphere, and emotional escalation matter more than direct explanation.
Do not use this pipeline just because the user said "make it look cinematic." If the project is really a screen demo, explainer, or repurposing job, route it there instead.
## Reference Inputs
- `docs/cinematic-best-practices.md`
- `skills/creative/cinematic.md`
- `skills/creative/storytelling.md`
## Process
### 1. Classify The Source Reality
Capture the source mode:
- `footage_only`
- `footage_plus_stills`
- `still_led`
- `generated_support`
- `mixed_montage`
Do not assume stock, generated b-roll, or music exists unless the user has provided it or the environment can actually make it.
### 2. Define The Emotional Arc
Choose the arc in plain language:
- tension -> reveal
- wonder -> scale
- intimacy -> payoff
- urgency -> resolution
- mystery -> CTA
The brief should tell later stages what the video is trying to make the viewer feel, not just what it is about.
### 3. Pick The Delivery Shape
Common output shapes:
- `teaser`
- `trailer`
- `hero_brand_film`
- `mood_cut`
- `social_cutdown`
Store longer planning detail in `brief.metadata`.
Recommended metadata keys:
- `source_mode`
- `delivery_shape`
- `emotional_arc`
- `anchor_assets`
- `music_strategy`
- `generated_support_level`
- `aspect_ratio_plan`
- `rights_constraints`
### 4. Reality Check The Treatment
If the user has weak source media and no generation path, say so. A cinematic result still needs enough visual or audio material to carry mood.
### 5. Quality Gate
- the source truth is explicit,
- the emotional arc is specific,
- the output shape fits the available assets,
- the treatment is cinematic for a reason, not by label only.
## Common Pitfalls
- Calling something cinematic when it is really just a normal edit with black bars.
- Assuming generated inserts are available without checking tools.
- Planning a trailer shape with no reveal or payoff.
@@ -0,0 +1,56 @@
# Publish Director - Cinematic Pipeline
## When To Use
Package the cinematic piece and any cutdowns so the hero version stays clear and the distribution intent is obvious.
## Prerequisites
| Layer | Resource | Purpose |
|-------|----------|---------|
| Schema | `schemas/artifacts/publish_log.schema.json` | Artifact validation |
| Prior artifacts | `state.artifacts["compose"]["render_report"]`, `state.artifacts["idea"]["brief"]`, `state.artifacts["script"]["script"]` | Final outputs and beat map |
| Playbook | Active style playbook | Tone and naming consistency |
## Process
### 1. Separate Hero And Derivatives
Typical deliverables:
- hero trailer or brand film,
- teaser cut,
- social cutdown,
- poster-frame or thumbnail concept.
### 2. Match Metadata To Tone
Packaging should reflect the actual mood:
- dramatic,
- premium,
- mysterious,
- reflective,
- urgent.
### 3. Preserve Editorial Truth
Store in `publish_log.metadata`:
- `hero_output`
- `derivative_outputs`
- `poster_frame_notes`
- `distribution_notes`
### 4. Quality Gate
- hero export is clearly identified,
- derivative exports are labeled by purpose,
- metadata fits the tone,
- the package is usable without manual cleanup.
## Common Pitfalls
- Mixing teaser and hero outputs without clear naming.
- Writing generic metadata that ignores the mood.
- Treating all cutdowns as interchangeable.
@@ -0,0 +1,63 @@
# Scene Director - Cinematic Pipeline
## When To Use
You are deciding how each cinematic beat will look and transition. This is where mood becomes a visual plan.
## Prerequisites
| Layer | Resource | Purpose |
|-------|----------|---------|
| Schema | `schemas/artifacts/scene_plan.schema.json` | Artifact validation |
| Prior artifacts | `state.artifacts["script"]["script"]`, `state.artifacts["idea"]["brief"]` | Beat map and source truth |
| Tools | `frame_sampler`, `scene_detect` | Source inspection and reframing checks |
| Playbook | Active style playbook | Color and typography consistency |
## Process
### 1. Make Hero Frames Explicit
Every cinematic piece needs a few memorable frames. Define them directly:
- opening image,
- reveal image,
- final image,
- any title-card hero moments.
### 2. Keep Source-Led Scenes Primary
If source footage exists, let it carry the piece. Generated inserts or text cards should support transitions, emphasis, or missing coverage, not dominate the timeline.
### 3. Limit Transition Vocabulary
Choose a small set:
- hard cut,
- fade to black,
- slow dissolve,
- restrained push or punch-in.
Too many transition types kill the mood.
### 4. Use Metadata For Visual Rules
Recommended metadata keys:
- `hero_frames`
- `transition_rules`
- `aspect_ratio_rules`
- `title_card_rules`
- `support_insert_rules`
### 5. Quality Gate
- every beat has a scene treatment,
- hero frames are identifiable,
- support inserts are justified,
- the visual language stays consistent across the piece.
## Common Pitfalls
- Using title cards as filler.
- Treating generated inserts like the primary story without saying so.
- Planning flashy transitions for every beat.
@@ -0,0 +1,69 @@
# Script Director - Cinematic Pipeline
## When To Use
This stage builds the beat map, selected lines, title-card copy, and reveal structure for the cinematic piece. You are shaping rhythm, not writing a dense explainer.
## Prerequisites
| Layer | Resource | Purpose |
|-------|----------|---------|
| Schema | `schemas/artifacts/script.schema.json` | Artifact validation |
| Prior artifact | `state.artifacts["idea"]["brief"]` | Emotional arc and source truth |
| Tools | `transcriber`, `scene_detect` | Optional dialogue mining and source review |
## Process
### 1. Build A Beat Map First
Use a simple structure:
- hook,
- escalation,
- reveal,
- landing.
If the piece is longer, add one midpoint turn. Do not let it become essay-shaped.
### 2. Use Dialogue Sparingly
If source speech exists, use `transcriber` to find:
- strong standalone lines,
- emotional phrases,
- concise declarations,
- reveal phrases.
If there is no useful dialogue, keep the script title-led or narration-led and say so in metadata.
### 3. Keep Title Cards Short
Title-card copy should feel trailer-like:
- fewer words,
- more contrast,
- more whitespace,
- more timing precision.
### 4. Store Beat Truth In Metadata
Recommended metadata keys:
- `beat_map`
- `dialogue_selects`
- `title_card_copy`
- `music_turns`
- `silence_windows`
### 5. Quality Gate
- the beat map escalates cleanly,
- dialogue and title cards do not explain the same thing twice,
- the reveal lands distinctly,
- the landing gives the viewer a final feeling or action.
## Common Pitfalls
- Writing full explanatory paragraphs instead of beats.
- Using too many title cards.
- Revealing the best moment too early.