yt-dlp の「Signature extraction failed」エラーを直す

yt-dlp の「Signature extraction failed」エラーを直す

「Signature extraction failed」の意味

yt-dlp が Signature extraction failed: Some formats may be missing あるいは Could not find JS function を出力したときは、すべてのストリーム URL に署名を付ける JavaScript プレイヤー・ファイルを YouTube がローテーションした、ということを意味します。YouTube の各ストリーム URL には署名トークンが含まれており、これはプレイヤー JS 内部の JS 関数で解読する必要があります。YouTube がその関数を差し替えると (数週間に一度くらいの頻度)、古い yt-dlp は新しい関数名を見つけられず、抽出に失敗します。

動画ページ自体はブラウザで普通に開けます。だからこそこのエラーは不思議に感じられますが、ダウンロード には解読済みのトークンが必要で、そこに新しいパターンを yt-dlp がまだ覚え込んでいない、というわけです。

yt-dlp 側での直し方

確実な方法は yt-dlp の更新です:

# pip でインストール
pip install -U yt-dlp

# brew
brew upgrade yt-dlp

# pipx
pipx upgrade yt-dlp

# スタンドアロン・バイナリ
yt-dlp -U

最新版にしてもエラーが残るなら:

  • yt-dlp の GitHub Issues を見てください。今回の署名変更を追っているスレッドがたいてい立っており、パッチが master にマージ済みなことも多いです。
  • master から直接インストール: pip install -U "yt-dlp[default] @ git+https://github.com/yt-dlp/yt-dlp@master"
  • 12〜48 時間ほど、修正を含むタグ付きリリースが出るのを待つ。

なぜ繰り返し起きるのか

YouTube はスクレイピング対策として、署名スキームを意図的にローテーションしています。パターンは決まっていて、新しいプレイヤー JS を投入する → 解読関数の名前と難読化のされ方が変わる → 各ダウンローダーがその関数を再検出して extractor を書き直す、という流れです。yt-dlp のメンテナはこれを追って更新を出しますが、「最新の YouTube 変更が、最新の yt-dlp リリースより先行している」という時間帯がどうしても発生します。

代わりに Any4K を使う

Any4K は通常運用の一部として、署名抽出をサーバー側でメンテナンスしています。YouTube がプレイヤー JS をローテーションすると、当方のインフラ側が更新され、ダウンロードはそのまま使い続けられます — 多くの場合 48 時間ではなく 1 時間以内に追従します。あなたの側で更新するものはありません: URL を any4k.com に貼ってダウンロードするだけです。

署名ローテーション時の Any4K の利点

  • yt-dlp の更新が不要: 修正はこちら側で行う。
  • nightly のインストール作業も不要: ブラウザツールは常に最新。
  • YouTube 側の変化に関係なく同じフロー: 貼る → 選ぶ → 保存。
  • マルチプラットフォーム: YouTube、TikTok、Twitter、Instagram、Facebook、Reddit、Shorts。

それでも yt-dlp が向いている場面

大量アーカイブ、字幕の抽出と埋め込み、チャンネル購読、スクリプト自動化のような用途では yt-dlp が依然として最も深く使えるツールです。署名エラーは通常運用のメンテナンスイベントとして受け入れ、cron に yt-dlp -U を仕込んでおきましょう。

まとめ

「Signature extraction failed」は YouTube が鍵を交換したという合図です。yt-dlp は新しい鍵を定期的に配布しますが、その合間は Any4K Video Downloader が署名ローテーションをサーバー側で処理するため、ダウンロードはそのまま動き続けます。

Related Download Guides

著作権 © 2010 - 2026 Any4K.com