📌 项目地址:pablostanley/yoinks | ⭐ 2,784 颗星 | 🔧 TypeScript | 📜 未标注
解决什么问题
从 YouTube、X/Twitter、TikTok、Instagram 下载视频,传统路径要么是浏览器里的各种下载站——满屏弹窗、假下载按钮、可疑跳转,要么是直接用 yt-dlp 这种命令行工具——功能强大但参数繁多。yoinks 的定位很明确:把这些能力包进一个干净的终端界面里。粘贴 URL,选分辨率(或者只要 mp3 音频),回车,文件落到 ~/Downloads。全程没有广告和跳转,支持 1800+ 网站(底层就是 yt-dlp)。
安装与使用
需要 Node 18+。全局安装:
npm install -g yoinks
或者不安装直接试:
npx yoinks
基本用法:
$ yoinks https://youtu.be/dQw4w9WgXcQ # 直接进入格式选择
$ yoinks # 交互式提示输入 url
$ yoinks --theme light # 强制浅色主题
进入后是全屏居中的终端 UI:用 ↑/↓(或 j/k、数字键)选格式,回车确认,esc 返回,^c 退出。也支持鼠标——yoink 按钮、格式列表、底部提示都可点击,点 logo 回到首页。下载完成后文件路径会打印在终端里。
一个细节:默认 auto 主题直接沿用终端自身的前景/背景色,跟随你的终端明暗主题,不用猜。会话内可按 ^t 或点底部的主题控件在 auto/light/dark 之间切换。退出时会恢复你的终端 scrollback,这类小体验做得比较用心。
技术实现
- 底层是 yt-dlp:首次运行时自动下载独立的 yt-dlp 二进制到
~/.yoinks/bin,不需要 Python;如果你系统里已装 yt-dlp,它会直接用你的。 - ffmpeg 用于合并高分辨率音视频流和提取 mp3,优先找 PATH 里的,找不到就用打包的
ffmpeg-static兜底。也就是说,装完即用,不用手动配依赖。 - UI 用 Ink——React 渲染到终端,TypeScript 编写。
和同类工具的区别
直接用 yt-dlp 完全能实现同样功能,但你需要记住 yt-dlp -f "bestvideo+bestaudio" --merge-output-format mp4 之类的参数。yoinks 的价值在于把”选格式”变成一个可视化的列表选择,把依赖管理(yt-dlp 二进制、ffmpeg)变成零配置。对比浏览器下载站,区别更明显:无广告、无追踪、无假按钮。
当前的局限
README 的 Roadmap 暴露了它还年轻的事实,这些功能尚未实现:
--best/--mp3跳过选择器的脚本化模式(意味着现在不方便写进自动化脚本)-o自定义输出目录(目前固定存到~/Downloads)- 播放列表、多视频线程下载
- 剪贴板自动检测、内置二进制的自更新
如果你的需求涉及批量下载或输出路径控制,暂时还得等或直接用原生 yt-dlp。
合规提醒
README 里专门写了公平使用说明:yoinks 是个人存档工具,下载内容可能违反平台服务条款,只下载你有权保留的内容,尊重创作者。这点在使用任何下载工具时都适用。许可证为 MIT。