Communitygithub.com

johnnyfekete/video-organize

Organiza gravações brutas para um vídeo roteirizado. Transcreve localmente cada gravação, encontra cada take e o associa a uma cena do storyboard, pontua completeza, palavras quebradas e áudio, lê vereditos do set, sugere o melhor take ou um patch de dois takes, cataloga b-roll de acordo com as anotações de b-roll do storyboard, escreve TAKES.md e oferece renomeação com nomes no estilo cinematográfico (S02A_T03_original). Use quando novas gravações chegarem, quando o usuário quiser takes organizados, comparados ou selecionados, quiser saber quais cenas não têm take utilizável, ou pedir para renomear clipes.

O que é video-organize?

A skill `johnnyfekete/video-organize` automatiza a organização e seleção de takes para edição de vídeo roteirizado. Ela transcreve localmente cada gravação usando Whisper (via `uv` ou comando externo), associa cada take a uma cena do storyboard, e pontua completeza, qualidade de áudio e palavras quebradas. A skill lê vereditos do set (aprovação/rejeição) registrados no `.edit/config.json` e sugere o melhor take ou um patch combinando trechos de dois takes. Ela também cataloga b-roll extraindo frames em intervalos regulares e pede ao usuário que os descreva, associando as descrições às notas de b-roll do storyboard. O resultado é um arquivo `TAKES.md` com uma seção por cena, mostrando o take sugerido, patches, clipes sem correspondência e cenas sem take utilizável. A renomeação opcional segue o padrão cinematográfico (ex: `S02A_T03_IMG_5419.MOV`) e só é aplicada após aprovação explícita do usuário, pulando clipes já colocados na timeline do DaVinci Resolve. A skill funciona com o Resolve fechado e depende da skill `resolve-bridge` para comunicação com o projeto.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/johnnyfekete/resolve-video-skills/tree/HEAD/skills/video-organize

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que video-organize faz?

Execute após video-setup e antes de video-assemble. Não precisa de timeline e funciona com o Resolve fechado. Requer a skill resolve-bridge instalada ao lado desta (ou defina RVS_BRIDGE), ffmpeg e ou uv (para Whisper local) ou um comando de transcrição em RVS_TRANSCRIBE_CMD.

Execute scripts como python3 <pasta desta skill>/scripts/organize.py --workdir <pasta> <comando>.

Formato do storyboard

Markdown simples, um bloco por cena. O id da cena vem do cabeçalho.

## S01
Setup: bancada

Deixe-me começar com uma confissão: IA me ajudou a planejar este vídeo.

## S03
Voiceover: sim
B-roll: mostrando IA pesquisando algo engraçado

Setup, Voiceover e B-roll são opcionais. Todo o resto em um bloco é o texto falado. Um bloco com apenas B-roll: é uma cena só de b-roll. Um roteiro simples sem cabeçalhos conta cada parágrafo como uma cena. Sem storyboard algum, os takes são agrupados por texto semelhante (G01, G02), com um aviso no topo de TAKES.md e sem pontuação contra um roteiro ou oferta de renomeação.

Fluxo de trabalho

  1. Verificação de configuração. Execute o check do video-setup. Ele avisa se nenhum storyboard foi registrado, e .edit/config.json deve conter storyboard, approve_phrases e reject_phrases (uma lista antiga phrases aparece apenas como nota: pergunte quais frases aprovam e quais rejeitam, e salve-as com setup.py write).
  2. Conte primeiro. Peça a pasta de gravações, então:
    python3 scripts/organize.py --workdir <pasta> run --footage <pasta de gravações> [--storyboard ARQUIVO] [--every 2]
    
    Sem --yes isso imprime as contagens (gravações, duração, cenas) e para. Confirme com o usuário que a pasta parece correta.
  3. Execute.
    python3 scripts/organize.py --workdir <pasta> run --footage <pasta de gravações> --yes
    
    Transcreve (uma gravação já transcrita e inalterada é pulada), encontra e pontua takes, extrai frames de b-roll, escreve TAKES.md e registra problemas (cenas sem take utilizável, b-roll não filmado, cláusulas quebradas que ninguém pode corrigir).
  4. Sua parte: descreva o b-roll. A execução lista uma pasta de frames por gravação de b-roll (um JPEG por amostra, frame N está em N x every segundos). Para cada pasta:
    • abra os frames e descreva o que está na tela, por timestamp;
    • associe as descrições às notas de B-roll: do storyboard: cena, início, fim e motivo;
    • escreva o payload, então registre-o:
      {"<caminho da gravação>": {"frames": {"0": "uma pessoa digitando", "2": "close-up de uma tela"},
                            "matches": [{"scene": "S04", "start": 2, "end": 6, "why": "close-up de tela"}]}}
      
      python3 scripts/organize.py --workdir <pasta> describe payload.json
      
    Descreva apenas o que você pode ver. Não invente correspondências.
  5. Sua parte: perguntas de letra do plano. Quando a execução não consegue determinar se dois arquivos de uma cena são da mesma configuração de câmera, ela lista uma pergunta com uma diferença de frame. Pergunte ao usuário, então registre cada resposta:
    python3 scripts/organize.py --workdir <pasta> answer S02 <arquivo> B
    
  6. Mostre TAKES.md. Uma seção por cena com o take sugerido primeiro, sua pontuação e motivos, patches (marcados com ambos os ids de take, sempre uma recomendação), clipes sem correspondência e cenas sem take. Leia os problemas para o usuário.
  7. Correções. Quando o usuário preferir outro take ("use S02A-T03"):
    python3 scripts/organize.py --workdir <pasta> pick S02A-T03
    
    A escolha do usuário sobrevive a reexecuções. report reescreve TAKES.md sem alterar mais nada.
  8. Renomeação. Oferecida por organize.py rename (proposta primeiro, --apply somente após o usuário aprovar a lista completa, --undo para reverter). Mostre a lista completa de antigo para novo e aplique apenas com um sim claro. Nunca renomeie de outra forma. Clipes já colocados em uma timeline no projeto aberto do Resolve são pulados e listados com o motivo, porque religar um clipe usado pode perder seus cortes e correção de cor; renomeie esses manualmente no Resolve se necessário. Se o projeto contiver clipes compostos, multicâmera ou Fusion, cujo conteúdo não pode ser listado, todo clipe importado é pulado. --apply aplica exatamente a proposta mostrada pela última vez e se recusa se ela mudou. Com o Resolve fechado, --apply e --undo precisam de --never-imported (as gravações nunca foram importadas); se o Resolve estiver aberto, clipes usados ainda são verificados.
  9. Concluído. A execução registra a própria etapa de organização, então não há mais nada a registrar. Aponte para video-assemble (ainda não construído) como o próximo passo.

Nomes

CasoNome
Id do take em TAKES.mdS02A-T03
Arquivo com um takeS02A_T03_IMG_5419.MOV
Arquivo com vários takes de um planoS02A_T01-T03_IMG_5420.MOV
Arquivo com várias cenasS03A_S05A_S06A_IMG_5422.MOV
Segunda configuração de câmera de uma cenaS02B_T01_IMG_5430.MOV

Cada plano tem uma letra. Uma letra diferente significa uma configuração de câmera diferente, não um retake. B-roll e arquivos sem correspondência mantêm seus nomes.

Regras

  • As gravações originais nunca são movidas ou sobrescritas. Elas são renomeadas apenas pelo rename aprovado.
  • A pontuação é de 0 a 100 e sempre mostrada com motivos. Uma rejeição no set supera a pontuação, uma aprovação fica em primeiro lugar. Cenas com voiceover são julgadas principalmente pelo som.
  • Patches trocam pelo menos uma ideia completa cortada em uma pausa natural, nunca uma única palavra.
  • Arquivos de trabalho ficam em <pasta>/.edit/organize/ (não edite manualmente). video-assemble lê apenas esses.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Habilidades Relacionadas