每天被海量信息淹没?时政、医药、投资、AI……想高效获取真正有用的内容,却总在刷公众号、翻网页中浪费一小时?本文记录了我从“信息焦虑”到“自动化简报”的完整折腾过程,包含三种技术方案对比、完整部署命令以及避坑指南。无论你是想快速实现,还是了解背后的技术选型,都能找到答案。
目录
- 背景
- 方案选型
- 环境准备
- 部署RSSHub
- 攻克微信公众号
- 验证RSS源的有效性
- 接入OpenClaw + DeepSeek
- 成本与效果
- 持续优化与维护
- 总结与展望
- 关键卡点与避坑指南
- 工程化实践与经验总结
一、背景:为什么我需要一个自动化简报?
作为一个关注国内外时政、医药健康、投资、人工智能四个领域的开发者,我每天面临两个痛点:
- 信息源分散:公众号、官网、RSS、社群……切来切去,注意力被撕碎。
- 阅读效率低:很多文章看完标题就够,却忍不住点进去浪费时间。
我的理想状态是:每天早上收到一份简报,每条新闻配有AI生成的一句话摘要,10分钟读完,重要内容再深度阅读。
于是,我决定动手搭建一套自动化信息简报系统,并设定了以下核心要求:
- 覆盖四大领域:国内外时政与社会民生、医药健康、投资财经、人工智能
- 由 AI 生成结构化摘要,10 分钟内完成精读
- 输出 Markdown 格式,支持飞书推送与 Obsidian 长期归档
- 成本低(使用DeepSeek API,月成本<2元)
二、方案选型:三种技术路径对比
在动手之前,我对比了三种主流方案:
| 对比维度 | 🐍 Python脚本 + GitHub Actions | ⚙️ n8n(自托管) | 🦞 OpenClaw(AI Agent) |
|---|---|---|---|
| 💰 月度成本 | 0元(GitHub免费额度足够) | 约25-40元(最低配VPS) | 极低(DeepSeek API,约1-2元/月) |
| 📦 输出质量 | 高(代码固定,格式完全可控) | 高(与Python同级) | 中(Agent可能偶尔偏离格式) |
| 🧠 专业性体现 | 扎实的工程能力 | 架构视野、低代码编排 | 前沿探索、AI Agent |
| 🛠️ 调试维护 | 需改代码、push、重新运行 | 可视化拖拽调整 | 调Prompt,反馈较慢 |
| ⚡ 适合任务 | 固定格式、重复推送 | 多步骤、多条件分支 | 开放式、需要推理的任务 |
| 🔄 稳定性 | 极高(GitHub Actions SLA 99.9%) | 较高(取决于自托管服务器) | 中等(模型输出可能变化) |
最终选型
考虑到我的需求是固定格式的每日新闻推送,且我愿意接受少量调试成本,同时希望展示前沿技术能力,我决定采用 OpenClaw + DeepSeek 作为唯一方案。该方案使用DeepSeek API(约¥1/百万Token),每日推送成本<0.01元。
三、环境准备:WSL2 + Docker(纯命令行,避雷桌面端)
⚠️ 重要避坑:千万不要安装 Docker Desktop 的 Windows 图形界面版本!它会占用大量内存(2-4GB),导致电脑卡顿,且在 WSL2 中经常出现网络冲突。正确做法是直接在 WSL2 内部安装 Docker Engine(命令行版),轻量、稳定、无图形界面。
在 WSL2(Ubuntu 22.04)中安装 Docker Engine:
1 | # 更新软件源 |
验证安装:
1 | docker --version |
配置国内镜像加速(解决拉取慢):
1 | sudo mkdir -p /etc/docker |
备注:目前国内镜像源容易down,可选择走代理。
至此,无需任何图形界面,所有操作在 WSL 终端中完成,资源占用极低(Docker 守护进程仅占约 100MB 内存)。
四、部署RSSHub:本地万能RSS工厂
RSSHub能把几乎所有网站(微博、B站、公众号、知乎等)转为标准RSS源。
4.1 拉取并运行容器
1 | docker pull diygod/rsshub:latest |
4.2 验证
浏览器打开 http://localhost:1200,看到欢迎页即成功。
4.3 使用示例
- 订阅“36氪”:
http://rsshub:1200/36kr/news/latest
五、攻克微信公众号:WeWe-RSS及其他工具
大部分公众号不提供RSS,这里提供三种解决方案。
5.1 方案一:WeWe-RSS(自托管,最稳定)
WeWe-RSS基于微信读书接口,是目前最稳定的公众号RSS化方案。
部署命令:
1 | docker run -d \ |
配置步骤:
- 浏览器打开
http://localhost:4000,输入授权码(即your_password) - 使用微信读书App扫码登录(注意:不是普通微信)
- 在后台搜索公众号名称(如“新华社”、“中国药闻”),点击订阅
- 系统会自动生成RSS地址,复制到你的RSS阅读器即可
⚠️ 注意:合理控制更新频率(每小时不超过1次),不要大量订阅。
5.2 方案二:浏览器插件 RSSHub Radar(一键生成)
这是官方配套工具,自动识别页面RSS路由。
- 安装:Chrome/Edge扩展商店搜 RSSHub Radar
- 使用:打开目标页面(如公众号文章页)→ 点击插件图标 → 自动显示可用RSS路由 → 复制链接
- 设置:插件里将默认实例改为稳定国内镜像,例如
https://rsshub.rssforever.com
5.3 方案三:在线生成工具(无需部署,通用网页生成,可视化点选)
- PolitePol:https://politepol.com
- FetchRSS:https://fetchrss.com
- 用法:粘贴网页 URL → 鼠标点选标题 / 内容 → 生成 RSS。
- 适合:RSSHub 没适配、或不想拼路由的小众网站。
六、验证RSS源的有效性
获取RSS地址后,必须确认其可用。提供三种验证方式:
方式一:在线验证器(推荐)
方式二:直接浏览器打开
- 将RSS地址粘贴到浏览器地址栏,回车
- 正常显示XML代码(包含
<rss>、<channel>、<item>标签)→ 有效 - 显示404或空白页 → 无效
方式三:Python脚本测试(适合批量验证)
1 | import feedparser |
七、接入OpenClaw + DeepSeek:让AI生成每日简报
OpenClaw是一个开源的AI Agent框架,支持自然语言定义任务、定时执行、工具调用。
7.1 整体架构图
以下是最终实现的系统架构,清晰展示了数据流、两种工作模式以及飞书双向交互。
![[/images/docs/项目架构.png]]
详细说明:模式A使用 FreshRSS 聚合源(可开启白名单筛选),模式B直接抓取独立 URL 列表。成功时调用 DeepSeek 生成日报并推送;失败时自动 fallback 到
agent-search联网搜索。
7.2 配置DeepSeek API
- 注册 DeepSeek 获取API Key
- 在OpenClaw配置文件中添加:
1 | llm: |
7.3 编写自定义技能(rss-summary)
技能的核心脚本 fetch_and_push.py 实现了:
- 支持两种模式(统一聚合/直接抓取)
- 动态字符限制(总输入≤4000字符)
- 网络请求超时(30-60秒)与重试机制
- DeepSeek API调用失败时降级为原始列表
- 飞书单聊推送(自动拆分超长消息)
- Obsidian 归档(Markdown文件)
查看技能是否启用
1 | openclaw skills list | grep rss-summary |
7.4 设置定时执行
1 | openclaw cron add \ |
完整参数说明:
--name "定时RSS汇总":任务名(必填)--cron "30 7 * * *":每天 07:30 执行(必填)--tz "Asia/Shanghai":时区(强烈建议)--session isolated:独立会话(推荐)--message "运行技能 rss-summary":指令内容--no-deliver:静默执行,不额外推送
7.5 测试方式
通过手动执行脚本和 OpenClaw 技能调用进行功能验证。
检查飞书是否收到日报,Obsidian目录下是否生成 Daily News/YYYY-MM-DD.md。
八、成本与效果
- DeepSeek API:每日推送约消耗5000 token,月成本 < 0.2元。
- Docker容器:占用内存约200MB,对开发机几乎无影响。
- 阅读效率提升:日均信息阅读时间从 60min 降至 10min 内
九、持续优化与维护
- 每周检查 RSS 源有效性
- 根据推送质量调整 Prompt 与源列表
- DeepSeek 后台设置消费上限
- 定期查看 OpenClaw 运行日志
- Obsidian 知识库定期整理
十、总结与展望
通过这套系统,我实现了:
- 信息聚合:统一入口,不再碎片化浏览
- AI摘要:快速筛选价值内容
- 低成本自动化:每月不到0.2元,全自动运行
未来展望:从本地部署到在线云服务
目前系统完全运行在我的本地 WSL2 环境中,虽然稳定,但存在两个限制:
- 需要电脑开机且 OpenClaw 网关运行才能定时推送
- 无法提供给他人使用
下一步计划将系统迁移到云服务器(如阿里云 ECS、腾讯云轻量应用服务器),实现:
- 7×24 小时无人值守运行
- 通过公网域名或 API 网关对外提供服务
- 支持多用户订阅(每个用户可配置自己的 RSS 源和推送渠道)
未来改进方向:代码健壮性与扩展性
当前脚本为了控制 token 消耗和响应时间,采用了动态字符限制(
MAX_CHARS=4000),这在个人使用场景下足够。但若订阅源数量激增(例如超过 50 个),或单篇文章摘要过长,可能面临以下问题:
- 输入截断导致重要信息丢失
- DeepSeek 上下文窗口(通常 32K-64K)未被充分利用
- 降级策略过于粗糙,可能影响用户体验
未来可以从以下几方面优化:
- 自适应截断策略:根据文章数量和重要性动态调整每篇摘要长度,而非固定 200 字。
- 分批处理:将文章分组,分别调用 DeepSeek 生成子日报,再合并为最终日报。
- 缓存机制:对相同 URL 的文章摘要进行缓存,避免重复调用 API。
- 更精细的错误处理:区分网络超时、API 限流、认证失败等不同异常,采取不同重试策略。
- 支持流式输出:对于超长日报,可以先返回部分内容,再异步补充,提升用户体验。
这些改进将进一步提升系统的健壮性,为后续商业化 SaaS 服务打下基础。
更进一步,可以将这套能力封装成一个SaaS 产品,用户只需:
- 登录网页配置关注的 RSS 源
- 绑定飞书或企业微信
- 每天定时收到 AI 生成的个性化日报
这不仅是个人效率工具,也是一个完整的 AI 应用案例,具备商业化潜力。
十一、关键卡点与避坑指南
在搭建过程中,我遇到了几个最具代表性的问题,逐一攻克后系统才稳定运行。
卡点一:手动执行脚本完美运行,但 OpenClaw 调用时卡死或失败
- 现象:在终端执行
python fetch_and_push.py能正常生成日报并发送飞书;但通过 OpenClaw 对话或飞书消息触发时,脚本无响应,最终 fallback 到联网搜索。 - 根本原因:OpenClaw 调用技能时,工作目录、环境变量、网络超时、输出缓冲等与手动终端完全不同。
- 解决方案:
- 脚本开头强制切换工作目录并加载
.env。 - 所有网络请求增加超时(
requests.get(url, timeout=30))。 - 每个
print加上flush=True。 - 创建包装脚本
run.sh,在SKILL.md中调用它。
- 脚本开头强制切换工作目录并加载
卡点二:FreshRSS 聚合源的筛选逻辑完全失效
- 现象:设置了白名单关键词,但脚本跳过所有文章。
- 原因:FreshRSS 输出的 RSS 条目中,
<source>字段为空。 - 解决方案:放弃依赖
source字段,改用文章链接的域名进行匹配。
卡点三:飞书机器人无响应,日志显示 ECONNREFUSED 127.0.0.1:7897
- 根本原因:WSL 环境中遗留了 HTTP_PROXY 代理环境变量,但代理服务未运行。
- 解决方案:清除所有代理环境变量,编辑
~/.bashrc删除相关行,重启 WSL。
教训:代理环境变量是最大的“隐形杀手”,设置后务必确保代理服务运行,或在不使用时彻底清除。
十二、工程化实践与经验总结
工程化实践
- 双模式设计:统一聚合模式(适合大量源) + 直接抓取模式(简单可靠)。
- 环境隔离:Python 虚拟环境 + Docker 容器 + systemd 用户服务。
- 错误处理与降级:网络请求超时重试;DeepSeek 失败时降级为原始列表;飞书消息超长自动分批。
- 测试体系:独立功能测试(环境、模式、日报生成、Obsidian 写入)+
pytest集成测试。 - 可观测性:脚本内大量
print(..., flush=True);OpenClaw 日志;临时调试文件。 - 配置管理:所有敏感信息存放在
.env;模式开关通过环境变量控制,无需改代码。
经验教训
- 永远假设自动化环境与手动环境不同:工作目录、环境变量、PATH、代理、超时、输出缓冲——逐一显式控制。
- 为所有网络请求设置超时:看似简单的 RSS 抓取也可能永久挂起。
- 不要在技能中依赖
cd或复合 shell 命令:使用包装脚本或绝对路径。 - 大模型调用必须考虑降级:保证核心功能可用。
- 飞书长连接配置务必检查:常见错误是选错“回调 URL”而非“长连接”。
- Obsidian 路径必须用 WSL 格式:不能直接用
D:\。 - 代理环境变量是最大元凶:设置后务必确保服务运行。
- 测试脚本要独立,不依赖主脚本:避免因主脚本错误导致无法测试。
- 技能分享需包含
SKILL.md+ 脚本 +.env.example+ 依赖清单。
最终成果
- 一个完全可用的 OpenClaw 技能
rss-summary,支持两种模式、智能筛选、AI 日报生成、飞书推送、Obsidian 归档。 - 完整的技能定义文件(
SKILL.md)、主脚本(fetch_and_push.py)、包装脚本(run.sh)、环境变量模板(.env.example)、依赖清单(requirements.txt)。 - 详细的项目文档(
README.md)和 MIT 许可证。 - 深刻的工程经验:环境一致性、超时处理、降级策略、API 集成、日志调试。
个人成长
- 从“不会写代码”到独立完成一个可工程化的 AI 应用。
- 掌握了大模型 API 调用、飞书机器人开发、Docker 基本操作、Python 调试技巧。
- 培养了“问题拆解 → 假设 → 验证 → 迭代”的工程思维。
本文基于真实技术实践,所有命令已在 Windows 11 + WSL2 + Ubuntu 22.04 环境中验证通过。