如何将 RSS 订阅源连接到 AI 智能体
为什么 RSS 与 AI 智能体配合效果好
读取网络内容的 AI 智能体通常从抓取页面开始。这意味着需要解析 HTML、渲染 JavaScript、处理速率限制和 CAPTCHA,并在网站改变布局时修复页面选择器。
SereneReader 会获取你的 RSS 订阅源,解析内容,并将文章存储为结构化数据。API 以 JSON 格式返回这些数据,因此你的智能体处理的是标题、链接、作者、日期和摘要,而非网页原始内容。
结构化 JSON。 你的智能体无需处理 RSS 或 XML。SereneReader 已完成订阅源解析、HTML 实体解码、双重编码内容修复以及编码格式规范化,智能体只需查询 API 即可获得结构化的 JSON 数据。
由你选择来源。 你自主选择订阅源,因此智能体只会看到你选定的内容来源。
无需抓取。 你的智能体调用 SereneReader API,从不直接访问原始网站,因此 robots.txt 规则和反爬虫机制不会产生任何影响。
日期过滤。 结果按最新顺序返回,你可以请求获取自指定时间以来发布的文章。由于订阅源有时会延迟发布条目或使用较早的日期,如果你的智能体必须确保不遗漏或不重复处理条目,建议让它记录已处理的文章 ID。
如何与 OpenClaw 配合使用
截至 2026 年 10 月,OpenClaw 是一款开源 AI 助手,可在你自己的计算机上运行,并通过 WhatsApp、Telegram 或 Discord 等聊天应用进行交互。你可以通过技能(skill)来扩展它的功能,这些技能能够调用外部 API。要将其连接到 SereneReader:
- 创建 API 密钥,在 SereneReader 中前往"设置 > API"(适用于 Pro 和 Team 计划)。
- 为 SereneReader API 添加技能。 设置中的 API 标签页列出了技能所需的端点、参数和示例请求。
- 为助手分配任务。 例如:"每天早晨检查我的 RSS 订阅源,总结与基础设施安全相关的内容,并将摘要保存到我的 Obsidian 库中。"
助手负责调度、过滤和摘要生成。SereneReader 负责获取订阅源和存储文章。
智能体提示词示例
以下是智能体指令的大致内容:
你可以访问 SereneReader API。每天早上 8 点,获取过去 24 小时内发布的文章。对于每篇文章,判断其是否与网络安全、基础设施或 DevOps 相关。如果相关,将其加入每日摘要。将摘要作为新笔记保存到我 Obsidian 库中"Daily Digests"文件夹下。
智能体调用 API,处理结果并保存笔记。如果你的智能体平台支持定时任务,则无需编写任何代码。如果不支持,下文中的脚本可通过 cron 完成同样的工作。
使用场景示例
资讯监控智能体
在 SereneReader 中订阅 20—30 个行业订阅源,连接智能体扫描有关你的公司、竞争对手或特定主题的提及内容,每天收到简报,无需逐个查看订阅源。
研究摘要
关注学术预印本订阅源(arXiv、bioRxiv)和技术博客,让智能体按主题对新论文进行分类,标记与当前项目相关的内容,并整理成每周阅读清单。
内容生产流水线
订阅你所在领域的订阅源,让智能体识别热门话题、提取关键要点并起草内容提纲。内容仍由你来撰写,但智能体完成第一轮研究工作。
竞争情报
追踪竞争对手的博客、更新日志订阅源和新闻稿,智能体可以发现产品发布、定价变动和功能公告,并以结构化格式记录下来。
兼容其他 LLM 工具
SereneReader API 通过 HTTP 返回标准 JSON,因此任何能够发起经过身份验证的 API 请求的工具均可使用:
- OpenClaw — 可为你执行任务的助手
- LangChain / LlamaIndex — 用于检索增强生成(RAG)
- 自定义脚本 — 通过 OpenRouter 调用任意 LLM API(见下方示例)
- Zapier / Make — 包含 AI 步骤的无代码自动化
- n8n — 自托管工作流自动化
模式通常相同:从 SereneReader 获取文章,传递给 LLM,再将输出发送到目标位置。
示例:通过 OpenRouter 实现每日摘要脚本
这是一个 Node.js 脚本,可从 SereneReader 获取过去 24 小时的文章,通过你在 OpenRouter 中选择的模型进行摘要,并将结果写入本地文件。将 SERENE_API_URL 设置为完整的文章端点(即设置页面 API 标签中的基础 URL,后接 /api/v1/articles),将 OPENROUTER_MODEL 设置为你想使用的模型在 OpenRouter 上的 ID(例如 OpenRouter 模型列表中某个 Claude 模型)。通过 node digest.mjs 运行,或使用 cron 定时执行。
该脚本默认读取一页结果,API 每页默认返回 50 篇文章。如果你的订阅源每天发布的文章超过这个数量,可添加 limit 参数(最大 200)或通过 offset 翻页获取结果。
// digest.mjs
// Requires: SERENE_API_KEY, SERENE_API_URL, and OPENROUTER_API_KEY env vars.
// Your API settings page in SereneReader has the base URL and endpoint paths.
const SERENE_API_KEY = process.env.SERENE_API_KEY;
const SERENE_API_URL = process.env.SERENE_API_URL; // from your API settings page
const OPENROUTER_API_KEY = process.env.OPENROUTER_API_KEY;
import { writeFileSync } from "node:fs";
// 1. Fetch yesterday's articles from SereneReader
const yesterday = new Date(Date.now() - 86400000).toISOString();
const res = await fetch(`${SERENE_API_URL}?since=${yesterday}`, {
headers: { Authorization: `Bearer ${SERENE_API_KEY}` },
});
if (!res.ok) {
console.error(`SereneReader API error: ${res.status}`);
process.exit(1);
}
const { articles } = await res.json();
if (articles.length === 0) {
console.log("No new articles since yesterday.");
process.exit(0);
}
// 2. Build a prompt from article titles and snippets
const articleList = articles
.map((a) => `- ${a.title} (${a.feedName})\n ${a.snippet}`)
.join("\n\n");
const prompt = [
`Here are ${articles.length} articles from my RSS feeds`,
`published in the last 24 hours:\n\n${articleList}\n\n`,
`Write a concise daily digest. Group related articles`,
`by topic. For each topic, summarize the key points in`,
`2-3 sentences. Include the article titles so I know`,
`which ones to read in full.`,
].join(" ");
// 3. Send to any model via OpenRouter
const llmRes = await fetch("https://openrouter.ai/api/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${OPENROUTER_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: process.env.OPENROUTER_MODEL, // set to the model ID you want from openrouter.ai/models
messages: [{ role: "user", content: prompt }],
}),
});
if (!llmRes.ok) {
console.error(`OpenRouter API error: ${llmRes.status}`);
process.exit(1);
}
const { choices } = await llmRes.json();
const summary = choices[0].message.content;
// 4. Write the digest to a local markdown file
const date = new Date().toISOString().split("T")[0];
const output = `# Daily Digest - ${date}\n\n${summary}\n`;
writeFileSync(`digest-${date}.md`, output);
console.log(`Digest written to digest-${date}.md (${articles.length} articles)`);该脚本无需任何依赖,也不需要构建步骤。你可以更换模型、修改提示词,或将输出发送到 Obsidian、Notion 或 Slack,而不是写入本地文件。
开始使用
API 访问权限包含在 Pro(网页版每月 5 美元)和 Team 计划中。
- 如果尚未注册,请先注册 SereneReader。
- 订阅你希望智能体读取的订阅源。
- 在"设置 > API"中创建 API 密钥。
- 配置你的智能体以调用 SereneReader API。
设置中的 API 标签页包含完整的端点参考文档。如需了解更多关于 API 本身的内容,请阅读使用 SereneReader API 构建自动化流程。