🚀 YouTubeコンテンツ管理MCPサーバー
YouTube Data API v3を統合し、コンテンツの発見と分析を行うためのモデルコンテキストプロトコル(MCP)サーバーです。このサーバーを使用すると、AIアシスタントがYouTubeの動画、チャンネル、プレイリストを検索し、動画、チャンネル、プレイリストの詳細な指標を取得できます。
🚀 クイックスタート
このサーバーを使用することで、AIアシスタントがYouTubeのコンテンツを検索し、詳細な指標を取得できます。まずは、YouTube APIキーを取得し、サーバーをインストールして設定しましょう。
✨ 主な機能
現在のツール
- 🎥 search_videos:再生回数、高評価数、コメント数などの高度なフィルタリングオプションでYouTubeの動画を検索します。
- 📺 search_channels:検索クエリに基づいて、登録者数、動画数、総再生回数などを含むYouTubeチャンネルを検索します。
- 📋 search_playlists:検索クエリに基づいてYouTubeのプレイリストを検索します。
- 📊 get_video_metrics:IDで特定の動画の統計情報(再生回数、高評価数、コメント数)を取得します。
- 📈 get_channel_metrics:IDで特定のチャンネルの統計情報(登録者数、総再生回数、動画数)を取得します。
- 📑 get_playlist_metrics:IDで特定のプレイリストの統計情報(アイテム数、総再生回数)を取得します。
予定されている機能
- プレイリストの作成と管理
- コメントの取得と分析
- 動画のアップロードと管理(適切な認証を伴う)
- 地域別のトレンド動画
- 動画の文字起こしアクセス
📦 インストール
前提条件
- Python 3.8以上
- YouTube Data API v3キー
- VSCodeとMCP拡張機能(VSCodeを使用する場合)
- 必要なPythonパッケージ:
google - api - python - client、python - dotenv、pydantic
YouTube APIキーの取得方法
- Google Cloud Consoleにアクセスします。
- 新しいプロジェクトを作成するか、既存のプロジェクトを選択します。
- YouTube Data API v3を有効にします:
- 「APIs & Services」>「Library」に移動します。
- 「YouTube Data API v3」を検索します。
- クリックして「Enable」を押します。
- 認証情報を作成します:
- 「APIs & Services」>「Credentials」に移動します。
- 「Create Credentials」>「API Key」をクリックします。
- 生成されたAPIキーをコピーします。
- (推奨)APIキーを制限します:
- APIキーをクリックして編集します。
- 「API restrictions」の下で、「Restrict key」を選択します。
- 「YouTube Data API v3」を選択します。
- 変更を保存します。
インストール手順
-
このリポジトリをクローンまたはダウンロードします
git clone https://github.com/NastyRunner13/youtube-content-management-mcp
cd youtube-content-management-mcp
-
依存関係をインストールします
pip install -r requirements.txt
またはuvを使用する場合:
uv install
-
環境を設定します(オプション)
プロジェクトのルートに.envファイルを作成します:
YOUTUBE_API_KEY=your_youtube_api_key_here
💻 使用例
VSCodeを使用する場合(推奨)
-
VSCodeでMCP拡張機能をインストールします。
-
VSCodeのsettings.jsonに以下を追加してMCPサーバーを構成します:
{
"mcp.servers": {
"youtube-content-management": {
"command": "python",
"args": [
"/path/to/youtube-content-management-mcp/main.py"
],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key_here"
}
}
}
}
uvを使用する代替方法:
{
"mcp.servers": {
"youtube-content-management": {
"command": "uv",
"args": [
"--directory",
"/path/to/youtube-content-management-mcp",
"run",
"main.py"
],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key_here"
}
}
}
}
-
VSCodeを再起動するか、ウィンドウを再読み込みします。
-
MCPパネルを通じて、またはAIアシスタントに尋ねることでツールを使用します。
Claude Desktopを使用する場合
Claude Desktopの設定ファイルに以下の構成を追加します:
Windows: %APPDATA%/Claude/claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"youtube-content-management": {
"command": "python",
"args": ["/path/to/youtube-content-management-mcp/main.py"],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key_here"
}
}
}
}
その他のMCPクライアントを使用する場合
このサーバーは標準のMCPプロトコルを実装しており、互換性のある任意のMCPクライアントで動作します。構成手順については、クライアントのドキュメントを参照してください。
利用可能なツール
search_videos
再生回数、高評価数、コメント数などの高度なフィルタリングオプションでYouTubeの動画を検索します。
パラメーター:
query (文字列、必須): 検索クエリ
max_results (整数、オプション): 最大結果数 (1 - 50、デフォルト: 25)
order (文字列、オプション): 並び順 - "relevance"、"date"、"rating"、"viewCount" (デフォルト: "relevance")
duration (文字列、オプション): 動画の長さ - "medium"、"long" (デフォルト: "medium")
published_after (文字列、オプション): RFC 3339タイムスタンプ (例: "2023-01-01T00:00:00Z")
使用例:
過去1年間にアップロードされたPythonチュートリアルを再生回数でソートして検索する
search_channels
検索クエリに基づいて、登録者数、動画数、総再生回数などを含むYouTubeチャンネルを検索します。
パラメーター:
query (文字列、必須): チャンネルの検索クエリ
max_results (整数、オプション): 最大結果数 (1 - 50、デフォルト: 25)
published_after (文字列、オプション): RFC 3339タイムスタンプ (例: "2023-01-01T00:00:00Z")
使用例:
コーディングチュートリアルチャンネルを検索する
search_playlists
検索クエリに基づいてYouTubeのプレイリストを検索します。
パラメーター:
query (文字列、必須): プレイリストの検索クエリ
max_results (整数、オプション): 最大結果数 (1 - 50、デフォルト: 25)
published_after (文字列、オプション): RFC 3339タイムスタンプ (例: "2023-01-01T00:00:00Z")
使用例:
機械学習に関するプレイリストを検索する
get_video_metrics
特定のYouTube動画の統計情報(再生回数、高評価数、コメント数)を取得します。
パラメーター:
video_id (文字列、必須): YouTube動画のID
使用例:
IDがdQw4w9WgXcQの動画の指標を取得する
get_channel_metrics
特定のYouTubeチャンネルの統計情報(登録者数、総再生回数、動画数)を取得します。
パラメーター:
channel_id (文字列、必須): YouTubeチャンネルのID
使用例:
IDがUC_x5XG1OV2P6uZZ5FSM9Ttwのチャンネルの指標を取得する
get_playlist_metrics
特定のYouTubeプレイリストの統計情報(アイテム数、すべての動画の総再生回数)を取得します。
パラメーター:
playlist_id (文字列、必須): YouTubeプレイリストのID
使用例:
IDがPL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwUのプレイリストの指標を取得する
サンプル対話
MCPサーバーを構成したら、AIアシスタントを通じてサーバーと対話できます。
指標付きの動画検索:
"過去6か月間の機械学習チュートリアルを再生回数でソートし、再生回数を表示する"
指標付きのチャンネル検索:
"YouTubeで登録者数を含むトップの料理チャンネルを検索する"
プレイリスト検索:
"Pythonプログラミングに関するプレイリストを表示する"
動画指標取得:
"IDがdQw4w9WgXcQの動画の再生回数と高評価数を取得する"
チャンネル指標取得:
"IDがUC_x5XG1OV2P6uZZ5FSM9Ttwのチャンネルの登録者数と総再生回数はいくつですか?"
プレイリスト指標取得:
"IDがPL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwUのプレイリストにはいくつの動画があり、総再生回数はいくつですか?"
📚 ドキュメント
入力検証
すべてのツールはPydanticを使用して堅牢な入力検証を行い、以下のことを保証します。
- 必須フィールド(例:
query、video_id)が提供され、空でないこと。
- 数値フィールド(例:
max_results)が有効な範囲(1 - 50)内であること。
- 文字列フィールド(例:
order、duration)が許可された値と一致すること。
- タイムスタンプ(例:
published_after)がRFC 3339形式に従うこと。
無効な入力は明確なエラーメッセージを表示し、信頼性とユーザーエクスペリエンスを向上させます。
セキュリティに関する注意事項
- APIキーをバージョン管理にコミットしないでください
- APIキーをハードコーディングする代わりに、環境変数を使用することを検討してください
- APIキーを定期的にローテートしてください
- Google Cloud ConsoleでAPIの使用状況を監視してください
- APIキーの制限を設定し、使用をYouTube Data API v3に限定してください
トラブルシューティング
一般的な問題
- "YouTube API key is not set"
- APIキーが環境変数に正しく構成されていることを確認してください。
- キーが有効で、YouTube Data API v3が有効になっていることを確認してください。
- "quotaExceeded"エラー
- 1日のAPIクォータ制限(デフォルト: 10,000ユニット)に達しています。
- クォータがリセットされるまで待つか(毎日)、Google Cloud Consoleでクォータを増やしてください。
- 注意: 指標ツールと指標付きの検索ツールは、複数のAPI呼び出しのため、より多くのクォータを消費する可能性があります。
- "keyInvalid"エラー
- APIキーが無効または取り消されています。
- 新しいAPIキーを生成し、構成を更新してください。
- "Invalid input arguments"エラー
- Pydanticのエラーメッセージを確認して詳細を確認してください(例: 欠落している
query、無効なorder)。
- 入力がツールのパラメーター要件に一致することを確認してください。
- MCPサーバーが起動しない
- すべての依存関係(
google - api - python - client、python - dotenv、pydantic)がインストールされていることを確認してください。
- 構成内のPythonパスが正しいことを確認してください。
- MCP拡張機能のログを確認して詳細なエラーメッセージを確認してください。
デバッグモード
デバッグログを有効にするには、環境に以下を追加します:
"env": {
"YOUTUBE_API_KEY": "your_key_here",
"DEBUG": "true"
}
貢献方法
貢献を歓迎します!以下の分野での支援が可能です:
- 追加のYouTube APIエンドポイント(コメント、文字起こし)
- APIクォータの使用を最適化する(例: 指標呼び出しのバッチ処理)
- Pydanticの検証ルールを強化する
- パフォーマンスの最適化
- ドキュメントの改善
- テストとバグレポート
API制限
- YouTube Data API v3: 1日あたり10,000ユニット(デフォルト)
- 検索操作: リクエストあたり100ユニット
- リスト操作(動画、チャンネル、プレイリスト): リクエストあたり1ユニット
- プレイリストアイテム: リクエストあたり5ユニット
- レート制限: 特に指標ツールを使用する場合、連続して多くのリクエストを行わないように注意してください。
サポート