openmontage-house : OpenMontage + Règles maison Josh
OpenMontage – base : <SKILLS_DIR>/OpenMontage (commit 9327439, 2026-10-03, AGPLv3).
Documentation complète : AGENT_GUIDE.md, CLAUDE.md, skills/INDEX.md, pipeline_defs/*.yaml.
Ce skill ne fait que des brouillons, il ne publie rien. La publication est toujours gérée par le bot principal après validation par Josh.
Avant tout, décider si OpenMontage est adapté (voir l'arbre de décision dans <SKILLS_DIR>/INDEX.md)
- Reel bilingue avec voix-off, montage de vidéos réelles → utiliser stock-footage-reel (format maison), PAS le documentary-montage d'OpenMontage. Si besoin d'archives supplémentaires, utiliser le script
om_clips.pyci-dessous, puis intégrer le résultat viapick: {"source":"file", ...}dans le fichier shots.json. - Animation de type Vox / vulgarisation → utiliser huashu-art-motion, PAS le animated-explainer d'OpenMontage.
- Autres (découpage en clips, capture d'écran, doublage/traduction, podcast, analyse de vidéo de référence, montage documentaire sans narration) → utiliser OpenMontage, en surchargeant ses réglages par défaut avec les règles maison ci-dessous.
Environnement
source <SKILLS_DIR>/OpenMontage/om-env.sh # active .venv et Node 22, puis cd dans OpenMontage
python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))" # voir les outils disponibles
- Installé : requirements.txt, Remotion composer (npm), piper-tts, faster-whisper, yt-dlp, youtube-transcript-api, opencv-headless, HyperFrames (npx cache 0.8.147), et torch 2.14.1 CPU + transformers 5.19 (pas de GPU). CLIP est fonctionnel :
corpus_builderpour construire une base de médias, puisclip_searchavecrank_for_slottrie les médias par pertinence textuelle (score ≥ 0.25 utilisable) ;video_understand(mode CLIP) fonctionne aussi. Le modèle CLIP (openai/clip-vit-base-patch32) est téléchargé depuis Hugging Face au premier lancement ; sur CPU, la construction d'une petite base de 5 médias prend ~1 minute. Sicorpus_builderaffiche « degraded », c'est simplement parce que la moitié des sources n'ont pas de clé API – cela n'affecte pas l'utilisation. - Clés :
PEXELS_API_KEY,ELEVENLABS_API_KEYsont des variables d'environnement machine (disponibles seulement dans un nouveau shell, utiliserbash -lcsi nécessaire). om-env.sh les reprend ; elles ne sont PAS inscrites dans .env. Ne les affichez pas et ne les écrivez pas dans un fichier. Toutes les autres clés sont vides. Ne créez pas de nouveau compte ou de clé payante pour OpenMontage sans demander au préalable à Josh. - Génération payante (Kling, Veo, Seedance, FLUX…) : pas de clé actuellement, le sélecteur les ignorera automatiquement. OpenMontage demande un devis avant toute dépense et attend l'accord de Josh.
Règles maison (à appliquer systématiquement, en surchargeant les réglages par défaut d'OpenMontage)
- Format : vertical 1080×1920 (OpenMontage est souvent configuré par défaut en 16:9 – dès le début du projet, spécifier 9:16). Durée ≤ 3 minutes. Privilégier le contenu complet plutôt qu'une version trop condensée.
- Voix : voix féminine anglaise Sarah Explains (ElevenLabs, voice_id
Nhs7eitvQWFTQBsf0yiT), modèleeleven_multilingual_v2.- Option principale : utiliser directement l'outil
elevenlabs_ttsd'OpenMontage (testé et fonctionnel). Spécifiervoice_id, ne pas laissertts_selectorchoisir une autre voix ou passer à piper. Exemple :ElevenLabsTTS().execute({"text":..., "voice_id":"Nhs7eitvQWFTQBsf0yiT", "model_id":"eleven_multilingual_v2", "output_path":".../vo.mp3"}). Envoyer le script une seule fois (pas de répétition pour éviter des frais supplémentaires). - Solution de repli : si l'API directe échoue, utiliser le connecteur user-Elevenlabs (
creative_generate_speech,generations_count: 1) pour générervo.mp3, puis le fournir comme voix préexistante à OpenMontage. Ne pas utiliser piper comme voix principale.
- Option principale : utiliser directement l'outil
- Sous-titres : sous-titres principaux en chinois traditionnel, + une ligne plus petite en anglais en dessous (correspondant à la voix anglaise). Termes taïwanais, guillemets 《 », pas de tiret cadratin. Les sous-titres ne doivent pas descendre en dessous de y=1490 (pour éviter l'interface Instagram).
- Couverture : utiliser le modèle Vox du dossier
<YOUR_WORKSPACE>/media-team/00-profile/covers/render.py(ne pas utiliser les couvertures/miniatures d'OpenMontage). - Licences : chaque média utilisé doit être enregistré dans un fichier
credits.json(URL, auteur, licence). Les médias d'Archive.org ont une licence « vérifier par élément » : il faut systématiquement ouvrir la page pour confirmer qu'il est dans le domaine public, sous CC0 ou CC BY. Ne pas utiliser de vidéos de la BBC, de chaînes TV ou de studios de cinéma. Les médias sous CC BY doivent être crédités dans la description de la publication. - Fichier : vidéo finale au format H.264/AAC, compressée sous 45 Mo (vérifier avec
ffprobela taille et la durée). - Contenu : fidèle à l'original, ne pas inventer de chiffres ou de citations, créditer l'auteur original.
- Sortie : le rendu final est placé dans
<YOUR_WORKSPACE>/media-team/03-drafts/<sujet>/; le dossierprojects/d'OpenMontage sert uniquement d'espace de travail temporaire.
Comment lancer chaque pipeline
Dans le dossier OpenMontage, ouvrir Claude Code (il lira automatiquement CLAUDE.md), ou un autre bot lira directement skills/pipelines/<pipeline>/executive-producer.md et suivra les étapes. Au début de chaque session, copier-coller les règles maison ci-dessus.
- clip-factory : découper une longue vidéo (YouTube, live, enregistrement de podcast) en plusieurs clips verticaux. Avant de télécharger la vidéo avec yt-dlp, vérifier que Josh a le droit de l'utiliser.
- screen-demo : tutoriel avec capture d'écran réelle (screen_recorder/cap_recorder disponible).
- localization-dub : doubler une vidéo dans une autre langue. Utiliser d'abord le connecteur ElevenLabs pour générer la voix, puis la synchroniser et mixer la piste avec l'outil OpenMontage.
- podcast-repurpose : transformer un fichier audio de podcast en une courte vidéo avec les moments clés.
- Analyse de vidéo de référence : donner une Reel/Short ; l'outil analyse son rythme, son introduction, sa structure, puis propose 2 à 3 versions originales avec estimation des coûts (animated-explainer, animation, cinematic, character-animation acceptent un
reference_input). Apprendre uniquement la structure, pas les images ni le script exact. - documentary-montage : montage documentaire sans narration ou avec très peu de voix, style Adam Curtis, utilisant CLIP pour choisir automatiquement des médias pour chaque segment. Les Reels avec voix-off restent sous stock-footage-reel.
- Storyboard Backlot :
python -m backlot open <project-id>(storyboard local, uniquement pour visualiser ; un échec n'affecte pas la production). Il sert à suivre l'avancement et valider les étapes, mais toute confirmation de Josh doit se faire dans la conversation.
Ajout de médias pour stock-footage-reel
python3 <SKILLS_DIR>/openmontage-house/scripts/om_clips.py \
--query "salle informatique 1960" --query "centre de contrôle de mission" \
--sources archive_org,nasa,loc,nara,wikimedia --n 3 --out $D/work/om_clips
Le script affiche le chemin de la miniature pour chaque média, ainsi qu'un pick directement copiable dans shots.json (format {"source":"file",...}). Les licences sont enregistrées dans om_clips/om_credits.json. Lire les miniatures pour sélectionner, vérifier chaque licence avant d'intégrer le média dans la vidéo.
Sources disponibles : pexels (clé présente), archive_org, wikimedia, nasa, nara, loc, coverr, pond5_pd. Le téléchargement depuis la NASA peut parfois expirer (images-assets.nasa.gov), un message note: s'affiche alors ; il suffit d'utiliser une autre source.
Licence (AGPLv3)
Vous pouvez utiliser OpenMontage comme outil pour créer des vidéos, y compris à des fins commerciales. Les vidéos produites ne sont pas soumises à l'AGPL. Seule la modification du code d'OpenMontage et sa mise à disposition en tant que service réseau pour d'autres utilisateurs vous oblige à publier le code source modifié. Par conséquent, ne déployez pas une version modifiée d'OpenMontage en tant que service public.