openmontage-house:OpenMontage + Josh House Rules
OpenMontage core: <SKILLS_DIR>/OpenMontage (commit 9327439, 2026-10-03, AGPLv3).
Full documentation: AGENT_GUIDE.md, CLAUDE.md, skills/INDEX.md, pipeline_defs/*.yaml.
This skill only produces drafts; it does not publish. Publishing is always handled by the main bot after Josh confirms.
Decide Whether to Use OpenMontage (See Decision Table in <SKILLS_DIR>/INDEX.md)
- For narrated bilingual Reels and real footage editing → use stock-footage-reel (house format), not OpenMontage's documentary-montage. When more archival/public domain footage is needed, fetch it with
om_clips.pybelow, then add to shots.json withpick: {"source":"file", ...}. - For Vox-style / educational explainer animations → use huashu-art-motion, not OpenMontage's animated-explainer.
- For everything else (clip splitting, screen recording, dubbed localization, podcasts, reference video analysis, narrator-free montage) → use OpenMontage, overriding its defaults with the house rules below.
Environment
source <SKILLS_DIR>/OpenMontage/om-env.sh # Activate .venv and Node 22, cd into OpenMontage
python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))" # See available tools
- Installed: requirements.txt, Remotion composer (npm), piper-tts, faster-whisper, yt-dlp, youtube-transcript-api, opencv-headless, HyperFrames (npx cache 0.8.147), and CPU-only torch 2.14.1 + transformers 5.19 (no GPU packages). CLIP semantic matching is available: corpus_builder builds a material library, then clip_search's
rank_for_slotsorts footage by text description (scores >= 0.25 are usable); video_understand (CLIP mode) also works. The first run downloads the CLIP model from Hugging Face (openai/clip-vit-base-patch32); building a small library of 5 clips on CPU takes about 1 minute. corpus_builder may show "degraded" warnings because half of the material sources lack keys—this does not affect usage. - API Keys:
PEXELS_API_KEYandELEVENLABS_API_KEYare machine environment variables (only available in new shells, usebash -lcif needed). om-env.sh inherits them; they are deliberately omitted from.env. Do not print or write them to files. All other keys are empty. Do not create new accounts or pay for keys for OpenMontage without asking Josh first. - Paid generation tools (Kling, Veo, Seedance, FLUX, etc.) have no keys currently; the selector will skip them automatically. OpenMontage will quote costs before spending money and requires Josh's approval.
House Rules (Override OpenMontage Defaults; Apply to Every Video)
- Aspect: Vertical 1080x1920 (OpenMontage defaults to 16:9; specify 9:16 at startup). Under 3 minutes. Completeness over brevity.
- Narration: ElevenLabs English female voice Sarah Explains (voice_id
Nhs7eitvQWFTQBsf0yiT), modeleleven_multilingual_v2.- Preferred: Use OpenMontage's own
elevenlabs_ttstool directly (tested and working). Specifyvoice_id, do not let tts_selector auto-pick a voice or fall back to piper. Example:ElevenLabsTTS().execute({"text":..., "voice_id":"Nhs7eitvQWFTQBsf0yiT", "model_id":"eleven_multilingual_v2", "output_path":".../vo.mp3"}). Send each script once; do not resend (duplicate charges). - Fallback: If the direct API fails, use the user-Elevenlabs connector (
creative_generate_speech,generations_count: 1) to generate vo.mp3, then pass it to OpenMontage as a pre-existing voiceover. Do not use piper for final narration.
- Preferred: Use OpenMontage's own
- Subtitles: Traditional Chinese as the main subtitle + a smaller English line below (matching the narration). Use Taiwanese standard conventions, use 「」quotes, no em dashes. Subtitle bottom edge must not go below y=1490 to avoid Instagram UI.
- Intro card: B-report Vox-style cover,
<YOUR_WORKSPACE>/media-team/00-profile/covers/render.py(do not use OpenMontage's own cover/thumbnail generator). - Licensing: Record every asset in
credits.json(URL, author, license). Archive.org license is "verify per item"—you must open each item's page to confirm it's public domain or CC0/CC BY. Do not use footage from BBC, TV stations, or film studios. CC BY footage must be credited in the post description. - File: Final IG video in H.264/AAC, compressed to under 45 MB (verify size and duration with
ffprobe). - Content: Faithful to the original source; do not fabricate numbers or quotes. Credit the original author.
- Output: Final video goes to
<YOUR_WORKSPACE>/media-team/03-drafts/<topic>/. OpenMontage'sprojects/directory is only a working area.
How to Start Each Workflow
Open Claude Code inside the OpenMontage folder (it reads CLAUDE.md), or have another bot read skills/pipelines/<workflow>/executive-producer.md and follow its phases. Paste the house rules above as the first instruction.
- clip-factory: Split a long video (YouTube, live stream, podcast recording) into multiple vertical shorts. Before downloading with yt-dlp, confirm Josh has the rights to use the video.
- screen-demo: Real screen recording tutorial (screen_recorder / cap_recorder available).
- localization-dub: Translate and dub a video into another language. First generate the dub with the ElevenLabs connector, then hand it off for timing and mixing.
- podcast-repurpose: Turn a podcast audio file into highlight shorts.
- Reference video analysis: Paste a Reel / Short link, analyze its pacing, hook, and structure, then propose 2–3 original versions with cost estimates (animated-explainer, animation, cinematic, character-animation have
reference_input). Learn structure only; do not copy visuals or copy. - documentary-montage: Narrator-free or minimal-narration topic montage (Adam Curtis style). Use CLIP semantic matching to automatically select footage for each segment. For narrated Reels, use stock-footage-reel instead.
- Backlot storyboard viewer:
python -m backlot open <project-id>(local board, for observation only; failure does not affect production). Josh confirms progress back in chat.
Augmenting stock-footage-reel with Additional Footage
python3 <SKILLS_DIR>/openmontage-house/scripts/om_clips.py \
--query "1960s computer room" --query "mission control" \
--sources archive_org,nasa,loc,nara,wikimedia --n 3 --out $D/work/om_clips
Prints the thumbnail path and a pick snippet ({"source":"file",...}) that can be directly pasted into shots.json. License records are written to om_clips/om_credits.json. Review thumbnails using Read, confirm each license, then include in the video.
Available sources: pexels (has key), archive_org, wikimedia, nasa, nara, loc, coverr, pond5_pd. NASA downloads sometimes time out (images-assets.nasa.gov); failures print note:, just switch sources.
License (AGPLv3)
You may use OpenMontage as a tool to create videos and commercial posts; the output videos are not subject to AGPL restrictions. Only "modifying its code and hosting it as a web service for others" requires releasing the modified source code. Therefore, do not host a modified OpenMontage as a public service.