Clip Montage (Montagem de Clipes)
Propósito
Pegue os vídeos curtos que o usuário filma no celular, e qualquer música ou gravação de voz que ele tenha, e edite-os em uma montagem finalizada 9:16 pronta para publicar:
- o melhor momento de cada clipe, em uma ordem que conta a história;
- cortado no ritmo da música;
- um gancho no primeiro plano, uma etiqueta em cada um e o CTA no final;
- o som original do clipe onde importa (alguém falando, um chiado, uma vibração), legendado palavra por palavra;
- o voiceover do usuário sobre todo o vídeo, com legendas sincronizadas.
Depois, continue editando com o usuário até ele ficar satisfeito ("use a parte em que ela ri", "cozinha primeiro", "clipe mais alto, sem música") uma versão de cada vez, sem perder as anteriores.
Esta é a skill padrão para montagens, e é gratuita. Tudo é renderizado nesta máquina com as ferramentas scripts/video/ do plugin (montage.js constrói a página a partir de um script curto, render.js gera o MP4). Não há conta, créditos, e nada sai da máquina. Imagens reais também são a representação mais fiel de um lugar ou produto: nenhuma IA inventa nada.
O que custa dinheiro, e quando mencionar:
| O que o usuário tem | O que acontece | Custo |
|---|---|---|
| Vídeos (com ou sem fotos, música, uma gravação de voz) | Esta skill | Grátis |
| Apenas fotos, e eles podem filmar alguns clipes | Peça pelos clipes, depois esta skill | Grátis |
| Apenas fotos, sem possibilidade de clipes | montage-video com movimentos locais (pane, aproximação, movimentos 3D) | Grátis |
| Apenas fotos, e eles querem que a câmera realmente se mova (novos ângulos) | "Movimentos de câmera IA" do montage-video, apenas se o usuário disser que tem um plano pago com um modelo de vídeo (Figma Weave em um plano pago do Figma, Higgsfield), cotado e aprovado primeiro | Créditos pagos |
Nunca execute um modelo de vídeo pago a partir desta skill. Nunca faça uma cotação a menos que o usuário tenha dito que possui um plano pago e deseja isso.
Processo passo a passo
Raiz do plugin: se um caminho abaixo ainda mostrar um placeholder CLAUDE_PLUGIN_ROOT não expandido (Claude Code o preenche; outros agentes como Codex não o fazem), resolva-o antes de usar qualquer um deles: pegue a saída de printenv CLAUDE_PLUGIN_ROOT se imprimir um caminho, caso contrário suba a partir da pasta deste arquivo até a primeira pasta que contém references/brand-voice.md, e se nenhum funcionar, pergunte ao usuário onde este plugin está. Use esse caminho absoluto em todos os caminhos de arquivo e comandos de shell abaixo. VIDEO abaixo significa ${CLAUDE_PLUGIN_ROOT}/scripts/video.
-
Verifique o status de configuração. Leia
${CLAUDE_PLUGIN_ROOT}/references/brand-voice.md. Se ele não existir, ou sua primeira linha for<!-- MARKETING-SKILL:UNCONFIGURED -->, pause e pergunte ao usuário as 4 perguntas de configuração do plugin (prioridade de tarefa; tipos de conteúdo a produzir; público-alvo + tom; formato de saída padrão — mesma do/marketing-skill:marketing-setup) antes de continuar, depois salve as respostas nesse arquivo e altere o marcador paraCONFIGUREDcom a data de hoje. Se o arquivo estiver não configurado mas o usuário já disse para pular a configuração ou usar os padrões, não pergunte: use os padrões do placeholder para esta execução, diga isso em uma linha e deixe o marcador como está. -
Escolha o cliente. Exatamente como o passo 2 do
montage-video(${CLAUDE_PLUGIN_ROOT}/skills/montage-video/SKILL.md): um cliente salvo (leia o perfil e suas## Notas), um novo (nome do negócio, linhas de contato, letras miúdas necessárias, logotipo, cores, a música que eles gostam), ou o próprio negócio do usuário (deixeclient:de fora). Os perfis ficam em${CLAUDE_PLUGIN_ROOT}/state/clients/e ficam fora do git. -
Peça as gravações, a música e a voz. Em uma mensagem:
- Os clipes (o pedido padrão). Vídeos curtos de celular, de 3 a 15 segundos cada, um por cômodo, ângulo ou momento. Se eles ainda não filmaram, dê a eles as "Dicas de filmagem para clipes" do
montage-guide.md: vertical, segure cada take firme por 3 a 5 segundos, mova-se devagar, boa luz, e os detalhes em close. - Música, se eles tiverem. Uma faixa para a qual eles tenham direitos de uso em um anúncio. Uma música de um app de streaming ou rádio não é uma. Caso contrário: o som salvo do cliente (uma faixa gerada gratuita), uma faixa Creative Commons (
node VIDEO/media.js search "<mood>" --type music --out state/videos/assets --count 3), ou sem música, para que eles adicionem um som trending no app ao publicar (contas comerciais do TikTok e Instagram têm uma biblioteca de uso comercial). - Uma voz, se eles tiverem. Um voiceover que eles gravaram (um arquivo serve, um memo de voz do celular funciona), com o que foi dito palavra por palavra para as legendas. Ou clipes onde alguém fala para a câmera. Ou nenhum: a maioria das montagens é apenas música.
- Uma montagem que eles gostariam que se parecesse, se houver: um vídeo que eles enviem (ou a referência de Estilo no
brand-voice.md's Configuração de Vídeo). Executenode VIDEO/reference.js <video>, leia seureference.md, e veja suas folhas; depois corresponda seu ritmo (pace:sua duração típica de take, em batidas quando seus cortes caem no ritmo), suas rajadas de cortes rápidos, suas legendas, e sua sensação, e diga em uma linha o que você está igualando. Copie a edição, nunca suas gravações, música ou palavras; peça o arquivo em vez de baixar a postagem de alguém do app. - Apenas fotos? Pergunte se eles podem filmar alguns clipes (é grátis e a imagem mais verdadeira). Se não puderem, passe para
montage-video, que move as fotos com movimentos locais gratuitos. Mencione IA de foto para vídeo apenas se eles pedirem movimentos reais de câmera ou novos ângulos, e diga que precisa de um plano pago (modelos de vídeo Figma Weave funcionam apenas em planos pagos do Figma). Execute apenas depois que eles disserem que têm um e aprovarem a cotação, seguindo "Movimentos de câmera IA" domontage-video. - Coloque os arquivos no disco. O renderizador precisa de arquivos: peça a pasta (ou os caminhos dos arquivos). Vídeos colados em um chat não podem ser lidos pelo renderizador. Se estiverem no Google Drive e um conector do Drive estiver disponível, baixe-os com ele em uma nova pasta.
- Use apenas gravações que o usuário ou cliente filmou ou tem licença para usar, e apenas pessoas que concordaram em aparecer.
- Os clipes (o pedido padrão). Vídeos curtos de celular, de 3 a 15 segundos cada, um por cômodo, ângulo ou momento. Se eles ainda não filmaram, dê a eles as "Dicas de filmagem para clipes" do
-
Importe-os. Execute
node VIDEO/montage.js inspect <folder> --slug <slug>, onde o slug é curto e nomeia o vídeo (maple,taco-night).- Ele copia cada clipe em
state/videos/assets/<slug>-01.mp4, e assim por diante, com a imagem e o som como estão e os metadados removidos (incluindo a localização do clipe do celular). Os originais não são tocados. - Ele imprime o tamanho, formato, duração e se tem som de cada clipe, e sinaliza clipes longos, paisagem e de baixa resolução.
- Ele escreve uma folha de contato numerada,
<slug>-contact.png, e um script inicial,state/videos/<data>-<slug>.md, um take por arquivo. - Copie a música do usuário para
state/videos/assets/<slug>-music.<ext>e seu voiceover parastate/videos/assets/<slug>-vo.<ext>.
- Ele copia cada clipe em
-
Assista a cada clipe. Você não pode reproduzir vídeo, então olhe os quadros:
- Execute
node VIDEO/montage.js frames <clip> --every 1para cada clipe (--every 0.5para um curto e movimentado). Ele organiza um quadro a cada segundo com seu tempo, e imprime quando o som do clipe está alto (alguém falando, ou um som que vale a pena manter). Leia cada folha. - Nomeie o que cada clipe mostra, e escolha seu melhor momento: estável, nítido, bem iluminado, o assunto claro. Pule o início trêmulo, o celular sendo abaixado, desfoque, e qualquer um que não tenha concordado em aparecer. Cada escolha é um trecho,
[from: 3.5] [to: 6.5]: 1,5 a 4 segundos é o ideal para a maioria dos takes. Um clipe longo pode dar dois ou três takes de momentos diferentes. - Um clipe paisagem é cortado para 9:16. Anote o que manter no quadro como
[focus: x%,y%](a pessoa, o produto, a lareira). - Anote os clipes cujo som deve permanecer (
[sound]): alguém falando para a câmera, uma risada, o chiado na grelha. Você não pode ouvi-los, então pergunte ao usuário o que foi dito, palavra por palavra, para as legendas, e diga quais clipes você manteria o som para que eles possam verificar. - Diga quais clipes ou momentos você deixou de fora e por quê, para que o usuário possa anular sua decisão.
- Ordene os takes com
${CLAUDE_PLUGIN_ROOT}/references/montage-guide.md("Clipes: a ordem"): o momento mais forte primeiro, depois uma rota pelo lugar ou evento, terminando no CTA.
- Execute
-
Confirme o escopo em uma mensagem. Proponha, e deixe o usuário corrigir:
- Duração e takes: cerca de 15, 30 ou 60 segundos, e quais momentos a preenchem.
- Música: a faixa deles, o som do cliente, outro gênero, uma faixa Creative Commons (envie para ouvir primeiro), ou nenhuma.
- Voz: o voiceover deles, os clipes que mantêm seu próprio som, ou nenhum.
- As palavras na tela: o gancho (três opções de
${CLAUDE_PLUGIN_ROOT}/references/hooks.md, cada uma de um padrão diferente), uma etiqueta para cada take, um adesivo de status se houver, e o CTA, mais o preço e especificações para um anúncio ou produto. Todo fato vem do usuário ou do cliente. Se um estiver faltando, pergunte, ou deixe de fora.
-
Escreva o script e construa a página. Edite o script inicial. O formato e cada tag estão documentados no início de
VIDEO/montage.js:--- title: taco-night client: casa-lupe hook: tuesday is taco night cta: book a table · link in bio music: assets/taco-night-music.mp3 pace: 4 beats --- 3. assets/taco-night-03.mp4 Fresh off the grill [from: 1.2] [to: 4] [sound] 1. assets/taco-night-01.mp4 Handmade tortillas [from: 0.5] [to: 3] [focus: 40%,60%] 2. assets/taco-night-02.mp4 Meet chef Lupe [from: 6] [to: 10.5] [sound] [say: Every tortilla is pressed by hand, every morning.] 4. assets/taco-night-04.mp4 The patio [from: 2] [to: 5] [move: push-in]- Trechos de clipe:
[from:]e[to:]definem o trecho. O take é então ajustado ao ritmo (arredondado para cima, então toca um momento além de[to:]). Usepace:em batidas, não compassos, para clipes: um compasso arredonda um trecho de 3 segundos para 5 segundos a 96 BPM. - Som próprio de um clipe:
[sound]toca em sincronia, com a música abafada abaixo dele. Um[say: ...]nesse clipe é o que é dito nele, legendado palavra por palavra. Não é dublado novamente. - O voiceover do usuário:
voiceover: assets/<slug>-vo.m4aevoiceover-text: <as palavras deles, palavra por palavra>. Toca a partir de 0,3 segundos (voiceover-at:para mudar), a música é abafada abaixo dele, as legendas correm baixas em cada take, e os takes se estendem para cobri-lo. Não use também linhas de voz[say: ...]. - A música deles:
music: assets/<slug>-music.mp3. Sua batida é lida combeats.jse os cortes caem nela.music: nonedeixa espaço para um som trending adicionado no app. - Movimentos: um clipe mantém seu próprio movimento.
[move: push-in],pull-out, oudriftadicionam um zoom lento por cima. Um pan desliza o clipe com zoom, já que não há nada além do quadro para onde fazer pan. - Fotos misturadas movem-se como em
montage-video(pans, aproximações, movimentos 3D).
Em seguida, execute
node VIDEO/montage.js state/videos/<data>-<slug>.md. Ele escreve<data>-<slug>.htmlao lado do script, imprime a tabela de takes, o som, a voz, e quaisquer notas (um clipe mais curto que seu take, um take mantido para que sua etiqueta possa ser lida), e executarender.js --check. Corrija o que a verificação listar, geralmente encurtando uma etiqueta, e execute novamente até estar limpo. - Trechos de clipe:
-
Primeiro corte. Olhe cada quadro de
node VIDEO/render.js <page> --slidesvocê mesmo: o assunto no quadro (não cortado de um clipe paisagem), etiquetas legíveis, legendas claras das etiquetas, a ordem contando a história. Depois:- Envie ao usuário os slides para aprovar a ordem e as palavras.
- Renderize:
node VIDEO/render.js <page> state/videos/<slug>-v1.mp4 --cover 0. Ele escreve o MP4 (1080×1920, 30fps), uma imagem de capa e, quando há uma voz ou som de clipe legendado, um arquivo.srtde legenda.--draftfaz uma versão rápida de meio tamanho para verificar o tempo primeiro. Nunca publique um rascunho. - Você não pode ouvir o resultado. Peça ao usuário para ouvir: a música, cada som de clipe mantido, e o voiceover contra as legendas.
-
Edite até ficar certo. Cada solicitação se torna uma edição no script, nunca na página, porque
montage.jsrecalcula toda a temporização:O usuário diz Mudança no script "use a parte em que ela ri" o [from:]/[to:]daquele take (encontre na folha--every)"corte a parte trêmula" um [from:]posterior, ou um[to:]anterior"mais tempo na cozinha" um [to:]posterior, ou[hold: 4s]"mais rápido" / "mais devagar" trechos mais curtos, pace:(ex.3 beats), oulength:"faça durar 15 segundos" length: 15, e remova os momentos mais fracos (diga quais)"cozinha primeiro", "troque 3 e 5" reordene as linhas numeradas "mantenha o som naquele" / "silencie" adicione ou remova [sound]"adicione legendas ao que ele diz" [say: <as palavras dele, exatamente>]naquele clipe[sound]"adicione meu voiceover" voiceover:evoiceover-text:"música diferente" / "sem música" music:outro arquivo, um gênero, ounone"mostre o lado esquerdo", "mantenha ela no quadro" [focus: 25%,50%]"dê zoom nisso" [move: push-in](com[focus:]no ponto)"mais suave" / "cortes mais marcantes" transition: fade, oucut,slide,zoom,wipe,flash"mude o texto" a etiqueta, hook:,cta:,price:,specs:"câmera lenta" não suportado: sem mudanças de velocidade. Um clipe filmado em câmera lenta do celular toca como filmado "outra cor / logotipo / número de telefone" o perfil do cliente, não o script Cada rodada: edite o script, execute
montage.jsnovamente, depois use--draftpara uma mudança de tempo ou--slidespara uma mudança de aparência. Renderize a próxima versão como<slug>-v2.mp4,-v3.mp4, e assim por diante. Nunca sobrescreva uma versão anterior, para que o usuário possa voltar atrás.Se um take mudou muito (re-filmado, ou um clipe completamente diferente), o número do arquivo não corresponde mais. Atualize o nome do arquivo na linha. Se o usuário re-filma algo, importe-o com
montage.js inspectcom o slug existente e um prefixo02(ex.taco-night-02-night-01.mp4) para não confundir com os originais.Renderize o final apenas quando o usuário aprovar. O nome do arquivo final é
<slug>.mp4, sem número de versão. -
Entregue. Uma mensagem:
- O vídeo:
<slug>.mp4e, se contiver voz ou som legendado,<slug>.srt. - Uma imagem de capa, se eles quiserem uma (
<slug>.png, 1080×1920). - Lembre-os de etiquetar a conta do cliente se o cliente fez o upload das gravações originais.
- Pergunte se eles querem legendar em outro idioma para o público deles. Se sim, execute
node VIDEO/captions.js <slug>.mp4 --lang es,--lang fr, etc. (ou uma lista,--lang es,fr,de). Os legendas são salvos ao lado do MP4. - Lembre-os de marcar a postagem como Parceria Paga e incluir a divulgação necessária ("Em parceria com [Cliente]").
- Pergunte se eles querem adicionar a postagem à biblioteca (
state/posts/), e se sim, escreva um resumo.
- O vídeo:
Outras habilidades
montage-video— quando o usuário tem apenas fotosmarketing-skill— campanhas, agendamentos e redação de postagensbrand-guide— configurar e atualizar guias de marcatag-library— criar e reutilizar tags/etiquetas para postagens