openmontage-house:OpenMontage + Regras da Casa do Josh
OpenMontage base: <SKILLS_DIR>/OpenMontage (commit 9327439, 2026-10-03, AGPLv3).
Documentação completa do base: AGENT_GUIDE.md, CLAUDE.md, skills/INDEX.md, pipeline_defs/*.yaml.
Este skill apenas cria rascunhos, não publica. A publicação é feita exclusivamente pelo bot principal após a confirmação do Josh.
Decida primeiro se deve usar o OpenMontage (veja a tabela de decisão em <SKILLS_DIR>/INDEX.md)
- Reels com narração bilíngue, edição de material real → Use stock-footage-reel (formato da casa), não use o documentary-montage do OpenMontage. Para adicionar mais filmes antigos/material de domínio público, use o
om_clips.pyabaixo e insira compick: {"source":"file", ...}no shots.json. - Animação explicativa estilo Vox → Use huashu-art-motion, não use o animated-explainer do OpenMontage.
- Outros (corte de clipes, gravação de tela, dublagem/tradução, podcast, análise de vídeo de referência, montagem sem narração) → Use o OpenMontage, sobrescrevendo os padrões com as regras da casa abaixo.
Ambiente
source <SKILLS_DIR>/OpenMontage/om-env.sh # Ativa .venv e Node 22, e cd para OpenMontage
python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))" # Ver quais ferramentas estão disponíveis
- Instalado: requirements.txt, Remotion composer (npm), piper-tts, faster-whisper, yt-dlp, youtube-transcript-api, opencv-headless, HyperFrames (npx cache 0.8.147), e torch 2.14.1 (CPU) + transformers 5.19 (sem GPU). Correspondência semântica CLIP disponível: após construir a biblioteca de materiais com corpus_builder, o clip_search pode usar
rank_for_slotpara classificar materiais por descrição textual (pontuação >= 0.25 é utilizável); o video_understand (modo CLIP) também funciona. Na primeira vez, fará o download do modelo CLIP do Hugging Face (openai/clip-vit-base-patch32); construir uma pequena biblioteca de 5 materiais leva cerca de 1 minuto na CPU. O corpus_builder mostrar "degraded" apenas porque metade das fontes de material não tem chave, não afeta o uso. - Chaves:
PEXELS_API_KEY,ELEVENLABS_API_KEYsão variáveis de ambiente da máquina (disponíveis apenas em shells novos, usebash -lcse necessário); om-env.sh as herda, mas não as escreva ou imprima em arquivos. As demais chaves estão vazias. Não crie novas contas ou chaves pagas para o OpenMontage; pergunte ao Josh antes de adicionar. - Geração paga (Kling, Veo, Seedance, FLUX etc.) – sem chaves no momento; o seletor as ignora automaticamente. O OpenMontage fornece um orçamento antes de gastar, que precisa ser aprovado pelo Josh.
Regras da Casa (Sobrescrevem os padrões do OpenMontage; aplicar a cada vídeo)
- Formato: Vertical 1080x1920 (a maioria dos padrões do OpenMontage é 16:9; especificar 9:16 ao iniciar). Duração máxima de 3 minutos. Priorizar completude sobre concisão.
- Narração: Voz feminina inglesa Sarah Explains da ElevenLabs (voice_id
Nhs7eitvQWFTQBsf0yiT), modeloeleven_multilingual_v2.- Primeira opção: Usar a ferramenta
elevenlabs_ttsdo próprio OpenMontage (já testada e funcionando). Especificar ovoice_id, não deixar o tts_selector escolher voz automaticamente nem cair para piper. Exemplo:ElevenLabsTTS().execute({"text":..., "voice_id":"Nhs7eitvQWFTQBsf0yiT", "model_id":"eleven_multilingual_v2", "output_path":".../vo.mp3"}). Enviar o roteiro uma vez; não reenviar (para não descontar créditos duas vezes). - Plano B: Se a API direta falhar, usar o conector user-Elevenlabs (
creative_generate_speech,generations_count: 1) para gerar o vo.mp3 e depois entregá-lo como narração pronta para o OpenMontage. Não usar piper como narração oficial.
- Primeira opção: Usar a ferramenta
- Legendas: Legenda principal em chinês tradicional + uma linha menor abaixo em inglês (inglês correspondente à narração). Usar terminologia de Taiwan. Usar aspas "" (não travessão). A borda inferior da legenda não deve ficar abaixo de y=1490, para evitar a interface do Instagram.
- Capa: Template de capa estilo B-reel Vox, usando
<SEU_WORKSPACE>/media-team/00-profile/covers/render.py(não usar a capa/thumbnail do OpenMontage). - Licenciamento: Registrar cada material em
credits.json(URL, autor, licença). A licença do Archive.org é "verificar por item" – sempre abrir a página de cada item para confirmar se é domínio público ou CC0/CC BY. Não usar filmes da BBC, emissoras de TV ou estúdios de cinema. Créditos CC BY devem ser mencionados na descrição da postagem. - Arquivo: Vídeo final para Instagram: H.264/AAC, abaixo de 45 MB (verificar com
ffprobeo tamanho e a duração). - Conteúdo: Fiel ao original; não inventar números ou citações; creditar o autor original.
- Saída: Produto final em
<SEU_WORKSPACE>/media-team/03-drafts/<tema>/; o diretórioprojects/do OpenMontage é apenas área de trabalho.
Como iniciar cada fluxo
Abra o Claude Code na pasta do OpenMontage (ele lerá o CLAUDE.md) ou outro bot que leia diretamente skills/pipelines/<fluxo>/executive-producer.md para seguir as etapas. Na primeira instrução, cole as regras da casa acima.
- clip-factory: Cortar vídeos longos (YouTube, lives, gravações de podcast) em vários clipes verticais. Antes de baixar o vídeo com yt-dlp, confirmar que o Josh tem direitos de uso.
- screen-demo: Tutoriais com gravação de tela real (screen_recorder/cap_recorder disponíveis).
- localization-dub: Traduzir e dublar um vídeo em outro idioma. A narração deve ser gerada primeiro com o conector ElevenLabs, depois sincronizada e mixada.
- podcast-repurpose: Converter áudio de podcast em clipes curtos com destaque.
- Análise de vídeo de referência: Colocar um Reel/Short para análise de ritmo, abertura e estrutura; sugerir 2 a 3 versões originais com estimativa de custo (animated-explainer, animation, cinematic, character-animation têm
reference_input). Apenas aprender a estrutura; não copiar imagens ou texto. - documentary-montage: Montagem temática sem (ou com pouca) narração, estilo Adam Curtis, usando correspondência semântica CLIP para selecionar automaticamente materiais para cada parágrafo. Reels com narração ainda devem usar stock-footage-reel.
- Backlot storyboard:
python -m backlot open <project-id>(quadro local, apenas para observação; falha não interrompe a produção). Serve apenas para ver o progresso e confirmar marcos; a confirmação do Josh ainda deve ser feita no chat.
Adicionar material ao stock-footage-reel
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
Imprime o caminho da miniatura de cada clipe e um pick ({"source":"file",...}) pronto para ser colado no shots.json. O registro de licenças é salvo em om_clips/om_credits.json. Use o comando Read para ver as miniaturas, verifique a licença de cada um e só então insira no vídeo.
Fontes disponíveis: pexels (com chave), archive_org, wikimedia, nasa, nara, loc, coverr, pond5_pd. Para NASA, às vezes o download excede o tempo limite (images-assets.nasa.gov); nesse caso, a saída mostrará note:, bastando trocar de fonte.
Licenciamento (AGPLv3)
Usar o OpenMontage como ferramenta para criar vídeos e postagens comerciais é permitido; os vídeos produzidos não estão sujeitos à AGPL. Apenas a modificação do código-fonte e sua disponibilização como serviço web para terceiros exige a publicação do código-fonte modificado. Portanto, não hospede uma versão modificada do OpenMontage como um serviço externo.