Yoinks 实测:终端里的万能视频下载工具,支持 1800+ 站点一条命令搞定

Yoinks 实测:终端里的万能视频下载工具,支持 1800+ 站点一条命令搞定

Yoinks 实测:终端里的万能视频下载工具,支持 1800+ 站点一条命令搞定

你有没有过这种经历:看到一个有用的视频教程,想保存下来离线看,结果打开某个「在线视频下载器」——满屏弹窗广告、假的下载按钮、点完三步跳转才给你一个带水印的 360p 文件。

或者更常见的场景:你需要批量保存一个创作者的全部内容,浏览器插件一次只能处理一个,点到手软。

Yoinks 就是来解决这个问题的。它是一个终端(Terminal)里的视频下载工具,粘贴 URL,选择画质,回车——搞定。没有弹窗,没有广告,没有假按钮。支持 YouTube、X/Twitter、Instagram、TikTok、Threads 以及 1800+ 其他站点。

Yoinks 是什么:为什么要在终端里下载视频

Yoinks 由开发者 Pablo Stanley 开源,用 TypeScript 编写,基于成熟的 yt-dlp 生态,但把命令行里那些复杂的参数包装成了一个极简的交互式界面

核心卖点很简单:

  • 粘贴 URL,选画质,下载——三步搞定,不需要记任何参数
  • 1800+ 站点支持——YouTube、X/Twitter、Instagram、TikTok、Bilibili、Reddit、Vimeo……你能想到的主流平台全覆盖
  • 零广告零弹窗——不像那些「在线下载器」网站,靠广告和跳转盈利
  • 自动处理依赖——yt-dlp、ffmpeg 首次运行时自动下载,不需要你手动安装 Python 环境
  • 开源免费——MIT 协议,代码完全透明

截至目前,Yoinks 在 GitHub 上已获得 1300+ Stars,对于一个 2026 年 7 月才发布的项目来说,增长相当快。

为什么是终端而不是浏览器插件?

这是一个值得讨论的设计选择。浏览器插件和在线下载器的优势是「不用学」,但劣势也很明显:

维度浏览器插件/在线工具Yoinks(终端工具)
广告几乎都有,部分很激进零广告
批量下载不支持或需付费天然支持(脚本化)
画质选择通常只有 720p/1080p列出所有可用格式+预估大小
音频提取需要额外工具内置 mp3 提取
自动化不可能可配合 cron/shell 脚本
隐私URL 经过第三方服务器全部本地处理
速度受限于服务器带宽直连下载,跑满带宽

简单说:如果你是偶尔下载一个视频的用户,浏览器插件够用;如果你经常需要存素材、做内容整理、批量归档,终端工具的效率是降维打击。

安装与配置:3 分钟上手

前置要求

  • Node.js 18+(检查版本:node -v
  • 操作系统:macOS / Linux / Windows 均可

安装方式

方式一:全局安装(推荐)

npm install -g yoinks

安装后直接在终端输入 yoinks 即可使用。

方式二:免安装直接运行

npx yoinks

不需要全局安装,每次运行时自动下载最新版本。适合偶尔用一次的场景。

首次运行会发生什么?

第一次启动 Yoinks 时,它会自动:

  1. 下载独立的 yt-dlp 二进制文件到 ~/.yoinks/bin(不需要 Python)
  2. 检查系统是否有 ffmpeg(没有的话使用内置的 ffmpeg-static 作为后备)

这意味着你不需要手动安装 yt-dlp 或 ffmpeg——Yoinks 全包了。

实战教程:从入门到熟练

场景一:下载单个视频

yoinks https://youtu.be/dQw4w9WgXcQ

执行后,Yoinks 会接管整个终端窗口(全屏居中),显示所有可用的格式选项:

  ↑/↓ 选择格式,回车确认,esc 返回

  ┌─────────────────────────────────────────┐
  │  1. mp4 1080p ( AVC + M4A )    ~45 MB  │
  │  2. mp4  720p ( AVC + M4A )    ~28 MB  │
  │  3. mp4  480p ( AVC + M4A )    ~15 MB  │
  │  4. webm 1080p ( VP9 + OPUS )  ~52 MB  │
  │  5. mp3  audio only            ~3.5 MB  │
  └─────────────────────────────────────────┘

用方向键(或 j/k、数字键)选择格式,回车确认。文件自动保存到 ~/Downloads,终端会打印文件路径。

交互细节

  • ↑/↓j/k 切换选项
  • 数字键直接跳到对应选项
  • esc 返回上一步
  • Ctrl+C 退出
  • 支持鼠标点击(格式列表和底部提示都是可点击的)

场景二:不传 URL,手动粘贴

yoinks

直接运行 yoinks(不带参数),会提示你输入 URL。适合你刚从浏览器复制了链接的场景。

场景三:提取音频为 MP3

在格式选择界面中选择 mp3 audio only 选项即可。Yoinks 会自动调用 ffmpeg 将音频提取为 MP3 格式。

这对于只想保存播客、音乐、有声书音频的用户非常实用——不需要下载整个视频文件再手动转换。

场景四:选择特定画质

Yoinks 的格式选择器会列出所有可用格式,并预估每个格式的文件大小。这比 yt-dlp 原始命令行友好得多——你不需要自己计算码率和文件大小的关系。

技术架构:Yoinks 是如何工作的

Yoinks 的技术栈值得了解,因为它解释了为什么这个工具既轻量又强大:

┌─────────────────────────────────────────┐
│            Yoinks (TypeScript)           │
│                                          │
│  ┌──────────┐  ┌──────────┐  ┌────────┐ │
│  │  Ink UI  │→ │ URL 解析 │→ │ yt-dlp │ │
│  │ (React)  │  │ (格式列表)│  │ (下载) │ │
│  └──────────┘  └──────────┘  └────────┘ │
│       ↑                        ↓         │
│  终端交互                   ffmpeg       │
│  (键盘/鼠标)             (合并/转码)     │
└─────────────────────────────────────────┘

核心组件

  1. Ink(React for Terminal)——Yoinks 的 UI 层。Ink 让开发者用 React 组件的方式构建终端界面,这就是为什么 Yoinks 的交互体验远超传统 CLI 工具。
  2. yt-dlp——下载引擎。Yoinks 不重新实现视频解析和下载逻辑,而是调用 yt-dlp 这个久经考验的开源项目。yt-dlp 本身支持 1800+ 站点,Yoinks 继承了全部能力。
  3. ffmpeg——音视频处理。用于合并高分辨率的音视频流(很多站点将两者分开传输)和 MP3 提取。

为什么这个架构好?

  • Yoinks 不需要维护庞大的站点适配代码——yt-dlp 社区已经在做这件事
  • 更新 yt-dlp 就能自动获得新站点支持
  • 代码量小,维护成本低,MIT 开源

高级用法:让效率翻倍

配合 Shell 脚本批量下载

假设你有一个 URL 列表文件 urls.txt

while IFS= read -r url; do
  yoinks "$url"
done < urls.txt

或者更简洁的单行版本:

cat urls.txt | xargs -I {} yoinks {}

这对于需要批量归档某个创作者全部内容的场景非常有用。

配合 cron 定时下载

如果你需要定期抓取某个频道的新视频(比如每天凌晨 3 点),可以设置 cron 任务:

# 编辑 crontab
crontab -e

# 添加:每天凌晨 3 点执行
0 3 * * * /usr/local/bin/yoinks https://www.youtube.com/@SomeCreator/videos

注意:目前 Yoinks 的 Roadmap 中尚未实现 --best / --mp3 等跳过格式选择器的 flag,因此 cron 场景下可能需要交互式选择。这个功能在开发计划中,未来版本将支持完全脚本化的非交互模式。

主题切换

Yoinks 支持三种主题:

  • auto(默认)——跟随终端的前景色和背景色
  • light——强制浅色主题
  • dark——强制深色主题
yoinks --theme dark
yoinks --theme light

运行中按 Ctrl+T 也可以实时切换主题。

对比评测:Yoinks vs 同类工具

特性Yoinksyt-dlp4K Video Downloader浏览器插件
价格免费开源免费开源免费版有限制,Pro $15/年大多免费(有广告)
支持站点1800+1800+~100取决于插件
界面终端交互 UI命令行桌面 GUI浏览器按钮
上手难度简单中等(需记参数)简单最简单
批量下载✅ 脚本化✅ 脚本化
音频提取✅ 内置部分支持
广告通常有
隐私本地处理本地处理本地处理可能经过服务器
自动化✅ cron/shell✅ cron/shell
系统要求Node 18+Python 3.8+Windows/macOS/Linux浏览器

选择建议

  • 偶尔下载一个视频 → 浏览器插件够用
  • 经常下载、需要批量处理 → Yoinks 或 yt-dlp
  • 不想碰终端,但需要批量 → 4K Video Downloader
  • 需要最大灵活性和脚本集成 → yt-dlp(Yoinks 底层就是它)
  • 想要终端体验但不想记参数 → Yoinks(最佳选择)

局限性与注意事项

版权与法律风险

Yoinks 的 README 中明确声明:

yoinks is a personal-archiving tool. Downloading content may violate a platform’s terms of service — only download what you have the right to keep.

翻译过来:下载内容可能违反平台的服务条款,只下载你有权保存的内容。

具体来说:

  • YouTube 的 ToS 禁止下载(除非有下载按钮)
  • 下载受版权保护的内容并分发是违法的
  • 个人学习、存档用途通常在灰色地带

建议:只下载你自己发布的内容、Creative Commons 授权的内容、或明确允许下载的内容。

平台限制

  • 某些平台会对下载进行限速或封 IP
  • 部分需要登录的内容(如 YouTube 会员视频)需要额外配置 cookies
  • 直播流下载不在当前功能范围内

当前版本的不足

根据 Yoinks 的 Roadmap,以下功能尚未实现:

  • --best / --mp3 快捷 flag(跳过格式选择器)
  • -o <dir> 自定义输出目录
  • 播放列表 / 多视频帖子支持
  • 剪贴板自动检测
  • yt-dlp 自动更新

这些都是合理的功能规划,预计后续版本会逐步加入。

总结评价

Yoinks 解决了一个真实存在的痛点:在终端里高效、干净地下载视频。它没有重新发明轮子,而是站在 yt-dlp 的肩膀上,把命令行体验做到了极致。

优点

  • 极简交互,粘贴 URL 就能用
  • 零广告、零弹窗、零隐私顾虑
  • 1800+ 站点支持(继承 yt-dlp)
  • 自动处理依赖,不需要 Python 环境
  • 开源免费,MIT 协议

不足

  • 需要 Node.js 18+(对于非开发者可能是门槛)
  • 尚不支持播放列表批量下载
  • 缺少非交互模式(--best flag),限制了自动化场景
  • 项目较新(2026-07 发布),社区生态还在成长

适合谁

  • 经常需要存素材的内容创作者
  • 习惯终端工作流的开发者
  • 需要批量下载和自动化的用户
  • 对在线下载器广告深恶痛绝的任何人

如果你属于以上任何一类,npm install -g yoinks 值得一试。


常见问题(FAQ)

Q1: Yoinks 安全吗?会不会泄露我的下载记录?

Yoinks 完全在本地运行,所有下载请求直接从你的电脑发往视频源服务器。URL 不会经过任何第三方服务器。代码开源在 GitHub 上,任何人都可以审计。

Q2: 需要安装 Python 或 ffmpeg 吗?

不需要。Yoinks 首次运行时会自动下载独立的 yt-dlp 二进制文件(不需要 Python),并使用内置的 ffmpeg-static 作为后备。如果你的系统已经安装了 ffmpeg,Yoinks 会优先使用系统版本。

Q3: 支持哪些操作系统?

macOS、Linux 和 Windows 都支持,只要有 Node.js 18+ 环境。

Q4: 和直接用 yt-dlp 有什么区别?

yt-dlp 是强大的命令行工具,但需要记住各种参数(如 -f bestvideo+bestaudio--extract-audio 等)。Yoinks 在 yt-dlp 之上提供了一个交互式 UI,让你用方向键选择格式,不需要记任何参数。底层下载能力完全相同。

Q5: 可以下载需要登录才能看的内容吗?

理论上可以,但需要手动配置 yt-dlp 的 cookies。这超出了 Yoinks 当前的简化范围,属于高级用法。对于大多数公开内容,直接粘贴 URL 即可下载。