本文へスキップ
yt-dlp

Instagram 用 yt-dlp コマンドジェネレーター

Instagram の投稿と reels 向けに yt-dlp コマンドを組み立てます。cookies は最初から有効です —— それなしではほとんど何も動かないからです。

任意です。空のままにするとコマンドは URL で終わるので、あとから自分で埋められます。

あなたのコマンド

yt-dlp --merge-output-format mp4 --no-playlist --cookies-from-browser chrome https://www.instagram.com/p/Cxxxxxxxxxx/
基本

音声のみを選ぶと音声トラックを取り出し、映像は捨てます。

動画と画質

高さの上限を決めます。yt-dlp はその上限以下で最良のストリームを選びます。

分かれている映像と音声のストリームを結合して入れるファイル形式です。

詳細オプション(3)

画質のプルダウンを上書きします。format の書き方をすでに知っている人向けです。

再エンコードせず入れ直すだけです。速く、劣化もありません。

映像を再エンコードします。遅く、劣化もします —— remux で足りないときだけ使ってください。

音声

音声を変換する先のファイル形式です。

VBR はサイズと品質の比がいちばん良く、固定 bitrate はサイズが読みやすいです。

字幕

埋め込みは字幕を動画の中に入れ、保存は隣に別の .srt ファイルを書き出します。

カンマ区切りで指定します。利用できる全言語が欲しいときは all と書きます。

再生リストとチャンネル

URL が動画と再生リストの両方に属している場合の動作です。

範囲もリストも使えます。たとえば 1-10,15、あるいは末尾から 1 つ飛ばしで取る -5::2 など。

詳細オプション(1)

ダウンロード済みの項目を記録するので、再実行時にはそれらを飛ばします。チャンネルを同期させ続ける方法がこれです。

区間とチャプター
詳細オプション(2)

*00:01:30-00:03:00 のような時間範囲、またはチャプター名です。先頭のアスタリスクは時刻であることを示します。

メタデータとカバー画像
詳細オプション(3)
SponsorBlock

SponsorBlock のデータをもとに、コミュニティが印を付けた区間をファイルから切り取ります。

詳細オプション(1)

区間は残したまま印を付けるので、自分で飛ばせます。

ファイルとフォルダ

フィールド名は %(...)s の中に書きます。スラッシュはフォルダを作ります。

詳細オプション(4)

ファイルを書き出す場所です。上のテンプレートと組み合わせるとサブフォルダも作れます。

ファイル名の最大長(文字数)です。

フィルタ
詳細オプション(5)

YYYYMMDD、または now-1month のような相対日付です。

YYYYMMDD、または相対日付です。

これより小さいものは飛ばします。5M、500K などが使えます。

これより大きいものは飛ばします。

停止するまでにダウンロードするファイル数です。

ネットワーク

たとえば 2M や 500K。残りの帯域を他のことに使いたいときに役立ちます。

詳細オプション(5)

分割されたストリームを速くします。まずは 4 くらいが妥当です。

失敗した部分を何回やり直すか。infinite も指定できます。

HTTP・HTTPS・SOCKS proxy の URL です。

リクエストを実際のブラウザからのものに見せます。突然 403 が出たときの定番の対処です。

ログインと cookies

ログイン中のセッションを直接読みます。非公開・年齢制限・メンバー限定のコンテンツには必要です。

詳細オプション(1)

ブラウザから書き出した Netscape 形式の cookies.txt です。

ライブ配信
詳細オプション(2)

予定されている配信が始まるまで問い合わせ続けます。MIN-MAX は確認の間隔(秒)です。

回避策
詳細オプション(3)

非推奨で、--add-headers に置き換わりました。古い解説記事がまだ多く使っているので残してあります。

非推奨で、--add-headers に置き換わりました。

サイトごとの専用オプションです。たとえば youtube:player_client=web。

出力とデバッグ
詳細オプション(2)
リセット

Instagram にはセッションが必要

Instagram は未ログインのリクエストにほとんど何も返さないため、--cookies-from-browser は実質的に必須で、任意ではありません。コマンドを実行する前にブラウザを閉じてください。Chrome と Edge は起動中に cookies のデータベースをロックします。

カルーセル投稿は再生リストとして扱われるので、すべての項目を取るには再生リストの扱いを「再生リスト全体」にしてください。ストーリーはそのアカウントをフォローしているセッションが必要で、24 時間で消えます。

Instagram は自動アクセスをますます疑います。一度に多くを速くダウンロードしすぎたセッションは、もう一度ログインするよう求められます —— 昨日動いたコマンドが今日ログインページを返してきたら、それが合図です。メインではなく専用アカウントを使い、ときどきふだんどおりログインして cookies を新しく保ち、こういう使い方をするアカウントはコマンドをどんなに丁寧に書いてもときどきフラグを立てられると受け止めてください。それはプラットフォームの代償であって、yt-dlp のバグではありません。

投稿、reels、ハイライトは同じ extractor を通りますが、セッションごとに見えるものが違います。フォローしているアカウントの reels は問題なく落ちます。探索ページの reels は、その種のコンテンツに触れたことのないセッションにはしばしば拒まれます。ハイライト —— プロフィールに固定されたストーリーの輪 —— はそれぞれ、自分のストーリーの再生リストとして降りてきます。IGTV は引退しました。古いリンクはいまだに解決することがありますが、新しいものはどこも使っていません。

Instagram は yt-dlp が日常的に向き合うどのプラットフォームよりも強くレート制限をかけます。並列 fragment は状況を良くするのではなく悪くします。1 回に 1 項目、実行のあいだに間隔を置くのが生き残る型です。複数項目の実行が途中で失敗するのは普通のことです —— 記録ファイルと「エラーでも続行」があれば、再試行はやり直しではなく再開になります。これが重要なのは、実行が終わる頃には最初の項目の CDN リンクはだいたい期限切れで、全やり直しはメディアでなくページを取り直すことになるからです。

取り戻せないものがあります。フォローしていない非公開アカウントの投稿、24 時間を過ぎたストーリー、そしてコマンドを実行するより前に削除されたものすべて。取得したページの中の CDN リンクはすぐ切れるので、1 時間前に動いたメディア URL は今は拒まれることがあります —— 古いリンクを再試行するのでなく、投稿ページを取り直してください。この期限は「そのうち」ではなく「早めに」ダウンロードする理由でもあります。Instagram はメディアを届け続けるとは何も約束しておらず、期限は律儀に守られます。

よくある質問

cookies なしだと Instagram が失敗するのはなぜ?
Instagram は未ログインのリクエストにほとんど何も返しません。--cookies-from-browser は実質必須で、そのセッションはその投稿を見られるアカウントのものである必要があります。
ストーリーや reels はダウンロードできますか?
reels は通常の投稿と同じように動きます。ストーリーはそのアカウントをフォローしているセッションが必要で、24 時間で期限切れになります。
カルーセル投稿の全項目を取るには?
再生リストの扱いを「再生リスト全体」にしてください —— yt-dlp は複数項目の投稿を再生リストとして扱います。