跳至內容
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。

播放清單與頻道

當網址同時屬於一支影片和一份播放清單時該怎麼做。

範圍與清單都可以,例如 1-10,15,或用 -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 的網址。

讓請求看起來來自真正的瀏覽器。突然出現 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 資料庫。

輪播貼文會被當成播放清單,所以要把播放清單處理設為整份播放清單才能取到全部內容。Stories 需要已追蹤該帳號的工作階段,而且 24 小時後就消失。

Instagram 對自動化存取越來越不信任,一次下載太多太快的工作階段會被要求重新登入——徵兆就是昨天還能用的指令今天回傳登入頁面。用專門的小帳號而不是主帳號,每隔一陣子正常登入保持 cookies 新鮮,並且接受這樣使用的帳號偶爾會被標記,無論指令寫得多小心。這是平台的代價,不是 yt-dlp 的 bug。

貼文、reels 與精選動態走同一個 extractor,但不同工作階段看到的東西不一樣。你追蹤的帳號的 reels 能正常下載;探索頁的 reels 對從未接觸過這類內容的工作階段常常拒絕。精選動態——釘在個人頁面上的那些限時動態圈——每一個都作為自己限時動態的播放清單下載。IGTV 已退役:舊連結有時還能解析,但沒有任何新東西在用它。

Instagram 的限速比 yt-dlp 日常面對的任何平台都狠。同時下載 fragment 只會讓事情更糟而不是更好;一次取一項、每次執行之間留出停頓,才是活得下去的模式。多項目的執行在中途失敗是常態——封存檔案加上出錯繼續,會讓重試變成續傳而不是從頭再來,這很重要:等執行跑完,最早那些項目的 CDN 連結通常已過期,全量重跑只會重新抓頁面而不是媒體。

無法挽回的東西:你沒追蹤的私人帳號的貼文、過了 24 小時的 Stories、以及在你執行指令之前就被刪掉的一切。抓回來的頁面裡的 CDN 連結很快就過期,一小時前還能用的媒體網址現在可能拒絕——別重試舊連結,重新抓貼文頁面。這種過期也是「儘早下載而不是以後再說」的理由:Instagram 從不承諾讓媒體一直可達,而它確實說到做到。

常見問題

為什麼沒有 cookies 時 Instagram 會失敗?
Instagram 對未登入的請求幾乎什麼都不給。--cookies-from-browser 實際上是必需的,而且那個工作階段必須屬於一個看得到該貼文的帳號。
能下載 stories 或 reels 嗎?
reels 和一般貼文一樣。Stories 需要已追蹤該帳號的工作階段,而且 24 小時後就失效。
怎麼取到輪播貼文的全部內容?
把播放清單處理設為整份播放清單 —— yt-dlp 把多圖貼文當成播放清單。