Communitygithub.com

ubeann/video-context

動画URLや動画ファイルを、エージェントが読める形に変換します。投稿テキスト、キャプション/文字起こし、重複除去されたフレームを1つのバンドルフォルダにまとめます。ユーザーが動画リンク(x.com、YouTube、yt-dlp対応サイト)や動画ファイルを共有し、内容の説明や要約、学習を求めた場合に使用します。学習内容をスタディノートとして保存するのはlearnスキルの役割です。

video-context とは?

このスキルは、動画をAIエージェントが処理可能なテキストと画像の「チャネル」に分解します。具体的には、投稿の本文、音声の文字起こし(キャプションがない場合はWhisperで生成)、そして重複を除去したフレーム画像の3つのチャネルを生成し、/tmp/video-context/<slug>/ にバンドルします。ユーザーが動画リンク(x.com、YouTubeなどyt-dlp対応サイト)や動画ファイルを共有した際に、その内容を要約・説明・学習するために使用します。特に、デモ動画やチュートリアル、講義などの内容を素早く理解したい場合に有用です。このスキルはClaude CodeやCodex CLIなどのエージェント環境で動作し、抽出された各チャネルを順に読み込むことで、エージェントが動画を開かずに内容を把握できるようにします。また、学習目的の場合はlearnスキルと連携し、生成されたsummary.mdを教材として利用できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ubeann/skills/tree/main/video-context

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

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を見積もってください。

関連スキル