Uma gravação pode fornecer vários excertos curtos, mas uma transcrição não decide se um excerto respeita o contexto, e uma exportação de1080 ×1920 não prova que seja agradável de ver. Este guia usa cinco competências de projeto do Claude Code, invocadas manualmente, para organizar transcrição, classificação, corte, legendagem e renderização. Um editor humano aprova cada intervalo de origem e vê cada ficheiro terminado. O processo destina-se a um vídeo seu ou com direitos expressos de edição e partilha.
Esta receita baseia-se na documentação e usa Terminal do macOS com zsh. A BIG CHANGE não executou os comandos, inspecionou imagens privadas nem produziu os cinco ficheiros. Verifique a ajuda das ferramentas instaladas e os seus meios reais antes de seguir. A imagem principal representa conceptualmente os cinco vídeos verticais que um criador analisaria. Não são excertos reais, resultados de software nem um teste da BIG CHANGE.
A grande mudança
- O que mudou: As competências de projeto do Claude Code podem dividir uma edição local em cinco etapas invocadas manualmente. Os registos propostos ligam tempos da fonte, cortes aprovados, legendas corrigidas e ficheiros finais; a documentação não demonstra que esta cadeia concreta tenha sido executada com êxito.
- Porque importa: Um criador com material autorizado pode entregar ao editor uma decisão específica em cada etapa, incluindo se existem cinco excertos distintos. A estrutura permite rejeitar um corte fraco ou enganador antes de o exportar com legendas.
- O que observar: A decisão de partilhar continua a depender dos direitos, da política de dados da conta Claude escolhida e da reprodução integral de cada MP4 guardado. Uma análise técnica aprovada não resolve essas questões.
Antes de começar
Precisa de um ficheiro local source.mp4 com áudio utilizável, armazenamento suficiente, acesso ao Claude Code, um executável local whisper.cpp operacional whisper-cli e um modelo compatível com o idioma, além de FFmpeg e ffprobe com os codificadores e filtros necessários. Precisa também de um editor que verifique a gravação e as cinco exportações. Registe conta e política de dados do Claude Code, versões instaladas, commit ou compilação do whisper.cpp, SHA-256 e licença do modelo e limites de utilização. Claude Code pode usar um modelo alojado mesmo com transcrição e renderização locais. Dê apenas acesso a transcrições ou meios permitido pelos direitos e política da conta. As suas instruções de competência não restringem o acesso. Os controlos de permissões das ferramentas são separados e regem as chamadas; conforme as definições, leituras habituais podem ocorrer sem confirmação. Examine expressamente o que a competência consegue ler, além do que propõe escrever ou executar.
Coloque uma cópia imutável da fonte e rights.json numa nova pasta local de execução fidedigna. O registo de direitos deve identificar SHA-256 da fonte, editor, excertos e utilizações posteriores permitidas, permissões de intervenientes, música e imagens e regras de armazenamento e conservação. Não avance com direitos incertos. Abra Terminal nessa pasta, verifique pwde crie as pastas de trabalho:
mkdir -p transcript clips captions shorts probes .claude/skills/video-transcribe .claude/skills/video-rank .claude/skills/video-cut .claude/skills/video-caption .claude/skills/video-vertical
command -v claude
command -v ffmpeg
command -v ffprobe
claude --version
ffmpeg -version
ffprobe -version
ffmpeg -hide_banner -h encoder=libx264
ffmpeg -hide_banner -h encoder=aac
ffmpeg -hide_banner -h filter=subtitles
ffmpeg -hide_banner -h filter=scaleDefina WHISPER_CLI e WHISPER_MODEL como caminhos absolutos reais entre aspas. Defina LANGUAGE como o código verificado do idioma falado, por exemplo en apenas se o áudio estiver em inglês. Confirme a compatibilidade do modelo; um modelo exclusivamente inglês .en não abrange outro idioma. Idiomas mistos ou não suportados exigem um plano verificado antes de continuar. A referência CLI do whisper.cpp documenta -l, -m, -f, -osrt, -oj e -of; confirme estas opções na ajuda da sua compilação. Não ative a opção de tradução.
WHISPER_CLI='/absolute/path/to/whisper-cli'
WHISPER_MODEL='/absolute/path/to/approved-model.bin'
LANGUAGE='en'
test -x "$WHISPER_CLI"
test -r "$WHISPER_MODEL"
"$WHISPER_CLI" --help
ffprobe -v error -show_entries format=duration:stream=index,codec_type,codec_name,width,height,sample_aspect_ratio -of json source.mp4Substitua os caminhos e o idioma de exemplo antes de executar. Verifique duração, fluxos, orientação, áudio e espaço livre. Confirme que o filtro instalado subtitles suporta libass e que scale aceita force_original_aspect_ratio, force_divisible_by e reset_sar. Se faltar uma função, siga as instruções de compilação dos responsáveis e repita as verificações. Não elimine as legendas silenciosamente.
Criar cinco competências de projeto delimitadas
No projeto fidedigno, guarde cinco ficheiros separados .claude/skills/<name>/SKILL.md . Cada um precisa do seu próprio name, description, disable-model-invocation: truee de regras completas de entrada, ação, saída e paragem. Invoque-os manualmente por esta ordem: /video-transcribe, /video-rank, /video-cut, /video-caption, /video-vertical. Não acrescente allowed-tools: Claude Code indica que este campo concede utilização sem confirmação às ferramentas listadas durante a invocação; não limita a competência a elas. Mantenha as permissões normais e reveja o acesso. Uma leitura pode não perguntar, enquanto escritas e execução seguem os controlos reais da conta.
Use os conteúdos completos seguintes com o registo comum descrito abaixo. O texto da competência instrui Claude Code; não impõe uma fronteira técnica de acesso.
.claude/skills/video-transcribe/SKILL.md
---
name: video-transcribe
description: Transcribe the authorized local source for the five-short workflow.
disable-model-invocation: true
---
Input: rights.json, immutable source.mp4, checked source probe, verified language and local whisper.cpp executable/model. Confirm matching source and model hashes, usable audio and permitted access before any command.
Action: From the checked run directory, confirm source.wav and both transcript output paths do not exist. Extract mono 16 kHz 16-bit PCM source.wav with explicit first-audio mapping and no overwrite. Continue to whisper-cli only after a zero exit and valid WAV readback; use the verified model and explicit language, SRT and JSON output, and translation off. Inspect both outputs, parse source-relative times, and compare representative passages and uncertain names or quotes against source audio. Record a nonzero exit or uncertain output as a manifest blocker before any next stage.
Output: transcript/source.srt and transcript/source.json, recorded hashes, corrections or marked uncertainties, tool and model identity in manifest.json.
Stop: Missing rights, changed inputs, absent audio, empty or malformed transcript, or unverified relevant speech. Do not upload, publish or overwrite accepted files; ask the editor to settle uncertainty..claude/skills/video-rank/SKILL.md
---
name: video-rank
description: Suggest source moments for human selection of five distinct clips.
disable-model-invocation: true
---
Input: Checked source transcript and hash, immutable source hash and probe duration, rights.json, intended audience. Verify all identities and authorized transcript access.
Action: Suggest more than five moments with numeric source-second start/end, source words, surrounding context and editorial rationale. Treat ranking as a suggestion, never a viral forecast. Have the editor open each candidate in the original and check speaker, wording, facts, context and rights. Record exactly five distinct coherent approved intervals and a rejected-candidate log.
Output: approved-moments.json with order, source hash and five numeric bounds satisfying 0 <= start < end <= source duration.
Stop: Fewer than five permissible, meaningful moments, mismatched hashes, uncertain bounds or missing human approval. Do not invent a fifth excerpt..claude/skills/video-cut/SKILL.md
---
name: video-cut
description: Cut the five approved source intervals into separate local clips.
disable-model-invocation: true
---
Input: Immutable source.mp4, source hash/probe and five human-approved intervals. Verify hashes and calculate each duration as end minus start.
Action: For each 01-05, confirm its unique output path is unused, then transcode the approved source-relative interval with input -ss, -t duration, explicit first video/audio mapping, libx264, AAC and -n. Continue only on zero exit and file readback. Probe streams and duration, inspect first and last frames, and have the editor watch each whole cut for boundaries, sync and context. Record the exact command and output hash. Any failure or uncertain write is a manifest blocker; never pass that clip to captioning.
Output: Five accepted numbered clips, individual probe records and links to approved intervals in manifest.json.
Stop: Wrong bounds, absent stream, drift, misleading context, output collision or uncertain command result. Read back the existing path first; correct bounds with human approval and use a new filename. Never overwrite or reuse an old clip hash..claude/skills/video-caption/SKILL.md
---
name: video-caption
description: Create and check local captions from each accepted clip.
disable-model-invocation: true
---
Input: Five accepted clip hashes, verified language and local model identity. Reject stale clips or mismatched source links.
Action: For each actual numbered clip 01-05, verify its accepted hash and unused WAV/raw-SRT paths, then extract its own mono 16 kHz 16-bit PCM WAV with -n. Run whisper-cli only after zero exit and WAV readback, with the matching language and SRT output; translation stays off. Preserve raw SRT. Have the editor correct words, names, numbers, cue timing, overlaps and readability against the actual clip, then save a distinct .checked.srt. Use clip-local times, not source-offset cues. Record failures as blockers before rendering.
Output: Five checked SRTs with raw-ASR and exact clip hash links in manifest.json.
Stop: Any cue outside clip duration, uncertain speech, bad alignment or stale clip hash. Repair and replay before rendering; a recut requires matching new captions..claude/skills/video-vertical/SKILL.md
---
name: video-vertical
description: Render and review five captioned 1080x1920 MP4s.
disable-model-invocation: true
---
Input: Five accepted clip hashes/probes, matching checked SRT hashes, rights record and a human-approved crop or framing plan for each clip.
Action: Check decoded orientation and sample aspect ratio. Choose even integer crop width, height and x/y for each clip; require positive dimensions, nonnegative offsets and a rectangle within the decoded frame. A fixed crop does not track motion. Verify unique output and probe paths are unused. From the established run directory, render each separately with crop, aspect-preserving scale, pad, clip-local subtitles, explicit video/audio mapping, libx264, yuv420p, AAC and -n. Continue only on zero exit and saved-file readback. Create probe JSON without clobbering an existing path, reopen the MP4 and have the editor watch its entire video and audio, checking cut context, every caption, framing, sync, facts and rights. Record any failure or uncertain output as a blocker.
Output: Five distinct accepted 1080x1920 MP4s, hashes, probe JSON, exact source/clip/SRT lineage and UTC human acceptance notes.
Stop: Unknown orientation, invalid crop, missing filter, collision, unreadable file, silent audio, cut-off text, wrong duration, bad context or failed full playback. Inspect uncertain existing outputs; revise to a new filename, probe and watch again. No upload or publishing.Mantenha um único manifest.json para a execução. Em cada passagem registe direitos e SHA-256 imutável da fonte, versões das ferramentas, SHA-256, licença e idioma do modelo, entradas e saídas com SHA-256, intervalos numéricos aprovados, comandos exatos e decisões UTC. Se um ficheiro identificado ou hash divergir, pare e resolva antes da próxima competência.
Trate cada bloco de comandos como uma etapa num novo script zsh ou shell controlada, com set -e para que uma falha interrompa a etapa. Verifique que cada caminho de saída está livre antes de executar e registe código de saída não zero, ficheiro ausente ou escrita incerta como impedimento no manifesto. A competência seguinte deve ler esse estado e o hash de saída; não pode aceitar um corte falhado porque existe um excerto antigo.
1. Transcrever a fonte
O README dos responsáveis pelo whisper.cpp indica que o exemplo CLI exige atualmente WAV de16bits. Confirmado o áudio, execute o seguinte na pasta de projeto verificada. -n impede FFmpeg de substituir um WAV existente.
set -e
test ! -e source.wav
test ! -e transcript/source.srt
test ! -e transcript/source.json
ffmpeg -i source.mp4 -map 0:a:0 -ar 16000 -ac 1 -c:a pcm_s16le -n source.wav
test -s source.wav
"$WHISPER_CLI" -m "$WHISPER_MODEL" -f source.wav -l "$LANGUAGE" -osrt -oj -of transcript/source
test -s transcript/source.srt
test -s transcript/source.jsonConfirme que transcript/source.srt e .json existem, contêm fala com marcas temporais e ficam dentro da duração de origem medida. Ouça passagens representativas e verifique nomes, números e citações incertos no original. Conserve uma transcrição corrigida ou marcas explícitas de incerteza. Se extração ou transcrição ficar vazia, examine fluxo, executável, idioma e compatibilidade do modelo antes de tentar uma nova saída com nome único.
2. Selecionar cinco momentos do original
Invoque /video-rank com a transcrição verificada e o público. Peça mais de cinco candidatos para o editor poder rejeitar excertos fracos. Exija segundos numéricos de início e fim desde o princípio da fonte, fala, contexto anterior e posterior e razão da compreensão autónoma. Abra cada intervalo no original. O editor decide se interveniente, palavras, contexto visual, factos e permissões sobrevivem ao corte. Guarde exatamente cinco intervalos distintos aprovados em approved-moments.json; inclua ordem, hash da fonte e 0 <= start < end <= source duration. Uma passagem transcrita apenas ajuda a localizar. Para a tarefa mais restrita de encontrar tempos, consulte Encontrar o momento falado antes de editar um vídeo.
Se a gravação não contiver cinco momentos defensáveis, pare. A tarefa de cinco ficheiros continua incompleta.
3. Cortar os intervalos aprovados
Invoque /video-cut. Para cada intervalo, calcule DURATION = END - START a partir dos limites numéricos aprovados. Substitua os marcadores entre sinais angulares por números reais; não são valores executáveis. Repita com clip-02.mp4 até clip-05.mp4. FFmpeg documenta pesquisa na entrada, duração, seleção explícita de fluxos e saída sem substituição. Transcodifique em vez de copiar diretamente os fluxos para os limites de corte pretendidos.
set -e
test ! -e clips/clip-01.mp4
ffmpeg -ss <START_SECONDS> -i source.mp4 -t <DURATION_SECONDS> -map 0:v:0 -map 0:a:0 -c:v libx264 -c:a aac -n clips/clip-01.mp4
test -s clips/clip-01.mp4Analise fluxos e duração de cada excerto real, veja o primeiro e o último fotograma e assista-lhe integralmente. Registe hash e intervalo aprovado. Um corte errado exige novos limites aprovados e outro nome de saída. Em caso de falha ou dúvida, examine o ficheiro existente e a análise antes de repetir; nunca dirija uma repetição ao mesmo nome.
4. Corrigir legendas em cada corte real
Invoque /video-caption. Transcreva cada excerto aceite, pois as legendas devem começar no tempo zero desse excerto. Para o excerto01, os comandos são:
set -e
test ! -e captions/clip-01.wav
test ! -e captions/clip-01.srt
ffmpeg -i clips/clip-01.mp4 -map 0:a:0 -ar 16000 -ac 1 -c:a pcm_s16le -n captions/clip-01.wav
test -s captions/clip-01.wav
"$WHISPER_CLI" -m "$WHISPER_MODEL" -f captions/clip-01.wav -l "$LANGUAGE" -osrt -of captions/clip-01
test -s captions/clip-01.srtRepita com o número real de dois dígitos de02 a05 e caminhos distintos. Preserve cada ficheiro bruto captions/clip-NN.srt. O editor compara cada legenda com o excerto, corrige palavras, nomes e números, verifica tempos e legibilidade e guarda captions/clip-NN.checked.srt. Uma legenda para além da duração impede a renderização. Relacione cada hash SRT com o hash do excerto. Se o corte mudar, regenere ou volte a verificar as legendas sobre o novo ficheiro.
5. Reenquadrar, renderizar e aceitar os cinco
Invoque /video-vertical. Para cada excerto aceite, examine imagem descodificada, orientação, proporção do píxel e movimento. O editor escolhe para cada excerto os seus próprios inteiros pares CROP_W, CROP_H, CROP_X, CROP_Y. O retângulo tem de caber no fotograma descodificado. Um recorte fixo não segue um sujeito em movimento; se perder conteúdo essencial, escolha um plano revisto de escala com margens ou altere o corte. Rotação ou coordenadas incertas interrompem a renderização. O manual de filtros FFmpeg documenta crop, scale, pad e o filtro subtitles baseado em libass.
Na pasta de execução estabelecida, defina CLIP como o número real de dois dígitos e as quatro variáveis de recorte com os inteiros aprovados para esse excerto. O comando é um modelo, não um exemplo testado. Mantenha o caminho relativo simples das legendas mostrado; carateres especiais nos nomes exigem escape próprio para o grafo de filtros. Repita separadamente de02 a05.
set -e
setopt noclobber
CLIP=01
CROP_W=<CHECKED_EVEN_INTEGER>
CROP_H=<CHECKED_EVEN_INTEGER>
CROP_X=<CHECKED_EVEN_INTEGER>
CROP_Y=<CHECKED_EVEN_INTEGER>
test ! -e "shorts/short-${CLIP}.mp4"
test ! -e "probes/short-${CLIP}.json"
ffmpeg -i "clips/clip-${CLIP}.mp4" -map 0:v:0 -map 0:a:0 -vf "crop=${CROP_W}:${CROP_H}:${CROP_X}:${CROP_Y},scale=1080:1920:force_original_aspect_ratio=decrease:force_divisible_by=2:reset_sar=1,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,subtitles=captions/clip-${CLIP}.checked.srt" -c:v libx264 -pix_fmt yuv420p -c:a aac -n "shorts/short-${CLIP}.mp4"
test -s "shorts/short-${CLIP}.mp4"
ffprobe -v error -show_entries format=duration:stream=index,codec_type,codec_name,width,height,sample_aspect_ratio -of json "shorts/short-${CLIP}.mp4" > "probes/short-${CLIP}.json"
test -s "probes/short-${CLIP}.json"Em cada um dos cinco JSON de análise, exija vídeo1080 ×1920 com proporção do píxel1:1, áudio e duração positiva coerente com o corte aprovado após arredondamento da codificação ou dos fotogramas. Um valor ausente ou desconhecido fica por resolver. A saída JSON do ffprobe verifica propriedades, não a qualidade da edição. Reabra e veja cada MP4 integralmente, comparando com o intervalo original, corte aceite e SRT verificado. Verifique limites das frases, legendas e colocação segura, enquadramento no movimento, sincronização, factos e direitos. Registe aceitar, rever ou rejeitar com hora UTC no manifesto. Cinco ficheiros aceites, cada um ligado a hash da fonte, intervalo aprovado, hash do excerto, hash SRT e JSON de análise, concluem a tarefa. Quatro não bastam.
Limites e recuperação
O acesso ao Claude Code pode implicar plano ou cobrança de API e limites de utilização. Modelo local transferido, transcrição, transcodificação e revisões consomem armazenamento e computação. Registe cobranças reais se a conta as mostrar; custo desconhecido não é zero. Não foram medidos velocidade, precisão, qualidade das legendas, poupança ou popularidade desta receita.
Preserve o original e os materiais aceites. Perante modelo ausente, opção incompatível, má transcrição, falha de renderização ou escrita incerta, verifique primeiro os hashes exatos e o ficheiro existente. Corrija a causa, dê novo caminho à revisão e repita a análise e a reprodução integral. Não carregue nem partilhe um curta antes de o editor aceitar conteúdo e direitos.



