CLI RSS/Atom 订阅阅读器,受 Taskwarrior 启发,通过 Git 同步
Source: Hacker News
一个受 Taskwarrior 启发的 CLI RSS/Atom 订阅阅读器。
功能
- 订阅 RSS 和 Atom 源
- 简单的查询语言,可按源、阅读状态和日期进行过滤,并支持分组和导出
- 基于 Git 的跨机器同步,具备冲突免费合并(为什么使用 Git?)
- 无需账户、无需服务器、无需持续网络依赖
- 将内容标记为已读
- 旨在无干扰、极简,并开箱即用
安装
cargo install blogtato
Git 同步
git 基于的同步是完全可选的。blogtato 可以在单台设备上离线工作。
要设置 git 同步,请在你的 git 主机上创建一个私有仓库,然后:
在你的第一台机器上
blog clone user/repo
从现在起,sync 会从远程获取 feed 并进行推送/拉取
(如果没有远程仓库,blog sync 只会从所有 feed 拉取最新帖子)
blog sync
在其他设备上,运行相同的 blog clone 来拉取你的 feed 和帖子。
如果你只想尝试 blogtato,可以跳过 git 设置,稍后再运行 blog clone user/repo;已有的 feed 将自动合并。
快速入门
完成(或跳过)基于 git 的同步后,订阅 feed:
blog feed add https://michael.stapelberg.ch
blog feed add https://www.justinmklam.com
获取并列出最新帖子:
blog sync
blog
通过简写读取条目:
blog df read
订阅 blogtato 的发布,以便了解新功能或修复:
blog feed add https://github.com/kantord/blogtato/releases.atom
使用示例
订阅一个 feed
blog feed add https://news.ycombinator.com/rss
获取新帖子并同步到 git 远程仓库
blog sync
显示帖子(默认显示最近 3 个月的未读帖子,按周分组)
blog
按日期、周或 feed 分组
blog /d # 按日期
blog /w # 按周
blog /f # 按 feed
组合分组方式
blog /d /f
按 feed 简写过滤
blog @hn
按阅读状态过滤
blog .unread
blog .read
blog .all
按日期过滤
blog 1w..
blog 3m..1m
blog /d 2w..1w
组合过滤(例如,列出 HackerNews 上的未读帖子并按日期分组)
blog @hn .unread /d
在默认浏览器中打开帖子
blog abc open
打印帖子 URL(在 CLI 浏览器中使用很有帮助)
blog abc read
w3m $(blog abc read)
将帖子标记为未读
blog abc unread
将匹配的帖子导出为 JSONL
blog .all export
blog @myblog export
blog 1w.. export
列出已订阅的 feed
blog feed ls
删除一个 feed
blog feed rm https://news.ycombinator.com/rss
blog feed rm @hn
设计理念
blogtato 围绕订阅排毒和简约而构建。它提供一个极简、无干扰的 RSS 阅读器,可在设备间无缝同步,无需额外的用户账户或持续费用。
数据存储在 JSONL 文件中,并通过 git 同步。虽然这种方式不是性能最优的,但它利用了远程 git 托管服务(GitHub、GitLab、Forgejo 等)的普遍可用性,几乎不需要任何配置。数据库采用无冲突设计,分叉的更改永不需要手动解决——git 在后台透明运行。
所有网络操作均由用户发起;没有持续运行的服务器,离线使用也能完美运行。项目旨在保持轻量和可维护,使功能集和复杂度保持在足以视为“完成”的低水平。
命名
这个名字将 “blog” 与脑中第一个异想天开的词 potato 结合在一起。它象征着简洁以及一点务实的俏皮。
