YouTubeをはじめとする各種動画配信サービスから動画や音声をダウンロード・保存する際、エンジニアやクリエイターの間で事実上の世界標準ツール(デファクトスタンダード)となっているのが yt-dlp (表記揺れとして ytdlp や yt dlp とも検索されます)です。かつて定番だった youtube-dl の開発停止に伴い誕生した高機能フォークであり、最高画質MP4の自動結合、高音質MP3の抽出、プレイリストの一括取得、アクセス制限への迅速な対応力など、圧倒的な性能と利便性を誇ります。
しかし、コマンドラインツール(CLI)に不慣れな方やWindowsユーザーにとっては、「オプションが多すぎてどのコマンドを使えばいいかわからない」「環境変数PATHの設定で挫折した」「403 ForbiddenエラーやBot判定が出てダウンロードが止まってしまう」といったつまずきポイントが多いのも事実です。
そこで本記事では、システム運用と自動化を追求するエンジニア Bash玄(ばっしゅげん) が、 yt-dlp(ytdlp)の使い方と実務で役立つコマンド一覧 を徹底解説します。冒頭のコピペ用クイックスタートから、Windows(winget)・Mac・Linuxの最速導入手順、最高画質保存、MP3音声抽出、403エラー・Bot判定の最新回避策(夜間ビルド・Cookie連携・Denoランタイム設定)、設定ファイルの自動化まで網羅しました。「手作業でのダウンロード作業は負け」をモットーに、シンプルでスマートな動画保存環境を最短で手に入れましょう!
【クイックスタート】今すぐ使える定番コマンド3選
「細かい説明を読む前に、今すぐ動画を保存したい!」という方のために、日常の実務で 最も利用頻度の高い鉄板コマンド3選 をまとめました。ターミナル(Windowsの場合はコマンドプロンプトまたはPowerShell、Mac/Linuxの場合はTerminal)を開き、末尾の "URL" を保存したい動画のURLに置き換えて実行するだけで即座に完了します。
1. 最高画質で動画(MP4)をダウンロードする
YouTubeなどの動画を、互換性の高いMP4形式かつ提供されている 最高画質・最高音質 で結合保存する決定版コマンドです。パソコンの標準プレイヤーやスマートフォン(iPhone / Android)、動画編集ソフトで再生できないトラブルを完全に防ぎます。
# 最高画質の映像と音声を自動結合してMP4で保存(URLを置き換えて実行)
yt-dlp -f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b" --merge-output-format mp4 "URL"
2. 音声のみ(MP3 / 最高音質)を抽出して保存する
ミュージックビデオ、ポッドキャスト、作業用BGM、語学学習などの動画から 音声のみを最高音質(VBR 0)のMP3 として抽出し、タイトルやサムネイルジャケット写真(カバーアート)を自動で埋め込んで保存します。
# 音声のみを最高音質MP3として抽出(メタデータ&サムネイル自動埋め込み)
yt-dlp -x --audio-format mp3 --audio-quality 0 --embed-metadata --embed-thumbnail "URL"
3. yt-dlp本体を最新版にアップデートする
動画共有プラットフォーム側の仕様変更によって「ダウンロードが突然失敗する」「速度が極端に遅くなる」現象が発生した際、 真っ先に実行すべき復旧コマンド です。
# yt-dlp本体を公式最新安定版へ自動アップデート
yt-dlp -U
※ それでも解決しない突発的な仕様変更には、後述する 夜間ビルド版(nightly)への更新 (yt-dlp --update-to nightly)が極めて有効です。
yt-dlpとは?youtube-dlとの違いと選ばれる理由
yt-dlp は、オープンソースで活発に開発が続けられているコマンドライン動画・音声ダウンロードツールです。世界中の数千を超えるWebサイトに対応しており、シンプルなコマンド1行でWeb上のメディアストリームを自由自在にローカル環境へ保存できます。
開発が停止したyoutube-dlの後継高機能フォーク
長年にわたり動画ダウンロードの代名詞だった youtube-dl は、2021年頃から開発が大幅に停滞し、配信プラットフォーム側の仕様変更(暗号化シグネチャの変更やダウンロード帯域のスロットリング制限)に対応できなくなりました。その結果、「ダウンロード速度が数十KB/sまで落ちる」「エラーで動画が取得できない」という問題が頻発するようになりました。
これに対し、有志の開発コミュニティによってフォークされ誕生した yt-dlp は、以下のような圧倒的なアドバンテージを備え、現在では世界中のエンジニア・クリエイターから支持されるデファクトスタンダードとなりました:
- 圧倒的なダウンロード速度 :マルチスレッドによる並列ダウンロード(
-Nオプション)に対応し、サーバー側の帯域制限(スロットリング)を回避して高速に取得。 - プラットフォーム仕様変更への超高速追従 :配信側の仕様変更が発生しても、数時間〜数日単位で迅速に修正パッチが提供される強力な開発体制。
- 高度なフォーマット選択 :最高画質の映像と最高音質の音声を自動判別して結合する柔軟なセレクター構文(
-f)やソート機能(-S)。 - 最新のBot判定・403エラー回避機能 :ブラウザCookieのインポート(
--cookies-from-browser)や外部JavaScriptランタイム(Deno / Node.js)との連携に対応。 - 広告・スポンサー区間のスキップ機能 :SponsorBlockとのネイティブ連携により、動画内のプロモーション区間を自動検出してスキップ・除去可能。
表記揺れ(yt-dlp / ytdlp)と対応プラットフォーム
本ツールの正式名称およびコマンド名はハイフン付きの yt-dlp ですが、キーボード入力のしやすさから検索やSNSでは ytdlp または yt dlp というハイフンなしの表記揺れが広く浸透しています。Web検索で情報を探す際は「ytdlp 使い方」「ytdlp コマンド」などで調べても全く同一のツールを指します。
また、ターミナルで毎回ハイフンを入力するのが手間な場合は、シェルの設定ファイル(~/.bashrc や ~/.zshrc)に以下の エイリアス(alias) を1行登録しておくと、ytdlp コマンドで起動できるようになり快適です:
# ~/.bashrc または ~/.zshrc に追記してエイリアスを設定
alias ytdlp="yt-dlp"
# 設定を現在のシェルに即座に反映
source ~/.bashrc # Zshの場合は source ~/.zshrc
Windows(PowerShell)の場合は、プロファイル($PROFILE)に Set-Alias -Name ytdlp -Value yt-dlp を設定することで同様に短縮呼び出しが可能です。
yt-dlpは、YouTubeをはじめ、Vimeo、Dailymotion、X(旧Twitter)、Twitch、ニコニコ動画、SoundCloudなど、国内外の 数千を超えるWebサイト・プラットフォーム に標準で対応しています。
OS別インストール手順(環境構築)
yt-dlpの導入は、お使いのOSに合わせた公式推奨手順を踏むことで、初心者でも数分で完了します。動画と音声を高画質で結合するために FFmpegの導入も必須 となりますので、あわせてセットアップしていきましょう。
【Windows最速】wingetコマンドで一発インストール
Windows 10 / 11 をご利用の場合、最も簡単で確実なのがWindows標準のパッケージマネージャー winget を利用する方法です。環境変数PATHの設定も自動で行われるため、初心者が最も挫折しやすいパスの不通トラブルを100%回避できます。
「コマンドプロンプト」または「PowerShell」を起動し、以下のコマンドを実行してください:
# Windows最速:wingetでyt-dlpを一発インストール
winget install yt-dlp
Windowsでの手動インストールと環境変数PATHの設定手順
企業内PCなどでwingetが制限されている場合や、スタンドアロンバイナリを直接配置して管理したい場合は、以下の手順で手動インストールと環境変数PATHの設定を行います:
- 公式GitHubのリリースページ(
https://github.com/yt-dlp/yt-dlp/releases/latest)からyt-dlp.exeをダウンロードします。 - 任意の管理用フォルダー(例:
C:toolsyt-dlp)を作成し、ダウンロードしたyt-dlp.exeを配置します。 - Windowsキーを押し、「環境変数」と検索して「システム環境変数の編集」を開きます。
- 「環境変数」ボタンをクリックし、ユーザー環境変数の
Pathを選択して「編集」をクリックします。 - 「新規」をクリックして
C:toolsyt-dlpを追加し、「OK」で画面を閉じます。 - 新しくコマンドプロンプトを開き、
yt-dlp --versionを実行してバージョンが表示されれば完了です。
Macでのインストール(Homebrew)
macOS環境では、定番のパッケージマネージャー Homebrew を使用するのが最も推奨されます。ターミナルで以下のコマンドを実行するだけで完了します:
# Homebrewによるyt-dlpのインストール
brew install yt-dlp
Linuxでのインストール(curl / wget)
Ubuntu、Debian、Rocky Linux、AlmaLinuxなどのLinux環境では、公式apt/dnfリポジトリのパッケージは更新が遅れがちなため、 公式スタンドアロンバイナリを直接 /usr/local/bin にダウンロードして配置する のが実務上の鉄則です:
# curlを使用して最新バイナリを配置
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
# または wget を使用する場合
# sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
# 実行権限を付与
sudo chmod a+rx /usr/local/bin/yt-dlp
# バージョン確認
yt-dlp --version
【必須】FFmpegのインストール(動画と音声の結合に必要)
「yt-dlpを入れたのに、720pまでしか保存できない」「ダウンロードした動画に音声が入っていない」 という現象は、ほぼ100% FFmpegの未導入 が原因です。
現在の動画配信プラットフォーム(YouTube等)では、1080p(Full HD)や4K以上の高画質動画は「映像ストリーム」と「音声ストリーム」が分離して配信されています(DASH/HLS方式)。yt-dlpがこれらをダウンロードした後に1本の綺麗な動画ファイルへ多重化(結合・MUX)するために、マルチメディア処理ツール FFmpeg が必須となります。必ず以下のコマンドで導入してください:
# Windows(wingetで一発インストール・最優先推奨)
winget install Gyan.FFmpeg
# macOS(Homebrew)
brew install ffmpeg
# Linux(Ubuntu / Debian)
sudo apt update && sudo apt install -y ffmpeg
# Linux(RHEL / AlmaLinux系)
sudo dnf install -y epel-release && sudo dnf install -y ffmpeg
インストール後、ターミナルで ffmpeg -version を実行し、正常にバージョンが表示されることを確認してください。
yt-dlpの基本的な使い方(動画ダウンロード)
環境構築が完了したら、実際にコマンドを使って動画をダウンロードしてみましょう。単一動画の基本保存から、画質やフォーマットを自在にコントロールする応用構文までを順を追って解説します。
最低限これだけ!単一動画のダウンロード
最もシンプルな使い方は、yt-dlp の後ろに保存したい動画のURLを半角スペース区切りで指定して実行するだけです:
# 最もシンプルな基本ダウンロード
yt-dlp "https://www.youtube.com/watch?v=VIDEO_ID"
※ 引数のURLにアンパサンド(&)や疑問符(?)などの特殊文字が含まれる場合、シェルが誤解釈するのを防ぐため、 必ずURL全体をダブルクォート "..." で囲む のが実務における鉄則です。
最高画質(映像+音声結合)で保存する基本コマンド
デフォルト実行では環境によってWebMやMKVコンテナで保存される場合があります。あらゆるデバイスで再生可能な 「MP4コンテナかつ最高画質・最高音質」 で確実に保存するには、以下のコマンドを使用します:
# 映像+音声を最高画質で自動結合し、MP4で保存
yt-dlp -f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b" --merge-output-format mp4 "URL"
この構文は、まずMP4映像(H.264 / AV1)とM4A音声(AAC)の組み合わせを最優先で探索し、存在しない場合は利用可能な最高画質ストリームを自動選択して最終的にMP4へ結合(Remux)します。画質の劣化を一切伴わずに完全な互換性を実現できます。
利用可能なフォーマット一覧を確認する(-F)
「どんな解像度やコーデックが配信されているか事前に確認したい」という場合は、大文字の -F オプションを実行します。ダウンロードは行われず、利用可能なストリームの一覧表が表示されます:
# 利用可能なフォーマット(解像度・コーデック・ビットレート等)の一覧を表示
yt-dlp -F "URL"
出力結果の最左列にある ID(フォーマットコード: 137, 140, 299など) を確認することで、特定の映像や音声をピンポイントで指定できます。
任意の画質・フォーマットを指定して保存する(-f)
小文字の -f オプションを使用すると、解像度の上限指定やフォーマットコードの個別指定が可能です:
# 1. 1080p(Full HD)以下で最も画質が良いストリームを選択してMP4結合
# (4K動画などの過大なファイルサイズを避けたい場合に便利)
yt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" --merge-output-format mp4 "URL"
# 2. 720p(HD)以下に制限して保存
yt-dlp -f "bv*[height<=720]+ba/b[height<=720]" --merge-output-format mp4 "URL"
# 3. フォーマットコードを直接指定して結合(例: 映像ID 137 + 音声ID 140)
yt-dlp -f 137+140 --merge-output-format mp4 "URL"
音声抽出・音声のみ保存のテクニック
講義動画や音楽コンテンツ、ラジオ配信など、「映像は不要で音声データのみをスマホに入れて持ち歩きたい」という場面で活躍するテクニックです。
音声をMP3形式・最高音質で保存する(-x –audio-format mp3)
音声を抽出するには -x(または --extract-audio)を指定します。さらに --audio-format mp3 と --audio-quality 0(最高品質の可変ビットレート)を組み合わせることで、極上の音質でMP3ファイルを作成できます:
# 動画から音声を最高音質MP3として抽出(メタデータ&サムネイル付き)
yt-dlp -x --audio-format mp3 --audio-quality 0 --embed-metadata --embed-thumbnail "URL"
--embed-metadata:曲名・アーティスト名(投稿者名)・アップロード日をID3タグとしてMP3内部に自動登録。--embed-thumbnail:動画のサムネイル画像を音楽ファイルのジャケット写真(カバーアート)として自動埋め込み。
M4AやAAC、FLAC形式での音声抽出
Apple製品(iPhone / iPad / Mac)をお使いの方には、再エンコードによる音質劣化が一切発生しない M4A形式(AAC) での抽出が特におすすめです。また、ハイレゾ志向の方向けにFLACやWAV形式への変換もワンタッチで指定できます:
# Appleデバイスに最適:無劣化M4Aで抽出
yt-dlp -x --audio-format m4a --embed-metadata "URL"
# 可逆圧縮(ロスレス)FLAC形式で保存
yt-dlp -x --audio-format flac --embed-metadata "URL"
# 非圧縮WAV形式で保存(音声編集ソフト用)
yt-dlp -x --audio-format wav "URL"
プレイリスト・チャンネル・時間指定切り抜き
複数動画のまとめ取得や、長尺動画の一部分だけをピンポイントで切り抜く実務テクニックです。
プレイリスト全体を一括ダウンロードする
YouTubeの再生リストやアルバムのURLを指定すると、デフォルトで含まれる全動画が順番にダウンロードされます。ファイル名にトラック番号(連番)を自動付与して整理するのが実務のコツです:
# プレイリスト全動画を連番(01, 02...)付きで一括保存
yt-dlp -o "%(playlist_index)02d-%(title)s.%(ext)s" "PLAYLIST_URL"
※ 単一の動画URLを渡した際に意図せず再生リスト全体がダウンロードされてしまうのを防ぎたい場合は、 --no-playlist オプションを付与してください。
連番指定・特定件数のみのダウンロード(–playlist-items)
数百本あるプレイリストやチャンネル動画の中から、特定範囲や最新動画だけをピックアップしてダウンロードできます:
# 1〜5番目の動画のみ取得
yt-dlp --playlist-items 1-5 "PLAYLIST_URL"
# 1番目、3番目、7番目のみを取得(カンマ区切り)
yt-dlp --playlist-items 1,3,7 "PLAYLIST_URL"
# チャンネルの最新動画を1本だけ取得(更新チェック用)
yt-dlp --playlist-items 1 "CHANNEL_URL"
時間指定(–download-sections)による動画の一部切り抜き
2〜3時間を超える配信アーカイブや長編動画から「特定のハイライトシーンだけを保存したい」場合、動画全体をダウンロードしてから編集ソフトで切り出すのはストレージも時間も無駄になります。 --download-sections を使うと、 指定した時間帯だけを直接サーバーから切り出して数秒で保存 できます:
# 開始1分30秒から3分45秒までの区間のみをピンポイント保存
yt-dlp --download-sections "*01:30-03:45" "URL"
# 複数区間を同時に切り出す場合(例: 0分〜1分と、10分〜12分)
yt-dlp --download-sections "*00:00-01:00" --download-sections "*10:00-12:00" "URL"
実務で役立つ主要オプション一覧早見表
日々のスクリプト作成やバッチ処理で頻繁に活用される主要オプションをカテゴリ別に整理しました。
| オプション構文 | 機能・効果 | 実用例・推奨ユースケース |
|---|---|---|
-o "TEMPLATE" | 出力ファイル名・保存先ディレクトリを指定 | チャンネル名や日付別にフォルダー自動整理 |
--write-sub --embed-subs | 字幕データを取得し、動画内に字幕トラックとして埋め込み | 語学学習・海外動画の翻訳字幕付き保存 |
--sub-lang "ja,en" | 取得する字幕の言語(日本語・英語など)を指定 | 日本語字幕のみを抽出したい場合 |
--write-thumbnail | サムネイル画像を別ファイルとしてダウンロード | ブログや資料作成用の画像素材取得 |
--embed-thumbnail | サムネイルを動画・音声ファイルのカバーアートとして結合 | 音楽プレーヤーのジャケット表示 |
--embed-metadata | タイトル・投稿者・アップロード日をメタデータに埋め込み | ファイルプロパティの自動補完 |
--limit-rate 5M | ダウンロード帯域(転送速度)の上限を制限 | 業務中・他通信に影響を与えたくない場合 |
--sleep-interval 5 | 複数動画ダウンロード間の待機秒数を設定(例: 5秒) | アクセス集中による一時ブロック・IP遮断の防止 |
-N 4 | 並列ダウンロードスレッド数を指定(デフォルト以上) | 回線速度をフルに活かした高速化 |
--download-archive ARCHIVE.txt | ダウンロード済み動画のIDを記録し、重複ダウンロードを自動スキップ | 定期バッチ・チャンネル巡回スクリプト |
出力ファイル名と保存先ディレクトリのカスタマイズ(-o)
-o(--output)オプションを使うと、動画のタイトル、チャンネル名(アップローダー名)、投稿日、解像度などを変数として組み合わせた自由な命名規則を設定できます:
# チャンネル名ごとにフォルダーを自動作成し、投稿日_タイトル.拡張子 で保存
yt-dlp -o "~/Downloads/%(uploader)s/%(upload_date)s_%(title)s.%(ext)s" "URL"
字幕(日本語・英語)のダウンロードと動画への埋め込み
動画に登録されている字幕(手動字幕および自動生成字幕)を取得し、MP4ファイル内部に字幕トラックとして統合できます:
# 日本語字幕を取得してMP4動画内に埋め込み(プレイヤーでON/OFF切り替え可能)
yt-dlp --write-sub --sub-lang ja --embed-subs --merge-output-format mp4 "URL"
# 自動生成字幕も含めて取得したい場合
yt-dlp --write-auto-sub --sub-lang ja --embed-subs --merge-output-format mp4 "URL"
サムネイル画像の埋め込みとメタデータ付与
動画のジャケット画像(サムネイル)と詳細情報(タイトル・解説・タグ・投稿日)をコンテナ内部に書き込みます:
# サムネイルとメタデータを動画ファイル内に埋め込み
yt-dlp --embed-thumbnail --embed-metadata --merge-output-format mp4 "URL"
ダウンロード速度の制限(–limit-rate)
自宅やオフィスの回線帯域を占有して他の業務やWeb会議に影響を与えたくない場合、ダウンロード速度の上限を設定できます:
# ダウンロード速度を最大 5MB/s に制限して実行
yt-dlp --limit-rate 5M "URL"
ダウンロードできない・エラーが出るときの原因と対処法
yt-dlpを使用していて発生するトラブルの9割以上は、 「本体バージョンの古さ」「YouTube側のアクセス制限(403・Bot判定)」「FFmpegの未設定」「JavaScriptランタイムの不足」 のいずれかに起因します。以下のトラブルシューティング手順に沿って対処すれば、確実に解決できます。
1. 本体アップデート(yt-dlp -U / 夜間ビルド –update-to nightly)
突然ダウンロードできなくなった場合、最初に試すべきは本体のアップデートです。まずは通常アップデートを実行します:
# 公式最新安定版へのアップデート
yt-dlp -U
【必見の裏ワザ:夜間ビルドへの切り替え】
配信プラットフォーム側が大規模な仕様変更を行った直後は、公式安定版(Stable)のリリースが追いつかないことがあります。そんな時は、開発陣が数時間前にコミットした修正パッチが即座に反映されている 「夜間ビルド(nightlyチャンネル)」 に切り替えることで、即日エラーを解消できます:
# 夜間ビルド(最新開発版)にアップデートして最新仕様変更を突破
yt-dlp --update-to nightly
# (元の安定版に戻したい場合)
# yt-dlp --update-to master
2. HTTP Error 403: Forbidden / Bot判定エラー(ブラウザCookieの渡し方)
HTTP Error 403: Forbidden や Sign in to confirm you’re not a bot(ボットではないことを確認するためにログインしてください)というエラーが表示される場合、YouTube側のBot検知システムによってIPアドレスやリクエストが制限されています。
この場合の最も確実な解決策は、 お使いのブラウザでログインしている正規アカウントのCookieをyt-dlpに渡す ことです:
# Google Chrome のログインCookieを利用してダウンロード(推奨)
yt-dlp --cookies-from-browser chrome "URL"
# Firefox のCookieを利用する場合
yt-dlp --cookies-from-browser firefox "URL"
# Edge のCookieを利用する場合
yt-dlp --cookies-from-browser edge "URL"
# Brave のCookieを利用する場合
yt-dlp --cookies-from-browser brave "URL"
【重要】ブラウザ起動中のCookieデータベースロック問題の回避法
--cookies-from-browser を実行した際に、以下のようなエラーが出て失敗することがあります:
ERROR: could not extract cookies: database is locked
(または sqlite3.OperationalError: database is locked)
【原因】
ChromeやEdgeなどのChromium系ブラウザは、起動中にCookie保存用SQLiteデータベースファイルを排他ロック(Exclusive Lock)するため、外部プロセスであるyt-dlpからの読み取りが拒否されてしまうことが原因です。
【回避策】
以下のいずれかの方法で簡単に回避できます:
- 対象ブラウザを完全に終了させてからコマンドを実行する :タスクマネージャー等でバックグラウンドプロセスが残っていないか確認し、ブラウザを閉じた状態で実行すると確実にロックが解除されます。
- 別プロファイルや別ブラウザを利用する :日常的に開いていないセカンダリブラウザ(例: 日常はChromeを使い、yt-dlp用にはFirefoxやEdgeを使用する)のCookieを指定することで、メインブラウザを閉じる手間なく快適にダウンロードできます。
- Cookieファイル(cookies.txt)をエクスポートして渡す :ブラウザ拡張機能(Get cookies.txt LOCALLY等)でエクスポートしたテキストファイルを
--cookies cookies.txtで指定すれば、ブラウザの起動状態に関係なく常時実行可能です。
3. WARNING: ffmpeg not found エラー(FFmpegのパス確認)
WARNING: ffmpeg not found. The downloaded format may not be the best available. と表示される場合、システム内にFFmpegがインストールされていないか、環境変数PATHが通っていません。
- 前述の「OS別インストール手順」に従い、Windowsなら
winget install Gyan.FFmpeg、Macならbrew install ffmpegを実行してください。 - ポータブル版のFFmpegを任意の場所に置いている場合は、
--ffmpeg-location /path/to/ffmpegオプションで直接バイナリのパスを指定することも可能です。
4. JavaScriptランタイム要求(DenoやNode.js等の環境設定)
WARNING: [youtube] Could not parse JavaScript や n challenge solving failed という警告が出る場合、YouTubeの暗号化URLシグネチャを解読するための JavaScript外部ランタイム が不足しています。
yt-dlp公式でも最も推奨されている軽量・高速ランタイム Deno 、または Node.js をインストールしてください:
# Denoのインストール(最も高速でおすすめ)
# Windows (PowerShell): irm https://deno.land/install.ps1 | iex
# Mac / Linux: curl -fsSL https://deno.land/install.sh | sh
# または Node.jsのインストール
# Windows: winget install OpenJS.NodeJS
# Mac: brew install node
# Linux: sudo apt install -y nodejs
ランタイムをインストールしてPATHを通しておけば、yt-dlpが実行時に自動検出してYouTubeの暗号化シグネチャを完璧に解読・突破してくれます。
設定ファイル(config)によるオプションの自動適用
毎回長いオプション(-f ... --merge-output-format mp4 等)を入力するのは手間がかかり、タイプミスの原因にもなります。yt-dlpには 設定ファイル(config) が用意されており、常用する鉄板オプションをあらかじめ記述しておけば、yt-dlp "URL" と入力するだけで全オプションが自動適用されます。
configファイルの配置場所(Windows / Mac / Linux)
お使いのOSに応じて、以下のパスに config(Windowsの場合は config.txt または yt-dlp.conf)ファイルを作成します:
| OS環境 | 設定ファイルの標準配置パス |
|---|---|
| Windows | %APPDATA%yt-dlpconfig.txt (例: C:Usersユーザー名AppDataRoamingyt-dlpconfig.txt) |
| macOS | ~/.config/yt-dlp/config (または ~/yt-dlp.conf) |
| Linux | ~/.config/yt-dlp/config (または /etc/yt-dlp.conf: システム全体) |
フォルダーが存在しない場合は、手動またはコマンドでディレクトリを作成してください(Linux/Macの場合: mkdir -p ~/.config/yt-dlp)。
日常使いにおすすめの鉄板設定テンプレート
以下は、Bash玄が実務で活用している 「高画質・互換性・安全性を極限まで高めた鉄板設定テンプレート」 です。そのままconfigファイルにコピペしてご利用いただけます:
# ===================================================
# yt-dlp 実戦向け推奨設定テンプレート (config)
# ===================================================
# 1. 最高画質・最高互換性のMP4結合設定
-f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b"
--merge-output-format mp4
# 2. 保存先ディレクトリとファイル命名規則
# ダウンロードフォルダ配下に「チャンネル名/投稿日_タイトル.mp4」で整理
-o "~/Downloads/%(uploader)s/%(upload_date)s_%(title)s.%(ext)s"
# 3. メタデータおよびサムネイルの自動埋め込み
--embed-metadata
--embed-thumbnail
# 4. 字幕の自動取得(日本語・英語が存在すれば動画内に埋め込み)
--write-sub
--sub-lang "ja,en"
--embed-subs
# 5. 回線保護とエラー回避のための安全設計
--limit-rate 10M
--sleep-interval 3
--retries 5
# 6. 重複ダウンロード防止用アーカイブの記録
--download-archive "~/Downloads/yt-dlp-archive.txt"
この設定ファイルを配置した後は、ターミナルで yt-dlp "URL" と打つだけで、上記の全設定が自動適用されて最高画質の動画が指定フォルダーへ美しく整理保存されます。
利用上の注意点(著作権法と利用規約の遵守)
yt-dlpは非常に強力なツールですが、法律およびプラットフォームの利用規約を遵守して正しく利用することが絶対の前提となります。以下の重要事項を必ず確認してください。
著作権法における私的使用の範囲と違法ダウンロードの禁止
日本の著作権法第30条では、個人的にまたは家庭内その他これに準ずる限られた範囲内で使用すること(私的使用)を目的とする複製が認められています。しかし、以下の行為は 私的使用目的であっても明確に違法 となります:
- 違法アップロード動画のダウンロード禁止 :著作権を侵害してインターネット上に無断アップロードされた動画・音声であることを知りながらダウンロードする行為は、著作権法第119条第3項に基づき違法であり、刑事罰の対象となる可能性があります。必ず公式チャンネルや権利者の許可があるコンテンツ、クリエイティブ・コモンズ作品のみを対象としてください。
- 技術的保護手段の回避(DRM解除)の禁止 :動画配信サービス等で施されている暗号化やアクセスコントロール(Widevine等のDRM技術)を故意に解除・回避してダウンロードする行為は法律で固く禁止されています。yt-dlp自体もDRM保護された暗号化ストリームの解除には非対応です。
各配信プラットフォームの利用規約の確認
YouTubeをはじめとする多くの動画配信サービスでは、利用規約において「事前の書面による許可なくサービスまたはコンテンツの一部を複製、ダウンロード、配信すること」を禁止事項として定めています。
自身の作成したコンテンツのバックアップ、研究・教育目的、あるいはプラットフォームが明示的にダウンロードを許可している機能の範囲内で慎重に利用し、ダウンロードした動画の無断転載・再配布・商用利用は厳重に控えましょう。また、スクリプトによる連続大量ダウンロードを行う際は、 --sleep-interval オプションを活用して配信サーバーに過度な負荷をかけないマナーを守ることが重要です。
まとめ
本記事では、現代の動画・音声ダウンロードツールの世界標準である yt-dlp(ytdlp)の使い方とコマンド一覧 を、基礎からトラブルシューティングまで徹底解説しました。
- 最速導入の鉄則 :Windowsは
winget install yt-dlpとwinget install Gyan.FFmpegで環境変数PATHまで一発セットアップ。Macはbrew install yt-dlp ffmpeg。 - 最高画質MP4の保存 :
-f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b" --merge-output-format mp4であらゆる端末で再生可能な互換性と最高画質を両立。 - 最高音質MP3抽出 :
-x --audio-format mp3 --audio-quality 0 --embed-metadata --embed-thumbnailでメタデータとカバーアート付きの高音質保存。 - エラー対策の最新定石 :仕様変更には
yt-dlp -Uおよび夜間ビルドyt-dlp --update-to nightlyで即座に対応。403エラー・Bot判定には--cookies-from-browserを活用し、ブラウザ起動中のロック問題はブラウザ終了や別プロファイルで回避。外部JSランタイム(Deno / Node.js)を導入して暗号化シグネチャを完全解読。 - 日常使いの自動化 :常用オプションを設定ファイル(
config)に登録し、コマンド1行でスマートに実行。
手作業によるブラウザ拡張機能や怪しいダウンロードサイトでの保存作業から脱却し、ターミナルとyt-dlpを活用した安全・快適・超高速な自動化ワークフローをぜひ構築してみてください!
【Bash玄直伝】cronによるチャンネル巡回自動ダウンロードスクリプト
最後に、システム運用エンジニア向けの実践的な自動化シェルスクリプトを紹介します。 --download-archive を活用することで、お気に入りの技術チャンネルやポッドキャストの新規公開動画だけを自動検知して定期保存できます:
#!/usr/bin/env bash
# yt-dlp 定期自動巡回ダウンロードスクリプト
set -euo pipefail
# 保存先ベースディレクトリとアーカイブファイル
SAVE_DIR="$HOME/Videos/YouTube"
ARCHIVE_FILE="$SAVE_DIR/downloaded_archive.txt"
LOG_FILE="$SAVE_DIR/yt-dlp_cron.log"
mkdir -p "$SAVE_DIR"
# 巡回対象のチャンネルまたは再生リストURL
TARGET_URL="https://www.youtube.com/@target_channel/videos"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 巡回ダウンロード開始: $TARGET_URL" >> "$LOG_FILE"
# 新規動画のみを取得(重複は自動スキップ)
yt-dlp
--download-archive "$ARCHIVE_FILE"
-f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b"
--merge-output-format mp4
-o "$SAVE_DIR/%(uploader)s/%(upload_date)s_%(title)s.%(ext)s"
--playlist-items 1-5
--sleep-interval 5
--limit-rate 10M
"$TARGET_URL" >> "$LOG_FILE" 2>&1
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 巡回ダウンロード完了" >> "$LOG_FILE"
上記スクリプトを chmod +x auto_download.sh で実行可能にし、crontab -e で 0 3 * * * /path/to/auto_download.sh のように設定すれば、毎朝未明に最新動画がローカルに自動同期されます。

コメント
判りやすい解説、ありがとうございます。
windows環境なら、yt-dlp & ffmpeg ともに、msys2 でも利用可能です。
ビルド環境違いで、mingw64, ucrt64, clang64, clangarm64 の、4つのバージョンがあります(私は ucrt派です)
msys2 の bash で yt-dlp、便利で快適です。