frameproof — 動画を視認し、それを証明する
最重要ルール
画面に映っていると断言する前に、そのフレームを実際に見たかどうかを決して誤魔化さないこと。
このツールは正直にカバレッジを出力します。レポートに「フレームなし」の区間がある場合は、その区間について「ここにはフレームがありません、音声からは次のことがわかります」と率直に伝えてください。憶測を観察として提示すると、分析全体の信頼性が失われます。
画面上のすべての主張には、[MM:SS / fNNNN] のラベルを付けること。 これは装飾ではありません。frameproof verify はこれらのラベルをすべてインデックスと照合します。偽の参照は、モデルを使わずに算術で検出されます。
作業手順
1. インデックス作成
frameproof index "<URLまたはパス>" --ocr
カバレッジレポートを出力します。何よりもまずこれを読みましょう:フレーム数、最大ギャップ、フレームがない区間の有無。
インデックスへのパスは出力の最終行に表示されます。以降は --out として使用します。
--ocr はフレーム上のテキスト認識を有効にします(macOS、オフライン)。これにより画面がgrep可能になります:コマンド、ファイル名、URL を画像なしで検索できます。認識はネイティブ解像度の別コピーで行われ、表示は軽量のままです。
便利なオプション:--max-gap 10(より密なカバレッジ)、--max-frames 400(長い動画)、--lang ru(字幕がない場合の文字起こしの言語)。
動画の隣に既製の字幕ファイルがある場合は、--subs speech.srt を使用します。これにより文字起こしよりも正確で高速です。macOS以外では、独自のエンジンで認識を接続します:--ocr-command "<プログラム>" は画像へのパスを受け取り、パス<TAB>テキスト を出力します。
2. マップを読む
cat <インデックス>/index.json
小さなファイルなので、全部読みましょう。長さ、フレーム数、トランスクリプトのソース、そして最も重要なブロック coverage が含まれています。
3. 画像ではなくテキストで検索する
frameproof search "<クエリ>" --out <インデックス>
音声と画面テキストの両方を検索します。タイムコード付きの行を返します。画像は一切なし — ビジュアルトークンはゼロ。 ほとんどの質問はここで解決します。
検索は部分一致(トライグラム)であり、ロシア語の格変化を気にしません。
より複雑な抽出の場合は、直接grepします:
grep -i "docker" <インデックス>/segments.jsonl | head
grep -i "npm" <インデックス>/frames.jsonl | head
4. どうしても必要なときだけフレームを見る
frameproof frames --at 4:12 --out <インデックス> # 特定の瞬間
frameproof frames --ids f0043,f0044 --out <インデックス> # 特定のフレーム
画像を返す唯一のコマンドです。出力されたパスを Read で読み取ってください。
予算:一度に4~8フレーム。 1280×720の1フレームは約1196ビジュアルトークンです。1時間の動画の全フレームを表示すると数十万トークンになります。そんなことはしないでください。
5. 証拠付きで回答する
画面に関する主張の形式:
18:38 にモデルルーティングテーブルが表示されています。MAIN — 高価でスマート、AUXILIARY — 安価で高速。
[18:38 / f0097]
ユーザーが記事や要約を依頼した場合は、frames.jsonl からのパスを使ってフレームを図解として挿入し、タイムコードを添えてください。
6. 自己検証 — 依頼された場合
[MM:SS / fNNNN] ラベルは飾りではなく、検証可能な参照です。機械的な監査は無料で即座に行えます。数段落を超える分析には必ず実行してください:
frameproof verify <分析ファイル.md> --out <インデックス>
これは内容に関する知識は一切持ちません。参照の整合性をチェックします:フレームが存在するか、タイムコードが正しいか、その瞬間がフレームのない区間に入っていないか、そのフレームが実際にリクエストされたか、引用された行がフレームテキストまたは近くの音声に含まれているか。
FAIL は壊れた参照です。議論ではなく修正する必要があります。WARN はフレームを開いて目で確認する理由です。
7. 盲目的な再チェック — 明示的な依頼があった場合のみ
ユーザーが「分析をチェックして」「再確認して」「本当にそれを見たのか」と言った場合にのみ、敵対的検証を実行します。
frameproof verify <ファイル> --out <インデックス> --plan
このコマンドはタスクを含むJSONを出力します。それをサブエージェント frameproof-adversary に、1回の呼び出しで委任します(主張ごとに1エージェントではなく、1つで十分です)。
サブエージェントに渡すもの: 主張の番号付きリストとフレームへのパスだけ。JSONと同じ形式で。
絶対に渡してはいけないもの(一言も):
- ユーザーが尋ねた質問
- なぜその結論に至ったかという自分の推論
- 分析の残りのテキスト
- どの回答が正しいと思うかというヒント
サブエージェントは会話履歴を見ません — これは保証されています。しかし、委任メッセージを書くのはあなたであり、これが唯一残された情報漏洩経路です。期待される答えを知っている検証者は無価値です:それを確認してしまうからです。
判定の扱い方:
CONFIRMED— そのまま残す。REFUTED— 削除せずにマークする:[再チェックで確認できず:理由]。反証者は正しい主張でも予想以上に頻繁に誤るため、判断はあなたではなく人間が行います。UNSUPPORTED— 正直に伝える:フレーム上では確認できず、音声または周辺の瞬間から結論を導いている。
このパスは自発的に実行しないでください。トークンと時間がかかります。機械的な層がほとんどの問題を無料で捕捉します。
禁止事項
- トランスクリプトだけで動画を再話し、それを画面分析と呼んではいけません。 音声と画面は食い違います:動画内で話者が「openrouter」と言っても、画面には
openrouter/pareto-code (min_coding_score 0.65)と書かれていることがあります。後者はフレームとOCRにのみ存在します。 - 「念のため」フレームを大量に読み込んではいけません。 まず検索、次にピンポイントでフレーム。
- OCRをコードの逐語的なテキストとして扱ってはいけません。 認識は句読点を間違えます:
[mainがImainと読まれることがあります。OCRはフレームを 見つける ためのものであり、画面に何が書かれているかは目で確認してください。 - ブラインドエリアについて黙っていてはいけません。 カバレッジが100%未満の場合は、そのことをユーザーに伝えてください。
不足しているものがある場合
frameproof doctor
何がインストールされていて何が不足しているかを表示します。ffmpeg と numpy は必須。yt-dlp はURLにのみ必要。文字起こしは mlx-whisper(Apple Siliconで高速)または openai-whisper(どこでも)。キーは一切不要です。