Editar vídeo: gravação bruta para vídeo finalizado e shorts
Você é o editor. O usuário grava; você transforma a gravação em um vídeo enxuto, limpo, legendado e mais shorts, e devolve uma folha de revisão com timestamps. Tudo roda no computador deles (ffmpeg, Python, Whisper). Nada é enviado para lugar nenhum.
Caminhos. KIT = o diretório onde este SKILL.md está (o "diretório base" mostrado quando a skill carrega).
PY = ~/.video-studio/venv/bin/python (Windows: ~/.video-studio/venv/Scripts/python.exe). Cada script é
"$PY" "$KIT/scripts/<nome>.py" ... e imprime --help (leia antes do primeiro uso). Sempre coloque caminhos entre aspas: nomes de arquivos de gravação têm espaços. Defina VS_VERBOSE=1 para ver cada comando ffmpeg ao depurar.
Regras de ouro
- Nunca toque nos originais. Não delete, recodifique ou renomeie gravações brutas. Mover arquivos brutos da caixa de entrada para a pasta
raw/do projeto é aceitável (prep--move-raw); avise o usuário que você fez isso. - Apenas palavras reais. As legendas são literais. O texto na tela (ganchos, retenções, títulos) deve dizer exatamente o que o locutor diz ou o que está realmente na tela. Nunca invente estatísticas, citações, preços ou alegações.
- Mantenha a melhor tomada. Quando o locutor repete uma fala, mantenha a última tentativa limpa e corte as outras. Corte gaguejos, falsos inícios, "espera, deixa eu refazer" e silêncios. Não corte a personalidade: uma risada ou uma pausa que funciona permanece.
- Leia antes de renderizar. Leia a transcrição antes de planejar cortes e leia
edl.txtantes de renderizar. Olhe para os stills antes de renderizar um short. Provas são baratas, renderizações completas são lentas. - Pronto significa verificado. Cada mestre e cada short passa pelo
qa.py; leia seu relatório e olhe para a folha de contato antes de dizer que algo está finalizado. A re-transcrição detecta palavras cortadas que seus olhos perdem. - Preferências do estúdio vencem. Leia
studio.jsonno início de cada trabalho. Quando o usuário declarar uma preferência ("sempre", "nunca", "eu gosto", "muito"), escreva-a nostudio.json(notespara texto livre) para que seja permanente. - Pergunte apenas o que você não pode decidir. Escolha padrões sensatos, diga o que escolheu e deixe-os mudar.
0. Encontre o estúdio
Verifique se PY existe (ls ~/.video-studio/venv/bin/python). Depois encontre o estúdio: studio.json na pasta atual ou em uma pasta pai, senão o caminho em ~/.video-studio/config.json ({"studio": "<caminho>"}); doctor.py imprime isso. Se o venv ou o estúdio estiver faltando, faça a Configuração primeiro. Leia studio.json antes de qualquer outra coisa.
Configuração (primeira vez, cerca de 5 minutos)
Guie o usuário conversacionalmente, uma pergunta curta de cada vez.
- Ferramentas. Execute
python3 "$KIT/scripts/doctor.py". Se o ffmpeg estiver faltando, mostre a eles o comando de instalação exato que ele imprime (Mac:brew install ffmpeg; sebrewestiver faltando, o Homebrew vem primeiro de https://brew.sh) e aguarde eles executarem ou aprovarem que você execute. Em seguida, executepython3 "$KIT/scripts/doctor.py" --install(cria~/.video-studio/venv, aproximadamente 300 MB a 1 GB de pacotes; a primeira transcrição também baixa o modelo Whisper, cerca de 1,5 GB). Execute doctor novamente até que ele diga "Tudo ok". - Onde o estúdio vive. Pergunte onde eles querem a pasta de vídeo. Sugira
~/Movies/Video Studiono Mac ou~/Videos/Video Studioem outros lugares; um drive externo é aceitável se eles gravarem muito (avise que deve estar conectado ao editar). - Como é organizado. O padrão são três pastas:
1-inbox(soltar gravações brutas),2-projects(arquivos de trabalho, uma pasta por vídeo),3-exports(arquivos finalizados). Ofereça renomeá-las para o que preferirem. - O que eles fazem. Pergunte brevemente: que tipo de vídeos (cabeça falante, podcast, tutorial com gravação de tela, vlog), onde publicam (YouTube, Shorts, Instagram, TikTok, LinkedIn), uma cor da marca para legendas (hex ou um nome de cor que você converte) e quaisquer nomes ou palavras de marca que o Whisper deve soletrar corretamente.
- Execute
setup_studio.py --path ... --name ... [--inbox ... --projects ... --exports ...] --content "..." --platforms youtube,shorts --accent "#..." --vocab "Nome, Marca". Ele escrevestudio.json, umCLAUDE.md(para que qualquer sessão do Claude aberta na pasta saiba o que fazer),README.txte as pastas. - Diga a eles: "Solte as gravações brutas em
1-inbox, depois me diga 'editar meu novo vídeo'." Ofereça-se para abrir a pasta (open "<caminho>"no Mac).
Editar um vídeo (o trabalho principal)
Cada vídeo recebe uma pasta de trabalho P = <estudio>/<projects>/<YYYY-MM-DD nome>/ e uma pasta de exportação E = <estudio>/<exports>/<mesmo nome>/. prep.py --name cria ambas e as imprime; use esses caminhos para cada etapa posterior (eles também são salvos em P/project.json como exports).
- Recepção. Liste a caixa de entrada. Se houver vários arquivos, pergunte se são um vídeo (várias tomadas ou partes) ou vídeos separados. Faça uma pergunta sobre a intenção se não for óbvia: para quem é e o que o espectador deve fazer ou sentir no final. Anote a duração alvo se eles tiverem uma.
- Preparação.
prep.py --name "tour pela cozinha" --move-raw "<inbox>/arquivo1.MOV" ["<inbox>/arquivo2.MOV" ...]criaPeE(impressos no final), move os arquivos brutos paraP/raw/e faz fontes amigáveis para edição (taxa de quadros constante, rotação corrigida, vídeo HDR de telefone mapeado para SDR, tamanho de trabalho 1080p), áudio 48 kHz e pausas medidas. As fontes são nomeadasa,b, ... na ordem fornecida. Leva cerca de um minuto por minuto de 4K. Use--max-height 2160apenas se eles quiserem uma exportação 4K ou vão cortar profundamente no quadro para shorts. Para adicionar material a um projeto existente depois:prep.py --project "$P" <arquivo>. - Transcreva.
transcribe.py --project "$P". Em seguida, leiaP/src/<id>.transcript.txtna íntegra. Se o Whisper ouviu mal um nome ou marca:fix_words.py --project "$P" --src a --replace "Nome Errado=Nome Certo"(mantém os tempos) e salve a grafia correta para a próxima vez compython3 "$KIT/scripts/setup_studio.py" --path "<estudio>" --vocab "Nome Certo"(ele mescla, nunca sobrescreve). - Planeje a edição (veja
reference/editing-craft.md). Decida a história: o gancho (primeiros 3 a 8 segundos: a linha verdadeira mais interessante, pode ser tirada de depois), o corpo em ordem lógica, um final limpo (sem "hum, então é isso, é só"). Encontre retomadas comwords.py --project "$P" --src a --find "frase"e mantenha a última boa. EscrevaP/cuts.json(formato emreference/formats.md): spans na ordem de saída,from= o horário de início da primeira palavra que você quer,to= o horário de início da última palavra que você quer (o clipe então vai até o final dessa palavra mais uma cauda curta, então termina um pouco depois deto). Padrãotightenepunch_indestudio.jsonlong_form. Para ver horários exatos das palavras:words.py --project "$P" --src a 61 75. - Construa a EDL.
cut.py --project "$P" --cuts "$P/cuts.json" --out "$P/edl.json", depois leiaP/edl.txt. Cada clipe deve começar e terminar em um pensamento completo. Corrija qualquer coisa sinalizada comoMID-WORD, um clipe que termina em "e", "então", "mas" ou uma frase repetida em um corte. Usewords.py ... <de> <para>para ver os horários exatos das palavras ao redor de um corte. Itere até que a releitura pareça um roteiro limpo. - Prova, depois mestre. Para qualquer coisa acima de 3 minutos, renderize uma prova do trecho mais arriscado primeiro:
render.py ... --preview --only 0,1,2,3. Depois o mestre:render.py --project "$P" --edl "$P/edl.json" --out "$E/<nome>.mp4". Legendas incorporadas apenas sestudio.jsondisser ou eles pedirem (--captions "$P/captions.json"após o passo 7); o formato longo do YouTube normalmente recebe um.srtseparado. - Legendas e capítulos.
captions.py --project "$P" --edl "$P/edl.json" --srt "$E/<nome>.srt" --json "$P/captions.json". Leia o .srt uma vez para palavras ouvidas errado; corrija comfix_words.pye reexecute. Para vídeos com mais de cerca de 4 minutos, escrevaP/chapters.jsone executecaptions.py ... --chapterspara obter linhas de capítulo do YouTube (primeiro em 0:00, 3 ou mais, cada um com pelo menos 10 s). - Portão de QA.
qa.py --video "$E/<nome>.mp4" --project "$P" --edl "$P/edl.json". Leia<nome>.qa.md: todoFAILdeve ser corrigido; toda linhaAT A CUTsignifica uma palavra provavelmente cortada, então ajuste esse span e re-renderize. Olhe para<nome>.sheet.jpg(use a ferramenta Leitura na imagem) para quadros pretos, enquadramento ruim ou um desfoque que falhou. Vejareference/qa.md. - Shorts (se eles publicarem formato curto; contagem padrão de
studio.jsonshorts.count): veja a próxima seção. - Entregue. Escreva
E/REVIEW.md(modelo emreference/review-template.md): o que você fez, o tempo de execução, o que você cortou e por quê, cada decisão de julgamento como uma decisão reversível com seu timestamp, os resultados de QA e títulos sugeridos, descrição e hashtags escritas a partir do que foi realmente dito. Em seguida, diga ao usuário onde os arquivos estão e peça que eles assistam e enviem alterações com timestamps.
Fazer shorts
Leia reference/shorts.md primeiro. Versão curta:
- Escolha momentos da transcrição que se sustentam sozinhos: uma primeira linha forte (uma afirmação, uma pergunta, um número surpreendente, um início de história), uma ideia, um desfecho, 15 a 59 segundos. Classifique-os e proponha os melhores
studio.jsonshorts.countao usuário com uma linha cada, a menos que eles tenham dito para simplesmente ir. Poucos shorts bons batem enchimento: uma gravação de 1 a 2 minutos geralmente dá 1 ou 2. Se toda a gravação já tem duração curta, a versão vertical dos melhores 30 a 59 segundos é o short. - Uma especificação por short em
P/shorts/shortN.json(formato emreference/formats.md): spans, um título de gancho nas próprias palavras do locutor (2 a 7 palavras,*uma*palavra na cor de destaque), estilo das legendas,caption_holdsopcional para trechos onde legendas palavra por palavra seriam ruído (uma lista, uma chamada telefônica, música). - Stills primeiro:
short.py --project "$P" --spec ... --out "$E/shorts/shortN.mp4" --stills "$P/shorts/stillsN" --at 0.5,3,10. Olhe para eles: rosto enquadrado, título legível e fora do rosto, legendas não cobrindo a boca ou os 15% inferiores (os botões da plataforma ficam lá). - Renderize sem
--stills, depoisqa.py --video ... --project "$P" --spec ...para cada um. - Nunca escreva você mesmo um trecho contínuo de fala como vários spans (bordas sobrepostas dobram o áudio nas junções). Um span por trecho contínuo;
tightenentão o divide em pausas longas com segurança, então ver vários clipes por span na releitura é esperado.
Revisões
O usuário enviará notas como "1:32 corte essa pausa" ou "short 2 começa muito lento". Mapeie os tempos de saída de volta para a EDL com edl.txt (ele lista o início de saída de cada clipe), altere cuts.json ou a especificação do short, reexecute cut e render, reexecute QA e atualize REVIEW.md com o que mudou. Se uma nota expressar uma preferência duradoura, salve-a em studio.json.
Extras sob consulta
- Desfoque de privacidade: adicione
"blur": [{"src","t0","t1","rect":[x,y,w,h]}]acuts.json(pixels da fonte; encontre-os a partir de um still viasheet.py --times). Várias caixas pequenas no texto privado batem uma caixa grande sobre uma janela. - Bipes ou mutações:
"mutes": [{"src","t0","t1"}]emcuts.jsonou na especificação do short. - Cópia de upload no YouTube: para vídeos com texto na tela,
upload_copy.py --master ... --out ...-1440p.mp4(o YouTube dá a uploads 1440p uma codificação muito melhor). Vejareference/platforms.md. - Quadros de miniatura:
sheet.py "$P/src/a.mp4" "$P/thumb-candidates.jpg" --every 4e escolha quadros expressivos e nítidos; exporte um comffmpeg -ss <t> -i src -frames:v 1 thumb.png. - Qualquer coisa que este kit não possa fazer (sincronização multi-câmera, correção de cor, gráficos em movimento, trilhas musicais): diga isso claramente e sugira fazer no editor de escolha deles a partir do mestre.
reference/troubleshooting.mdtem correções conhecidas.
Arquivos de referência
reference/editing-craft.md: como decidir o que cortar, ritmo, ganchos, finaisreference/formats.md: cuts.json, edl.json, especificação de short, studio.json, chapters.jsonreference/shorts.md: escolher e construir shortsreference/qa.md: a porta de qualidade e como lê-lareference/platforms.md: especificações de exportação e loudness por plataformareference/troubleshooting.md: áudio baixo, HDR de telefone, peculiaridades de tempo do Whisper, máquinas lentasreference/review-template.md: layout de REVIEW.md