Video context
モデルはテキストと画像を読み取るため、動画は3つのチャネルに変換されます:動画周辺の投稿、発言内容(キャプション、なければ文字起こし)、表示内容(フレーム)。スクリプトはファイルを調査し、見つかったものに応じて処理を振り分けます。無音の画面録画や効果音付きアニメーションでは文字起こしは生成されず、フレームがすべての情報を担います。バンドルに存在するとマークされたチャネルを読み、動画を開かなくても次の読み手が利用できる要約を作成します。
手順
1. 抽出
sh ~/.claude/skills/video-context/references/extract.sh <url-or-file>
実行するとバンドルパス(デフォルトは /tmp/video-context/<slug>/)が出力されます。デフォルト設定:3秒ごとに1フレーム、最大60フレーム(超過時は間隔を調整)、ダウンロード解像度は1080p上限。設定項目はスクリプトの先頭に記述されています:INTERVAL、MAX_FRAMES、MAX_HEIGHT、FORCE_TRANSCRIBE、WHISPER_MODEL、SUB_LANGS。終了コード2は不足ツールを示します。references/setup.md を参照してインストールし、再実行してください。
バンドル内の README.md に各チャネルが「存在」「不在」「空」「スキップ」のいずれかとしてリストされれば完了です。
2. チャネルを読み取る
最初に README.md を読んでください。投稿テキストとチャネル表に基づいて、何を開くかを決定します。
- 発言(Said):
captions.txtまたはtranscript.txtを全文読んでください。自動キャプションは製品名などの固有名詞を誤認識することがあるため、投稿テキストとフレームで修正してください。 - 表示(Shown):
frames/をタイムスタンプ順に読んでください。20フレームを超える場合は、まず3フレームごとに読み、その後質問に関連する範囲に戻って読んでください。両方のチャネルが存在する場合は、文字起こしの主張とフレームを照合してください。デモで言っていることと画面に表示されていることが異なる場合があります。
「存在」マークが付いたすべてのチャネルを読み、すべてのフレームを開くか、スキップした範囲として名前を付けて記録すれば完了です。
3. 要約
バンドル内に summary.md を作成します:
- 1段落:形式(デモ、トーキングヘッド、アニメーション、画面録画)と動画の要点。
- タイムライン:
[m:ss]順の箇条書き。各箇条書きに1つの表示内容または発言。文字起こしはそのまま引用。 - 1行:チャネルが伝えなかった内容を記載。音声なし、スポンサー部分、速すぎてフレームで追えない編集など。
すべてのタイムライン箇条書きに対応するフレームファイルまたは文字起こし行があり、空チャネルの行がREADME表と一致すれば完了です。
4. 返答
質問された規模で回答し、ユーザーがフレームを開けるようにバンドルパスを伝えてください。学習に関する質問の場合は、learn スキルに summary.md を記事ブランチの取得元として渡して続行します。
作業の習慣
- より細かいフレーム間隔が必要な範囲は、個別に実行します。
ffmpeg -ss <start> -t <length> -i clip.mp4 -c copy part.mp4でトリミングし、INTERVAL=1でpart.mp4を抽出します。動画全体を細かい間隔で再実行すると、読むべきフレームが増加します。 - 文字起こしはデフォルトで英語です。他の言語の場合は多言語モデルが必要です。
references/setup.mdに記載があります。 - Twitterのキャプションは存在しないため、音声を含むx.comクリップでは常にWhisperが実行されます。クリップの長さの約5分の1を見積もってください。