mcpField
Y
youtube-downloader

youtube-downloader

github.com/crazynomadクリエイティブ・メディア27103 回インストール13 週間前に更新
リポジトリ

youtube-downloader について

youtube-downloaderは、yt-dlpを利用してYouTubeなどの対応サイトから動画を保存するスキルです。動画・音声、字幕、プレイリストのダウンロードに対応し、メタデータも保持します。

主な機能

  1. 01YouTubeなど1000以上のサイトからダウンロード
  2. 02画質または音声のみを選択
  3. 03MP3などの形式で音声を抽出
  4. 04字幕とプレイリストをダウンロード
  5. 05メタデータとサムネイルを保持
  6. 06中断したダウンロードの再開と進捗表示

活用シーン

  1. 01YouTubeなどの対応サイトから動画を保存
  2. 02動画からMP3音声を抽出
  3. 03プレイリストから指定した動画をダウンロード
  4. 04動画の字幕とメタデータを保存

インストール

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

$npx skills add https://github.com/crazynomad/skills --skill youtube-downloader

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

同梱ファイルscripts/download_video.py

詳細

YouTube 動画ダウンローダー (yt-dlp)

yt-dlp を使用して YouTube やその他 1000 以上のサイトから動画をダウンロードします。

説明

yt-dlp をベースにした強力な動画ダウンローダースキルで、YouTube、Bilibili、Twitter/X、TikTok など多くのプラットフォームをサポートします。フォーマット選択、音声抽出、字幕ダウンロード、プレイリスト対応、メタデータ保存などの機能を備えています。

使用する場面

以下のような場合にこのスキルを使用します:

  • YouTube の URL を提示して動画をダウンロードしたい
  • 「動画をダウンロード」「動画を保存」「YouTube から動画を保存」と言及した
  • 動画から音声を抽出したい (MP3)
  • プレイリストやチャンネルをダウンロードしたい
  • 動画の字幕/キャプションが必要
  • 対応サイト (Bilibili、Twitter、TikTok など) からの動画ダウンロードをリクエストした

機能

  • マルチプラットフォーム対応: YouTube、Bilibili、Twitter/X、TikTok、Vimeo、および 1000 以上のサイト
  • フォーマット選択: 動画品質 (1080p、720p、4K) または音声のみを選択
  • 音声抽出: 音声を MP3、M4A、その他の形式で抽出
  • 字幕ダウンロード: 多言語の字幕を自動ダウンロード
  • プレイリスト対応: プレイリストやチャンネル全体をダウンロード
  • メタデータ保存: 動画情報、サムネイル、説明を保存
  • レジューム対応: 中断されたダウンロードを再開
  • 進捗表示: リアルタイムのダウンロード進捗

使用方法

基本構文
python scripts/download_video.py "VIDEO_URL" [OPTIONS]
一般的なシナリオ

単一動画をダウンロード (最高品質):

python scripts/download_video.py "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

特定の品質で動画をダウンロード:

python scripts/download_video.py "https://www.youtube.com/watch?v=VIDEO_ID" -f 1080

音声のみを抽出 (MP3):

python scripts/download_video.py "https://www.youtube.com/watch?v=VIDEO_ID" --audio-only

字幕付きでダウンロード:

python scripts/download_video.py "https://www.youtube.com/watch?v=VIDEO_ID" --subtitles

プレイリストをダウンロード:

python scripts/download_video.py "https://www.youtube.com/playlist?list=PLAYLIST_ID" --playlist

プレイリストから N 本の動画をダウンロード:

python scripts/download_video.py "https://www.youtube.com/playlist?list=PLAYLIST_ID" --playlist -n 5

出力ディレクトリを指定:

python scripts/download_video.py "URL" -o /path/to/output
引数
引数説明デフォルト
url動画/プレイリストの URL (必須)-
-o, --output出力ディレクトリカレントディレクトリ
-f, --format動画品質: best、1080、720、480、360best
--audio-only音声のみを抽出 (MP3)False
--subtitles字幕をダウンロードFalse
--sub-lang字幕の言語en,zh-Hans
--playlistプレイリストのダウンロードを有効化False
-n, --countプレイリストから取得する動画数すべて
--metadata動画メタデータを JSON で保存True
--thumbnailサムネイルをダウンロードFalse
--cookiescookies ファイルのパス (年齢制限コンテンツ用)なし

依存関係

# Install yt-dlp
pip install yt-dlp --break-system-packages

# For audio extraction (optional)
# macOS
brew install ffmpeg

# Ubuntu/Debian
apt-get install ffmpeg

出力構造

単一動画
OutputDir/
├── Video Title [VIDEO_ID].mp4     # Video file
├── Video Title [VIDEO_ID].json    # Metadata (if --metadata)
├── Video Title [VIDEO_ID].jpg     # Thumbnail (if --thumbnail)
└── Video Title [VIDEO_ID].en.vtt  # Subtitles (if --subtitles)
プレイリスト
OutputDir/
└── PlaylistName/
    ├── playlist_info.json
    ├── 001 - Video Title.mp4
    ├── 001 - Video Title.json
    ├── 002 - Another Video.mp4
    └── ...
メタデータの例
{
  "title": "Video Title",
  "uploader": "Channel Name",
  "upload_date": "2024-01-15",
  "duration": 300,
  "view_count": 1000000,
  "description": "Video description...",
  "tags": ["tag1", "tag2"],
  "video_file": "Video Title [VIDEO_ID].mp4"
}

Claude との統合

ユーザーが動画のダウンロードをリクエストした場合:

  1. スキルドキュメントを読み込む:

    view("/mnt/skills/user/youtube-downloader/SKILL.md")
    
  2. 依存関係をインストール (必要な場合):

    pip install yt-dlp --break-system-packages
    
  3. ダウンロードを実行:

    python /mnt/skills/user/youtube-downloader/scripts/download_video.py \
      "USER_URL" -o /mnt/user-data/outputs
    
  4. ユーザーにファイルを提示:

    present_files(["/mnt/user-data/outputs/..."])
    

対応プラットフォーム

主要プラットフォーム
  • YouTube: 動画、Shorts、プレイリスト、チャンネル、ライブ配信
  • Bilibili: 動画、エピソード (cookies が必要な場合あり)
  • Twitter/X: 動画ツイート
  • TikTok: 動画 (cookies が必要な場合あり)
  • Vimeo: 動画
  • Twitch: VOD、クリップ
完全なリスト

yt-dlp は 1000 以上のサイトをサポートしています。完全なリストを表示するには yt-dlp --list-extractors を実行してください。

よくある問題

Q: 年齢制限のある動画は? A: ブラウザからエクスポートした cookies を --cookies で指定してください: --cookies cookies.txt

Q: フォーマットが利用できない? A: 一部の動画にはすべての品質オプションが存在しない場合があります。スクリプトが利用可能な最良のものを自動選択します。

Q: ダウンロード速度が遅い? A: 通常はサーバー側のスロットリングが原因です。VPN の使用や時間をおいての再試行を検討してください。

Q: 非公開動画にログインが必要? A: ログイン後にブラウザから cookies をエクスポートし、--cookies を使用してください。

Q: 音声抽出が失敗する? A: ffmpeg をインストールしてください: brew install ffmpeg (macOS) または apt install ffmpeg (Linux)

会話例

ユーザー: 「この YouTube 動画をダウンロードして: https://www.youtube.com/watch?v=dQw4w9WgXcQ」

Claude:

# Install yt-dlp
pip install yt-dlp --break-system-packages

# Download video
python /mnt/skills/user/youtube-downloader/scripts/download_video.py \
  "https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
  -o /mnt/user-data/outputs

# Present files
present_files([...])

ユーザー: 「この YouTube 動画の音声をダウンロードして、MP3 だけでいい」

Claude:

python /mnt/skills/user/youtube-downloader/scripts/download_video.py \
  "VIDEO_URL" \
  --audio-only \
  -o /mnt/user-data/outputs

ユーザー: 「このプレイリストをダウンロードして、最初の 5 本の動画だけでいい」

Claude:

python /mnt/skills/user/youtube-downloader/scripts/download_video.py \
  "PLAYLIST_URL" \
  --playlist -n 5 \
  -o /mnt/user-data/outputs

仕組み

ワークフロー
  1. URL 解析: プラットフォームとコンテンツタイプ(動画/プレイリスト)を検出します
  2. フォーマット選択: ユーザーの希望に基づいて利用可能な最適なフォーマットを決定します
  3. ダウンロード: 進捗を表示しながら動画/音声をストリーミングします
  4. 後処理: 音声を抽出し(要求された場合)、字幕を埋め込みます
  5. メタデータ: 動画情報を JSON に保存します
内部の仕組み

このスキルは、適切なデフォルト設定で yt-dlp をラップします:

  • 最高品質のための自動フォーマット選択
  • 適切なファイル名のサニタイズ
  • 失敗したダウンロードのリトライロジック
  • ETA 付きの進捗表示

制限事項

  • 一部のサイトでは認証(Cookie)が必要な場合があります
  • 年齢制限のあるコンテンツにはブラウザの Cookie が必要です
  • ダウンロード速度はソースサーバーに依存します
  • 一部の DRM 保護されたコンテンツはダウンロードできません
  • ライブ配信は終了後(VOD)にのみダウンロードできます

法的通知

このツールは個人利用のみを目的としています。以下を尊重してください:

  • YouTube 利用規約
  • お住まいの地域の著作権法
  • コンテンツクリエイターの権利

アクセスする権利のあるコンテンツのみをダウンロードしてください。著作権で保護された素材を再配布しないでください。

バージョン履歴

v1.0(現行)

  • yt-dlp ラッパーによる初回リリース
  • 動画、音声、字幕、プレイリストのサポート
  • メタデータとサムネイルの保持
  • マルチプラットフォーム対応

参考リンク

コメント