mcpField
A
ai-tech-rss-fetch

ai-tech-rss-fetch

github.com/tiangong-ai数据与数据库11235 次安装1 周前更新
代码仓库

关于 ai-tech-rss-fetch

用于订阅和同步 RSS/Atom 源的技能,将源与条目元数据保存到 SQLite。它通过多种身份键和内容指纹去重,仅保留元数据,不抓取全文或生成摘要。

主要功能

  1. 01通过 URL 或 OPML 添加订阅
  2. 02增量同步 RSS/Atom 源
  3. 03将源与条目元数据存入 SQLite
  4. 04使用多层身份键和内容指纹去重
  5. 05处理网络错误与未修改响应

适用场景

  1. 01从 OPML 导入一组订阅源
  2. 02定期同步条目并避免重复记录
  3. 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.yaml
assets/
config.example.json
hn-popular-blogs-2025.opml
references/
input-model.md
output-rules.md
time-range-rules.md
scripts/
rss_subscribe.py

详细介绍

AI Tech RSS Fetch

核心目标

  • 订阅 RSS/Atom 源。
  • 将 Feed 和条目元数据持久化到 SQLite。
  • 使用分层身份键和内容指纹对条目去重。
  • 仅保留元数据;不获取完整文章正文,也不生成摘要。

触发条件

  • 收到从 URL 或 OPML 订阅 RSS Feed 的请求。
  • 收到可靠运行增量 RSS 同步的请求。
  • 需要稳定地持久化元数据,以供下游处理。
  • 需要在多次运行中安全去重地存储 Feed 条目。

工作流

  1. 准备运行环境和数据库。
  • 确保已安装依赖: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"
  1. 添加 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
  1. 运行增量同步。
  • 获取启用的 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"
  1. 查询已持久化的元数据。
  • 列出 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_path
  • AI_RSS_DB_PATH(建议在多 Agent 运行环境中使用绝对路径)
  • opml_path
  • feed_urls
  • max_feeds_per_run
  • max_items_per_feed
  • user_agent
  • seen_ttl_days
  • enable_conditional_get
  • 配置示例:assets/config.example.json

错误与边界处理

  • Feed HTTP/网络故障:继续同步其他 Feed,并记录 last_error。
  • Feed 返回 304 Not Modified:跳过条目解析并保留状态。
  • 缺少 guid 和 link:使用哈希回退身份,并将 match_confidence 设为 low。
  • 缺少依赖(feedparser):提供安装指引。

最终输出检查清单(必需)

  • 核心目标
  • 触发条件
  • 输入要求
  • 元数据架构
  • 去重与同步规则
  • 命令工作流
  • 可配置参数
  • 错误处理

用户提出请求时,请逐字使用以下简化检查清单:

核心目标
输入需求
触发条件
元数据模型
去重与同步规则
命令流程
可配置参数
错误处理

参考资料

  • references/input-model.md
  • references/output-rules.md
  • references/time-range-rules.md

资源文件

  • assets/hn-popular-blogs-2025.opml(候选 Feed 池)
  • assets/config.example.json

脚本

  • scripts/rss_subscribe.py

评论

支持 Markdown