video について
動画の音声、画面上の文字、フレームを使って質問に答えたり要約したりするエージェント向けスキルです。回答にはタイムスタンプを付け、video-analyzer MCP ツールまたは CLI を利用します。
主な機能
- 01動画への質問応答と要約
- 02回答へのタイムスタンプ記載
- 03MCP ツールと CLI の利用
- 04音声・OCR・フレームの分析
活用シーン
- 01動画の内容に関する質問への回答
- 02時刻付きの動画要約
- 03画面録画に含まれる小さな文字の読解
MCP 対応
video-analyzer が接続されている場合、動画分析、特定場面、文字起こし、メタデータ、フレーム取得のツールを使います。未接続の場合は mcp-video-analyzer CLI を利用します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ guimatheus92/ mcp-video-analyzer --skill videoインストール後、Claude Code で/videoを入力して読み込まれたか確認します。
詳細
与えられた動画を分析し、ユーザーの質問に答えてください(質問がない場合は要約してください)。回答では必ずタイムスタンプ(M:SS)を示してください。
ルート A — video-analyzer MCP ツールを利用可能(推奨)
このセッションで video-analyzer MCP サーバーに接続されている場合は、CLI を使わず、ツールを直接呼び出してください。
- 一般的な質問、または質問なし →
analyze_video(詳細度"standard") - 「X:XX で何が起きますか」/特定の場面 →
analyze_moment(時間範囲)またはget_frame_at - 音声だけで答えられる質問 →
get_transcript(高速、ダウンロード不要) - タイトル/長さ/再生回数/コメントのみ →
get_metadata(ダウンロード不要) - 動きのある映像や急速に変化する UI →
get_frame_burst
1 秒未満の動きを調べる場合は、小数の時間範囲を使用してください(例:0:01.1 ~ 0:01.3)。
FFmpeg によるバースト抽出では、指定された数を上限として、実際のソースフレームを返します。
要求レートがソースのフレームレートを超えても、フレームは重複しません。
小数のタイムスタンプが指定されている場合は、そのまま保持してください。ブラウザーのフォールバックでは小数のシーク位置を使用しますが、これは実測されたソースフレームの提示タイムスタンプではありません。
高密度 UI のキャプチャ(ターミナル、ダッシュボード、IDE、スプレッドシートなど、小さな文字が重要な場合):これらのツールのいずれかで maxWidth を指定してください。出力されるフレームは既定で幅 800 px に制限されます。これにより、1920×1080 の画面録画が 800×450 になり、15 px の UI フォントはビジョンモデルで読み取れない大きさになります。maxWidth: 0 ではソース解像度が維持され、1568 のような値は中間的な設定です。ネイティブ解像度のフレームはコンテキストを数倍多く消費するため、概要ではなく、詳細に確認する場合に設定値を上げてください。
get_frame_burst は、{ frameCount, from, to, warnings, frames: [{ time, timingOrigin }] } を含む JSON テキストブロックを返し、その後に frames とまったく同じ順序で画像を返します。timingOrigin: "source-pts" は、FFmpeg が測定した動画基準の提示時間を示し、"seek-target" は、要求されたブラウザーのシーク時間を示します。空または品質が低下した結果では、frames: [] が返されます。
ルート B — MCP サーバーなし(シェルを使える任意のエージェント)
Bash 経由でワンショット CLI を実行してください(初回実行時は npm パッケージをダウンロードするため、時間がかかりますが、問題ではありません。進行状況は stderr に出力されます)。
npx -y mcp-video-analyzer@latest analyze "<video-url-or-path>"
stdout には、metadata、transcript(タイムスタンプ付きエントリー)、ocrResults(画面上のテキスト)、timeline、warnings、およびディスク上の JPEG キーフレームを指す { time, filePath, mimeType } の配列 frames が含まれる、単一の JSON ドキュメントが出力されます。続いて、次の手順を実行してください。
- stdout から JSON を解析します。
- 質問に映像情報が必要な場合は、
frames[].filePathの画像を(並列で)読み込みます。 - トランスクリプト、OCR、フレームに基づいて回答し、タイムスタンプを示します。
便利なフラグ:--detail brief|standard|detailed(brief はメタデータとトランスクリプトのみ。フレーム抽出は行わない、高速かつ低コストの方法です)、--fields metadata,transcript(出力される JSON のみをフィルタリングします。フレームは standard の詳細度で引き続き計算されます)、--max-frames <1-60>、--max-width <px>(フレーム幅の上限。既定値は 800。0 ではソース解像度を維持します。小さな文字が重要な高密度 UI キャプチャに使用してください)、--language <code>(文字起こし言語を指定)、--out <dir>(フレームのコピー先)、--force-refresh。全オプションを確認するには、npx -y mcp-video-analyzer@latest analyze --help を実行してください。
前提条件と機能縮退
- Node.js 22.12+(必須)。
ffmpegは同梱されているため、インストールは不要です。 - プラットフォームの URL(YouTube、Instagram、TikTok など)を使用するには、PATH 上に
yt-dlpが必要です。直接指定した.mp4/.webm/.movの URL とローカルファイルは、なくても動作します。Loom の文字起こし、メタデータ、コメントにもyt-dlpは不要です。Loom のフレームには通常必要です。Loom はほとんどの動画を、yt-dlpでしか取得して結合できない、個別の DASH 動画ストリームと音声ストリームとして配信するためです。これがなくても、一部の動画では CDN フォールバックを利用できます。 - このツールは部分的な結果でも失敗しません。
warnings配列には、対処に役立つヒント(yt-dlp のインストール、Instagram/年齢制限付きコンテンツ向けのYTDLP_COOKIES_FROM_BROWSER、Whisper バックエンドの欠落)が含まれます。関連する警告はエラーとして扱わず、ユーザーに伝えてください。 - 「音声なし」という警告とともに文字起こしが空の場合、動画に実際に音声がないことを意味します(ミュートされた Reels/Stories でよく見られます)。これはコンテンツの特性であり、失敗ではありません。
- パブリックなアドレスへの
http(s)URL のみ受け付けます。localhost、プライベート/LAN のアドレス範囲、.local名、UNC 共有、または HTTP 以外のスキームを使った URL は、理由を示すメッセージとともに最初から拒否されます。これは意図的な拒否であり、一時的なエラーではないため、再試行したり回避を試みたりしないでください。ユーザーが自分のネットワーク上にある動画を本当に必要としている場合は、MCP_ALLOW_PRIVATE_URLS=1を設定してサーバーを再起動するよう伝えてください。その場合も、クラウドのメタデータエンドポイントは引き続きブロックされます。