SalaryMeow Downloader 🐱
跨平台社交媒体媒体下载工具。支持 抖音 / TikTok / X(Twitter) / B站 / 快手。
基于 https://fzpnowm.top/ 后端 API,无需登录,免费使用。
文件清单
| 文件 | 说明 |
|------|------|
| sm-dl.sh | 核心下载脚本 |
| sm-dl-async.sh | 异步下载 wrapper(QQ/微信通道必用) |
| yt-dl-status.sh | 查询所有后台下载任务状态 |
| cleanup.sh | 定时清理下载文件 |
快速使用
sm-dl <分享链接> [选项]
示例
# 解析链接,查看媒体信息
sm-dl https://v.douyin.com/xxxxxx/
# 下载视频(默认最高画质)
sm-dl https://v.douyin.com/xxxxxx/ -d
# 下载 MP3
sm-dl https://v.douyin.com/xxxxxx/ -d -f mp3
# 指定画质下载
sm-dl https://v.douyin.com/xxxxxx/ -d -q 1080p
# 下载多图帖子的所有图片
sm-dl https://v.douyin.com/xxxxxx/ -d -m all
# 查看详细调试信息
sm-dl https://v.douyin.com/xxxxxx/ -d -v
选项
| 参数 | 说明 | 默认值 |
|------|------|--------|
| -d, --download | 下载媒体 | 否(仅预览) |
| -q, --quality | 画质:720p / 1080p / HD | 最高可用 |
| -f, --format | 格式:video / mp3 | video |
| -m, --mode | 模式:current / all / slideshow / live_photo | current |
| -o, --output | 输出目录 | 当前目录 |
| -v, --verbose | 显示详细调试信息 | 否 |
API 说明
工具使用 https://fzpnowm.top/ 的后端 API:
| 接口 | 方法 | 说明 |
|------|------|------|
| /api/parse | POST | 解析分享链接,返回媒体信息 |
| /api/download | POST | 下载媒体文件(二进制流) |
| /api/stream | GET | 视频流代理预览(参数:video_url, quality) |
/api/parse 请求/响应
// Request: { "url": "https://v.douyin.com/xxxx/" }
// Response:
{
"success": true,
"title": "视频标题",
"thumbnail": "https://...",
"duration": 11,
"platform": "douyin",
"type": "video", // video | photo | live_photo
"video_url": "https://...", // 视频流地址
"images": ["https://..."], // 图片列表(photo 类型时)
"video_urls": ["https://..."] // 实况视频列表
}
/api/download 请求参数
| 参数 | 说明 | 适用类型 |
|------|------|---------|
| url | 必填 原始分享链接 | 全部 |
| type | video / mp3 / image | 全部 |
| quality | 720p / 1080p / HD | video |
| image_index | 图片索引(从0开始) | photo |
| live_photo_format | true 下载为实况图 | live_photo |
| live_photo_index | 实况视频索引 | live_photo |
⚡ 异步下载(QQ/微信通道必看)
绝对不要把下载任务放在消息处理线程里同步执行。 下载会阻塞通道,轻则十几秒卡死,重则进程进入 D 状态不可恢复。必须用异步 wrapper:
sm-dl-async <channel> <user_id> <url> [options]
示例
# QQ 通道异步下载
sm-dl-async qq AFB475853D5CB77468BB4109EBB531E8 "https://v.douyin.com/xxx/" -d -q 1080p
# 微信通道异步下载音频
sm-dl-async weixin o9cq80-xxx "https://x.com/xxx" -d -f mp3
特性
- 立即返回,不阻塞消息通道
- 后台子进程执行,超时 5 分钟自动失败
- 自动重试机制(失败后最多重试 2 次,指数退避)
- 状态文件可查
查询下载状态
# 列出所有正在执行或最近完成的下载
yt-dl-status
# 查看某个具体任务
yt-dl-status smdl_1721300000_12345
各通道使用指南
📱 微信 BOT
用户发链接到微信时:
- 接收链接 → 调
/api/parse解析 - 展示信息 → 标题、类型、时长
- 确认下载 → 问用户要视频还是 MP3
- 下载 → 用
sm-dl-async后台执行或直接下载到~/.lightclaw/media/ - 推送 → 调用
file_preview工具触发推送(见下方说明) - 默认规则 → 视频链接默认下视频,用户说"只要音频"才下 MP3
⚠️ 微信推送必须用 file_preview
微信通道的推送机制特殊:
- 微信通道收到
file_preview工具输出的结构化 JSON 后,取source.url(本地file://路径)读取文件,走 CDN 加密上传推送 - 不要只用
execute_shell_command下载完就完事——那不会触发推送
正确流程:
# 1. 下载到微信的 mediaDir
curl -s -X POST https://fzpnowm.top/api/download \
-H 'Content-Type: application/json' \
-d '{"url":"...","type":"video"}' \
-o ~/.lightclaw/media/filename.mp4
# 2. 调用 file_preview 触发推送
微信支持的文件类型
| 类型 | 能否推送 | 备注 | |------|---------|------| | 视频 MP4 | ✅ 直接推视频消息 | 走 CDN 上传 | | 图片 JPG/PNG | ✅ 直接推图片消息 | 走 CDN 上传 | | 音频 MP3 | ✅ 直接推音频消息 | 走 CDN 上传 | | 其他文件 | ✅ 推文件消息 | 走文件上传 |
🤖 QQ BOT
QQ 通道流程类似,但推送更简单:
- 直接通过素材平台上传
- 视频/图片/音频格式都支持
- 用
file_preview工具同样可以触发推送
重要:QQ 通道同样必须用异步方式下载, 否则会像之前那样把通道卡死。
📊 Dashboard
直接下载到 output/ 目录,展示文件链接即可(Dashboard 不需要推送)。
文件清理机制
| 目录 | 保留时长 | 清理方式 |
|------|---------|---------|
| ~/.lightclaw/media/ | 1 小时 | cron: salarymeow-cleanup |
| output/ | 1 小时 | cron: salarymeow-cleanup |
| /tmp/ 临时文件 | 30 分钟 | cron: salarymeow-cleanup |
- 清理脚本:
skills/salarymeow-downloader/cleanup.sh - 每小时执行一次
- 下载状态文件(
temp/dl-status/)保留 24 小时
支持的链接格式
| 平台 | 链接格式 |
|------|---------|
| 抖音 | douyin.com / v.douyin.com |
| TikTok | tiktok.com / vm.tiktok.com / vt.tiktok.com |
| X / Twitter | twitter.com / x.com / t.co |
| B站 | bilibili.com / b23.tv |
| 快手 | kuaishou.com |
Scan to join WeChat group