mcpField
V
video

video

github.com/guimatheus92クリエイティブ・メディア107235 回インストール5 日前に更新
リポジトリ

video について

動画の音声、画面上の文字、フレームを使って質問に答えたり要約したりするエージェント向けスキルです。回答にはタイムスタンプを付け、video-analyzer MCP ツールまたは CLI を利用します。

主な機能

  1. 01動画への質問応答と要約
  2. 02回答へのタイムスタンプ記載
  3. 03MCP ツールと CLI の利用
  4. 04音声・OCR・フレームの分析

活用シーン

  1. 01動画の内容に関する質問への回答
  2. 02時刻付きの動画要約
  3. 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 ドキュメントが出力されます。続いて、次の手順を実行してください。

  1. stdout から JSON を解析します。
  2. 質問に映像情報が必要な場合は、frames[].filePath の画像を(並列で)読み込みます。
  3. トランスクリプト、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 を設定してサーバーを再起動するよう伝えてください。その場合も、クラウドのメタデータエンドポイントは引き続きブロックされます。

コメント