关于 ai-tech-rss-fetch
用于订阅和同步 RSS/Atom 源的技能,将源与条目元数据保存到 SQLite。它通过多种身份键和内容指纹去重,仅保留元数据,不抓取全文或生成摘要。
主要功能
- 01通过 URL 或 OPML 添加订阅
- 02增量同步 RSS/Atom 源
- 03将源与条目元数据存入 SQLite
- 04使用多层身份键和内容指纹去重
- 05处理网络错误与未修改响应
适用场景
- 01从 OPML 导入一组订阅源
- 02定期同步条目并避免重复记录
- 03为下游处理保存稳定的条目元数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tiangong-ai/ agent-skills --skill ai-tech-rss-fetch安装后在 Claude Code 中输入/ai-tech-rss-fetch确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlassets/config.example.jsonhn-popular-blogs-2025.opmlreferences/input-model.mdoutput-rules.mdtime-range-rules.mdscripts/rss_subscribe.py详细介绍
AI Tech RSS Fetch
核心目标
- 订阅 RSS/Atom 源。
- 将 Feed 和条目元数据持久化到 SQLite。
- 使用分层身份键和内容指纹对条目去重。
- 仅保留元数据;不获取完整文章正文,也不生成摘要。
触发条件
- 收到从 URL 或 OPML 订阅 RSS Feed 的请求。
- 收到可靠运行增量 RSS 同步的请求。
- 需要稳定地持久化元数据,以供下游处理。
- 需要在多次运行中安全去重地存储 Feed 条目。
工作流
- 准备运行环境和数据库。
- 确保已安装依赖:
python3 -m pip install feedparser。 - 在多 Agent 运行环境中,在执行任何命令前将 DB 固定为绝对路径:
export AI_RSS_DB_PATH="/absolute/path/to/workspace-rss-bot/ai_rss.db"
- 初始化一次 SQLite 架构:
python3 scripts/rss_subscribe.py init-db --db "$AI_RSS_DB_PATH"
- 添加 Feed 订阅。
- 添加一个 Feed URL:
python3 scripts/rss_subscribe.py add-feed --db "$AI_RSS_DB_PATH" --url "https://example.com/feed.xml"
- 从 OPML 导入 Feed:
python3 scripts/rss_subscribe.py import-opml --db "$AI_RSS_DB_PATH" --opml assets/hn-popular-blogs-2025.opml
- 运行增量同步。
- 获取启用的 Feed 并存储元数据:
python3 scripts/rss_subscribe.py sync --db "$AI_RSS_DB_PATH" --max-feeds 20 --max-items-per-feed 100
- 可选:同步单个 Feed:
python3 scripts/rss_subscribe.py sync --db "$AI_RSS_DB_PATH" --feed-url "https://example.com/feed.xml"
- 查询已持久化的元数据。
- 列出 Feed:
python3 scripts/rss_subscribe.py list-feeds --db "$AI_RSS_DB_PATH" --limit 50
- 列出最近的条目:
python3 scripts/rss_subscribe.py list-entries --db "$AI_RSS_DB_PATH" --limit 100
输入要求
- 支持的输入:
- RSS XML Feed URL。
- OPML Feed 列表文件。
输出约定(仅元数据)
- 将
feeds元数据持久化到 SQLite:feed_url、feed_title、site_url、etag、last_modified、状态字段。
- 将
entries元数据持久化到 SQLite:id、dedupe_key(兼容性主身份快照)、guid、url、canonical_url、title、author、published_at、updated_at、summary、categories、content_hash、match_confidence、时间戳。
- 将
entry_identities映射表持久化到 SQLite:entry_id、key_type、key_value、created_at。- 支持的键类型:
guid、canonical_url、legacy_guid、fallback_hash。
- 不存储生成的摘要,也不创建归档 Markdown 文件。
可配置参数
db_pathAI_RSS_DB_PATH(建议在多 Agent 运行环境中使用绝对路径)opml_pathfeed_urlsmax_feeds_per_runmax_items_per_feeduser_agentseen_ttl_daysenable_conditional_get- 配置示例:
assets/config.example.json
错误与边界处理
- Feed HTTP/网络故障:继续同步其他 Feed,并记录
last_error。 - Feed 返回
304 Not Modified:跳过条目解析并保留状态。 - 缺少
guid和link:使用哈希回退身份,并将match_confidence设为low。 - 缺少依赖(
feedparser):提供安装指引。
最终输出检查清单(必需)
- 核心目标
- 触发条件
- 输入要求
- 元数据架构
- 去重与同步规则
- 命令工作流
- 可配置参数
- 错误处理
用户提出请求时,请逐字使用以下简化检查清单:
核心目标
输入需求
触发条件
元数据模型
去重与同步规则
命令流程
可配置参数
错误处理
参考资料
references/input-model.mdreferences/output-rules.mdreferences/time-range-rules.md
资源文件
assets/hn-popular-blogs-2025.opml(候选 Feed 池)assets/config.example.json
脚本
scripts/rss_subscribe.py
评论
支持 Markdown