74 lines
3.6 KiB
Markdown
74 lines
3.6 KiB
Markdown
---
|
||
title: "Blogwatcher Daily 技能收藏"
|
||
type: source
|
||
tags: [rss, automation, hermes-agent, skill]
|
||
date: 2026-04-18
|
||
---
|
||
|
||
## Source File
|
||
- [[raw/Skills/blogwatcher-daily收藏.md]]
|
||
|
||
## Summary(用中文描述)
|
||
- 核心主题:Hermes Agent 自定义技能 blogwatcher-daily,实现 RSS/YouTube 订阅自动化监控与每日摘要生成
|
||
- 问题域:个人资讯获取与信息聚合
|
||
- 方法/机制:RSSHub 转换 YouTube 频道为 RSS + feedparser 解析 + SQLite 去重 + Cron 定时调度
|
||
- 结论/价值:每天自动整理 31 个订阅频道的新文章,减少信息过载,提高阅读效率
|
||
|
||
## Key Claims(用中文描述)
|
||
- 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
|
||
> "RSS 解析库:feedparser(支持 RSS 1.0/2.0/Atom、GB2312/GBK 编码、畸形 XML)" — 技术选型说明
|
||
> "追加写入:日常扫描正确追加到日报,不覆盖历史内容" — 数据持久化策略
|
||
> "wikiHow 禁止所有爬虫,无法抓取,永远返回 0 篇" — 已知的限制
|
||
|
||
## Key Concepts
|
||
- [[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]]:技能运行平台,提供 cron 调度和 Telegram 通知能力
|
||
- RSSHub(`http://192.168.3.45:1200`):本地部署的 RSSHub 实例,用于转换 YouTube 频道为 RSS
|
||
- blogwatcher-daily 脚本:主脚本位于 `~/.hermes/skills/custom/blogwatcher-daily/scripts/blogwatcher-daily.py`
|
||
|
||
## Connections
|
||
- [[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
|
||
- 暂无发现与其他 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,仅作例外操作
|