Show HN: Antenna – 内置 MCP 服务器的 RSS 阅读器

Hacker News Top 工具

摘要

Antenna 是一款本地优先的 RSS 阅读器,使用 SQLite 存储订阅源,并通过邮件摘要和面向 AI 代理的 MCP 服务器提供内容,完全基于 MIT 许可证开源。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/04/21 13:25

# Antenna — 一次订阅,邮件或 MCP 随时阅读 来源:https://antennafeed.com/ 本地优先 · MIT 许可证 · 为代理而生 Antenna 把订阅的 RSS 存进本地 SQLite 索引,新文章既推送到邮箱,也通过 MCP 协议喂给 AI 代理,全部基于同一份数据。没有厂商云,没有黑箱锁定,你的订阅图谱就是一个你完全掌控的文件。 v0.1.0 · 第 0 阶段(个人、本地)· Python 3.12+ · macOS / Linux ## 你的订阅被困在代理查不到的 UI 里 ### RSS 转邮件已变味 老牌服务逐渐塞进广告、老旧排版、强制追踪、不透明投递规则,代价是你的收件箱。 ### 代理读不到你的阅读列表 订阅图谱被锁在别人的网页后台里,代理无法搜索、聚类、替你总结。 ### 数据并不属于你 导出只是摆设,你的注意力图谱随厂商易主而转手。 ## 一份订阅图谱,两种原生输出 ### 邮件 干净的一篇或摘要式 HTML,走你自己的 SMTP(Amazon SES、Postmark、Gmail 应用密码随你挑)。没有第三方窥探订阅列表。 - 单篇 *或* 摘要模式,每次运行可切换 - 规则引擎:包含 / 排除 / 立即提醒 - 按 feed 稳定 ID 去重,轮询不再重复 - 条件 GET 带 ETag 与 Last-Modified,没更新就不拉新内容 - 相对 URL 改绝对;YouTube 短码还原成邮件安全缩略图 - dry-run 先写 HTML 预览到 outbox,确认无误再走 SMTP ### MCP(代理协议) Antenna 通过 stdio 讲 MCP,服务器一启动就暴露 6 个工具,任何 MCP 客户端都能调用。 - `list_sources` 给出每个源的 `last_polled_at` 与 `last_error`,代理可判断源是否健康 - `subscribe` 立即抓取验证 URL 并返回文章数,代理可知源是否存活 - `search_posts` 返回 FTS5 高亮片段;`get_post` 按需给出完整 HTML 与纯文本 - `recent_posts` · `unsubscribe` 补齐操作面 - 全部基于同一份 SQLite 索引,与邮件端共享 > “用 antenna 工具搜过去 7 天带 *robotics* 标签且提到 *Gemini* 的文章,把最有趣的三篇摘要给我。”——一条代理提示,直接跑通,因为订阅就是你能查的数据。 ## 装包、导 OPML、用自己的 SQLite 开始轮询 1. ### 安装 ```bash python3 -m venv ~/antenna/.venv source ~/antenna/.venv/bin/activate pip install -e . ``` 2. ### 迁移订阅 ```bash antenna import-opml ~/Downloads/feedly.opml antenna -v fetch ``` Blogtrottr、Feedly、Inoreader——无论你现在用哪家,导出 OPML 一行命令迁完。首次抓取会限制条目数,防止被历史文章淹没。 3. ### 把新文章邮给自己 ```bash antenna send-email --mode per_post --dry-run # 仅预览到 outbox/ antenna send-email --mode per_post # 真发 ``` 4. ### 接入代理 ```json // Claude Desktop MCP 配置片段 // 把 /Users/YOU 换成真实家目录 { "mcpServers": { "antenna": { "command": "/Users/YOU/antenna/.venv/bin/python", "args": ["-m", "antenna.cli", "serve-mcp"], "env": {"ANTENNA_CONFIG": "/Users/YOU/antenna/antenna.yaml"} } } } ``` 5. ### 定时运行 ```bash launchctl load ~/Library/LaunchAgents/com.antenna.fetch.plist ``` 每 15 分钟轮询一次,只发真正新的文章。日志写在 `~/antenna/logs/`。 ## 获取代码 第 0 阶段以源码包形式向早期测试者开放。完整安装指南、配置参考、冒烟脚本都在仓库 README——登记后会镜像到下方。上面五步快速上手(https://antennafeed.com/#how)就是 README 开篇同款。 - **运行环境:** Python 3.12+,无守护进程,无需服务账户 - **存储:** SQLite 数据库(WAL 模式,备份时把 `antenna.db` 连同 `antenna.db-wal`/`antenna.db-shm` 一起拷走即可) - **邮件:** 标准库 SMTP over TLS,支持 SES、Postmark、Gmail 应用密码 - **调度:** 已带 launchd 模板;cron 亦可 - **验证:** `bash scripts/smoke_test.sh` 会跑通所有 CLI 路径并做一次真实 MCP 握手 [申请获取源码包](https://antennafeed.com/#waitlist) ## 原生为代理设计,而非事后打补丁 别的阅读器加个 API 就完事;Antenna 的整个数据模型就是为了被软件查询——人类和代理读的是同一份 SQLite。 ### 单一真实来源 收件箱和代理查*同一张表*。无同步延迟,无分叉索引,不会出现“代理怎么没看到我刚读的文章?” ### FTS5 就是 API 每篇文章写入即进 SQLite FTS5 虚拟表,布尔、短语、前缀搜索白送,`search_posts` 直接返回高亮片段。 ### 稳定 ID,诚实去重 按 feed 提供的稳定 entry ID 去重,而非漂移的 URL 哈希。代理重复搜索拿到的是同一行,不会重复。 ### 今天 MCP,明天 HTTP v0.1 先上 stdio MCP;第 1 阶段开放托管,届时提供 HTTP 接口,工具集不变。 ## 公开路线图 今天 —— 第 0 阶段 ### 个人、本地、完全属于你 - 10 个 CLI 子命令;6 个 MCP 工具走 stdio - 仅支持邮件 + MCP 两种输出 - 单用户安装,无认证,无网页 UI - MIT 许可证;仓库按申请向早期测试者开放 下一步 —— 第 0.5 阶段 ### 更锋利的原语 - Webhook 输出适配器 - 按源规则 UI(告别 YAML 手写规则) - 提醒节流 稍后 —— 第 1 阶段 ### 托管、多用户 - antennafeed.com 托管服务 - OAuth + 共享 OPML 导入 - HTTP MCP 接口,工具不变 ## 申请加入 第 0 阶段向少量早期测试者开放。第 1 阶段托管服务将分批开放。留下邮箱即可收到安装包与对应阅读器(Blogtrottr、Feedly、Inoreader)的迁移笔记。 我们仅在 DynamoDB 存储你的邮箱、来源 IP、User-Agent 以及浏览器带来的 `utm_source`、`utm_medium`、`utm_campaign` 和 referrer,然后手动回复一次。无后续邮件序列,无第三方追踪。详见[隐私说明](https://antennafeed.com/privacy.html)。

相似文章

Show HN: Inkwell – 电子墨水屏设备的RSS阅读器

Hacker News Top

Inkwell 是一个自托管的 RSS/Atom 阅读器,它将文章以静态 HTML 形式呈现,针对 Kindle 等电子墨水屏设备的内置浏览器进行优化,并通过后台预处理实现快速加载。

现代 feed 阅读器(2024)

Lobsters Hottest

作者分析了 RSS 源因抓取和干扰而衰退的问题,认为现代 Feed 阅读器必须整合替代的聚合方式才能保持相关性。

现在AI代理需要RSS的功能

Hacker News Top

长期用于播客的RSS订阅源,正变得对AI代理至关重要——它们需要确定性的、结构化的内容访问,且不受算法干预或速率限制。