ARTICLE · 1101618
一个应用搞定全网下载!这个开源神器太顶了
一款支持1800+网站的开源下载管理器,无需终端操作,覆盖视频、课程、音乐、电子书,所有文件本地存储,跨平台支持。

项目亮点
🎯 一个应用,全平台通吃
OmniGet 是一款基于 Tauri 2.0 + Rust + SvelteKit 打造的桌面下载管理器。它能帮你下载 1800+ 网站上的视频、音频、课程、电子书……从 B 站到 YouTube,从 Udemy 到 TikTok,一个应用全部搞定。
简单说,它就是下载界的"万能遥控器"——你不需要为每个网站装一个工具,也不用打开终端敲命令。
✨ 核心功能一览
- 全平台覆盖:
YouTube、Bilibili、TikTok、Instagram、Twitter/X、Reddit、Twitch、Vimeo、SoundCloud、Pinterest、Telegram 等,还支持 Udemy、Hotmart、Kiwify、Skool、Teachable 等在线课程平台 - 浏览器扩展加持:
Chrome 和 Firefox 扩展能实时嗅探网页上的视频/音频流(MP4、HLS、DASH、WebM 都不在话下),一键推送到桌面应用下载 - Cookie 管理:
自动携带 Cookie、Referer 和认证头,那些需要登录才能看的课程和会员内容也能轻松搞定 - 内置播放器:
下载完的视频、音乐、电子书直接在应用内播放/阅读,不用再切到别的软件 - 跨平台支持:
Windows、macOS、Linux 全覆盖,基于 GPL-3.0 开源协议

解决什么痛点?
🤔 场景一:网课下载的噩梦
小王报了一门 Udemy 课程,想下载下来离线学习。结果发现:官方 App 不支持下载,用 yt-dlp 要敲一堆命令还得配置 Cookie,装个浏览器插件又只能下 YouTube……
OmniGet 解决的就是这个问题。打开应用,粘贴课程链接,点击下载——就这么简单。它会自动处理认证、Cookie、视频分片合并,你只需要等进度条走完。
🎯 场景二:内容创作者的素材收集
做视频的小李需要从 TikTok、Instagram、Twitter 收集素材。以前他要在不同的网站间切换,用不同的工具下载,文件名还乱七八糟。
现在,他只需要装一个浏览器扩展。浏览网页时,扩展会自动检测页面上的所有视频流,按会话分组显示。点击一下,所有素材直接进 OmniGet 的下载队列,统一命名、统一管理。
💡 场景三:只想安安静静看个视频
有时候你只想把 B 站的视频存到本地,方便在地铁上看。但传统的下载工具要么需要命令行,要么塞满了广告。
OmniGet 的界面设计遵循"简洁优先"原则——没有花里胡哨的功能按钮堆砌,打开就是输入框,粘贴链接就能下载。所有文件都保存在你自己的电脑上,不上传任何云端。

手把手教程
➤ 环境准备
首先,你需要安装两个基础工具:
Rust(后端语言):
# 访问 https://rustup.rs/ 安装 Rust 稳定版curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shNode.js 18+ 和 pnpm 10+:
# 安装 pnpmnpm install -g pnpmLinux 用户还需要安装 Tauri 的系统依赖:
sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file \ libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev patchelf➤ 获取项目
git clonehttps://github.com/OpenSelena/omniget.gitcd omniget➤ 安装依赖并启动
# 安装前端依赖pnpm install# 启动完整应用(Rust 后端 + 前端)cargo tauri dev如果你想分别调试:
# 只启动 SvelteKit 开发服务器pnpm dev# 只做 Rust 类型检查(不构建)cargo check# 前端类型检查pnpm check➤ 浏览器扩展配置
OmniGet 的浏览器扩展(支持 Chrome 和 Firefox)需要通过本地 HTTP 桥接与桌面应用通信。
桌面端:首次启动时会在 127.0.0.1 的 47720-47729 端口范围内启动一个本地 HTTP 服务,并生成一个配对令牌。
扩展端:安装扩展后,选项页面会自动探测本地端口,你只需要粘贴桌面应用显示的令牌即可完成配对。
配对成功后,浏览任意支持网站时,扩展图标会从灰色变为彩色。点击图标,就能把当前页面的媒体推送到 OmniGet 下载。
快捷键:Alt+O 一键发送当前页面到 OmniGet。
➤ 从源码构建发布版
# 构建前端 + Rust 后端cargo tauri build生成的安装包会放在 src-tauri/target/release/bundle/ 目录下。

技术架构速览
虽然 OmniGet 用起来简单,但它的技术栈相当硬核:
- 后端:
Rust + Tauri 2.x,使用 tokio 异步运行时、reqwest HTTP 客户端、sqlx(SQLite)做数据持久化 - 前端:
SvelteKit 2 + Svelte 5(runes 语法),TypeScript 严格模式 - 样式:
Scoped CSS + CSS 自定义属性,不用 Tailwind,不用 CSS-in-JS - i18n:
sveltekit-i18n,支持多语言(中、英、俄、葡、日、法、德等) - 平台提取器:
采用 trait-based 插件系统,所有平台实现统一的 PlatformDownloadertrait,核心逻辑已移植到omniget-core库,与 Tauri 框架解耦

同类项目对比
| 功能 | ||||
| 平台支持 | ||||
| 性能 | ||||
| 生态 | ||||
| 使用门槛 |

一些细节设计
🎨 设计哲学
OmniGet 的界面设计遵循"少即是多":一个蓝色强调色、13px 正文字号、通过字重和字号建立层级、用分隔线和色调变化表达深度(而不是阴影)。整体风格向 macOS 原生应用看齐。
🔧 稳定性保障
项目在开发过程中非常注重质量:所有测试通过真实 SIGKILL 验证队列恢复能力(不是模拟),使用 WAL(预写日志)确保下载队列在崩溃后能完整恢复。
🌍 国际化
应用本身和浏览器扩展都支持多语言,翻译文件采用 JSON 格式,社区可以通过 Weblate 平台贡献翻译。
📦 模块化架构
平台提取器采用 trait-based 插件系统,所有平台实现统一的 PlatformDownloader 接口。核心逻辑已抽离到 omniget-core 库中,与 Tauri 框架解耦,方便未来移植到 CLI 工具或其他 GUI 框架。

最后说两句
OmniGet 最打动人的地方在于:它把复杂的技术细节全部藏在了背后,留给用户的只有一个干净的输入框和一个下载按钮。
你不用懂 HLS 分片合并,不用配置 Cookie 提取规则,不用研究 yt-dlp 的 200 个参数——粘贴链接,点击下载,完事。
如果你也受够了在各种下载工具之间反复横跳,不妨试试这个项目。开源免费,所有文件保存在本地,用着放心。

🔗 项目地址:https://github.com/OpenSelena/omniget.git
试试看,然后在评论区告诉我你的使用体验~