mcpField
Y
youtube-content

youtube-content

github.com/nousresearch生産性258.1k505 回インストール今日更新
リポジトリ

youtube-content について

youtube-contentは、YouTube動画の文字起こしを取得し、構造化された形式に整えるスキルです。動画の要約、章立て、SNS投稿、記事の作成に利用できます。

主な機能

  1. 01YouTube URLから文字起こしを取得
  2. 02JSON、プレーンテキスト、タイムスタンプで出力
  3. 03章立てと要約の作成
  4. 04スレッドやブログ記事への再構成
  5. 05利用不可・空の文字起こしへの対応

活用シーン

  1. 01YouTube動画リンクの要約
  2. 02タイムスタンプ付き章立てや引用の作成
  3. 03文字起こしからSNSスレッドを作成
  4. 04動画内容をもとにブログ記事を作成

インストール

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

$npx skills add https://github.com/nousresearch/hermes-agent --skill youtube-content

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

同梱ファイルreferences/output-formats.mdscripts/fetch_transcript.py

詳細

YouTube コンテンツツール

使用する場面

ユーザーが YouTube の URL や動画リンクを共有したとき、動画の要約や文字起こしを依頼したとき、または YouTube 動画のコンテンツを抽出して整形したいときに使用します。文字起こしを、構造化されたコンテンツ(チャプター、要約、スレッド、ブログ記事)に変換します。

YouTube 動画から文字起こしを抽出し、役立つ形式に変換します。

セットアップ

PM が準備した Hermes のソースチェックアウトにある Python を、terminal で使用します。 youtube エクストラでヘルパーの依存関係を指定します。Hermes に pip を直接実行したり、プロジェクトを自動検出する uv run を使ってパッケージをインストールしたりしないでください。

このチェックアウトで、まず Package Management にある分離された開発用ホームのセットアップに従い、次にエクストラを準備してから再アクティベートし、ヘルパーを実行します。

source ./activate
python -c "import pm; pm.sync_venv(['youtube'], explicit=True)"
source ./activate
python -c "import youtube_transcript_api; print(youtube_transcript_api.__file__)"

Windows では、source ./activate の代わりに . .\activate.ps1 を使用してください。ターミナルが別のホストやサンドボックスで動作している場合は、エージェントの本番環境ではなく、そこで明示的に分離したヘルパー環境を使用してください。以下のすべてのコマンドは、インポートチェックに成功したインタープリターで実行してください。

ヘルパースクリプト

SKILL_DIR は、この SKILL.md ファイルが置かれているディレクトリです。このスクリプトは、標準的な YouTube URL 形式、短縮リンク(youtu.be)、ショート動画、埋め込み動画、ライブ配信リンク、または 11 文字の動画 ID をそのまま受け付けます。

# JSON output with metadata
python SKILL_DIR/scripts/fetch_transcript.py "https://youtube.com/watch?v=VIDEO_ID"

# Plain text (good for piping into further processing)
python SKILL_DIR/scripts/fetch_transcript.py "URL" --text-only

# With timestamps
python SKILL_DIR/scripts/fetch_transcript.py "URL" --timestamps

# Specific language with fallback chain
python SKILL_DIR/scripts/fetch_transcript.py "URL" --language tr,en

出力形式

文字起こしを取得したら、ユーザーの依頼に応じて形式を整えます。

  • チャプター:話題の変化ごとにまとめ、タイムスタンプ付きのチャプター一覧を出力します
  • 要約:動画全体を 5~10 文で簡潔にまとめます
  • チャプターごとの要約:各チャプターの短い段落要約を付けます
  • スレッド:Twitter/X のスレッド形式。番号付きの投稿にし、それぞれ 280 文字以内にします
  • ブログ記事:タイトル、セクション、重要なポイントを含む記事全体を作成します
  • 引用:タイムスタンプ付きで注目すべき引用を紹介します
例 — チャプター出力
00:00 Introduction — host opens with the problem statement
03:45 Background — prior work and why existing solutions fall short
12:20 Core method — walkthrough of the proposed approach
24:10 Results — benchmark comparisons and key takeaways
31:55 Q&A — audience questions on scalability and next steps

ワークフロー

  1. 取得:terminal と準備済みの Python を使用し、--text-only --timestamps を指定して文字起こしを取得します。
  2. 検証:出力が空でないこと、および想定された言語であることを確認します。空の場合は、利用可能な文字起こしを取得するため --language を指定せずに再試行します。それでも空の場合は、動画で文字起こしが無効になっている可能性をユーザーに伝えます。
  3. 必要に応じて分割:文字起こしが約 50K 文字を超える場合は、重複部分を含むチャンク(約 40K 文字、重複 2K 文字)に分割し、各チャンクを要約してから統合します。
  4. 変換:指定された出力形式に変換します。形式が指定されていない場合は、要約を既定とします。
  5. 確認:変換後の出力を読み直し、内容の一貫性、タイムスタンプの正確さ、情報の完全性を確認してから提示します。

エラー処理

  • 文字起こしが無効:その旨をユーザーに伝え、動画ページで字幕が利用できるか確認するよう案内します。
  • 非公開または利用できない動画:エラー内容を伝え、URL の確認を依頼します。
  • 該当する言語がない:利用可能な文字起こしを取得するため、--language を指定せずに再試行し、実際の言語をユーザーに伝えます。
  • 依存関係が見つからない:上記の PM による準備と再アクティベートを繰り返し、ヘルパーがその Python を使用していることを確認します。選択した生成環境を pip で修復しないでください。

コメント