字节笔记本

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 安装

这是最简单的安装方式:

bash
# 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 在初始化数据库时会自动创建一个测试账户:

在浏览器中打开 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 启动后端服务。

项目链接

分享: