自建网页书签服务记录
主要尝试了Karakeep、ArchiveBox、linkding,但最后选择了分叉的linkding-cn。
我的需求
必选功能
- 提供浏览器插件快速收藏网页书签
- 能够对书签打标签和检索标签
- 支持导入/导出
Netscape HTML
可选功能
- 支持网页快照,且尽量在本地存储,避免浪费 archive.org 的资源
- 支持浏览器插件采集快照,规避触发人机验证和防火墙页面的问题
- 支持递归书签,便于按大类拆分归纳书签
- 支持AI自动打标签
Karakeep
满足如下功能:
- 提供浏览器插件快速收藏网页书签
- 能够对书签打标签和检索标签
- 支持导入/导出
Netscape HTML - 支持网页快照,且尽量在本地存储,避免浪费 archive.org 的资源
- 支持浏览器插件采集快照,规避触发人机验证和防火墙页面的问题
- 支持递归书签,便于按大类拆分归纳书签
- 支持AI自动打标签
初次尝试感觉UI设计不错,网页也有移动端适配,但是最终还是没有采用,原因如下。
AI 标签功能不好用
AI标签功能默认状态不好用,经常出现明明已经有匹配的现有标签还新建标签,新建的标签还存在简体、繁体甚至日语汉字的多个版本。
虽然设置里可以手动逐个选择能使用的标签范围,并逐行添加模型提示词进行处理,但是本可以做得更方便的。
网页快照效果一般
服务会通过一个浏览器容器抓取网页快照,但是这种方式经常触发反爬防火墙和人机验证,虽然提供的浏览器插件里也能采集快照,但是不知道为什么有的网页采集特别慢(似乎和多媒体资源数量有关),另外采集的快照总是丢失排版。
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、新增功能。更何况代码开源,不满意的地方也可以自己改。
感谢所有开源项目贡献者的付出,向你们致敬🫡 !