Video URL Analyzer について
Video URL Analyzerは、YouTube、TikTok、Instagramの動画や画像投稿を分析するMCPサーバーです。Geminiによる音声・映像分析に加え、文字起こし、場面検索、証拠抽出、チュートリアル手順の整理に対応します。
主な機能
- 01音声と映像の一括分析
- 02タイムスタンプ付き文字起こし
- 03動画内容への質問
- 04場面検索とフレーム抽出
- 05技術動画から手順を抽出
活用シーン
- 01多言語動画の文字起こし
- 02動画内の特定場面の特定
- 03チュートリアルからコマンドやコードを抽出
- 04後続質問向けの動画コンテキスト保存
MCP 対応
FastMCPのstdio経由で18個のツールをMCPクライアントに公開し、動画分析、ローカルコンテキスト管理、フレームやクリップの抽出を行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
17掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | 動画の URL(YouTube、TikTok、Instagram、またはその他)。 |
| model | string | いいえ | 使用する Gemini モデル。デフォルトは gemini-2.5-flash です。 |
| prompt | string | いいえ | カスタム分析プロンプト。デフォルトは包括的な分析です。 |
詳細
Video Analyzer MCP サーバー
AI であらゆる動画を分析 — YouTube、TikTok、Instagram
Google Gemini 3.5 Flash · FastMCP · yt-dlp を利用
機能 · アーキテクチャ · クイックスタート · 連携 · セキュリティ · العربية
機能
v1.5.4 では 18 個の MCP ツールを提供します。
| ツール | 機能 |
|---|---|
analyze_video | カスタムプロンプトを使って音声と映像を総合的に分析します。Gemini のマルチモーダル理解を利用します。 |
get_transcript | 話者を識別し、タイムスタンプ付きの文字起こしを抽出します。自動検出により 100 以上の言語に対応します。 |
ask_about_video | 動画の内容について自由に質問できます。 |
prepare_slideshow_assets | 並べ替え済みのスライドショー画像を MCP の画像ブロックとして返すため、Claude/クライアント AI が直接確認できます。 |
find_video_moments | 簡潔・標準・詳細の構造化出力で、条件に一致する場面を検索します。 |
analyze_video_segment | 指定した時間範囲のみを分析します。 |
prepare_video_context | 一度分析して、追加質問や根拠の検索に再利用できるローカルコンテキストを保存します。 |
ask_video_context | デフォルトでは保存済みコンテキストに基づいて回答します。Gemini による再分析は明示的に選択した場合にのみ行われます。 |
list_video_contexts | 保存済みのローカルコンテキストを一覧表示します。 |
delete_video_context | 保存済みのコンテキストを 1 件削除します。 |
get_video_frame | ローカルの静止画を抽出します。可能な場合は YouTube の高速処理を利用します。 |
get_video_clip | ローカルの短いクリップを抽出します。上限は 30 秒で、可能な場合は YouTube の高速処理を利用します。 |
get_video_evidence_asset | 保存済みの根拠を選び、フレームまたはクリップへの参照を返します。 |
list_video_sources | ローカルのソース、コンテキスト、アセットのキャッシュメタデータを確認します。 |
cleanup_video_cache | 管理対象のキャッシュファイルを、削除せずに確認するか、削除します。デフォルトは削除前の確認です。 |
watch_and_analyze | 技術動画から、チュートリアルの手順、シェルコマンド、コードスニペット、ファイルパスを抽出します。 |
execute_tutorial_steps | 抽出した手順を安全に検証・確認し、確認後にのみ実行します。 |
check_analysis_job | TikTok/Instagram の非同期ダウンロードについて、バックグラウンドジョブの状態を確認します。 |
対応プラットフォーム
| プラットフォーム | 方法 | 速度 |
|---|---|---|
| YouTube | Gemini で直接分析するため、分析時にダウンロードは不要です。フレーム/クリップの抽出には、利用可能な場合 yt-dlp -g のストリーム URL と ffmpeg を使い、利用できない場合は短い区間をダウンロードします。 | 即時/ローカル抽出は高速 |
| TikTok | tikwm.com API(高速)→ yt-dlp によるフォールバック。可能な場合、サポート対象外の ByteDance bvc2/bytevc2 ストリームを避ける安全な MP4 H.264/H.265 セレクターを使用します。 | 約 8 秒 |
| curl_cffi によるページスクレイピング(高速)→ yt-dlp によるフォールバック | 約 10 秒 |
写真/スライドショー投稿
| プラットフォーム | 投稿タイプ | 処理 |
|---|---|---|
| TikTok | 写真モードのスライドショー | すべての画像をダウンロードし、利用可能な場合は音楽/音声トラックを抽出して、マルチモーダルな Gemini リクエストを 1 回送信します。 |
| カルーセル/単一写真の投稿 | 画像スライドを順番にダウンロードし、1 つの投稿として分析します。動画が混在するスライドはメタデータを添えてスキップします。 | |
| YouTube | コミュニティの /post/ 画像添付 | ytInitialData をスクレイピングし、画像添付をダウンロードして、Gemini Files API を通じて分析します。 |
YouTube 動画は Gemini のネイティブな動画理解機能を通じて直接分析されます。ダウンロードもアップロードも不要で、最大限の速度を実現します。 YouTube の証拠アセットでは、
source.mp4が常に必要とは限りません。保存されたコンテキストには元の URL が保持されるため、フレーム/クリップツールは後からローカルストリームの高速経路を利用できます。
アーキテクチャ
| コンポーネント | 役割 |
|---|---|
| Gemini 3.5 Flash | 最新の Gemini Flash モデル。音声と映像を 1 回の処理で包括的に理解します。 |
| FastMCP 3.x | stdio トランスポート上の MCP プロトコルフレームワーク |
| yt-dlp + curl_cffi | ボット対策を回避するため、Chrome ブラウザーになりすまして動画をダウンロードします。TikTok のダウンロードでは、ローカルでデコード可能な MP4 H.264/H.265 形式を優先し、ByteDance の bvc2/bytevc2 ストリームは拒否します。 |
| tikwm.com API | yt-dlp が WAF にブロックされた場合の TikTok 高速経路フォールバック |
| ffmpeg | ローカルでのフレーム/クリップ抽出。動画全体をダウンロードせずに YouTube のストリーム URL を抽出する機能も含みます。 |
| バックグラウンドジョブ | Claude Desktop のタイムアウトを防ぐため、TikTok/Instagram で非同期スレッド処理を行います。内部処理の失敗は完了ジョブではなく、失敗ジョブとして報告されます。 |
動作モード
これらは動作モードであり、ツール名ではありません。
| モード | 動作 |
|---|---|
auto | デフォルトの適応動作です。YouTube は直接分析し、TikTok/Instagram は高速 API/スクレイピングを試してから yt-dlp にフォールバックします。利用可能な場合は保存済みコンテキストを再利用します。 |
api | Gemini を利用した分析または再分析です。分析ツールと、明示的に Gemini を使用する場合に使われます。 |
client | MCP クライアントのワークフローモードです。TikTok/Instagram の長時間分析では、ポーリング用のバックグラウンド job_id を返します。 |
local | Gemini を明示的に要求しない限り、Gemini を使わずに保存済みコンテキスト、キャッシュ、フレーム、クリップを処理します。 |
クイックスタート
パッケージ化されたランタイムは src/video_url_analyzer_mcp/server.py にあり、
コンソールのエントリーポイントは video_url_analyzer_mcp:main です。ワークフローに合ったインストール方法を選んでください。
オプション A — Windows 用ワンラインインストーラー(新規ユーザーに推奨)
irm https://raw.githubusercontent.com/u2n4/video-url-analyzer-mcp/main/install.ps1 | iex
インストーラーは現在の MCP クライアントの一般的な方法に従っています。PyPI から uvx でインストール/実行し、既存の GEMINI_API_KEY 環境変数が設定されている場合はそれを使用します。設定されていない場合は、非表示のプロンプトでのみキーを尋ね、サーバーの登録先を選択できます。
- Claude Code
- Claude Desktop
- Codex CLI
- Cursor
- Windsurf
- VS Code / GitHub Copilot
- Google Antigravity
- Cline
PowerShell コマンドに API キーを追加しないでください。キーを入力しなくても、インストーラーはサーバーを登録します。GEMINI_API_KEY は後から設定できます。GEMINI_API_KEY がすでにユーザー環境変数に設定されている場合、インストーラーはその値を直接使用し、AIza...abcd のようにマスクされた形式のみを表示します。
オプション B — uvx(インストール不要)
uvx video-url-analyzer-mcp
uv が PATH にあれば、Windows/macOS/Linux で動作します。
オプション C — チェックアウトから起動する Windows ウィザード
git clone https://github.com/u2n4/video-url-analyzer-mcp.git
cd video-url-analyzer-mcp
powershell -ExecutionPolicy Bypass -File scripts\install_windows.ps1
ウィザードでは、次の操作を行います。
- Python 3.10 以降と、必要に応じて
uvを検証します。 - パッケージを編集可能なチェックアウトとしてインストールするか、
uv tool installでインストールします。 GEMINI_API_KEYをユーザー環境変数 または Git で無視される.env.keys.localに保存できます。ログではキーがマスクされ(AIza...abcd)、全文が表示されることはありません。VIDEO_ANALYZER_MODELを使ってデフォルトモデルを選択できます。- オフラインのインポートスモークテストを実行します。
- クライアントのセットアップでは
scripts/configure_mcp_clients.ps1に引き継ぎます。
オプション D — 手動インストール(すべての OS)
git clone https://github.com/u2n4/video-url-analyzer-mcp.git
cd video-url-analyzer-mcp
pip install -e .
python -m video_url_analyzer_mcp
Google AI Studio で無料のキーを取得し、シェル環境に一度設定します(Windows では setx GEMINI_API_KEY ...、macOS/Linux では ~/.zshrc または ~/.bashrc)。ローカル開発専用であれば、リポジトリの隣にある、Git で無視される .env.keys.local に保存することもできます。
Windows ランチャー
start.bat は .env.keys.local(存在する場合)を読み込み、安全なデフォルト値(VIDEO_ANALYZER_MODE=auto)を設定して、python -m video_url_analyzer_mcp を実行します。単一の実行ファイルを指定する MCP クライアントでは、command の値として使用してください。
統合
対話型メニューを使うには scripts/configure_mcp_clients.ps1 を実行するか、docs/mcp-config-examples.md のスニペットをコピーしてください。ウィザードは既存のクライアント設定をバックアップし、JSON/TOML を検証します。また、関係のない MCP サーバーを上書きすることはありません。
クライアント設定では、ローカル MCP サーバーのエントリ名に video-analyzer を使用します。公開パッケージ名は引き続き video-url-analyzer-mcp、レジストリ名は引き続き io.github.u2n4/video-url-analyzer-mcp です。
Claude Desktop(%APPDATA%\Claude\claude_desktop_config.json)
{
"mcpServers": {
"video-analyzer": {
"command": "uvx",
"args": ["video-url-analyzer-mcp"]
}
}
}
ウィザードでは、API キーを OS 環境変数に保存する方法が優先されます。キーを設定に埋め込む必要がある場合は、"env": { "GEMINI_API_KEY": "YOUR_KEY_HERE" } を追加してください。
Claude Code(CLI)
claude mcp add video-analyzer --transport stdio -- uvx video-url-analyzer-mcp
または、リポジトリ内で pip install -e . を実行した後に、次のようにします。
claude mcp add video-analyzer --transport stdio -- python -m video_url_analyzer_mcp
Codex CLI(~/.codex/config.toml)
[mcp_servers.video-analyzer]
command = "uvx"
args = ["video-url-analyzer-mcp"]
VS Code / GitHub Copilot MCP
ワークスペースの登録では .vscode/mcp.json に書き込みます。
{
"inputs": [
{
"type": "promptString",
"id": "video-url-analyzer-gemini-api-key",
"description": "Gemini API key for video-url-analyzer-mcp",
"password": true
}
],
"servers": {
"video-analyzer": {
"type": "stdio",
"command": "uvx",
"args": ["video-url-analyzer-mcp"],
"env": {
"GEMINI_API_KEY": "${input:video-url-analyzer-gemini-api-key}"
}
}
}
}
すべてのクライアントで、設定を編集した後、新しい MCP サーバーが読み込まれるようにアプリケーションを再起動してください。Cursor、Windsurf、Antigravity(%USERPROFILE%\.gemini\antigravity\mcp_config.json)、Cline を含むすべてのスニペットは、docs/mcp-config-examples.md にあります。
使用例
# Full video analysis with Gemini 3.5 Flash
analyze_video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
# Custom analysis prompt
analyze_video("https://www.tiktok.com/@user/video/123",
prompt="List every product shown and estimate prices")
# Multilingual transcript extraction
get_transcript("https://www.instagram.com/reel/ABC123/", lang="ar")
# Ask specific questions about video content
ask_about_video("https://youtu.be/abc",
question="What programming language is used in the tutorial?")
# Analyze once, then ask locally from the saved context
prepare_video_context("https://youtu.be/abc", detail="standard")
ask_video_context("https://youtu.be/abc",
question="What happens near the end?")
# Extract visual evidence without embedding binary data in the tool output
get_video_frame("https://youtu.be/abc", timestamp="00:30")
get_video_clip("https://youtu.be/abc", start="00:20", end="00:28")
# Watch & build — extract tutorial steps
watch_and_analyze("https://www.youtube.com/watch?v=tutorial123")
セキュリティ
このサーバーは、包括的な脅威モデル監査に基づいてセキュリティを強化しています。
| レイヤー | 保護 |
|---|---|
| SSRF | URL 許可リスト — YouTube、TikTok、Instagram のドメインのみ許可します。プライベート IP、localhost、file:// はブロックします。 |
| コマンドインジェクション | shell=False + shlex.split()。危険なコマンドをブロックリストで制限します(rm -rf、リバースシェル、eval、パイプ経由のシェル実行)。 |
| パストラバーサル | 25 種類以上の機密パスパターンをブロックします(.ssh、.aws、.env、システムディレクトリ、AppData)。 |
| TLS | すべてのダウンロードで証明書を完全に検証します。 |
| ブラウザーの Cookie | VIDEO_ANALYZER_COOKIES=true による明示的な有効化が必要です。デフォルトでは無効です。 |
| ダウンロードサイズ | 動画 1 本あたり 100 MB の上限を設けています。 |
| DoS 保護 | バックグラウンドジョブの同時実行数は最大 10 件です。1 時間後に自動的に期限切れになります。解析データの保存数は最大 200 件です。 |
| スキーマ検証 | Gemini の JSON 応答を実行前に検証します。応答サイズは 500K 文字に制限されています。 |
| 依存関係 | 実行時の依存関係のバージョン範囲は pyproject.toml で管理されています。 |
環境変数
| 変数 | 説明 | デフォルト |
|---|---|---|
GEMINI_API_KEY | Google Gemini API キー | 必須 |
ANALYSES_DIR | 分析結果の保存先ディレクトリ | ./analyses |
VIDEO_CONTEXT_DIR | 再利用可能な動画コンテキストの保存先ディレクトリ | video_contexts |
VIDEO_SOURCE_DIR | ダウンロードしたソースメディアのキャッシュ先ディレクトリ | video_sources |
VIDEO_ASSET_DIR | 抽出したフレーム/クリップの保存先ディレクトリ | video_assets |
VIDEO_ANALYZER_COOKIES | ブラウザーの Cookie へのアクセスを有効にするかどうか(true/false) | false |
VIDEO_DOWNLOAD_TIMEOUT | ダウンロードと yt-dlp のタイムアウト値を秒単位で上書きします | 既存の操作ごとのデフォルト値 |
VIDEO_FFMPEG_TIMEOUT | ffmpeg による抽出のタイムアウト値を秒単位で上書きします | 既存の操作ごとのデフォルト値 |
VIDEO_GEMINI_TIMEOUT | Gemini HTTP のタイムアウトを秒単位で指定します(省略可能) | SDK のデフォルト |
VIDEO_IMAGE_DOWNLOAD_CONCURRENCY | TikTok/Instagram/YouTube の写真投稿における画像の並列ダウンロード数 | 6 |
VIDEO_GEMINI_UPLOAD_CONCURRENCY | ダウンロードしたメディアとスライドショー画像の Gemini Files への並列アップロード数 | 4 |
VIDEO_ANALYZER_MODEL | 高速モデルと詳細モデルの両方の解決に使用する、共通のデフォルトモデル ID。個別の model= と GEMINI_FAST_MODEL/GEMINI_DEEP_MODEL の指定が優先されます。 | 未設定 |
GEMINI_FAST_MODEL | コンパクト/標準詳細モードで使用するモデルの上書き値 | gemini-3.5-flash |
GEMINI_DEEP_MODEL | full 詳細モードで使用するモデルの上書き値 | gemini-3.1-pro-preview |
デフォルトの高速モデル:
gemini-3.5-flash。デフォルトの詳細モデル (detail="full"の場合に使用):gemini-3.1-pro-preview。両方をまとめて上書きするには、VIDEO_ANALYZER_MODELを設定してください。モデルの利用可否は Google アカウント、地域、 API ティアによって異なる場合があります。最新の ID がまだお使いの キーで有効になっていない場合は、gemini-flash-latestを代わりに使用してください。 |VIDEO_ANALYZER_MODE| 動作プリセット(auto/api/client/local)。start.batによって読み取られます |auto|
トラブルシューティング
| 問題 | 解決方法 |
|---|---|
GEMINI_API_KEY not set | .env ファイルを作成するか、環境変数として渡してください |
| TikTok のダウンロードに失敗する | tikwm.com へのフォールバックが自動的に有効になります。curl_cffi がインストールされていることを確認してください。 |
TikTok の bvc2/bytevc2 コーデック | v1.4 では、互換性のある MP4 H.264/H.265 形式が存在する場合、サポートされていないこれらの ByteDance ストリームを回避します。互換性のあるストリームがない場合、ツールはアップロードや成功したかのような動作をせず、構造化された unsupported_codec または no_compatible_format エラーを返します。 |
| Instagram のダウンロードに失敗する | ブラウザーの偽装サポートを有効にするには pip install curl_cffi を実行してください |
Windows で ENOENT が発生する | Claude Desktop の設定でコマンドとして start.bat を使用してください |
| 偽装対象が利用できない | 再インストールしてください:pip install "yt-dlp[curl-cffi]" |
| Claude Desktop のタイムアウト | TikTok/Instagram はバックグラウンドで実行されます。check_analysis_job(job_id) を使用して状況を確認してください |
| バックグラウンドジョブが失敗を示す | ワーカーの結果がエラーの場合、Gemini ファイルの処理に失敗した場合、またはメディアの検証でソースが拒否された場合に発生します。check_analysis_job は、これらの内部エラーを完了として報告しなくなりました。 |
prepare_video_context が処理を繰り返す | force_refresh=true を指定しない限り、キャッシュ済みのコンテキストを再利用します |
YouTube の source.mp4 が見つからない | 場合によっては想定される動作です。フレーム/クリップ用ツールは保存済みの URL から復元し、yt-dlp -g と ffmpeg による高速抽出を利用できます。 |
| 一時的な Gemini 503/5xx エラー | Gemini の generate_content 呼び出しは、指数バックオフを使用して最大 3 回再試行されます。4xx の認証/スキーマ/ユーザーエラーは再試行されません。 |
技術スタック
| テクノロジー | バージョン | 用途 |
|---|---|---|
| Google Gemini 3.5 Flash | 最新 | マルチモーダル動画分析エンジン |
| FastMCP | 3.3.1+ | MCP プロトコルフレームワーク |
| yt-dlp | 2026.3.17+ | 動画ダウンローダー |
| curl_cffi | >=0.7.4,<0.15.0 | ブラウザーの偽装(TLS フィンガープリント)。yt-dlp 2026.03.17 との互換性のため、バージョンを固定しています |
| google-genai | 2.5.0+ | Google 公式 GenAI SDK |
ライセンス
MIT
アラビア語
AI 動画分析サーバー
Google Gemini 3.5 Flash を使用して動画を分析する MCP サーバーです。Google の最新マルチモーダル Gemini Flash モデルを使用します。
機能
| ツール | 説明 |
|---|---|
analyze_video | カスタム指示に対応した、音声と映像の包括的な分析 |
get_transcript | タイムスタンプ付きで音声の文字起こしを取得します。100 以上の言語に対応しています |
ask_about_video | 動画の内容について、あらゆる質問ができます |
prepare_video_context | 動画を一度分析し、再利用可能なコンテキストをローカルに保存します |
ask_video_context | デフォルトでは Gemini を使わず、保存したコンテキストから回答します |
get_video_frame / get_video_clip | ローカルの証拠として画像またはクリップを抽出します。yt-dlp + ffmpeg を使った YouTube 向けの高速処理にも対応しています |
watch_and_analyze | 技術チュートリアルから手順、コマンド、コードを抽出します |
execute_tutorial_steps | 抽出した手順を確認し、安全に実行します |
対応プラットフォーム
| プラットフォーム | 速度 |
|---|---|
| YouTube | 即時 — ダウンロードせずに直接分析 |
| TikTok | 約 8 秒 — 高速な tikwm.com API |
| 約 10 秒 — ページから直接抽出 |
クイックインストール(Windows)
リポジトリをクローンして、対話型セットアップウィザードを実行します。
git clone https://github.com/u2n4/video-url-analyzer-mcp.git
cd video-url-analyzer-mcp
powershell -ExecutionPolicy Bypass -File scripts\install_windows.ps1
インストールせずに使う場合:uvx video-url-analyzer-mcp。
セキュリティ
サーバーは次の脅威から保護されています。
- SSRF — 許可されたドメインのみを許可するホワイトリスト
- コマンドインジェクション — 危険なコマンドをブロックし、shell を使わずに実行
- パストラバーサル — 25 以上の機密パスをブロック
- 過負荷対策 — 同時タスク数を最大 10 件に制限
API キーの取得
- Google AI Studio にアクセスします
- 無料の API キーを作成します
.envファイルに設定します。
GEMINI_API_KEY=مفتاحك_هنا
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。