frameproof — regarder une vidéo et pouvoir le prouver
Règle principale
Ne prétends jamais ce qui était à l'écran si tu n'as pas vu l'image.
L'outil imprime honnêtement la couverture. Si le rapport contient une zone « SANS IMAGE », parle directement de cet intervalle : « il n'y a pas d'image ici, d'après le son voici ce que c'est ». Une supposition présentée comme une observation dévalue toute l'analyse.
Chaque affirmation sur l'écran doit être accompagnée d'une étiquette [MM:SS / fNNNN]. Ce n'est pas une décoration : frameproof verify vérifie chaque étiquette par rapport à l'index. Un lien inventé sera détecté par l'arithmétique, sans aucun modèle.
Procédure
1. Index
frameproof index "<lien ou chemin>" --ocr
Affiche un rapport de couverture. Lis-le avant tout le reste : combien d'images, quel écart maximum, y a-t-il des zones sans images.
Le chemin vers l'index se trouve dans la dernière ligne de la sortie. Il est nécessaire ensuite comme --out.
--ocr active la reconnaissance de texte sur les images (macOS, hors ligne). Cela rend l'écran « greppable » : commandes, noms de fichiers et URLs sont trouvés par recherche sans aucune image. Une copie séparée est reconnue dans sa résolution native, l'affichage reste léger.
Options utiles : --max-gap 10 (couverture plus dense), --max-frames 400 (vidéo longue), --lang ru (langue de transcription si pas de sous-titres).
Si des sous-titres prêts existent à côté de la vidéo — --subs speech.srt, c'est plus précis et plus rapide que la transcription. Sur d'autres systèmes que macOS, la reconnaissance s'active avec son propre moteur : --ocr-command "<programme>", qui reçoit les chemins des images et imprime chemin<TAB>texte.
2. Lis la carte
cat <index>/index.json
Petit fichier, lis-le entièrement. Il contient la durée, le nombre d'images, la source de la transcription et — surtout — le bloc coverage.
3. Cherche par texte, pas par images
frameproof search "<requête>" --out <index>
Recherche à la fois dans la parole et dans le texte à l'écran. Renvoie des lignes avec des timecodes. Pas une seule image — zéro token visuel. La plupart des questions sont résolues ici.
La recherche est approximative (trigrammes), les déclinaisons russes ne gênent pas.
Pour des sélections plus complexes, grep directement :
grep -i "docker" <index>/segments.jsonl | head
grep -i "npm" <index>/frames.jsonl | head
4. Regarde les images uniquement quand c'est indispensable
frameproof frames --at 4:12 --out <index> # moment
frameproof frames --ids f0043,f0044 --out <index> # images spécifiques
Seule commande qui renvoie des images. Lis les chemins fournis via Read.
Budget : 4–8 images à la fois. Une image 1280×720 coûte environ 1196 tokens visuels. Afficher toutes les images d'une vidéo d'une heure, c'est des centaines de milliers de tokens ; à ne pas faire.
5. Réponds avec preuve
Format d'une affirmation sur l'écran :
À 18:38, un tableau de routage des modèles est affiché : MAIN — cher et intelligent, AUXILIARY — bon marché et rapide.
[18:38 / f0097]
Si quelqu'un demande un article ou un résumé, insère les images comme illustrations via leurs chemins depuis frames.jsonl et mets un timecode à côté.
6. Vérifie-toi — quand on te le demande
L'étiquette [MM:SS / fNNNN] n'est pas une décoration, mais un lien vérifiable. Un audit mécanique est gratuit et instantané ; lance-le sur toute analyse de plus de deux paragraphes :
frameproof verify <fichier-analyse.md> --out <index>
Il ne sait rien du sens — il vérifie l'intégrité du lien : l'image existe-t-elle, son timecode correspond-il, le moment tombe-t-il dans une zone sans image, cette image a-t-elle été demandée, la ligne citée apparaît-elle dans le texte de l'image ou dans la parole à proximité.
FAIL — c'est un lien cassé, il faut le réparer, pas en discuter. WARN — une raison d'ouvrir l'image et de regarder visuellement.
7. Second regard aveugle — seulement sur demande explicite
Quand quelqu'un dit « vérifie l'analyse », « revérifie », « es-tu sûr d'avoir vu ça » — lance une vérification contradictoire.
frameproof verify <fichier> --out <index> --plan
La commande produit un JSON avec des tâches. Délègue-les au sous-agent frameproof-adversary en un seul appel (pas un agent par affirmation — un seul suffit).
Ce qu'il faut transmettre au sous-agent : seulement la liste numérotée des affirmations et les chemins vers les images, exactement comme dans le JSON.
Ce qu'il NE faut PAS transmettre, pas un mot :
- la question posée par la personne ;
- tes propres réflexions sur pourquoi tu as tiré cette conclusion ;
- le reste du texte de l'analyse ;
- toute indication sur la réponse que tu considères correcte.
Le sous-agent ne voit pas l'historique du dialogue — c'est garanti. Mais le message de délégation est écrit par toi, et c'est le seul canal de fuite restant. Un vérificateur connaissant la réponse attendue est inutile : il la confirmera.
Que faire des verdicts :
CONFIRMED— laisse tel quel.REFUTED— marque, ne supprime pas :[non confirmé par second regard : <raison>]. Les réfutateurs se trompent sur les affirmations correctes plus souvent qu'on ne le pense, donc c'est la personne qui décide, pas toi.UNSUPPORTED— dis honnêtement : cela n'est pas visible sur l'image, la conclusion est basée sur le son ou sur des moments voisins.
Ne lance pas ce passage de ta propre initiative après chaque analyse. Il coûte des tokens et du temps, alors que la couche mécanique attrape la plupart des problèmes gratuitement.
Ce qu'il ne faut pas faire
- Ne résume pas la vidéo uniquement à partir de la transcription en appelant cela une analyse d'écran. La parole et l'écran divergent : dans la vidéo, la personne dit « openrouter », et à l'écran il est écrit
openrouter/pareto-code (min_coding_score 0.65). La seconde information n'existe que dans les images et l'OCR. - Ne charge pas des images en lots « au cas où ». D'abord la recherche, puis les images ciblées.
- Ne présente pas l'OCR comme le texte littéral du code. La reconnaissance confond la ponctuation :
[mainest lu commeImain. L'OCR sert à TROUVER l'image ; ce qui est écrit dessus, regarde-le visuellement. - Ne tais pas les zones aveugles. Si la couverture est inférieure à 100 %, dis-le à la personne.
Si quelque chose manque
frameproof doctor
Montre ce qui est installé et ce qui ne l'est pas. ffmpeg et numpy sont obligatoires ; yt-dlp n'est nécessaire que pour les liens ; la transcription nécessite mlx-whisper (rapide sur Apple Silicon) ou openai-whisper (partout). Aucune clé n'est nécessaire.