自建网页书签服务记录

主要尝试了Karakeep、ArchiveBox、linkding,但最后选择了分叉的linkding-cn。

我的需求

必选功能

  • 提供浏览器插件快速收藏网页书签
  • 能够对书签打标签和检索标签
  • 支持导入/导出Netscape HTML

可选功能

  • 支持网页快照,且尽量在本地存储,避免浪费 archive.org 的资源
  • 支持浏览器插件采集快照,规避触发人机验证和防火墙页面的问题
  • 支持递归书签,便于按大类拆分归纳书签
  • 支持AI自动打标签

Karakeep

满足如下功能:

  • 提供浏览器插件快速收藏网页书签
  • 能够对书签打标签和检索标签
  • 支持导入/导出Netscape HTML
  • 支持网页快照,且尽量在本地存储,避免浪费 archive.org 的资源
  • 支持浏览器插件采集快照,规避触发人机验证和防火墙页面的问题
  • 支持递归书签,便于按大类拆分归纳书签
  • 支持AI自动打标签

初次尝试感觉UI设计不错,网页也有移动端适配,但是最终还是没有采用,原因如下。

  1. AI 标签功能不好用

    AI标签功能默认状态不好用,经常出现明明已经有匹配的现有标签还新建标签,新建的标签还存在简体、繁体甚至日语汉字的多个版本。

    虽然设置里可以手动逐个选择能使用的标签范围,并逐行添加模型提示词进行处理,但是本可以做得更方便的。

  2. 网页快照效果一般

    服务会通过一个浏览器容器抓取网页快照,但是这种方式经常触发反爬防火墙和人机验证,虽然提供的浏览器插件里也能采集快照,但是不知道为什么有的网页采集特别慢(似乎和多媒体资源数量有关),另外采集的快照总是丢失排版。

ArchiveBox

  • 提供浏览器插件快速收藏网页书签
  • 能够对书签打标签和检索标签
  • 支持导入/导出Netscape HTML
  • 支持网页快照,且尽量在本地存储,避免浪费 archive.org 的资源
  • 支持浏览器插件采集快照,规避触发人机验证和防火墙页面的问题
  • 支持递归书签,便于按大类拆分归纳书签
  • 支持AI自动打标签

严格来说这个服务的核心功能是归档页面,就像 archive.org 做的那样,至于书签只是附带的。因此页面比较简陋,且配置相对复杂。

不采纳的原因主要还是快照采集存在和Karakeep同样的问题,其次连接服务器似乎需要运行一个命令生成令牌,且无法直接在后台管理页面生成。

linkding

  • 提供浏览器插件快速收藏网页书签
  • 能够对书签打标签和检索标签
  • 支持导入/导出Netscape HTML
  • 支持网页快照,且尽量在本地存储,避免浪费 archive.org 的资源
  • 支持浏览器插件采集快照,规避触发人机验证和防火墙页面的问题
  • 支持递归书签,便于按大类拆分归纳书签
  • 支持AI自动打标签

以前用过很长时间,可以说是一个小而美的服务。

但最大的问题在于代码架构设计,由于字符串硬编码在代码里,所以多语言一直没有进展,中文标签没有排序,想找一个标签只能肉眼遍历。

最终选择——linkding-cn

  • 提供浏览器插件快速收藏网页书签
  • 能够对书签打标签和检索标签
  • 支持导入/导出Netscape HTML
  • 支持网页快照,且尽量在本地存储,避免浪费 archive.org 的资源
  • 支持浏览器插件采集快照,规避触发人机验证和防火墙页面的问题
  • 支持递归书签,便于按大类拆分归纳书签
  • 支持AI自动打标签

最终选择,由 linkding 分叉而来,截至目前最新版用着没啥大问题,比 Karakeep 需要运行一个浏览器容器以抓取网页快照轻量,比 ArchiveBox 界面美观。

至于快照,可以在网站的“设置 → 集成”页面中创建一个令牌,然后下载 SingleFile 插件,配置该插件:保存位置 → 保存到 REST 表单 API,然后依次配置

  • 网址:例如 https://linkding.example.com/api/bookmarks/singlefile/
  • 授权令牌:刚刚创建的令牌
  • 文件字段名称:file
  • 网址字段名称:url

然后添加书签的流程为——

  • 如果你只想收藏网页链接,直接用 linkding 的原版浏览器插件,在插件设置里配好令牌连上服务器后,操作是一模一样的
  • 如果希望有些网站只收藏链接,有些网站要抓取快照,可以先用 linkding 的插件里收藏,然后用 SingleFile 插件保存一下,就会自动导入快照了
  • 如果希望所有网站自动抓取快照,在 linkding 浏览器插件里开启 Run Singlefile after adding new bookmark,在创建新书签时会调用,老书签需要手动调用 SingleFile

此外就算不进行上述配置,服务器端依然会采集快照,只不过也会碰到和 Karakeep 同样的人机验证和防火墙问题。

总结

开源项目各有千秋,找到一个适合自己的开源项目还是挺开心的。其他几个项目并非不好,只是不适合我,原因也在上面提到了。

就算现在部分功能尚有瑕疵,但是他们的社区贡献者数量多,还会持续更新修复bug、新增功能。更何况代码开源,不满意的地方也可以自己改。

感谢所有开源项目贡献者的付出,向你们致敬🫡 !