yoinks:终端下载1800+网站视频的yt-dlp工具
给想在终端归档视频的人用的yt-dlp界面,支持1800+网站且没有弹窗和假下载按钮。
GitHub pablostanley/yoinks 更新 2026-10-02 分支 main 星标 2.9K 分叉 276
TypeScript 终端工具 yt-dlp Node 18+ Ink 视频下载

🧭 决策指南

适合,如果你

  • 你使用Node 18+,想从YouTube、X/Twitter、Instagram或TikTok下载视频。
    README的Install章节要求Node 18+;正文列出YouTube、X/Twitter、Instagram、Threads、TikTok及1,800+网站。
  • 你希望用npx直接运行,并通过Ink界面选择分辨率或audio-only mp3。
    Install章节提供npx yoinks;Usage章节说明可选择resolution或audio-only mp3,How it works章节说明UI使用Ink。
  • 你需要yt-dlp能力但不想单独安装Python。
    How it works章节说明首次运行下载standalone yt-dlp binary到~/.yoinks/bin,并注明no Python required。

不适合,如果你

  • 你需要脚本模式中的--best或--mp3,或需要-o指定输出目录。
    Roadmap将--best、--mp3和-o列为未完成项。
  • 你需要Playlist、thread-with-multiple-videos或剪贴板自动检测。
    Roadmap将Playlist / thread-with-multiple-videos和Clipboard detection列为未完成项。
  • 你的下载用途可能违反平台条款,或你需要项目明确提供商业合规保证。
    A note on fair use章节明确提醒下载内容可能违反平台terms of service,并要求只下载有权保留的内容。
  • 你偏好有正式版本和多人维护信号的依赖工具。
    项目元数据显示贡献者1人、版本发布0个、最新版本No releases。

前置条件

  • Node 18+
  • README说明Everything else (yt-dlp, ffmpeg) is fetched or bundled automatically
  • 高分辨率流合并和mp3提取需要ffmpeg;README说明其从PATH查找,并以ffmpeg-static作为bundled fallback
  • 默认输出目录为~/Downloads

第一步命令(README 原文)

npx yoinks

要注意

  • 首次运行会把standalone yt-dlp binary下载到~/.yoinks/bin。
    README的How it works章节。
  • ffmpeg不在PATH时会依赖ffmpeg-static,且它负责高分辨率合并和mp3提取。
    README的How it works章节。
  • yoinks会接管终端全屏,并在退出时恢复scrollback。
    README的Usage章节。
  • Roadmap中的yt-dlp自更新(yt-dlp -U)尚未实现。
    README的Roadmap章节。

替代方案

  • yt-dlp:需要直接使用yt-dlp命令行参数、绕过yoinks的交互式格式选择,或使用其自身更新机制时更合适。
    How it works;通用领域知识

材料未说明

  • README没有说明支持的操作系统范围。
  • README没有说明各平台是否需要登录、Cookie或如何处理受限内容。
  • README没有给出支持的具体格式列表、编码器选择或文件命名规则。
  • README没有说明下载失败、限速、网络中断和重试行为。
  • README没有说明1,800+网站支持对应的yt-dlp版本或兼容性范围。
  • README没有说明npm包的具体版本号,也没有正式GitHub Release。

💡 深度解析

6
不适合 我正在维护一个批量媒体处理脚本,希望用 `--best` 或 `--mp3` 跳过交互式选择,并用 `-o` 指定输出目录;当前的 yoinks 能直接接入吗?
适合读者: 维护脚本化媒体流水线、希望批量下载并依赖 `--best`、`--mp3` 或 `-o` 参数的开发者

不适合当前的自动化接入,因为 README 把这些脚本化参数列在尚未完成的路线图中。

  • Roadmap 中 --best / --mp3 flags to skip the picker (scriptable mode) 仍是未勾选状态。
  • -o 选择输出目录同样尚未实现;当前 Usage 只说明文件固定保存到 ~/Downloads。
  • 当前工具启动后进入全屏交互界面,需要选择格式;这不符合无交互批处理的输入模型。
  • README 说明底层由 yt-dlp 驱动,因此直接使用 yt-dlp 更接近已有脚本的参数化需求。

这不是说 yoinks 永远不能用于流水线,而是当前公开功能没有承诺稳定的脚本模式、输出目录参数或批量任务接口。播放列表和多视频线程支持也仍在路线图中。

  • README「Roadmap」:`--best` / `--mp3` flags to skip the picker 尚未勾选
  • README「Roadmap」:`-o` to choose the output folder 尚未勾选
  • README「Usage」:格式需要通过交互式 picker 选择;文件保存到 `~/Downloads`
  • README「Roadmap」:Playlist / thread-with-multiple-videos support 尚未完成
材料未说明:README 未说明当前版本是否存在未文档化的脚本参数。;README 未说明批量任务、并发下载、退出码和机器可解析输出格式。
适合 我不想记 yt-dlp 的复杂格式参数,但能使用终端;我希望通过方向键、j/k、数字键或鼠标选择分辨率,并能在深色和浅色终端间切换,yoinks 是否更合适?
适合读者: 习惯传统命令行参数、但希望在终端中用方向键、j/k、数字键或鼠标选择格式的个人存档用户

适合,因为 README 明确把格式选择和终端交互做成可视化流程,降低了记忆 yt-dlp 参数的要求。

  • Usage 支持方向键、j/k、数字键和鼠标选择格式,Esc 返回,Ctrl-C 退出。
  • Ink 提供全屏、居中界面,并在退出时恢复终端滚动缓冲区。
  • 主题支持 auto、light、dark,其中 auto 使用终端自身的前景色和背景色。
  • 用户可以通过 yoinks <url> 直接进入 picker,也可以不带参数启动后再输入 URL。

它仍要求用户理解终端交互和视频格式与 MP3 的区别;如果需求是无界面脚本化下载,当前路线图中的自动化参数尚未实现。

  • README「Usage」:↑/↓、j/k、number keys、mouse、Esc 和 `^c`
  • README「Usage」:full-screen, centered — and restores your scrollback on exit
  • README「Usage」:主题包括 `auto`、`light`、`dark`
  • README「How it works」:The UI is Ink — React for the terminal
yoinks https://youtu.be/dQw4w9WgXcQ
材料未说明:README 未列出不同终端模拟器、远程会话或鼠标协议下的兼容性。;README 未说明无完整 TTY 时是否会自动降级为普通文本模式。
适合 我主要从 YouTube、X/Twitter、Instagram、Threads 和 TikTok 保存自己有权保留的视频,希望在终端里完成下载,不想处理弹窗、伪按钮和可疑跳转,yoinks 适合我吗?
适合读者: 需要从 YouTube、X/Twitter、Instagram、Threads 和 TikTok 保存个人内容,并希望避免网页广告与伪下载按钮的终端用户

适合,因为它正是把多站点下载包装成终端中的“粘贴、选择、完成”流程。

  • README 明确列出 YouTube、X/Twitter、Instagram、Threads、TikTok 及“1,800+ other sites”。
  • 运行 yoinks <url> 会直接进入格式选择器,也可以裸启动后输入 URL。
  • 下载文件默认保存到 ~/Downloads,完成后会把文件路径打印到终端。
  • README 明确强调“No popups, no fake download buttons, no sketchy redirects”。

但它仍依赖 yt-dlp 和目标平台状态;登录、地区限制、私有内容或平台改版不由 yoinks 独立解决。使用范围也受平台条款和内容权利约束。

  • README「yoinks」:下载 YouTube、X/Twitter、Instagram、Threads、TikTok 和 1,800+ other sites
  • README「Usage」:`yoinks https://youtu.be/...`;Files are saved to `~/Downloads`
  • README「yoinks」:No popups, no fake download buttons, no sketchy redirects
  • 项目洞察「usage_limitations」:本质上是 yt-dlp 的交互式封装
npx yoinks
材料未说明:README 未说明各平台登录、年龄限制、地区限制和私有内容的具体处理方式。;README 未说明播放列表或多视频线程的当前支持范围。
不适合 我在 Node.js 18+ 的服务器或容器中运行工具,需要把下载结果写入指定工作目录,而不是 `~/Downloads`,并希望避免自动把二进制放到用户主目录;yoinks 适合吗?
适合读者: 在服务器、容器或共享机器上运行 Node.js 18+,需要严格控制下载目录且不希望写入用户主目录的运维开发者

不适合这种严格目录隔离环境,因为当前 README 只支持固定的 ~/Downloads 输出,并会把自动获取的 yt-dlp 放到用户主目录下的目录。

  • Usage 明确写着文件保存到 ~/Downloads,而 -o 自定义输出目录仍在 Roadmap。
  • How it works 说明首次运行会把独立 yt-dlp 下载到 ~/.yoinks/bin。
  • 工具使用 Ink 接管全屏终端;服务器或容器若没有完整 TTY,交互界面可能不符合运行环境。
  • README 要求 Node 18+,但没有给出容器、无家目录用户或无 TTY 模式的部署说明。

如果目标是服务端批处理、可控目录和非交互运行,当前文档化能力不足;它更偏向个人终端使用。

  • README「Usage」:Files are saved to `~/Downloads`
  • README「Roadmap」:`-o` to choose the output folder 尚未完成
  • README「How it works」:下载 yt-dlp 到 `~/.yoinks/bin`
  • 项目洞察「usage_limitations」:不适合服务器、容器、共享机器或严格目录隔离环境
材料未说明:README 未说明无 TTY、只读 HOME、容器用户权限和代理环境是否受支持。;README 未说明是否可以通过环境变量覆盖 `~/Downloads` 或 `~/.yoinks/bin`。
视情况 我使用 Node.js 18+,需要从支持的网站提取 MP3 或合并高分辨率视频流,但不想单独安装 Python 和手动配置 yt-dlp、ffmpeg,yoinks 是否适合?
适合读者: 需要提取 MP3 和选择高分辨率视频、但不想手工配置 Python、yt-dlp 与 ffmpeg 的 Node.js 18+ 用户

视情况:依赖安装顺利时适合,但 MP3 和高分辨率合并仍取决于 ffmpeg 是否可用。

  • README 要求 Node 18+,并说明 yt-dlp、ffmpeg 会被自动获取或打包,因此不要求用户手工准备 Python。
  • yt-dlp 首次运行会下载到 ~/.yoinks/bin;若系统已有 yt-dlp,则优先使用系统版本。
  • ffmpeg 会先从 PATH 查找,并以 ffmpeg-static 作为回退;它用于高分辨率流合并和 MP3 提取。
  • 格式选择器明确支持选择分辨率或 audio-only mp3。

如果网络、权限或回退二进制不可用,转换和合并可能失败。README 没有给出 ffmpeg 版本兼容矩阵,也没有说明不同平台回退包的覆盖情况。

  • README「Install」:Requires Node 18+. Everything else (yt-dlp, ffmpeg) is fetched or bundled automatically
  • README「How it works」:yt-dlp 下载到 `~/.yoinks/bin`;no Python required
  • README「How it works」:ffmpeg 用于 merging high-res streams and mp3 extraction
  • README「Usage」:pick a resolution (or audio-only mp3)
npx yoinks
材料未说明:README 未说明 ffmpeg-static 的具体版本、平台覆盖和与系统 ffmpeg 的兼容性。;README 未说明失败时是否会清晰区分 yt-dlp、ffmpeg、网络或权限错误。
视情况 我维护 TypeScript/Node.js 18+ 工具,希望基于一个 MIT 项目扩展终端下载流程;我需要 npm/npx 分发、tsup 构建和可修改的 Ink React UI,yoinks 值得作为基础吗?
适合读者: 希望把项目作为 npm 依赖或二次开发基础、使用 TypeScript 和 Node.js 18+ 的开源开发者

视情况:作为交互层和 npm CLI 原型基础值得考虑,但不应把它当作完整下载引擎或成熟发布产品。

  • 项目主语言是 TypeScript,README 的开发流程使用 tsup 将代码打包到 dist/。
  • How it works 说明 UI 使用 Ink,即 terminal 中的 React;这便于继续改造格式选择、状态展示和主题交互。
  • README 已支持 npm install -g yoinks 与 npx yoinks,并使用 MIT License,适合分发和二次开发。
  • 下载能力主要来自 yt-dlp,ffmpeg 负责高分辨率合并和 MP3 提取;yoinks 的职责更接近流程编排。

如果你需要稳定 API、已发布 Release、批处理参数或自更新机制,当前项目资料不足;Roadmap 仍列有脚本模式和 yt-dlp 自更新。

  • 项目核心数据:主语言 TypeScript;许可证 MIT License;release_count 为 0
  • README「Development」:`npm run build`、bundle to `dist/` with tsup
  • README「How it works」:The UI is Ink — React for the terminal
  • README「Install」与「Roadmap」:支持 npm/npx;自更新和脚本模式仍未完成
npm install
材料未说明:README 未说明可供外部调用的稳定 TypeScript API、模块边界或扩展点。;项目数据未显示已发布 Release,因此版本兼容策略、变更日志和回滚流程未知。;README 未说明自动获取二进制时的校验、来源固定和供应链验证机制。

✨ 核心亮点

  • 支持YouTube、TikTok及1,800+网站
  • yt-dlp自动获取,首次运行无需Python
  • Ink终端界面支持键盘与鼠标操作
  • 项目仅1位贡献者且暂无版本发布

🔧 工程化

  • 用yoinks粘贴URL、选择分辨率或mp3并保存到~/Downloads。
  • 基于yt-dlp下载,ffmpeg负责高分辨率合并和mp3提取。
  • Ink提供全屏终端UI,支持↑/↓、j/k、数字键和鼠标。

⚠️ 风险

  • 高分辨率合并和mp3提取依赖PATH中的ffmpeg或ffmpeg-static。
  • Roadmap中的--best、--mp3和-o仍未完成。
  • README提醒下载内容可能违反平台条款,项目仅用于个人归档。
  • 仅1位贡献者、0个版本发布,维护成熟度信号有限。

👥 适合谁?

  • 需要在Node 18+终端下载YouTube或TikTok视频的开发者。
  • 偏好Ink交互界面、不想安装Python的命令行用户。
  • 需要通过npx快速运行个人视频归档工具的人。