🏠 ホーム ニュース 📖 解説記事 📚 トピック解説 🏷️ タグ一覧 ℹ️ About
ツール
💰 API料金計算機 NEW
🔍 記事を検索
カテゴリ
📡 RSSフィード
Follow
X (Twitter) 🧵 Threads
🔧 ツール
💰API料金計算機
トピック
🧠 Claude Code 🤖 AIエージェント 🎵 AIコーディング / Vibe Coding 🔌 MCP(Model Context Protocol) 🔍 RAG & ナレッジシステム 💬 LLM / ローカルAI 🔒 セキュリティ ⚙️ DevOps & 自動化 💰 Claude API & 料金 🎨 UI生成 & デザインシステム
ニュース一覧 🏷️タグから探す
Subscribe
📡 RSSフィード
ホーム tool 2026.05.02

yt-dlp完全ガイド2026年版:1400+サイト対応動画ダウンローダーのCVE修正とAI連携活用

yt-dlp/yt-dlp
📥
yt-dlp完全ガイド2026年版:1400+サイト対応動画ダウンローダーのCVE修正とAI連携活用 - AIツール日本語解説 | AI Heartland
AI音声認識・動画解析・チャンネル分析の自動化が広がるなか、yt-dlpは1400+サイトに対応する事実上の標準ダウンローダー。2026年2月にはCVE-2026-26331(CVSS 8.8)が修正され、Python 3.10必須化など運用上の変更点も整理が必要。

WhisperによるAI文字起こし、動画ハイライト自動生成、競合コンテンツのトレンド分析——2026年の動画×AIワークフローのほぼすべてが、まず動画と音声を手元に取得するところから始まる。yt-dlpはYouTubeを含む1,400以上のサイトに対応する事実上の業界標準ダウンローダーで、★160k超・Unlicenseの活発なOSSとして10年以上維持されている。本記事では2026年現在の最新事情——CVE-2026-26331(CVSS 8.8)の修正、Python 3.10の必須化、AIワークフローとの連携手順——を中心に、初学者から実運用エンジニアまで使える完全ガイドとしてまとめる。

この記事では音声・動画ダウンローダーOSS yt-dlpを解説します。AI時代の自動化ツール全体像についてはAI自動化ツール|ノーコードからコードまで2026年版の比較と選び方をご覧ください。

この記事のポイント

  • yt-dlpは1,400+サイト対応の動画/音声ダウンローダー(Unlicense、★160k超)
  • 2026年2月リリース2026.02.21CVE-2026-26331(CVSS 8.8)を修正。--netrc-cmd経由のコマンドインジェクションが解消
  • Python最低バージョンが3.10必須に引き上げ。3.9以前はサポート終了
  • WhisperLiveKit/Insanely Fast Whisper連携でAI文字起こしの前段に最適

法令遵守の前提:本記事は技術解説です。動画のダウンロードは各サイトの利用規約・著作権法に従って行ってください。私的利用の範囲を超えた配布や違法アップロード動画のダウンロードは犯罪となる場合があります。日本では2021年改正著作権法以降、違法配信と知りながら音楽・映像をダウンロードする行為は刑事罰の対象です。

yt-dlpとは:youtube-dlの後継として10年続くOSS

yt-dlpの起源は2020年ごろ、当時メンテナンスが停滞していたyoutube-dl/youtube-dlcのフォークとして始まった。今ではyoutube-dlを大きく超える機能・対応サイト数・更新頻度を持ち、業界標準と化している。

指標
GitHub Stars 160,000+
Forks 13,300+
対応サイト数 1,400以上
言語 Python(要3.10+)
ライセンス Unlicense(バンドルバイナリの一部はGPLv3+)
更新頻度 ほぼ毎月リリース
主要メンテナ コミュニティ多数

「動画ダウンローダー」という見た目に反して、内部はかなり複雑だ。各サイトの仕様変更(YouTubeのプレイヤー変更、TikTokのAPI変更など)に追従するため、1,400ものextractorが個別実装されており、毎週のように更新が入る。

2026年2月:CVE-2026-26331(CVSS 8.8)の修正

yt-dlpを業務利用しているチームにとって最も重要なニュースがCVE-2026-26331の修正だ。2026年2月24日に公開され、CVSS 8.8(High)。2023.06.21から2026.02.21未満のすべてのバージョンに影響する。

脆弱性の核心:subprocess.Popen(shell=True)

問題は--netrc-cmdオプションの実装にあった。netrcファイル(認証情報を保存するファイル)を動的に取得するため、subprocess.Popen(shell=True)でシェル経由で外部コマンドを実行していた。「machine」値の検証が不十分だったため、悪意あるURLからシェルコマンドを注入できる状態だった。

# 概念的に表すと、こんな実装だった(修正前)
def get_netrc_credentials(netrc_cmd, machine):
    cmd = netrc_cmd.replace('{}', machine)  # ← machineに任意文字列が入る
    output = subprocess.Popen(cmd, shell=True, ...)  # ← shell=Trueで注入成立

machineはURLから抽出される値で、攻撃者がURLを操作できれば任意のシェルコマンドが実行される。動画ダウンロードのつもりでシェルが返ってくる事態が発生し得た。

修正内容

2026.02.21では「machine」値を安全な文字集合に限定し、想定外の文字が混入した場合はエラーで停止するよう修正された。これにより--netrc-cmdを使う既存スクリプトもおおむね動作を継続できる。

該当ユーザーの確認

# 現在のyt-dlpバージョンを確認
yt-dlp --version

# 2026.02.21以降であることを確認、それ以前なら即時更新
pip install --upgrade yt-dlp
# あるいは バイナリ運用なら
yt-dlp -U

--netrc-cmdを使っていない場合でも、念のため最新版へ更新を推奨する。CI環境やDockerイメージで古いyt-dlpが固定されているケースが意外に多いため、再ビルドを確実に行う。最新の脆弱性管理思想はサプライチェーンセキュリティ完全ガイドも参照したい。

Python 3.10必須化:3.9以下を使うチームは要対応

2025年10月にPython 3.9がEOL(End of Life)を迎えたことに伴い、yt-dlpもPython 3.10以上を必須とした。3.9以下のシステムでは最新のyt-dlpが動かない。Ubuntu 22.04 LTSはPython 3.10がデフォルトなので問題ないが、CentOS 7やAmazon Linux 2の古い環境は対応が必要だ。

# Python バージョン確認
python3 --version

# 3.10未満ならpyenv等で並列インストール
pyenv install 3.12.7
pyenv local 3.12.7
pip install yt-dlp

CI環境ではDockerイメージをpython:3.12-slim等に固定することで安定運用できる。

インストールと基本コマンド

インストール方法

# Pythonでのインストール(推奨)
pip install yt-dlp

# Homebrew(Mac)
brew install yt-dlp

# Linuxディストリのパッケージマネージャ
sudo apt install yt-dlp   # Debian/Ubuntu

# Windows
winget install yt-dlp
# または
scoop install yt-dlp

最低限覚えるべきコマンド

# 単純なダウンロード(最高画質を自動選択)
yt-dlp https://www.youtube.com/watch?v=dQw4w9WgXcQ

# 音声のみmp3で取得(Whisper入力に便利)
yt-dlp -x --audio-format mp3 URL

# 解像度指定(1080p以下に制限)
yt-dlp -f "bv*[height<=1080]+ba/b" URL

# 字幕も自動ダウンロード(日本語)
yt-dlp --write-sub --sub-langs ja --convert-subs srt URL

# プレイリスト全部
yt-dlp --yes-playlist URL

# 並列ダウンロード(4本)
yt-dlp -N 4 URL

-xは音声抽出フラグで、ffmpegが必要だ。事前にインストールしておく。

# ffmpeg(macOS)
brew install ffmpeg

# Linux
sudo apt install ffmpeg

AIワークフローとの連携:5つのパターン

yt-dlpはAI×動画の文脈で「データ準備の前処理層」として2026年も依然中核を担う。具体的な連携パターンを5つ紹介する。

1. Whisper/WhisperLiveKitでの音声文字起こし

YouTube動画の音声を抽出してローカルWhisperで文字起こしするのが最もポピュラーな組み合わせだ。

# 音声をWAVで取得(Whisper最適形式)
yt-dlp -x --audio-format wav --audio-quality 0 \
  -o "audio.%(ext)s" \
  https://www.youtube.com/watch?v=VIDEO_ID

# WhisperLiveKitで文字起こし
wlk transcribe audio.wav --diarization

会議録画やWebinar公開動画を一括で議事録化する用途に向く。詳細手順はWhisperLiveKit完全解説を参照してほしい。

2. 動画チャプター情報を活用したRAG準備

YouTube動画には作者が付けたチャプター情報が含まれている。yt-dlpで構造化メタデータを取得し、ベクトルDBに投入できる。

# メタデータJSONとして取得
yt-dlp --write-info-json --skip-download \
  -o "%(channel)s/%(title)s" \
  https://www.youtube.com/playlist?list=PLAYLIST_ID

info.jsonにはタイトル・説明文・チャプター・タグ・コメント数までフラットに収まり、LLMのコンテキストとして利用しやすい。

3. SponsorBlock連携で広告区間を除去

長尺コンテンツのAI処理時、スポンサー区間を含めるとノイズになる。yt-dlpはSponsorBlockをネイティブ統合している。

# スポンサー区間を切り出して保存
yt-dlp --sponsorblock-mark sponsor,selfpromo \
  --sponsorblock-remove sponsor URL

「広告区間に該当する文字起こしが要約に混入する」問題を抑え、AI出力品質が上がる。

4. ffmpeg post-processorによるクリップ生成

yt-dlpは--postprocessor-argsでffmpeg連携が可能。動画ハイライトや短尺SNS投稿用のクリップを直接生成できる。

# 30秒〜1分のクリップを切り出し
yt-dlp --download-sections "*30-60" \
  -o "clip.%(ext)s" URL

# 解像度を1080x1920(縦動画)に変換
yt-dlp --postprocessor-args "ffmpeg:-vf scale=1080:1920" \
  -o "shorts.%(ext)s" URL

YouTube Shorts Pipelineのようなショート動画自動生成パイプラインの基盤として組み込める。

5. 大規模チャンネル分析

「特定チャンネルの全動画タイトル・再生数・コメント数」を一括取得し、トレンド分析やコンテンツ戦略立案に使う。

# 動画一覧をJSON Lines形式で出力
yt-dlp --flat-playlist -J \
  https://www.youtube.com/@channel-name/videos > channel.jsonl

# jqで再生数Top 20を抽出
jq -r '.entries | sort_by(-.view_count) | .[0:20] | .[] | "\(.view_count)\t\(.title)"' channel.jsonl

これだけで競合分析の素材が揃う。

アーキテクチャ:なぜ1400サイトに対応できるか

flowchart LR A["URL入力"] --> B["URL Matcher"] B --> C{"対応サイト?"} C -->|"YES"| D["Extractor
(各サイト固有)"] C -->|"NO"| E["Generic Extractor"] D --> F["Format Selector"] F --> G["Downloader
(HTTP / HLS / DASH)"] G --> H["Post-Processor
(ffmpeg / SponsorBlock)"] H --> I["Output"] D --> J["Cookie Manager"] D --> K["Impersonation
(curl-cffi)"]

URL入力からExtractor(サイト固有のスクレイピング実装)が選択され、フォーマット解析→ダウンロード→ポスト処理という流れで動く。重要なのは、Cookie ManagerとImpersonationが組み込まれていることだ。

Cookieによる認証コンテンツ取得

# ブラウザのCookieを使ってログインコンテンツへアクセス
yt-dlp --cookies-from-browser chrome URL

# Firefoxのプロファイル指定
yt-dlp --cookies-from-browser firefox:profile_name URL

サブスクリプション動画やメンバー限定コンテンツの取得(自分が正規会員であれば)に使える。

Impersonation(TLSフィンガープリント偽装)

近年はcurl-cffiを使ったTLSフィンガープリント偽装機能を搭載。Cloudflareなどのbot対策をバイパスできる。

# Chrome 124として偽装
yt-dlp --impersonate chrome-124 URL

これにより従来「直近のyt-dlpはCloudflareで弾かれる」という頻発トラブルがほぼ解消した。

競合・代替ツールとの比較

ツール 形態 対応サイト数 AI連携 強み
yt-dlp OSS CLI 1,400+ 高(API豊富) 標準・更新頻繁・Cookie対応
youtube-dl OSS CLI(活動鈍い) 1,000+ 老舗、互換性
gallery-dl OSS CLI 画像中心 画像系プラットフォーム特化
4K Video Downloader GUI(有料) 主要のみ 初心者向けGUI
Cobalt Web SaaS 30+ ブラウザ完結、簡単

OSSでCLI、AI連携、活発な更新を兼ね備えるのは事実上yt-dlp一択だ。GUI操作で完結したい場合は4K Video DownloaderやCobaltも選択肢になる。

実運用Tips:止まりやすいパターンと回避策

1. YouTubeの仕様変更でextractorが壊れる

YouTubeはプレイヤーやシグネチャ計算を頻繁に変える。古いyt-dlpを使っていると突然「Sign in to confirm you’re not a bot」のエラーが出る。月1回は最新版に更新するのが安全。

# CIでの自動更新
pip install --upgrade yt-dlp

2. レート制限への対策

並列ダウンロード過多はBANリスクが高い。--limit-rate--sleep-intervalで穏やかに動かす。

yt-dlp --limit-rate 2M --sleep-interval 5 --max-sleep-interval 15 URL

3. 大規模プレイリストでの中断回復

# 取得済み動画はスキップ
yt-dlp --download-archive done.txt --no-overwrites URL_PLAYLIST

done.txtに成功したIDが記録され、次回実行時は未取得分のみ再開する。

プラグインシステム:機能を自分で拡張する

yt-dlpは独自のExtractorやPost-Processorをプラグインとして注入できる。サードパーティのextractor集や独自社内サービス向けの拡張に有効だ。

# プラグインの配置場所(Linux/macOS)
~/.config/yt-dlp/plugins/
~/.yt-dlp/plugins/

# Windowsの場合
%APPDATA%\yt-dlp\plugins\

社内動画プラットフォーム向けのextractorを書きたい場合は、yt_dlp_plugins/extractor/<name>.pyという構成で配置すれば自動ロードされる。

# 最小プラグイン例(yt_dlp_plugins/extractor/example.py)
from yt_dlp.extractor.common import InfoExtractor

class ExampleIE(InfoExtractor):
    _VALID_URL = r'https?://example\.com/video/(?P<id>\d+)'

    def _real_extract(self, url):
        video_id = self._match_id(url)
        webpage = self._download_webpage(url, video_id)
        return {
            'id': video_id,
            'title': self._html_extract_title(webpage),
            'url': self._html_search_regex(r'video_url="([^"]+)"', webpage, 'url'),
        }

このextractorパターンは1,400+の公式extractorも同じ構造で実装されており、習得すればyt-dlp本体へのコントリビューションも狙える。

CI/CDでのyt-dlp運用パターン

定期的に動画データを取得してAIパイプラインに流し込む場合、CI/CDでの運用を考えたい。

GitHub Actionsでの定期実行例

# .github/workflows/daily-fetch.yml
name: Daily Video Fetch
on:
  schedule:
    - cron: '0 3 * * *'   # 毎日12:00 JST
  workflow_dispatch:

jobs:
  fetch:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      - run: |
          pip install --upgrade yt-dlp
          yt-dlp --version
      - run: |
          yt-dlp \
            --download-archive done.txt \
            --no-overwrites \
            --write-info-json --skip-download \
            -o "data/%(id)s" \
            $
      - uses: actions/upload-artifact@v4
        with:
          name: video-metadata
          path: data/

--skip-downloadを付ければメタデータのみ取得でき、トレンド分析・新着検出に有効だ。

Dockerでの再現可能環境

# yt-dlp + ffmpeg を固定したDockerfile
FROM python:3.12-slim

RUN apt-get update && \
    apt-get install -y --no-install-recommends ffmpeg && \
    rm -rf /var/lib/apt/lists/*

RUN pip install --no-cache-dir yt-dlp==2026.04.10

WORKDIR /work
ENTRYPOINT ["yt-dlp"]

バージョン固定で運用するとExtractor仕様変更時の動作不整合を回避できる一方、CVE対応は手動更新が必要になる。月次でDockerイメージをリビルドするルーチンを組むのが安全だ。

まとめ:「yt-dlpを最新にする」を運用に組み込む

yt-dlpは便利すぎるあまり「あって当たり前」のツールになりがちだ。だがCVE-2026-26331のような脆弱性、YouTubeの仕様変更、Python EOLなどで、いつ動かなくなってもおかしくない。月1回の更新CVEウォッチを習慣化することで、AI動画ワークフローの土台を安定させられる。AIエージェントが大量に動画データを必要とする時代、yt-dlpはますます価値を増す中核ツールであり続ける。

最初の一歩はpip install --upgrade yt-dlp。バージョンが2026.02.21以上になっていることを確認したら、本記事のAIワークフロー連携を試してみてほしい。

FAQ

Q. yt-dlpの利用は合法ですか?

A. yt-dlpツール自体の利用は合法です。ただしダウンロード対象によります。日本では違法配信と知りつつ音楽・映像をダウンロードする行為は刑事罰対象(2021年改正著作権法)。各サイトの利用規約・著作権を必ず確認してください。

Q. CVE-2026-26331は自分に影響しますか?

A. --netrc-cmdオプションを使っていない場合は直接の影響はありません。ただし2026.02.21未満のバージョンを使い続けるリスク(将来の他CVE等)は残るため、即時更新を推奨します。

Q. Python 3.10未満の環境で動かす方法はありますか?

A. yt-dlpの古いバージョン(2025年10月以前のリリース)に固定すれば動きますが、CVEや新サイト対応が止まります。Python 3.10以上の環境を別途用意するのが本筋です。

Q. ffmpegは必須ですか?

A. 必須ではありませんが、音声抽出(mp3/wav)、フォーマット変換、クリップ切り出し、SponsorBlock連携などほぼすべての高度機能で必要になります。実質必須と考えてください。

Q. YouTubeでの「Sign in to confirm」エラーが出ます。

A. 最新版yt-dlpへの更新で多くは解消します。それでも出る場合は--cookies-from-browserでブラウザCookieを渡すか、--impersonate chrome-124でTLSフィンガープリントを偽装してください。

Q. プログラムから組み込み利用したいです。

A. Pythonライブラリとしても利用可能です。from yt_dlp import YoutubeDLでインポートし、with YoutubeDL(opts) as ydl: ydl.download([url])で実行できます。

Q. 商用利用は可能ですか?

A. yt-dlp自体はUnlicense(パブリックドメイン相当)のため、商用利用に制約はありません。ただしバンドル済みのバイナリ(PyInstaller経由)にはGPLv3+部分があり、再配布する場合はGPLv3条項を確認してください。

参照ソース

B!
B! この記事をはてブに追加
⚙️
DevOps & 自動化
データパイプライン、コンテナ管理、Web自動化、CI/CD →
広告
GitHub で見る
役に立ったらシェアをお願いします
🔔 AI速報、毎日Xで配信中
Claude Code・MCP・AIエージェントの最新ニュースをいち早くお届け
@peaks2314 をフォロー
記事の信頼性について
AI Heartland エディトリアルポリシーに基づき作成
複数ソース照合
公式情報・報道等を突き合わせて確認
ファクトチェック済
ソースURLの内容を検証
参照ソース明記
記事末尾に引用元を掲載
Next Read →
🌐 Scanopy完全解説:ネットワーク図を自動生成・自動更新するセルフホストOSS
関連記事
🦀 RustySEO完全解説:Tauri+Rust製の無料デスクトップSEOツール、SEMrushの代替候補
Tauri+Rust製の無料SEO/GEOデスクトップツール「RustySEO」を解説。クロール無制限・Core Web Vitals・キーワード分析・サーバーログ解析・Gemini/Ollama統合・タスク管理を1アプリに統合。SEMrush・Ahrefs・Screaming Frogの代替候補としての実力をスクリーンショット中心に紹介。GPL-3.0。
2026.05.02
🌐 Scanopy完全解説:ネットワーク図を自動生成・自動更新するセルフホストOSS
ネットワーク図を自動生成・自動更新するセルフホスト型OSS「Scanopy」を解説。Rust製エージェントレス・スキャナで230以上のサービスを自動検出、L2/L3/Workloads/Applicationsの4ビュー可視化、Docker Composeで起動。SNMP・Docker連携、AGPL-3.0、商用ライセンス・SaaS版あり。
2026.05.02
🧑‍💼 Frontman完全解説:ブラウザでクリックして直すAI Vibe Coding OSS、Next.js/Astro/Vite対応
ブラウザ上で要素をクリックして自然言語で修正指示を出すと、ソースコードを自動修正してホットリロードするAI Coding OSS「Frontman」を解説。Next.js・Astro・Vite対応、Claude/OpenAI/OpenRouterのBYOK、MCPサーバー連携。Apache-2.0/AGPL-3.0デュアルライセンス、★364の注目株。
2026.05.02
🎙️ WhisperLiveKit完全解説:超低遅延・話者識別付きセルフホスト音声認識OSSの使い方
Whisperベースの超低遅延セルフホスト音声認識OSS「WhisperLiveKit」を解説。SimulStreaming/AlignAttによるリアルタイム文字起こし、話者識別(Sortformer/Diart)、200言語対応、Apple Silicon MLXからCUDAまで対応。FastAPI+WebSocket、Docker一発起動、Chrome拡張連携。Apache-2.0、★10.2k。
2026.05.02
Popular
#1 POPULAR
🐧 Copy Fail(CVE-2026-31431)解説:Linuxカーネル脆弱性とEC2/ECS/EKSへの影響
Theori Xintが発見したLinuxカーネル脆弱性Copy Fail(CVE-2026-31431)の解説。authencesnとAF_ALGのインプレース最適化で非特権ユーザーがページキャッシュを4バイト書き換えてroot奪取。ECS・EKSでのコンテナエスケープ影響と即時ミティゲーション手順を解説。
#2 POPULAR
💥 AIエージェントが本番DBを削除|PocketOS事件に学ぶCursorやClaudeの権限設計
Cursor IDE上で動作するClaude Opus 4.6のAIエージェントが9秒で本番DBとバックアップを消去したPocketOSの事件を解剖。Railway APIトークンの広すぎる権限、確認のない破壊操作、同一ボリューム内バックアップという3つの欠陥を整理し、開発者が今日から実装すべき防御策を解説する。
#3 POPULAR
🛰️ Sentrux徹底解説:AIエージェント時代の「コード品質センサー」、Rust製OSSでClaude Codeと連携
Sentrux(GitHub 1.4kスター・MIT・Rust製)は、AIエージェントのフィードバックループを閉じる「アーキテクチャセンサー」。5つのメトリクス(モジュラリティ・非循環性・深さ・均等性・冗長性)でコード品質を0〜10000点で測定。Claude CodeへのMCP統合で、エージェント生成コードの構造劣化を即時検知する。
#4 POPULAR
📊 TradingView × Claude Code自動売買|MCPサーバーで78ツール連携・Pine Script生成
TradingView MCPはClaude CodeからTradingView Desktopを直接操作できる78ツール搭載のMCPサーバー。チャート分析、Pine Script開発、マルチペイン、アラート管理、リプレイ練習まで自然言語で実行。導入手順を解説
#5 POPULAR
🎨 awesome-design-md:DESIGN.mdでAIにUI生成させる方法【58+24日本語ブランド対応】
DESIGN.mdをプロジェクトに置くだけでAIエージェントが一貫したUI生成を実現。Vercel・Stripe・Claudeなど58ブランドのデザイン仕様をnpx 1コマンドで導入する方法と、実際の出力差を検証した結果を解説。
← Canonical/UbuntuがDDoS攻撃で長時間ダウン:313 Team主張の脅迫型ハクティビズムを技術解析 Scanopy完全解説:ネットワーク図を自動生成・自動更新するセルフホストOSS →