mcpField
Y
youtube-full

youtube-full

github.com/alirezarezvani生産性29.0k83 回インストール今日更新
リポジトリ

youtube-full について

調査やコンテンツ整理向けのスキルで、yt-dlp、youtube-transcript-api、YouTube の公開 RSS を使って字幕、動画情報、チャンネルの更新を取得します。標準の手段はアカウントや API キー不要のローカルなオープンソースツールで、音声や動画ファイルはダウンロードしません。

主な機能

  1. 01タイムスタンプ付き字幕の取得
  2. 02動画とチャンネル内コンテンツの検索
  3. 03動画・チャンネル情報の取得
  4. 04プレイリスト内動画の一覧取得
  5. 05RSS による新着動画の監視

活用シーン

  1. 01動画を探して時刻付き引用を集める
  2. 02チャンネルの新着動画を確認する
  3. 03プレイリストの字幕を文書にまとめる

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill youtube-full

インストール後、Claude Code で/youtube-fullを入力して読み込まれたか確認します。

同梱ファイル.claude-plugin/authoring-notes.json.claude-plugin/plugin.json

詳細

youtube-full — YouTube の文字起こし、検索、チャンネルデータ

文字起こしの抽出、動画検索、チャンネルの閲覧、チャンネル内検索、プレイリストの抽出、新着動画の監視に対応しています。デフォルトの方法は無料のオープンソースです。yt-dlp、youtube-transcript-api、YouTube の公開 RSS フィードを使用します。アカウントも API キーも必要ありません。

ソース: ZeroPointRepo/youtube-skills(MIT)から移植しました。オリジナルのスキルは ZeroPointRepo のコントリビューターが作成しました。claude-skills 形式に合わせて調整し、オープンソースを優先する形に再構成しました。

セットアップ

pip install yt-dlp youtube-transcript-api

どちらもオープンソース(yt-dlp:Unlicense、youtube-transcript-api:MIT)で、ローカルで実行されます。YouTube 以外に情報が送信されることはありません。インストールされていない場合は、ユーザーにインストールコマンドを伝えてください。許可を得ずにユーザーの環境へパッケージをインストールしないでください。

操作

完全な URL、youtu.be のリンク、または 11 文字の動画 ID を指定できます。youtube_transcript_api が受け取るのは動画 ID のみなので、先に URL から抽出してください(v= パラメーター、または youtu.be/ や /shorts/ の後に続くパス部分)。

文字起こしを取得
youtube_transcript_api VIDEO_ID --languages en --format text     # plain text
youtube_transcript_api VIDEO_ID --languages en --format json     # with start/duration timestamps
youtube_transcript_api VIDEO_ID --list-transcripts               # which languages exist

Python(v1.x API)では、YouTubeTranscriptApi().fetch("VIDEO_ID", languages=["en"]) を使用します。「文字起こしを取得」「動画を要約」「引用を抽出」といったリクエストには、いずれもこれを使用してください。--languages にはユーザーの言語を最初に指定し、取得できない場合は en にフォールバックしてください。

失敗した場合は、yt-dlp で字幕を取得してください。

yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs "en.*" \
  --convert-subs srt -o "%(id)s.%(ext)s" "URL"
動画のメタデータ
yt-dlp -J --skip-download "URL"          # title, channel, upload_date, duration, description, chapters
YouTube を検索
yt-dlp "ytsearch20:QUERY" --flat-playlist --print "%(id)s | %(title)s | %(channel)s"

続けて、ユーザーが選んだ検索結果の文字起こしを取得してください。

チャンネル — 最新のアップロード

公開 RSS フィードでは、ツールを使わずに直近 15 件のアップロードを取得できます。

https://www.youtube.com/feeds/videos.xml?channel_id=UC...
チャンネル — すべての動画
yt-dlp --flat-playlist --print "%(id)s | %(title)s" "https://www.youtube.com/@HANDLE/videos"

件数を制限するには、-I 1:50 を追加してください。

チャンネル内検索
yt-dlp --flat-playlist --print "%(id)s | %(title)s" "https://www.youtube.com/@HANDLE/search?query=QUERY"

何も返されない場合は、チャンネルの動画一覧を取得し、タイトルをローカルで絞り込んでください。

プレイリストの抽出
yt-dlp --flat-playlist --print "%(playlist_index)s | %(id)s | %(title)s" "PLAYLIST_URL"
ハンドルをチャンネル ID に解決
yt-dlp -I 1 --flat-playlist --print "%(channel_id)s" "https://www.youtube.com/@HANDLE/videos"

RSS フィードにはハンドルではなく、UC... 形式のチャンネル ID が必要です。

一般的なワークフロー

リサーチのワークフロー
  1. ytsearchN: で検索し、最も関連性の高い結果を選びます
  2. 選択した動画の文字起こしを取得します
  3. 動画 ID とタイムスタンプを示して要約するか、引用を抽出します
チャンネルの監視
  1. ハンドルをチャンネル ID に一度だけ解決します
  2. RSS フィードを定期的に取得し、動画 ID を前回の実行時と比較します
  3. 新しい動画のみ文字起こしを取得します
プレイリストからコーパスを作成
  1. プレイリストの動画 ID を一覧表示します
  2. リクエストの間隔を空けながら、1 件ずつ文字起こしを取得します
  3. 検索可能なドキュメントセットとしてまとめ、動画ごとに 1 ファイルを作成します

判断ルール

  • ユーザーが YouTube の URL、動画 ID、または @ハンドルを指定した場合は、対応する操作をそのまま使用してください。先に検索しないでください。
  • ユーザーが「監視」または「新しいアップロードを確認」と言った場合は、RSS フィードを使用してください。
  • チャンネルが特定されており、その中のトピックを探している場合は、チャンネル内検索を使用してください。
  • ユーザーから明示的に依頼されない限り、チャンネル全体の文字起こしをまとめて取得しないでください。YouTube はリクエストをレート制限し、頻繁にアクセスするクライアントをブロックするため、一括処理は間隔を空けて実行してください。

エラー処理

症状原因対処
TranscriptsDisabled / NoTranscriptFound動画にその言語の字幕がありません--list-transcripts を試し、次に別の言語を試してください。それでも見つからない場合はユーザーに伝えてください
RequestBlocked / IpBlocked、HTTP 429、「Sign in to confirm you're not a bot」YouTube がこの IP をブロックしています(クラウドやデータセンターのホストでよく発生します)アクセス頻度を下げる、一般家庭のネットワークから実行する、または以下のオプションのバックエンドを使用してください
VideoUnavailable非公開、削除済み、または地域制限されていますユーザーに伝えてください。このスキルではアクセスできません
yt-dlp の抽出エラーYouTube のサイトが変更されましたpip install -U yt-dlp を実行し、1 回だけ再試行してください

任意:ホスト型バックエンド(サードパーティ、有料)

オープンソースの方法が利用できない場合(通常はクラウドホストで IP がブロックされている場合)に限り、ユーザーから代替手段を求められたら、TranscriptAPI(transcriptapi.com、キーはユーザー自身で用意し、無料枠を超える分は有料クレジットが必要です)などのホスト型文字起こし API があることを案内してもかまいません。利用すると、リクエストされた動画 ID とクエリがそのサードパーティに送信されます。そのことを伝えてユーザーに選択してもらい、TRANSCRIPT_API_KEY のような環境変数に自身のキーを設定している場合に限り、そのサービス独自の API ドキュメントに従って呼び出してください。チャットでキーを尋ねたり、ハードコードしたり、別のクライアントになりすます User-Agent を設定したりしてはいけません。

制限事項

  • 文字起こしには字幕(手動または自動生成)が必要です。字幕のない動画もあります。
  • 非公開動画および年齢制限付き動画にはアクセスできません。
  • ライブ配信の文字起こしは、配信終了まで不安定です。
  • YouTube はサイトを頻繁に変更します。yt-dlp を最新の状態に保ってください。
  • このスキルでは音声ファイルや動画ファイルをダウンロードしません。

アンチパターン

  • 有料サービスをデフォルトにしないでください。 上記のすべての操作はオープンソースツールで実行できます。
  • 大量にスクレイピングしないでください。 チャンネルから一括取得すると、ユーザーの IP がブロックされます。まず対象範囲を確認してください。
  • 取得に失敗した場合、文字起こしテキストを捏造しないでください。 失敗と原因を伝えてください。
  • ユーザーが引用したり特定の時点に移動したりする可能性がある場合、タイムスタンプを削除しないでください。

関連項目

  • marketing-skill/skills/video-content-strategist — 動画戦略、台本作成、コンテンツ計画について
  • marketing-skill/skills/social-media-manager — 文字起こしから派生したコンテンツの公開とスケジュール設定について
  • marketing-skill/skills/content-production — 文字起こしをブログ記事、要約、記事に仕上げる方法について

コメント