ljg-x-download
Download images and videos from X (Twitter) posts to ~/Downloads. Use when user shares an X/Twitter link and wants to save media, or says '下载', 'download', '保存图片', '保存视频', or provides a x.com/twitter.com URL with intent to download media.
- License 许可
- MIT
- 最近更新
- 2026-04-14
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- ljg-x-download
- version
- 1.1.0
- description
- Download images and videos from X (Twitter) posts to ~/Downloads. Use when user shares an X/Twitter link and wants to save media, or says '下载', 'download', '保存图片', '保存视频', or provides a x.com/twitter.com URL with intent to download media.
- user_invocable
- true
03 SKILL.md 正文
ljg-x-download
从 X (Twitter) 链接下载图片或视频到 ~/Downloads。
依赖
yt-dlp(已安装)
执行流程
1. 解析输入
从用户输入中提取 X/Twitter URL。支持的格式:
https://x.com/user/status/123456https://twitter.com/user/status/123456https://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=small 或 name=medium 为 name=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"
推文无媒体
纯文字推文没有可下载的媒体。告知用户即可。
04 同仓库更多 Skills
wechat-search
Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.
trend-tap
Real-time trending topics aggregator across 7 platforms (X/Twitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending/hot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.
trend-radar
Real-time trending topics aggregator across 7 platforms (X/Twitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending/hot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.
tech-news-daily
每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻,翻译(英→中)、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。
summarize
Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).
sonoscli
Control Sonos speakers (discover/status/play/volume/group).