openmontage-house: OpenMontage + Reglas Propias de Josh
OpenMontage original: <SKILLS_DIR>/OpenMontage (commit 9327439, 2026-10-03, AGPLv3).
Documentación completa del original: AGENT_GUIDE.md, CLAUDE.md, skills/INDEX.md, pipeline_defs/*.yaml.
Esta skill solo hace bocetos, no publica. La publicación la gestiona el bot principal tras la confirmación de Josh.
Decide primero si usar OpenMontage (consulta la tabla de decisión en <SKILLS_DIR>/INDEX.md)
- Reels bilingües con locución, material real → usa stock-footage-reel (formato propio), no el documentary-montage de OpenMontage. Si necesitas más material antiguo o de dominio público, usa el script
om_clips.pyde abajo y luego añádelo conpick: {"source":"file", ...}en shots.json. - Animaciones explicativas estilo Vox → usa huashu-art-motion, no el animated-explainer de OpenMontage.
- Otros casos (corte de vídeos, grabación de pantalla, traducción y doblaje, podcast, análisis de vídeos de referencia, montaje documental sin voz) → usa OpenMontage, sobrescribiendo sus valores por defecto con las reglas propias de abajo.
Entorno
source <SKILLS_DIR>/OpenMontage/om-env.sh # Activa .venv y Node 22, y cd a OpenMontage
python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))" # Muestra qué herramientas están disponibles
- Instalado: requirements.txt, Remotion composer (npm), piper-tts, faster-whisper, yt-dlp, youtube-transcript-api, opencv-headless, HyperFrames (npx cached 0.8.147), y CPU-torch 2.14.1 + transformers 5.19 (sin paquetes GPU). CLIP para emparejamiento semántico disponible: corpus_builder construye biblioteca de material, luego clip_search con
rank_for_slotordena material por descripción textual (puntuación >=0.25 usable); también funciona video_understand (modo CLIP). La primera vez descarga el modelo CLIP de Hugging Face (openai/clip-vit-base-patch32), tarda ~1 minuto en CPU para una biblioteca pequeña de 5 clips. corpus_builder muestra "degraded" solo porque la mitad de las fuentes de material no tienen clave, no afecta al uso. - Claves API:
PEXELS_API_KEY,ELEVENLABS_API_KEYson variables de entorno de la máquina (solo disponibles en un shell nuevo; usabash -lcsi es necesario). om-env.sh las hereda, deliberadamente no escritas en .env. No las imprimas ni las escribas en archivos. El resto de claves vacías. No solicites nuevas cuentas o claves de pago para OpenMontage sin preguntar primero a Josh. - Generación de pago (Kling, Veo, Seedance, FLUX, etc.) sin claves, el selector las omitirá automáticamente. OpenMontage cotizará antes de gastar dinero y necesitará la aprobación de Josh.
Reglas propias (sobrescriben los valores por defecto de OpenMontage, aplicar a cada vídeo)
- Formato: vertical 1080×1920 (la mayoría de valores por defecto de OpenMontage son 16:9; especificar 9:16 al comenzar). Duración ≤3 minutos. Priorizar integridad sobre concisión.
- Voz en off: ElevenLabs voz femenina inglesa Sarah Explains (voice_id
Nhs7eitvQWFTQBsf0yiT), modeloeleven_multilingual_v2.- Opción principal: usar directamente la herramienta
elevenlabs_ttsde OpenMontage (probada y funcional). Especificarvoice_id, no permitir que tts_selector elija automáticamente ni que caiga en piper. Ejemplo:ElevenLabsTTS().execute({"text":..., "voice_id":"Nhs7eitvQWFTQBsf0yiT", "model_id":"eleven_multilingual_v2", "output_path":".../vo.mp3"}). Enviar un solo lote de texto a la vez (no repetir para evitar cargos duplicados). - Alternativa: si falla la API directa, usar el conector user-Elevenlabs (
creative_generate_speech,generations_count: 1) para generar vo.mp3, luego pasarlo como voz en off ya lista a OpenMontage. No usar piper como voz oficial.
- Opción principal: usar directamente la herramienta
- Subtítulos: línea principal en chino tradicional + línea más pequeña debajo en inglés (correspondiente a la voz). Usar comillas «», no guiones largos. El borde inferior del subtítulo no debe estar por debajo de y=1490, evitando la interfaz de IG.
- Portada: plantilla estilo Vox de B recortes,
<YOUR_WORKSPACE>/media-team/00-profile/covers/render.py(no usar la portada/miniatura por defecto de OpenMontage). - Licencias: registrar cada material en
credits.json(URL, autor, licencia). Para Archive.org, la licencia es "verificar por elemento", abrir cada archivo para confirmar que es dominio público o CC0/CC BY; no usar material de BBC, cadenas de TV o productoras cinematográficas. Para CC BY, mencionar al autor en la descripción de la publicación. - Archivo final: IG en H.264/AAC, comprimido a menos de 45 MB (verificar tamaño y duración con
ffprobe). - Contenido: fiel al original, no inventar cifras ni citas, atribuir al autor original.
- Salida: producto final en
<YOUR_WORKSPACE>/media-team/03-drafts/<tema>/; la carpetaprojects/de OpenMontage es solo zona de trabajo.
Cómo iniciar cada flujo
En la carpeta de OpenMontage, abre Claude Code (leerá CLAUDE.md) u otro bot que lea directamente skills/pipelines/<flujo>/executive-producer.md y siga las fases. Al comenzar, pega las reglas propias de arriba.
- clip-factory: cortar vídeos largos (YouTube, directos, grabaciones de podcast) en múltiples clips verticales. Antes de descargar el vídeo con yt-dlp, confirmar que Josh tiene permiso para usarlo.
- screen-demo: grabaciones reales de pantalla para tutoriales (screen_recorder/cap_recorder disponibles).
- localization-dub: traducir y doblar vídeos a otro idioma. Generar la voz primero con el conector ElevenLabs, luego pasar a OpenMontage para sincronización y mezcla.
- podcast-repurpose: convertir archivos de audio de podcast en vídeos cortos destacados.
- Análisis de vídeos de referencia: pegar un Reel/Short para que analice su ritmo, apertura y estructura, proponiendo 2-3 versiones originales con estimación de costos (animated-explainer, animation, cinematic, character-animation tienen reference_input). Solo aprender la estructura, no copiar imágenes ni texto.
- documentary-montage: montajes documentales sin voz o con poca locución (estilo Adam Curtis), usando CLIP para emparejar material semánticamente a cada segmento. Para reels con locución, seguir usando stock-footage-reel.
- Storyboard Backlot:
python -m backlot open <project-id>(tablero local, solo para observación; si falla no afecta a la producción). Solo para ver progreso y confirmar hitos; la confirmación final de Josh se hace en el chat.
Añadir material a stock-footage-reel
python3 <SKILLS_DIR>/openmontage-house/scripts/om_clips.py \
--query "sala de ordenadores años 60" --query "control de misión" \
--sources archive_org,nasa,loc,nara,wikimedia --n 3 --out $D/work/om_clips
Imprime la ruta de la miniatura de cada clip y el pick que se puede pegar directamente en shots.json ({"source":"file",...}). El registro de licencias se guarda en om_clips/om_credits.json. Usa la función Read para ver las miniaturas y seleccionar; confirma la licencia de cada clip antes de incluirlo en el vídeo.
Fuentes disponibles: pexels (con clave), archive_org, wikimedia, nasa, nara, loc, coverr, pond5_pd. A veces las descargas de NASA (images-assets.nasa.gov) agotan el tiempo de espera; si falla imprime note:, cambia de fuente.
Licencia (AGPLv3)
Puedes usar OpenMontage como herramienta para hacer vídeos y publicaciones comerciales; los vídeos producidos no están sujetos a AGPL. Solo si modificas su código y lo ofreces como servicio web a terceros deberás publicar el código fuente. Por lo tanto, no montes un OpenMontage modificado como servicio externo.