Video Notes
O usuário grava feedback como uma gravação de tela enquanto narra: uma única passada, alguns minutos, frequentemente repetindo um ponto quando o cursor trava. O entregável é uma lista de tarefas que outra sessão pode executar sem assistir ao vídeo. Whisper e ffmpeg rodam localmente; nenhum vídeo ou áudio é enviado para uma API de fala ou visão em nuvem.
Passos
- Execute o helper (ele fica ao lado deste arquivo).
Ele reutilizapython3 "<pasta desta habilidade>/video-notes.py" "<vídeo>"<vídeo>.srtquando existe ao lado do arquivo, caso contrário executawhisper --model base.enna CPU (cerca de 2,5 min por 5 min de vídeo em um laptop Apple Silicon). A saída vai para<stem>.notes/:transcript.md(uma linha por segmento mesclado com um nome de quadro) e imagens de 1600px. Quando<stem>.notes/já é mais recente que o vídeo, é reutilizado como está;--forcereconstrói,--model turboquando a transcrição base está confusa,--every 10para uma demonstração sem narração,--sheetpara folhas de contato 2x2,--max-row 5para mais quadros quando a fala e a tela mudam rapidamente (as linhas são limitadas a 8 s, um quadro por linha),--max-frames 40padrão. - Leia
transcript.md, depois os quadros. Com--sheet, folheiesheet_NN.jpgprimeiro (quatro quadros por leitura; os tiles vão da esquerda para a direita, de cima para baixo, na ordem dos quadros, então a folha 01 contém os quadros 1 a 4 e seu tile superior esquerdo é o mais antigo), depois leia o quadro individual para cada linha cujas palavras apontam para a tela ("esta área", "aqui", "esses dois ícones") ou cujo texto precisa ser lido. Uma folha localiza; apenas um quadro individual é evidência para um rótulo ou um tamanho. - Escreva
<stem>.notes.mdao lado do vídeo, pelo caminho absoluto, independentemente do diretório de trabalho da sessão. Formato:
A numeração percorre toda a lista, para que o usuário possa responder "3 e 7". As regiões seguem a ordem em que foram visitadas. Uma nota repetida é um item, com "dito 3 vezes" anexado quando a repetição é o ponto.# <nome do vídeo> · <data da gravação> · <duração> · <app ou URL visível nos quadros> ## Lista de tarefas ### <região da tela, nomeada como aparece na tela: Barra esquerda, Cabeçalho, Painel de configurações> 1. [mm:ss] <correção imperativa em uma frase>. Dito: "<citação literal curta>". Quadro: frame_mmss.jpg 2. ... ## Adiado <itens marcados como "depois", "eventualmente", "agora não", mesma forma de linha> ## Não claro <uma linha por item que precisa da resposta do usuário> - Responda com o caminho do arquivo, os cabeçalhos das regiões com contagens de itens e os três primeiros itens. Não pergunte nada a menos que Não claro tenha entradas.
- Quando o repositório que renderiza a tela estiver aberto, adicione
## Onde no código: número do item para o caminho do arquivo, encontrado pesquisando os nomes dos componentes e rótulos visíveis nos quadros. Pule a seção quando não houver repositório; nunca adivinhe um caminho.
Regras
- Texto ilegível em uma imagem é recapturado, nunca inferido:
--width 2400, ou um crop ffmpeg da região. - A pasta
.notes/e o arquivo.notes.mdpermanecem ao lado do vídeo. Dentro de um repositório, essa pasta deve ser ignorada (.git/info/exclude), para que uma gravação grande nunca entre no git. - Concorrente ou demonstração de produto: mesmos passos, e a lista lê "o que eles fazem" em vez de "corrigir".
- A transcrição é executada com os modelos Whisper locais em
~/.cache/whisper. Sem API de fala em nuvem, sem API de visão; o modelo da sessão lê as imagens.
Verificação de conclusão
-
transcript.mdproduzido e cada quadro lido antes de um item ser escrito -
<stem>.notes.mdescrito: numeração global, regiões em ordem de visita, timestamp e quadro em cada item - Repetições colapsadas, Adiado e Não claro separados da lista de tarefas
- Nenhum vídeo ou áudio enviado para fora da máquina