Auto-sync: 2026-04-28 16:03
This commit is contained in:
@@ -1,58 +1,73 @@
|
||||
---
|
||||
title: "Blogwatcher Daily 技能收藏"
|
||||
type: source
|
||||
tags: [hermes-agent, rss, automation, daily-digest]
|
||||
tags: [rss, automation, hermes-agent, skill]
|
||||
date: 2026-04-18
|
||||
---
|
||||
|
||||
## Source File
|
||||
- [[raw/Skills/blogwatcher-daily收藏.md]]
|
||||
- [[Skills/blogwatcher-daily收藏.md]]
|
||||
|
||||
## Summary(用中文描述)
|
||||
- 核心主题:RSS/YouTube 订阅频道的自动化监控与每日摘要生成
|
||||
- 问题域:个人资讯获取效率——手动逐个打开各频道耗时且容易遗漏更新
|
||||
- 方法/机制:Hermes Agent 自定义 Skill,定时抓取 31 个订阅频道,SQLite 去重,每日追加写入 Markdown 日报
|
||||
- 结论/价值:将信息获取自动化,用户每天早上只需阅读一篇摘要即可掌握所有频道动态
|
||||
- 核心主题:Hermes Agent 自定义技能 blogwatcher-daily,实现 RSS/YouTube 订阅自动化监控与每日摘要生成
|
||||
- 问题域:个人资讯获取与信息聚合
|
||||
- 方法/机制:RSSHub 转换 YouTube 频道为 RSS + feedparser 解析 + SQLite 去重 + Cron 定时调度
|
||||
- 结论/价值:每天自动整理 31 个订阅频道的新文章,减少信息过载,提高阅读效率
|
||||
|
||||
## Key Claims(用中文描述)
|
||||
- Hermes Agent 通过自定义 Skill `blogwatcher-daily` 实现 31 个订阅频道的自动化监控
|
||||
- 每日扫描(Cron Job)自动追加新文章到 `YYYY-MM-DD.md` 日报,避免覆盖历史内容
|
||||
- YouTube 频道通过 RSSHub 本地部署代理转换为 RSS Feed,绕过直接访问限制
|
||||
- SQLite 数据库按 URL 去重,已读链接不重复写入
|
||||
- 强制回扫(`--all`)写入独立文件 `all-YYYY-MM-DD.md`,不污染日常日报
|
||||
- 支持 `--scan-only` 调试模式,只打印结果不写文件
|
||||
- Hermes Agent 通过 blogwatcher-daily 技能实现 31 个 RSS/YouTube 频道的自动化监控
|
||||
- RSSHub 将 YouTube Channel ID 转换为 RSS Feed,解决 YouTube 订阅源获取问题
|
||||
- feedparser 库支持 RSS 1.0/2.0/Atom 格式,自动处理 GB2312/GBK/ISO-8859-1 编码和畸形 XML
|
||||
- SQLite 数据库按 URL 排重,已读链接不重复写入,避免信息冗余
|
||||
- Cron 定时任务(每天早上 6:00)自动调用 skill 脚本,结果推送 Telegram 通知
|
||||
|
||||
## Key Quotes
|
||||
> "📊 扫描完成: 共发现 12 篇新文章" — 日常扫描输出示例
|
||||
|
||||
> "新增订阅需要补历史、某个频道很久没看想批量回顾" — 强制回扫适用场景
|
||||
|
||||
> "wikiHow 禁止所有爬虫,无法抓取,永远返回 0 篇" — 已知限制说明
|
||||
> "RSS 解析库:feedparser(支持 RSS 1.0/2.0/Atom、GB2312/GBK 编码、畸形 XML)" — 技术选型说明
|
||||
> "追加写入:日常扫描正确追加到日报,不覆盖历史内容" — 数据持久化策略
|
||||
> "wikiHow 禁止所有爬虫,无法抓取,永远返回 0 篇" — 已知的限制
|
||||
|
||||
## Key Concepts
|
||||
- [[RSS Monitoring]]:通过 RSS/Atom Feed 订阅网站和 YouTube 频道更新的标准化协议
|
||||
- [[Cron Job]]:定时任务调度,每天早上 6:00 自动执行扫描
|
||||
- [[RSSHub]]:开源 RSS 生成器,将不支持 RSS 的网站(如 YouTube)转换为 RSS Feed
|
||||
- [[feedparser]]:Python RSS 解析库,支持 RSS 1.0/2.0/Atom 及 GB2312/GBK 编码
|
||||
- [[Deduplication]]:SQLite 按 URL 排重,避免重复写入
|
||||
- [[每日日报]]:追加模式日记文件,每天一篇,持续积累
|
||||
- [[增量写入]]:日常扫描追加到日报,强制回扫写入独立文件,二者互不干扰
|
||||
- [[RSSHub]]:开源 RSS 生成器,将无 RSS 的网站/YouTube 频道转为 RSS Feed,部署在 `http://192.168.3.45:1200`
|
||||
- [[feedparser]]:Python RSS/Atom 解析库,支持多种编码和畸形 XML,是本技能的核心解析引擎
|
||||
- [[SQLite 去重机制]]:通过 SQLite 数据库按 URL 排重,已读链接不重复写入每日日报
|
||||
- [[Hermes Agent]]:AI Agent 平台,blogwatcher-daily 是其自定义技能之一,通过 cron 定时调度执行
|
||||
- [[Cron 定时任务]]:每天 `0 6 * * *` 执行,Job ID `ecdd35bb7df3`,通过 `deliver=origin` 推送 Telegram 通知
|
||||
|
||||
## Key Entities
|
||||
- [[Hermes Agent]]:运行 blogwatcher-daily Skill 的 AI Agent 平台,通过 Cron Job 调度
|
||||
- [[RSSHub]]:本地部署的 RSSHub 实例(`http://192.168.3.45:1200`),用于转换 YouTube 频道为 RSS
|
||||
- [[blogwatcher-daily]]:Hermes Agent 自定义 Skill,核心脚本为 `blogwatcher-daily.py`
|
||||
- [[feedparser]]:Python RSS 解析库,解决 RSS 1.0、GB2312 乱码、畸形 XML 等兼容性问题
|
||||
- [[Hermes Agent]]:技能运行平台,提供 cron 调度和 Telegram 通知能力
|
||||
- RSSHub(`http://192.168.3.45:1200`):本地部署的 RSSHub 实例,用于转换 YouTube 频道为 RSS
|
||||
- blogwatcher-daily 脚本:主脚本位于 `~/.hermes/skills/custom/blogwatcher-daily/scripts/blogwatcher-daily.py`
|
||||
|
||||
## Connections
|
||||
- [[blogwatcher-daily收藏]] ← depends_on ← [[RSSHub]]
|
||||
- [[blogwatcher-daily收藏]] ← depends_on ← [[feedparser]]
|
||||
- [[blogwatcher-daily收藏]] ← depends_on ← [[每日日报]]
|
||||
- [[blogwatcher-daily收藏]] ← extends ← [[multi-source-tech-news-digest]]
|
||||
- [[Hermes Agent]] ← runs ← [[blogwatcher-daily]]
|
||||
- [[blogwatcher-daily]] ← uses ← [[RSSHub]]
|
||||
- [[blogwatcher-daily]] ← uses ← [[feedparser]]
|
||||
- [[blogwatcher-daily]] ← stores state in ← [[SQLite 去重机制]]
|
||||
- [[blogwatcher-daily]] ← scheduled by ← [[Cron 定时任务]]
|
||||
|
||||
## Contradictions
|
||||
- 与 [[multi-source-tech-news-digest]]:
|
||||
- 冲突点:两者都是 RSS 多源新闻聚合方案
|
||||
- 当前观点:blogwatcher-daily 侧重 YouTube + RSS 直订的本地化方案,覆盖 31 个固定频道
|
||||
- 对方观点:multi-source-tech-news-digest 侧重多平台(RSS + Twitter + GitHub)的大规模聚合,支持动态添加来源
|
||||
- 说明:两者定位互补,blogwatcher-daily 是轻量级固定订阅方案,后者是大规模动态监控方案
|
||||
- 暂无发现与其他 Wiki 页面的冲突
|
||||
|
||||
## 技术细节
|
||||
|
||||
| 维度 | 技术选型 |
|
||||
|------|----------|
|
||||
| RSS 解析 | feedparser(支持 RSS 1.0/2.0/Atom) |
|
||||
| YouTube 支持 | RSSHub(`http://192.168.3.45:1200`) |
|
||||
| 去重存储 | SQLite(`blogwatcher.db`) |
|
||||
| 编码处理 | 自动检测 GB2312、GBK、ISO-8859-1 |
|
||||
| 定时调度 | Cron `0 6 * * *` |
|
||||
| 通知方式 | Telegram(`deliver=origin`) |
|
||||
|
||||
## 已解决的问题
|
||||
- ✅ RSS 1.0 支持:Slashdot 使用 RSS 1.0,feedparser 解决
|
||||
- ✅ GB2312 乱码:feedparser 自动处理
|
||||
- ✅ 畸形 XML:feedparser 兜底
|
||||
- ✅ YouTube RSSHub:绕过 YouTube 直接访问限制
|
||||
- ✅ 追加写入:日报模式不覆盖历史
|
||||
- ✅ 独立 force-all:强制回扫写入独立文件
|
||||
|
||||
## 已知限制
|
||||
- wikiHow 禁止爬虫,永远返回 0 篇
|
||||
- FeedBurner 频道(電腦玩物、阿榮福利味)RSSHub 可能不稳定
|
||||
- `--all` 强制回扫不要加入 cron,仅作例外操作
|
||||
|
||||
Reference in New Issue
Block a user