frameproof — assistir vídeos e saber provar isso
Regra principal
Nunca afirme o que estava na tela se você não viu o quadro.
A ferramenta imprime honestamente a cobertura. Se no relatório houver uma seção "SEM QUADRO" — sobre esse intervalo fale diretamente: "não há quadro aqui, pelo áudio — é isso". Um palpite apresentado como observação desvaloriza toda a análise.
Cada afirmação sobre a tela — com a marca [MM:SS / fNNNN]. Isso não é formatação:
frameproof verify verifica cada uma dessas marcas pelo índice. Uma referência inventada será
pega pela aritmética, sem nenhum modelo.
Fluxo de trabalho
1. Índice
frameproof index "<link ou caminho>" --ocr
Exibe o relatório de cobertura. Leia-o antes de tudo: quantos quadros, qual o máximo intervalo, há seções sem quadros.
O caminho para o índice está na última linha da saída. Daqui em diante, ele será necessário como --out.
--ocr ativa o reconhecimento de texto nos quadros (macOS, offline). Isso torna a tela
pesquisável: comandos, nomes de arquivos e URLs são encontrados por busca sem uma única imagem.
Reconhece uma cópia separada na resolução nativa, a exibição permanece leve.
Chaves úteis: --max-gap 10 (cobertura mais densa), --max-frames 400 (vídeo longo),
--lang pt (idioma da transcrição, se não houver legendas).
Se houver legendas prontas junto ao vídeo — --subs fala.srt, isso é mais preciso e rápido
que a transcrição. No macOS, o reconhecimento é conectado com seu próprio mecanismo:
--ocr-command "<programa>", ele recebe caminhos de imagens e imprime caminho<TAB>texto.
2. Leia o mapa
cat <indice>/index.json
Arquivo pequeno, leia por completo. Nele estão duração, número de quadros, fonte da transcrição
e — o principal — o bloco coverage.
3. Pesquise por texto, não por imagens
frameproof search "<consulta>" --out <indice>
Pesquisa tanto na fala quanto no texto da tela. Retorna linhas com timestamps. Nenhuma imagem — zero tokens visuais. A maioria das perguntas se resolve aqui.
A busca é sublinear (trigramas), flexões do português não atrapalham.
Para consultas mais complexas, use grep diretamente:
grep -i "docker" <indice>/segments.jsonl | head
grep -i "npm" <indice>/frames.jsonl | head
4. Veja quadros apenas quando não tem outro jeito
frameproof frames --at 4:12 --out <indice> # momento
frameproof frames --ids f0043,f0044 --out <indice> # quadros específicos
Único comando que retorna imagens. Leia os caminhos fornecidos usando Read.
Orçamento: 4–8 quadros por vez. Um quadro 1280×720 custa cerca de 1196 tokens visuais. Mostrar todos os quadros de um vídeo de uma hora são centenas de milhares de tokens; não faça isso.
5. Responda com evidência
Formato para afirmação sobre a tela:
Aos 18:38 é mostrada uma tabela de roteamento de modelos: MAIN — caro e inteligente, AUXILIARY — barato e rápido.
[18:38 / f0097]
Se alguém pedir um artigo ou resumo — insira quadros como ilustrações pelos seus caminhos
de frames.jsonl e coloque o timestamp ao lado.
6. Verifique a si mesmo — quando for solicitado
A marca [MM:SS / fNNNN] não é um enfeite, mas um link verificável. A auditoria mecânica é gratuita
e instantânea, execute-a em qualquer análise com mais de alguns parágrafos:
frameproof verify <arquivo-de-analise.md> --out <indice>
Ela não sabe nada sobre o significado — ela verifica a integridade do link: se o quadro existe, se seu timestamp está correto, se o momento não caiu em uma seção sem quadros, se o quadro foi realmente solicitado, se a linha citada aparece no texto do quadro ou na fala próxima.
FAIL — é um link quebrado, deve ser corrigido, não discutido. WARN — é motivo para abrir
o quadro e ver com os próprios olhos.
7. Segundo olhar cego — apenas por solicitação explícita
Quando alguém disser "verifique a análise", "reverifique", "você tem certeza que viu isso" — execute a verificação adversarial.
frameproof verify <arquivo> --out <indice> --plan
O comando gera um JSON com tarefas. Delegue-as ao subagente frameproof-adversary em uma
única chamada (não um agente por afirmação — um é suficiente).
O que passar para o subagente: apenas a lista numerada de afirmações e os caminhos dos quadros, exatamente como no JSON.
O que NÃO passar, nem uma palavra sequer:
- a pergunta que o humano fez;
- seus próprios raciocínios sobre por que você tirou aquela conclusão;
- o restante do texto da análise;
- qualquer dica sobre qual resposta você considera correta.
O subagente não vê o histórico do diálogo — isso é garantido. Mas a mensagem de delegação é escrita por você, e este é o único canal de vazamento restante. Um revisor que sabe a resposta esperada é inútil: ele a confirmará.
O que fazer com os vereditos:
CONFIRMED— manter como está.REFUTED— marcar, não remover:[não confirmado pelo segundo olhar: <motivo>]. Os refutadores erram em afirmações verdadeiras com mais frequência do que parece, portanto a decisão é tomada pelo humano, não por você.UNSUPPORTED— dizer honestamente: no quadro isso não é visível, a conclusão foi baseada no áudio ou em momentos adjacentes.
Não execute esta passagem por iniciativa própria após cada análise. Ela custa tokens e tempo, e a camada mecânica já captura a maior parte dos problemas gratuitamente.
O que não fazer
- Não resuma o vídeo apenas pela transcrição, chamando isso de análise de tela. A fala e
a tela divergem: no vídeo a pessoa diz "openrouter", mas na tela está escrito
openrouter/pareto-code (min_coding_score 0.65). O segundo só existe nos quadros e no OCR. - Não carregue quadros em lote "por via das dúvidas". Primeiro a busca, depois quadros pontuais.
- Não trate o OCR como o texto literal do código. O reconhecimento confunde pontuação:
[mainé lido comoImain. O OCR serve para ENCONTRAR o quadro; o que está escrito nele — veja com os olhos. - Não se cale sobre pontos cegos. Se a cobertura for menor que 100%, diga isso ao humano.
Se algo estiver faltando
frameproof doctor
Mostra o que está instalado e o que não está. São obrigatórios ffmpeg e numpy; yt-dlp é necessáriosó para links; transcrição — mlx-whisper (rápido em Apple Silicon) ou
openai-whisper (em qualquer lugar). Chaves não são necessárias para nada.