watch-video について
watch-video は、映像で確認できる事実、発話内容、推論を分けて、タイムスタンプ付きの動画分析を作成するスキルです。ローカル動画や取得可能な公開 URL を対象に、フレーム抽出と証拠確認を進めます。
主な機能
- 01タイムスタンプ付きの所見
- 02映像と音声の証拠を区別
- 03粗密を切り替えたフレーム抽出
- 04字幕と文字起こしの処理
- 05構造化レポートの検証
活用シーン
- 01映像が発話内容を裏付けるか確認
- 02動画デモを時刻付きで検証
- 03字幕と画面上の出来事を照合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tomgranot/ watch-video --skill watch-videoインストール後、Claude Code で/watch-videoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSErequirements-url.txtrequirements.txtTHIRD_PARTY_NOTICES.mdagents/openai.yamlreferences/analysis-protocol.mdscripts/acquire.pynormalize_transcript.pypackage_skill.pyrun.pysample_frames.pysetup_runtime.pysmoke_test.pyvalidate_report.pytests/test_regressions.py詳細
動画を見る
動画に何が映り、何が語られ、何が裏付けられるかを、タイムスタンプ付きで記録します。観察した内容、発言された主張、推論を分けてください。
要件
ローカルファイルには ffmpeg、ffprobe、Python 3.10 以降、Pillow が必要です。公開 URL には yt-dlp も必要です。SKILL_DIR を、このファイルがあるディレクトリに設定してください。コマンドは $SKILL_DIR/scripts/run.py 経由で実行し、存在する場合はプライベートな .venv を使用してください。ランタイムが不足しており、ローカルでの依存関係のインストールが許可されている場合は、python3 "$SKILL_DIR/scripts/setup_runtime.py" を実行してください。サインイン、ブラウザーの Cookie の読み込み、DRM や有料コンテンツの回避、アクセス制御の迂回は行わないでください。
ワークフロー
-
専用の分析ディレクトリを作成します。ソース動画は変更しないでください。
-
ソースとプラットフォームの字幕を取得します。
python3 "$SKILL_DIR/scripts/run.py" acquire <video-path-or-url> \ --output-dir <analysis-dir> [--language en]ローカルファイルを優先します。公開 URL は、
yt-dlpでサインイン、Cookie、有料コンテンツ、DRM、ブラウザーの自動操作なしに直接調査およびダウンロードできる場合に限り受け付けます。直接取得に失敗した場合は、許可を得たローカルコピーの提供を依頼してください。URL の場合は、まずプラットフォームの手動字幕を確認し、次に自動字幕を確認します。どちらもない場合はtranscript unavailableと記録し、文字起こしは生成せず、映像の分析を続けてください。ローカルファイルの場合は、同名の.vtt、.srt、.json、.json3のサイドカーファイルを検出してください。 -
<analysis-dir>/source.jsonと<analysis-dir>/transcript.mdが存在する場合は読み込みます。字幕は音声の証拠として扱い、映像の証拠としては扱わないでください。 -
粗い映像インデックスを作成します。
python3 "$SKILL_DIR/scripts/run.py" sample-frames <video-path-from-source.json> \ --output-dir <analysis-dir>/visual-overview --mode overview --scene-threshold 0.32 -
visual-overview/index.mdに記載されたすべてのコンタクトシートを開きます。映っている出来事、実演、スライドの切り替わり、画面上のテキスト、字幕との顕著な食い違いを記録します。 -
重要なタイムスタンプや曖昧なタイムスタンプの周辺で、対象を絞った高密度のパスを実行します。
python3 "$SKILL_DIR/scripts/run.py" sample-frames <video> \ --output-dir <analysis-dir>/window-<start> \ --mode dense --start <seconds> --end <seconds> --fps 4--mode every-frameは、短いフォレンジック調査区間に限って使用してください。報告されたソースのフレームレートで FFmpeg がサンプリングするため、可変フレームレートの素材では、サンプルの重複や欠落が生じる場合があります。スクリプトはデフォルトで出力数を制限します。ユーザーが可能な限り高密度の調査を必要とする場合に限り、上限を引き上げてください。 -
タイムスタンプ付きで調査結果をまとめます。実質的な主張には、根拠の種類を次のように明記してください。
observed:サンプリングしたフレームで目視できるspoken:字幕または提供された文字起こしに含まれているinferred:観察した証拠または発言された証拠に基づく合理的な結論
-
裏付けの状況を
supported、conflicted、not_foundのいずれかで示します。確信度が低い場合は、欠けている証拠を明記してください。 -
詳細な分析では、references/analysis-protocol.md のスキーマに従って
report.jsonを保存し、検証します。python3 "$SKILL_DIR/scripts/run.py" validate-report <analysis-dir>/report.json \ --manifest <analysis-dir>/visual-overview/manifest.jsonレポートで引用する各高密度ウィンドウについて、
--manifest <path>を繰り返し指定してください。
分析ルール
- まず粗く分析し、その後、重要な区間を時間的に高密度で調査します。
- 文字起こしにある主張を、動画が目視で証明している内容として説明しないでください。
- 字幕からの引用は控えめにし、通常は言い換えてください。
- チャプター、調査結果、食い違い、指定された場面にはタイムスタンプを付けてください。
- スライド、コード、図、または小さなインターフェースの文字が重要な場合は、より高解像度でフレームを調査してください。
- 字幕が自動生成、欠落、不完全、または音声と同期していない場合は、その旨を記載してください。
- 多数の散在する事実に関する質問には、広範囲を一度に走査するのではなく、対象を絞ったパスで回答してください。
- 証拠なしに、身元、意図、因果関係、または画面外の出来事を推論しないでください。
サンプリングモード、証拠スキーマ、長時間動画の扱い、失敗時のケースについては、references/analysis-protocol.md をお読みください。