tubedata について
tubedata は、YouTubeの公開データをJSONで取得するローカルブリッジです。検索結果、動画やチャンネルの詳細、文字起こしを必要とするアプリやワークフロー向けで、HasDataのホスト型MCPサーバーへリクエストを転送し、CLIとstdio MCPにも対応します。
主な機能
- 01動画・チャンネル・Shortsの検索
- 02動画詳細とタイムコード付き文字起こしの取得
- 03チャンネルページとタブの取得
- 04検索結果の絞り込みとページ取得
- 05CLI と stdio MCP モード
活用シーン
- 01テーマに沿ったYouTube動画の検索
- 02動画の詳細と文字起こしの確認
- 03チャンネルの投稿と登録者数の確認
MCP 対応
ローカル MCP サーバーとしてYouTubeの検索、動画、チャンネル、文字起こしツールをMCPクライアントに公開し、呼び出しをHasDataのホスト型MCPサーバーへ転送します。CLIからの実行にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| gl | string | いいえ | 検索対象を限定する国の 2 文字の国コードです。ドキュメントに記載された値を正確に 1 つ指定してください(245 種類に対応)。例:`ac`、`af`。 |
| hl | string | いいえ | 検索に使用する言語の 2 文字コードです。ドキュメントに記載された値(159 種類)のいずれかを正確に指定してください。例:`af`、`ak`。 |
| tab | enum | いいえ | スクレイピングするチャンネルタブ。各タブは異なる形式のコンテンツを返します: - `featured`(デフォルト)— チャンネルのホームページ(チャンネルトレーラー + キュレーション行) - `videos` — アップロード済みの長尺動画 - `shorts` — Shorts フィード - `streams` — 過去および今後のライブ配信 - `playlists` — 作成済みおよび保存済みの再生リスト - `posts` / `community` — コミュニティ投稿 - `podcasts` — ポッドキャストエピソード - `releases` — 音楽リリース - `about` — チャンネルの説明、リンク、統計情報 - `store` — チャンネルグッズfeatured | videos | shorts | streams | playlists | posts | community | podcasts | releases | about | store |
| channelId | string | はい | YouTube チャンネル識別子。正規のチャンネル ID(`UC…`、24 文字)または `@` で始まる公開ハンドル(例:`@PewDiePie`)を指定します。旧形式の `/c/<custom>` および `/user/<name>` URL スラッグも使用できます。 |
| deviceType | enum | いいえ | リクエストに使用するデバイスの種類。desktop | mobile |
| paginationToken | string | いいえ | 次の結果ページを取得するための、前回のレスポンスで返されたトークン。 |
詳細
tubedata
tubedata は、JSON 形式で YouTube データを返す、ホスト型 HasData YouTube MCP サーバーへの小規模なローカルブリッジです。検索クエリを渡すと、結果ページを動画、チャンネル、ショート動画、棚、広告に分けて返します。動画 ID を 1 つ渡すと、その動画の詳細情報またはタイムスタンプ付き文字起こしを取得します。チャンネル ID またはハンドルを渡すと、そのチャンネルのページをタブごとに取得します。
このブリッジは YouTube データを独自には保持しません。ライブエンドポイントから取得した内容そのままの上流サーバーのツール一覧をローカルで提供し、各ツール呼び出しを上流に転送して、結果を変更せずに返します。取得されたインターフェースは読み取り専用の公開 YouTube データで、アップロード、コメント投稿、メッセージ送信、決済のツールは含まれていません。
ツール
hasdata_youtube_search_getYoutubeSearchResults— YouTube を検索します。必須項目:q。任意のフィルターにはgl、hl、deviceType、sp、sortBy、date、videoType、length、filters__、paginationTokenがあります。動画、チャンネル、ショート動画の検索結果、棚、広告、総結果数を返します。hasdata_youtube_video_getYoutubeVideo— 11 文字の ID で動画を 1 本取得します。必須項目:v。 任意項目:gl、hl、deviceType。タイトル、再生回数と高評価数、再生時間、チャンネル、説明、字幕トラック、音楽の一致情報、関連動画の一覧を返します。hasdata_youtube_channel_getYoutubeChannel— ID(UC...)またはハンドル(@name)でチャンネルを 1 つ取得します。 必須項目:channelId。任意項目:tab、gl、hl、deviceType、paginationToken。チャンネルの情報、登録者数、指定したタブの項目を返します。hasdata_youtube_transcript_getYoutubeTranscript— 動画のタイムスタンプ付き文字起こしを取得します。必須項目:v。 任意項目:languageCode、type(自動生成されたトラックの場合はasr)。文字起こしのセグメントと、動画で利用可能なすべてのトラックを返します。
設定
HASDATA_YOUTUBE_MCP_URL(任意)— 上流エンドポイントを上書きします。デフォルトはhttps://mcp.hasdata.com/mcp?apis=youtubeです。(この上書き用の仕組みは、この再構築で独自にラベル付けされたものです。)HASDATA_API_KEY(任意)— 設定すると、すべての上流リクエストに、呼び出し元自身の HasData API キーを使ったx-api-key: <key>ヘッダーが付加されます。未設定の場合、キーのヘッダーは送信されません。(ヘッダー名と環境変数名は、元のレジストリレコードに基づいて固定されています。この環境変数からキーを転送する動作は、独自にラベル付けされた再構築です。元のインターフェースはキーなしで取得されました。)
転送の仕組み
最初のツール呼び出し時に、クライアントは上流とのストリーミング可能な
HTTP セッションを開始します。まず JSON-RPC の
initialize リクエスト(protocolVersion 2025-03-26、
clientInfo の name は tubedata)、次に
notifications/initialized 通知、その後、呼び出し元の引数を変更せずに含めた
tools/call リクエストを送信します。上流が initialize
への応答で Mcp-Session-Id ヘッダーを返した場合、その値は
セッションの後続リクエストすべてに付加され、プロセスの終了までセッションが再利用されます。応答は通常の JSON またはサーバー送信イベントとして届く場合があり、どちらも読み取ります。
上流からの正常な結果は、上流が設定した isError フラグも含め、そのまま転送されます。
JSON-RPC エラー、2xx 以外のステータス、読み取れない応答、完了できないリクエストなどの失敗は、テキストが tubedata error: で始まる isError 結果として返されます(このエラー表示は、この再構築で独自にラベル付けされたものです)。
CLI
各ツールは、JSON 引数文字列を 1 つ受け取るサブコマンドとしても実行できます。
npx @reneturcios/tubedata hasdata_youtube_search_getYoutubeSearchResults '{"q":"lofi beats"}'
npx @reneturcios/tubedata hasdata_youtube_video_getYoutubeVideo '{"v":"dQw4w9WgXcQ"}'
npx @reneturcios/tubedata hasdata_youtube_channel_getYoutubeChannel '{"channelId":"@PewDiePie"}'
npx @reneturcios/tubedata hasdata_youtube_transcript_getYoutubeTranscript '{"v":"dQw4w9WgXcQ","languageCode":"en"}'
npx @reneturcios/tubedata --version
終了コード:成功時は 0、isError の結果の場合は 1、使用法エラーの場合は 2 です。
MCP サーバー
npx -y @reneturcios/tubedata mcp
MCP クライアントの設定:
{
"mcpServers": {
"tubedata": {
"command": "npx",
"args": ["-y", "@reneturcios/tubedata", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/tubedata
docker run --rm ghcr.io/cloudcorprecords/tubedata --version
コンテナーのデフォルトコマンドは mcp なので、最初の形式は stdio MCP サーバーとして動作します。それ以外の引数は通常どおり CLI に渡されます。
開発
npm install
npm run build
npm test
npm run dev
テストスイートは、スタブ化された JSON-RPC 上流のみを使って実行され、ライブネットワークへの呼び出しはありません。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。