# Análisis: OpenMontage (calesthio/OpenMontage)

Fuente: https://github.com/calesthio/OpenMontage · clonado y leído el 2026-09-09.

## Qué es

Un "estudio de producción de video" para agentes de código (Claude Code, Cursor, Copilot, Windsurf, Codex). No tiene orquestador propio: el asistente de código es el orquestador. Lee un manifiesto YAML por pipeline, un skill Markdown por etapa (director), llama herramientas Python, se autorrevisa con un skill de reviewer, guarda checkpoints JSON y pide aprobación humana en cada decisión creativa. Renderiza con Remotion, HyperFrames o FFmpeg.

## Cifras verificadas (API de GitHub y repo clonado)

| Dato | Valor |
|---|---|
| Estrellas / forks | 56.811 / 7.157 |
| Creado / último push | 29-mar-2026 / 6-sep-2026 |
| Licencia | AGPL-3.0 |
| Herramientas (archivos .py en tools/) | 167 |
| Skills propios (skills/*.md) | 157 |
| Knowledge packs externos (.agents/skills) | 577 |
| Pipelines | 12 (explainer, animation, avatar-spokesperson, cinematic, clip-factory, documentary-montage, hybrid, localization-dub, podcast-repurpose, screen-demo, talking-head, character-animation) |
| Tests | 109 archivos |
| Issues abiertos / PRs abiertos | 317 / 221 |
| Colaboradores listados | 50 |
| Tamaño del clon sin .git | 91 MB |

Estabilidad declarada en los manifiestos: `hybrid` es "production"; `podcast-repurpose` y `clip-factory` son "beta".

## Arquitectura en tres capas

1. `tools/` + `pipeline_defs/`: qué existe (herramientas ejecutables y orquestación).
2. `skills/`: cómo quiere OpenMontage que se use (directores por etapa, reviewer, protocolo de checkpoint).
3. `.agents/skills/`: cómo funciona la tecnología externa (packs de conocimiento por proveedor).

Flujo de todo pipeline: research → proposal → script → scene_plan → assets → edit → compose (→ publish). Cada etapa declara artefactos de entrada y salida, herramientas permitidas, `review_focus` y `success_criteria`, con `human_approval_default: true`.

## Lo que está bien resuelto

- **Gobernanza como en ingeniería**: compuertas de aprobación que el escritor de checkpoints rechaza si faltan; validación previa al render (promesa de entrega, riesgo de "slideshow" en 6 dimensiones, gobernanza del renderer); autorrevisión posterior al render con ffprobe, extracción de cuadros en 4 posiciones y análisis de audio. Es la misma disciplina de "verificar con evidencia" que usamos en AI4M.
- **Selección de proveedor puntuada** en 7 dimensiones (ajuste a la tarea 30 %, calidad 20 %, control 15 %, fiabilidad, costo, latencia, continuidad) con registro de decisiones y de cada degradación.
- **Presupuesto**: estimar, reservar, conciliar; modos observe/warn/cap; aprobación por acción sobre 0,50 USD; tope por defecto 10 USD.
- **Backlot**: tablero local que se llena solo con los archivos que escribe el pipeline (guion como página de screenplay, hoja de contactos por escena con costo y puntaje, repetición de la corrida).
- **Arranque desde un video de referencia**: analiza transcripción, ritmo, escenas y estilo y devuelve 2 o 3 conceptos diferenciados con costo antes de producir.
- **Proveedores que ya tenemos**: HeyGen, ElevenLabs, fal (Kling, Veo), xAI, Higgsfield, Suno, Google TTS, Pexels, Pixabay, Remotion.

## Lo que hay que mirar con cuidado

- **AGPL-3.0**: para uso interno de producción no hay problema. Integrarlo dentro de AgentSquad como servicio en red obligaría a publicar el código de la parte modificada bajo AGPL. Se puede usar como herramienta externa que produce archivos, no como módulo del producto.
- **Calidad = calidad del agente**: sin orquestador de código, el resultado depende del asistente que lee 157 skills. Los skills son cortos y claros (el de edición híbrida tiene 55 líneas) pero son instrucciones, no garantías.
- **Deuda de comunidad**: 317 issues y 221 PRs abiertos con 50 colaboradores en cinco meses. Ritmo alto, revisión atrasada.
- **Peso**: 91 MB de clon, Node 18+, Python 3.10+, Remotion; el camino "gratis" (Piper, archivos abiertos, Remotion) sirve para explicativos, no para un videopodcast con avatares.
- **Los pipelines que nos interesan están en beta**: podcast-repurpose y clip-factory.

## Qué significa para nosotros

**Para el videopodcast AI4Managers.** El pipeline `hybrid` describe exactamente lo que hicimos a mano en los episodios 1 y 2: primero el corte ancla, después las capas de apoyo en este orden: subtítulos, rótulos de hablante, diagramas o tarjetas, insertos, CTA; nunca apilar capas en el mismo momento; el corte tiene que funcionar solo. Coincide con las reglas que fuimos aprendiendo (captions que no cruzan cortes, gráficos en cortes de plano, placas sobre el Meet). Dos usos concretos:
- `podcast-repurpose` y `clip-factory` para sacar shorts rankeados de los episodios 1 y 2 con transcripción WhisperX y captions palabra a palabra en Remotion (`CaptionOverlay`, `StatCard`, `SectionTitle`).
- `localization-dub` para versiones en inglés y portugués, que es un hueco que el informe de mercado de Marcus marcó.
No conviene reemplazar el pipeline propio de ffmpeg para los episodios ya editados; sí probarlo en el episodio 3 en un sandbox, con Claude Code, comparando contra nuestro resultado.

**Para AgentSquad.** El patrón "manifiesto YAML + skills de director + herramientas + checkpoints + compuertas humanas + registro de decisiones + presupuesto estimar/reservar/conciliar" es una referencia madura de lo que el producto llama substrato y compose. Vale la pena leer `lib/checkpoint.py`, `lib/delivery_promise.py`, `lib/scoring.py` y `tools/cost_tracker.py` como diseño, sin copiar código por la licencia.

**Para contenido.** 56.000 estrellas en cinco meses y "repositorio del día" en GitHub: hay demanda por "un agente de código como estudio de producción". Un episodio o short en español sobre "cómo un gerente produce video con su asistente de código" tiene poca competencia en el idioma (patrón del barrido del 8-sep).

## Comandos para probarlo

```bash
git clone https://github.com/calesthio/OpenMontage.git && cd OpenMontage && make setup
python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))"
python -m backlot open
```
