前言#
书签/收藏夹是我们管理有用信息的重要手段。相信越看重信息价值的人,书签越多。使用书签的目的是方便地找出我们需要的信息,但随着时间增长,书签会变得越来越多,当书签多达几百条,几千条乃至几万条时,就很难做到“方便地找出”需要的信息了。如果你也有非常多的书签,并且经常需要用到书签,想必经历过因为不记得网页标题导致不得不一条条翻书签,结果花费了几十分钟在寻找书签这种无意义的事情上面的过程。所以,看重知识管理的人往往都面临过一个问题——如何管理书签。
对于书签管理的需求#
首先需要明确的是,我将书签分为两类,第一类是“网页的内容”有价值的,第二类是“网页本身有价值的”。举例来说,一篇搭建博客的教程并不会因为放在不同的网页上而对其价值产生影响,其价值来源于内容,因此属于第一类。而 Clouflare 的控制台,不在浏览器内实时打开就毫无意义,保存网页内容并没有任何用处,因此属于第二类。第二类书签往往不会非常多,面临的管理问题比较小,而且由于必须在浏览器内打开才有价值,所以使用浏览器自带书签功能进行管理是比较好的方案。而第一类书签非常容易累积起来,管理的主要压力也来自于这一类书签。但由于它们并不需要在浏览器内打开也能发挥价值,所以一定程度上可以从浏览器中剥离出来,也就给了我们操作的空间,本文探讨的就是关于第一类书签的管理问题。
目前浏览器的传统书签是非常简单的标题+缩略图+url 的形式,也就是说必须记得标题或者域名中的一部分,才能使用搜索很快地找到正确的书签。这很明显是不太容易做到的,因此我希望能对书签的网页内容进行全文搜索。不需要记住标题,只需要记得整个网页内的几个关键词,就能找到对应书签。实际上,正是因为对某几个关键词有印象,所以人们才会想起来自己做过这么一个书签,所以根据文章内关键词检索是非常符合逻辑的。
当然,我们可以养成定期整理书签的良好习惯,把不需要的书签清理掉,让自己在查找书签时更加高效。这也是能起到一定的提高效率的作用的。但,书签依然是会越变越多的,当余下几百个有用的书签时,一样会面临上述问题。并且我个人是比较懒的,比起定期打理,更喜欢一劳永逸。因此我希望能做到低维护成本,甚至不需要维护。使用关键词全文检索使得低维护成本变为了可能。具体来说就是,即使某些书签已经不需要了,也可以不管它们,让它们淤积在收藏夹内不清理。由于使用关键词全文检索,并不会影响查找其他书签的效率,即所谓的低维护成本。
很长一段时间内,我并没有找到满足上述条件的书签管理方式,除非将网页下载到本地保存为 markdown 文件。但这种方法有诸多弊端,比如多端同步需要额外配置,比如需要本地有 markdown 软件等。仍需更好的解决方案。
偶然间我看到了剪藏思想——将一部分有用的信息收容起来。我觉得书签其实也就相当于剪藏了一整个网页,说不定能从剪藏软件中找到满足我需求的东西。
顺着这个思路,我找到了如五彩划线、简悦、Pinbox 和 Cubox 之类的产品。其中 Pinbox 和 Cubox 基本实现了我的需求,但内容超过一定量之后必须要付费。我只是拿来做书签管理,一年 98 价格属实是有点没必要,很多功能我用不上,我需要更贴合需求的,轻量化的东西。而在这时,我想起了今天的主角——Omnivore。
Omnivore 简介#
Omnivore 是一个开源的稍后阅读解决方案。对,是稍后阅读,不是书签管理。Omnivore 会把你想稍后阅读的文章保存到服务器上。我们就可以利用这一点完成上述需求。
具体操作#
比起上面说的一堆废话,操作可以说非常简单了。
- 打开 Omnivore 官网注册一个账号。
- 进入 home 后,点击右上角头像-API Keys-Create an API Key-输入你喜欢的名字,Expires (过期时间)选 Never 即可 (除非你有别的需求)-把生成的 key 保存起来,待会有用。
- 安装 Omnivore 的 chrome 拓展到浏览器上,可以选择直接固定在拓展栏里,这样使用起来会比较方便。
- 右键点击该拓展-选项-把第 2 步生成的 key 输入到 API Key 栏内-点击 Save API Key 保存。
从此就可以使用这个拓展代替书签了:
- 遇到想保存书签的网页,点击该拓展的图标。
- 编辑书签信息,建议设置上面提到的标签。
即可。
以后想找书签时,打开 Omnivore 直接搜索。但是注意!网页端全文搜索有 bug,会出现明明文章内有这些内容但就是搜索不到的问题。截止目前(2024 年 1 月 9 日)仍未修复,并非单是中文搜索问题,英文也一样有问题。如果需要进行完美的搜索,请看下一节与 Obsidian 的联动。
与 Obsidian 的联动#
由于上一节末尾提到的问题,这里给出的解决方案是利用 Obsidian 的搜索功能进行弥补(当然 Logseq 也可以)。首先需要说明的是,我认为大家并不会频繁购入新设备,所以在设备上安装多一个软件是可以接受的成本。另外,虽然网页端搜索有问题,但直接尝试搜索也是有大概百分之八九十的几率搜出来的,只是不能百分百保证搜出来而已。
与 Obsidian 的联动操作也很简单,具体如下:
- 打开 Obsidian 的设置-第三方插件,关闭安全模式,打开社区插件市场搜索 Omnivore,安装并启用。
- 打开 Omnivore 的插件设置,在 API Key 一栏填入上文在 Omnivore 官网获得的 API Key,保存。
- Omnivore 插件默认只会同步 url 和标题过来,不会同步网页内容(不得不吐槽这个逻辑),所以要对 Article Template 进行修改。只需要在最末尾添加
{{{content}}}
即可。我的完整 Article Template 如下:
{{#labels}} #{{name}} {{/labels}}
[Read on Omnivore]({{{omnivoreUrl}}})
[Read Original]({{{originalUrl}}})
{{#highlights.length}}
## Highlights
{{#highlights}}
> {{{text}}} [⤴️]({{{highlightUrl}}}) {{#labels}} #{{name}} {{/labels}} ^{{{highlightID}}}
{{#note}}
{{{note}}}
{{/note}}
{{/highlights}}
{{/highlights.length}}
{{{content}}}
然后就可使用 Obsidian 进行完美搜索了。若有新文章加入记得先按侧边栏上的 Omnivore 按钮(手机端使用命令)同步一下。
一些相关事项#
手机上如何进行搜索?#
手机上可直接使用网页端搜索,并且 Obsidian 拥有网页端,所以手机端也能按上述步骤进行完美搜索。
Obsidian 上文章同步不了?#
出现这种情况可能是因为你删除了已经同步过的文章。请打开本插件设置,把 Last Sync 一栏清空,再进行一次同步。原因是 Omnivore 会保留一个时间戳,每次同步时只同步该时间戳之后新增的文章,你已经同步过的文章在这个时间戳之前,所以删除后再次同步不会同步过来。
可以将 Obsidian 上做出的改动反向同步到 Omnivore 上吗?#
不可以。
可以使用 webhook 吗?#
可以,但同上一条,只能是 Omnivore 作为发送方,本身不能接收 webhook。
另外,插件设置和 Omnivore 本身还有很多功能,具体请查看 Omnivore 文档。不要忘记这本身是一个稍后阅读方案,并不是书签。
又另外,截至目前(2023 年 12 月 31 日)为止,Omnivore 完全免费,运行依靠捐赠。如果哪天资金不足跑路也不奇怪。但幸运的是,它是开源的,我们完全可以自部署。虽然正式文档还没完成,但有一篇官方博客可供参考: Deploying a minimal self-hosted Omnivore using fly.io and bonsai.io。