ljg-x-download

Installation
SKILL.md

ljg-x-download

從 X (Twitter) 連結下載圖片或影片到 ~/Downloads。

依賴

  • yt-dlp(已安裝)

執行流程

1. 解析輸入

從使用者輸入中提取 X/Twitter URL。支援的格式:

  • https://x.com/user/status/123456
  • https://twitter.com/user/status/123456
  • https://mobile.twitter.com/user/status/123456
  • 帶查詢引數的 URL(yt-dlp 自動處理 ?s=20 等追蹤引數)

縮短連結(t.co)先解析:curl -Ls -o /dev/null -w '%{url_effective}' "SHORT_URL"

如果使用者沒有提供 URL,用 AskUserQuestion 要求提供。

2. 嘗試直接下載(影片優先)

直接用 yt-dlp 下載,無需先探測:

yt-dlp -o "~/Downloads/%(uploader)s_%(id)s.%(ext)s" "URL"

如果成功(影片推文),完成。跳到步驟 4 彙報結果。

3. 影片下載失敗時,提取圖片

yt-dlp 對純圖片推文可能報錯。此時用 --dump-json 提取圖片 URL:

yt-dlp --dump-json "URL" 2>&1

判斷結果:

  • JSON 中有 thumbnails 陣列 → 提取圖片 URL
  • JSON 為空或報錯 no video → 推文無媒體,告知使用者"該推文不包含可下載的圖片或影片"
  • 報錯含 login / authentication → 需要登入(見故障排除)
  • 其他錯誤 → 報告具體錯誤資訊

圖片下載:

從 JSON 的 thumbnails 陣列提取所有圖片 URL,替換 name=smallname=mediumname=orig 獲取原圖,然後逐一下載:

curl -L -o ~/Downloads/tweet_ID_1.jpg "https://pbs.twimg.com/media/xxx?format=jpg&name=orig"
curl -L -o ~/Downloads/tweet_ID_2.jpg "https://pbs.twimg.com/media/yyy?format=jpg&name=orig"

副檔名跟隨 URL 中的 format 引數(jpg/png/webp)。

4. 彙報結果

下載完成後,用 ls -lh 列出已下載的檔案:檔名、大小、路徑。

故障排除

需要登入

yt-dlp 報錯含 login / Sign in / age-restricted 時,加 --cookies-from-browser chrome

yt-dlp --cookies-from-browser chrome -o "~/Downloads/%(uploader)s_%(id)s.%(ext)s" "URL"

推文無媒體

純文字推文沒有可下載的媒體。告知使用者即可。

Related skills

More from yelban/ljg-skills.tw

Installs
2
First Seen
Mar 27, 2026