2024-11-07 22:48:52
对于书签管理,我目前的工作流是这样的:自建 wallabag 保存稍后读,Anybox 管理书签并通过 Alfred 快速调用,然后用 DEVONthink 本地归档 wallabag 的稍候读和 Anybox 的书签,方便全文搜索。为了实现自动化,我还写了一个脚本,可以自动把 Anybox 的新链接同步到 DEVONthink(这个脚本是在 Anybox alfredworkflow 基础上改进的)。
这套流程一直运行得挺顺畅,但我还是有两点不太满意:
Anybox 缺少全文搜索功能。截至2024年11月,这个呼声很高的功能还停留在Under Review阶段。
书签整理不够智能。虽然 Anybox 的收件箱理念不错,从收件箱再整理到文件夹、标签,还能依赖 Smart Folder 功能帮忙分类管理,但每周要把他们手动打标签或者移入文件夹还是太麻烦了。在保存了海量书签后,我还是更习惯用搜索(可惜又没有全文搜索)。所以目前我还是倾向于在 Anybox 和 Wallabag 不整理,只有收件和存档两个状态,存档之后依赖 DEVONthink 的全文搜索 + Smart Rules 再自动分类整理。
最近发现了一个新项目 Hoarder,主打 AI 自动打标签,准备体验一下,看看能不能取代或者补充 Anybox。(作为一个爱好 self hosted 和囤积资料的人,Hoarder 这个名字就很对我胃口 🤭)
第一印象相当不错,感觉是个成熟的产品:有 iOS 应用支持分享菜单,有 Chrome 扩展方便保存,还能存笔记和图片。AI 自动标签功能,可自定义 prompt,能帮我省去手动整理的麻烦。
不过要完全替代 Anybox,还需要补齐以下几个功能:
目前只提供命令行工具, REST API 会在0.18.0 下一个版本支持
截图、本地缓存、链接等数据的导出功能还不完善。
现在只支持纯文本缓存和截图。据说后续会支持更多格式(截止2024年5月,已在规划中)。 更新:到2024年11月,已经支持用 monolith 实现完整网页存档,解决了链接失效的问题。
Anybox 和 SingleFile 扩展 的配合就很完美,可以把登录后的或者付费墙后的内容直接通过 API 保存下来。 (另外,这样还解决了 SingleFile 元数据只保存域名前缀的问题 - 直接用 SingleFile 下载到 DEVONthink 时只能看到类似 https://github.com 这样不完整的地址)
还有一些锦上添花的功能建议: - RSS 订阅功能
linkding 和 wallabag 都有这个功能。我现在就使用 RSS 把 wallabag 的内容同步到 DEVONthink,和用 kindleear 订阅 wallabag RSS 每天晚上推送稍候读到 Kindle。
Hoarder 虽然暂时还不能完全替代我现有的工具链,但作为一个活跃开发的开源项目,发展势头很好,值得持续关注。
2024-10-16 06:53:20
最近整了个 DS423+ 来代替之前的老旧 MacBook Pro + 一块外接硬盘的 NAS/homeserver 方案。
我买了四块盘。 1、2 8TB 希捷盘做了 RAID1 冗余,其余两块略大的盘 Basic(希捷12TB 和 16 TB),另有两块 NVMe SSD 作为存储池跑 Docker,放高速存储。几天用下来,发现 NAS 有几个好处,
- 数据从冷数据变成了 24 小时在线的热数据,可以随时访问编辑,而不用插硬盘挂个线。而且,终于把散落在各个硬盘的数据整合在了一起,之前一份数据为了访问方便可能存到了好几块外接硬盘上,而 NAS 提供了个中心化的存储方案。另外据我所知,Btrfs 格式支持 deduplication, 重复数据只存一份,不会浪费空间。
- Raid1 冗余允许一块硬盘坏了重建,和 DSM 的较为完备的预警系统以及文件完整性检查。之前在移动硬盘上数据坏了都不知道,只能从备份恢复(如果有备份的话)。
- Btrfs 文件系统支持快照,可以随时回滚到之前的状态(群晖有官方套件 Snaptshots Replication,非常推荐,就像 macOS 的时间机器一样)。
- 无线的时间机器备份真的很爽。第一次有点慢可以考虑接网线备份,之后增量备份的时候就不用管了。
- 折腾的乐趣
不得不说, DSM 虽然最近走了倒车,但仍是一个很新手友好和功能和生态完善的 NAS 系统(其他 unraid truenas 没有用过不做评价)。用下来我的感觉是,DSM 的很多功能是在教用户应该怎么维护数据健康/维持高可用性,怎么做备份和快照。另外还有什么影音库,照片库,跑下载,甚至 DNS,软路由等都是 NAS 很好用的功能,不过目前对我来说收益不是特别大。
当然缺点也有:
一是读写速度显然没有插个固态快(受制于网络和机械硬盘),不过花几十块钱买个交换机用 smb 双通道 (multichannel) 也算上了 250 MB/s, 比外接一块机械硬盘快了。
二是 8TB 以上7200转的硬盘读写时炒豆子声音还是很大,解决方法是换5400转的硬盘或者上 SATA SSD 解决。如果跑 Docker 和虚拟机,也可以考虑装个 NVME SSD 把套件数据和 Docker 转移到 SSD 存储池上。加内存条减少 swap 或许也有帮助。
三是 DS423+ 的 DSM 系统虽然好用,但是奈何硬件太弱了,Intel Celeron J3455, PCIe 2.0 x 1 (NVME 只能跑 500 MB/s),1Gbps 网口,这些要升级就得加钱,然而一台白裙的价格对于其硬件来说已经很贵了。
关于 SSD 的配置和其他资料,推荐一个链接和两个 Github 项目。
另外再提一嘴数据安全,虽然 Raid 有冗余,但是冗余不是备份!遵循 3-2-1 原则定期备份数据到云端是很有必要的,防止硬盘损坏,天灾人祸等意外情况。后面会写一篇文章分享一下我的备份方案。
最后给我的 NAS 上个照片。
2024-10-05 23:50:51
This message is used to verify that this feed (feedId:41446022334078981) belongs to me (userId:63216204740061184). Join me in enjoying the next generation information browser https://follow.is.
2024-06-03 01:22:45
RSSBrew 是一个 RSS 处理和管理的工具。简单来说就是通过处理用户添加 original feed,系统后台获取原文章,根据用户设置进行一系列处理,把处理后的文章重新聚合生成一个新的 processed feed,然后用户订阅这个 processed feed 即可。
目前拥有以下功能:
安装教程请参考 INSTALL.md。安装位置需要 docker engine,需要有公网 ip 的服务器,推荐使用 vps。一个域名(可选),如果没有域名,可以使用 ip:port(默认8000) 的形式访问。
由于最近加了 huey 作为任务队列,所以不通过 docker-compose 安装的方法暂时没有更新,目前推荐 docker-compose 安装。
如果需要配置域名访问,推荐使用 caddy 或者 nginx 作为反代,这里就不做详细介绍了。
注意需要把部署的域名加入到 .env
的变量 DEPLOYMNET_URL 中才能正常通过自定义域名访问。如果没有,请把 ip:port 加入到 DEPLOYMNET_URL 中,不需要加 http:// 等协议头。
有用户反馈想要使用说明,由于目前文档没有写好,这里简单写一下如何使用。访问应用后有四个配置项,分别是 original feeds, processed feeds, tags, app setting。因为测试阶段短时间内文档不会完成,所以我这里尽可能写的详细,请根据需要的功能跳转到对应的段落阅读。
App setting 用来配置 auth code,设置后需要在访问时在订阅源地址后面加上 ?key=your_auth_code
才能访问。
original feeds 用来添加原始的,需要处理的 atom 或者 xml feed,可以配置 url, 以及可选配置名称和 tag。 Tag 是用来方便分类管理 original feeds 的。
processed feeds 是处理后的 feed,在列表栏从左到右是名称,每次更新周期需要总结的文章数,订阅链接,以及包含了多少个 original feeds。
点击名称进入 processed feed 的配置页面,可以配置过滤条件,过滤组,摘要和 日周报的生成。
前两项名称和 Feeds 是必须的,feeds 是多选框,用来添加已有的 original feeds,最终会把所有选中的 feeds 聚合到这个 processed feed 中。有了这两个配置,理论上就可以用上聚合功能订阅了,接下里所有的配置都是可选的。
Feed group relational operator (过滤组关系) 会在后面过滤组中详细介绍。目前先不用管。
在 summarization options 中,可以配置每次更新(测试阶段默认是每 5 分钟,在 docker-compose.yml 中通过 cron 变量可以把周期调大一点)总结的文章数,为 0 就是不用 AI 总结功能。可以选择语言,model, 自定义 prompt。默认 prompt 会给一条一句话总结和一个稍长的总结。默认效果如下:
Summary group relational operator (过滤组关系) 同上,会在后面过滤组中详细介绍。目前先不用管。
这是一个在 telegram channel rss 生成周报的效果:
Toggle digest 是开关,开启后会生成日报或者周报。默认是关闭的。如果开启,可以配置 daily/weekly。Last digest 的时间会在后台自动生成周日报时更新,
留空即在下一次更新时自动生成 digest,后面系统会根据这个时间是否需要生成新的 digest。一般情况下,这个项不需要管,如果需要测试用手动生成周日报的功能,可以把时间调到一周前或者一日前。
勾选 toggle digest 之后,可以配置周日报格式,主要由三大部分构成:
目录就是一个简单的标题-链接的列表,可以一眼扫过一周更新的条目,如上显示。如果在 summarizaiton options 中开启了 AI 摘要功能并且用了默认的 prompt,除了标题和链接,还会有 AI 一句话总结。
如上图所示,紧跟着目录是 details,可以自选包含 AI 生成的摘要(需要在 summarization options 中开启 AI 摘要功能)和原文章内容。
勾选 use ai digest, 可以配置 digest model (推荐使用 gpt-4 或者 4o, 我测试下来 3.5 turbo 偶尔会出现总结不全的情况) 和自定义 prompt。下面 send full articles 是指你是否想要 AI 总结周日报的文章全文,如果不勾选,为了节约 token,和防止条目过多过长,只会发送给 AI 每篇文章的标题 url 和摘要(摘要需要在 summarization options 中开启 AI 摘要功能)。
以上三大部分关于周日报内容的配置都在 what to include in digest 中, 也就是 toc, one-line summary, summary, ai digest。
另外,在 toggle digest 后面有一个选项 toggle entries。如果有些 feed 你只想看每周每天扫一遍周/日报,不想要看到其他的原文章条目更新,让你的未读堆积。你可以取消勾选 Toggle entries 来隐藏原文章条目,不要怕错过,他们会在日报周报中出现。
我们还没有讨论到过滤,如果配置了以上的内容, processed feed 会把所有的 original feeds 聚合到一起,生成一个新的 feed。但是这个 feed 会包含所有的原文章,并且不管是什么文章,都会进入周日报,进入更新的 entries, 或者发给 AI 生成摘要,如果想要更加个人化的信息源,比如说监控某些关键词,同时屏蔽另外一些关键词,或者比如说让 AI 长文总结,短文不总结,或者只总结某一个关键词文章,这需要过滤功能。
为了实现高级的过滤,RSSBrew 用了两层过滤条件。也即 过滤组(filter group)- 过滤器 (filters)。过滤组包含过滤器,负责管理组内所有过滤器的关系(任意条件 any /所有条件 all/无一条件 none = not any)满足以及过滤器的用途(用来完全屏蔽文章或者,不屏蔽文章只是过滤他是否总结)。过滤器是具体的过滤条件,比如说标题/内容/url 包含某个关键词,满足某个正则表达式,或者文章长度大于/小于某个值。
多个同用途的过滤组之间还可以共同作用,他们之间的关系就是由上面提到的过滤组关系 Feed group relational operator 以及 Summary group relational operator 来决定的。比如说你有两个过滤组 A B 都是用来 Feed Filter(用来完全屏蔽文章) 的, 且他们之间是 any 的关系。分别由两个 and 过滤器构成,那么就可以实现高级的过滤运算逻辑比如:
A or B = (A-1 and A-2) or (B-1 and B-2)
当然如果你只是想要最简单的过滤,只需要一个过滤组就可以了。即使这样你也可以在组内设置多个过滤条件,或者通过配置正则表达式让单层过滤器实现很多功能。
不过目前正忙着写毕业论文和找工作,所以短期内这些功能都没有 ETA。但等忙完毕业论文会把这个项目完善,也会一直维护更新。欢迎在 telegram 交流群 和 GitHub issue 中里提出建议和需求。
2024-05-25 01:56:37
Currently, I am using wallabag for read-it-later, Anybox for bookmarking and quick retrival via Alfred, and DEVONthink for archiving the booksmarks from wallabag and Anybox to better support full text searching (I wrote a script that checks the Anybox API for new links and save them to DEVONthink, which is modified from the Anybox alfredworkflow).
This workflow has been robust and reliable for me, but I am always looking for better selfhosted tools to improve my workflow. There are two things currently missing:
Full text search is something Anybox doesn't have yet. While I write this article, May 2024, it is still under review in the canny page of Anybox.
Organizing bookmarks. I have a lot of bookmarks. I appreciate the Inbox ideology of Anybox, and the implementation of folders+tags+smart folders, but I still rely a lot on searching instead of mannually organizing (and again anybox is not providing full text search yet). It might help if there is an automatic organization feature like AI tagging or Smart Rules in DEVONthink.
So, trying out Hoarder app today. I would like to see whether it would compete Anybox as my main bookmark manager. Also I do like self-hosting services, and hoarding stuff 🤭.
At first sight, it feels like a complete app that I can directly put in production, it has a iOS app with share sheet support, chrome extension for easily save from browser, it saves note and images. And I really like the ability to have AI tagging for links and images so that I don't have to manually organize them.
However, there are some features missing before it can become my main bookmark manager.
For now, it provides a CLI tool, but I am installing the app on my homeserver instead of my laptop. I will have to ssh to use the CLI, not ideal. A REST API would be good for remotely managing data. As of Nov 2024, it will be supported in the next version 0.18.0.
I don't seem to find a very good way to export data easily, for example screenshots, local cache, links.
For now, Hoarder supports plain text caching and screenshots. It would be good to see other formats supported (Planned, as of May 2024) update: As of Nov 2024, it supports full page archival (using monolith) to protect against link rot.
What I like about Anybox is its integration with SingleFile extension. It can directly save the .html downloaded to Anybox via API, so that any content behind paywall will also be downloaded. (It actually addresses the pity that SingleFile metadata only contains the first part of the full domain - it will only show something like https://github.com, when you directly download a html with SingleFile metadata to DEVONthink)
Other features could be useful: - RSS subscription link
Like what linkding and wallabag provides. I am currently relying on RSS to sync my read-it-later from wallabag to DEVONthink and to my kindle with kindleear.
To conclude, I will not replace Anybox/wallabag with Hoarder for now. But it is a very young and promising open-source app with rapid iteration, someday it might will.