字节笔记本
2026年3月22日
Omnivore - 开源稍后阅读应用
本文介绍 Omnivore,一个完整的、开源的"稍后阅读"解决方案,专为热爱阅读的用户打造,现已完全转为自托管模式。
项目简介
Omnivore 是一款功能丰富的开源"稍后阅读"(Read It Later)应用,旨在帮助用户高效地保存、整理和阅读网络文章。项目涵盖了 Web 应用、iOS 原生应用、Android 应用以及主流浏览器的扩展插件,形成了完整的跨平台阅读生态系统。
需要注意的是,Omnivore 的云服务已于 2024 年 11 月停止运营,目前项目已完全转向自托管模式。社区仍然活跃,开发者持续提供更新和 Bug 修复。对于重视数据主权和隐私的阅读爱好者来说,这实际上是一个积极的变化——你可以将所有阅读数据完全掌控在自己的服务器上。
Omnivore 的核心理念是让阅读更加社交化和高效。它不仅仅是一个简单的书签工具,而是一个完整的知识管理平台,支持高亮标注、笔记记录、全文搜索和内容分享等功能。
核心特性
Omnivore 提供了丰富的功能集,以下是按类别进行的详细介绍。
阅读与标注
- 高亮标注:支持对文章中的任意文本进行高亮标注,并可添加笔记和评论。
- 笔记功能:可以为整篇文章或特定段落添加笔记,形成个人知识库。
- 自动保存阅读位置:在长文章中自动记住阅读进度,下次打开直接跳转到上次的位置。
- 全文搜索:支持对已保存的所有文章进行全文搜索,快速找到所需内容。
- PDF 支持:可以保存和阅读 PDF 文档,扩展了内容来源。
- 文字转语音:iOS 端支持 TTS(Text to Speech)功能,将文章朗读出来。
内容获取
- 浏览器扩展:提供 Chrome、Safari、Firefox 和 Edge 的浏览器扩展,一键保存网页。
- 邮件订阅:支持通过邮件方式添加文章,兼容 Substack 等 Newsletter 平台。
- 内容解析:基于 Mozilla Readability 库,自动提取网页核心内容,去除广告和干扰元素。
- Puppeteer 解析:使用无头浏览器进行页面抓取,确保内容完整获取。
组织与管理
- 标签系统:使用标签(Labels)对文章进行分类管理,支持多标签。
- 过滤器:支持多种过滤条件快速筛选文章。
- 列表视图与卡片视图:Web 端支持不同的文章展示方式。
- 离线支持:支持离线阅读已缓存的文章。
第三方集成
- Logseq 插件:通过官方 Logseq 插件将阅读数据与 Logseq 知识库同步。
- Obsidian 插件:通过官方 Obsidian 插件将高亮和笔记导入 Obsidian 笔记系统。
- RSS 集成:支持通过 RSS 订阅源获取文章。
用户体验
- 全键盘导航:Web 端支持完整的键盘快捷键操作,提升阅读效率。
- 社交分享:支持将高亮和笔记分享给他人,促进知识交流。
- 响应式设计:Web 端适配桌面和移动设备。
技术栈
Omnivore 的技术架构基于现代 Web 开发最佳实践,主要由以下技术构成:
- 后端:使用 Node.js 和 TypeScript 构建,提供 GraphQL API。
- 前端(Web):基于 Next.js 框架,使用 TypeScript 开发,配合 SWR 进行数据获取,Stitches 和 Radix UI 用于样式和组件。
- iOS 应用:原生 Swift 开发,使用 Swift GraphQL 生成查询语句。
- Android 应用:原生开发,使用 Apollo GraphQL 生成查询语句。
- 内容抓取:使用 Puppeteer 无头浏览器配合 Mozilla Readability 进行内容解析。
- 数据库:PostgreSQL 作为主数据库。
- 容器化:提供 Docker Compose 配置,方便自托管部署。
- PDF 处理:集成 PDF.js 实现开源 PDF 阅读功能。
- 版本管理:使用 Volta 管理 Node.js 和 Yarn 版本。
整个项目采用 monorepo 结构管理,代码组织清晰,前后端分离,API 通过 GraphQL 进行通信,具有很好的可扩展性。
安装指南
Omnivore 目前仅支持自托管部署,以下是详细的安装步骤。
系统要求
- 操作系统:Linux(推荐)、macOS 或支持 Docker 的其他系统
- 内存:建议至少 2GB RAM
- 软件依赖:Docker 和 Docker Compose
- Chromium:用于内容抓取的 Puppeteer 服务
使用 Docker Compose 安装
这是最简单的安装方式:
# 1. 克隆仓库
git clone https://github.com/omnivore-app/omnivore.git
cd omnivore
# 2. 启动所有服务
docker compose up -d此命令将启动以下服务:
- PostgreSQL 数据库
- Web 前端
- API 服务器
- 内容抓取微服务(content-fetch)
启动完成后,在浏览器中访问 http://localhost:3000 即可使用 Omnivore。
默认测试账户
Docker Compose 在初始化数据库时会自动创建一个测试账户:
- 邮箱:demo@omnivore.work
- 密码:demo_password
在浏览器中打开 http://localhost:3000,选择"Continue with Email"登录。
快速开始
步骤一:注册与登录
首次部署后,使用默认账户登录,然后可以创建自己的账户。
步骤二:安装浏览器扩展
根据你使用的浏览器,安装对应的扩展:
- Chrome:从 Chrome Web Store 安装
- Firefox:从 Firefox Add-ons 安装
- Safari:从 Mac App Store 安装
- Edge:从 Edge Add-ons 安装
安装扩展后,配置其指向你的自托管服务器地址。
步骤三:保存文章
安装好扩展后,浏览网页时点击扩展图标即可将当前页面保存到 Omnivore。你也可以通过以下方式添加内容:
- 在 Web 端点击"Add Link"按钮手动添加 URL
- 将 Newsletter 邮件转发到配置的邮箱地址
步骤四:阅读与标注
在阅读文章时,选中任意文本即可进行高亮标注。你可以为高亮添加笔记,也可以为整篇文章添加笔记。所有标注和笔记都可以通过全文搜索检索。
步骤五:集成知识管理工具
如果你使用 Logseq 或 Obsidian,可以安装对应的插件,将 Omnivore 中的高亮和笔记同步到你的知识管理工具中。
使用示例
场景一:Newsletter 管理中心
将所有 Newsletter 订阅的邮件转发到 Omnivore 配置的邮箱地址,所有 Newsletter 内容会自动保存到你的阅读列表中。使用标签进行分类(如"技术"、"设计"、"产品"),在有空时集中阅读。
场景二:研究资料收集
在撰写论文或进行项目调研时,通过浏览器扩展将相关网页一键保存到 Omnivore。使用高亮标注关键信息,添加笔记记录自己的想法。完成后通过 Logseq 或 Obsidian 插件将所有标注导出到知识库中,形成结构化的研究笔记。
场景三:团队知识分享
团队成员各自保存有价值的文章到共享的 Omnivore 实例中,通过高亮和笔记分享阅读心得。利用全文搜索功能,快速查找团队知识库中是否有相关资料。
场景四:移动端离线阅读
在通勤或出差前,使用 iOS 或 Android 应用将有兴趣的文章缓存到本地。即使没有网络连接,也可以随时阅读已缓存的内容,充分利用碎片化时间。
开发与贡献
Omnivore 的开发环境也支持通过 Docker Compose 快速搭建。如果你希望参与开发,可以在克隆仓库后运行 docker compose up 启动完整的开发环境。前端可以独立运行在本地,仅通过 Docker 启动后端服务。
项目链接
- 项目地址:https://github.com/omnivore-app/omnivore
- 官方博客:https://blog.omnivore.work/
- 自托管部署指南:详见项目仓库中的部署文档
- Discord 社区:通过官方 GitHub 页面加入
- 许可证:AGPL-3.0