mcpField
A
ai-tech-rss-fetch

ai-tech-rss-fetch

github.com/tiangong-aiデータ・データベース11235 回インストール1 週間前に更新
リポジトリ

ai-tech-rss-fetch について

RSS/Atomフィードを登録・同期し、フィードと記事のメタデータをSQLiteに保存するスキルです。複数の識別キーとコンテンツ指紋で重複を防ぎ、記事本文の取得や要約生成は行いません。

主な機能

  1. 01URLまたはOPMLから登録
  2. 02RSS/Atomの差分同期
  3. 03フィードと記事のメタデータをSQLiteに保存
  4. 04識別キーと指紋による重複排除
  5. 05ネットワークエラーと未変更応答への対応

活用シーン

  1. 01OPMLから購読フィードを一括登録
  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 フェッチ

主な目的

  • RSS/Atom ソースを購読します。
  • フィードとエントリーのメタデータを SQLite に永続化します。
  • 階層化された識別キーとコンテンツフィンガープリントを使ってエントリーを重複排除します。
  • メタデータのみを保持します。記事本文全体の取得や要約は行いません。

トリガー条件

  • URL または OPML から RSS フィードを購読するリクエストを受け取った場合。
  • RSS の差分同期を確実に実行するリクエストを受け取った場合。
  • 後続処理に向けて、安定したメタデータの永続化が必要な場合。
  • 繰り返しの実行でフィード項目を安全に重複排除できるストレージが必要な場合。

ワークフロー

  1. ランタイムとデータベースを準備します。
  • 依存関係がインストールされていることを確認します:python3 -m pip install feedparser。
  • マルチエージェントランタイムでは、コマンドを実行する前に 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. フィードの購読を追加します。
  • フィード URL を 1 つ追加します:
python3 scripts/rss_subscribe.py add-feed --db "$AI_RSS_DB_PATH" --url "https://example.com/feed.xml"
  • OPML からフィードをインポートします:
python3 scripts/rss_subscribe.py import-opml --db "$AI_RSS_DB_PATH" --opml assets/hn-popular-blogs-2025.opml
  1. 差分同期を実行します。
  • 有効なフィードを取得してメタデータを保存します:
python3 scripts/rss_subscribe.py sync --db "$AI_RSS_DB_PATH" --max-feeds 20 --max-items-per-feed 100
  • 1 つのフィードのみを同期する場合(任意):
python3 scripts/rss_subscribe.py sync --db "$AI_RSS_DB_PATH" --feed-url "https://example.com/feed.xml"
  1. 永続化されたメタデータを照会します。
  • フィードを一覧表示します:
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 フィード URL。
    • OPML フィードリストファイル。

出力仕様(メタデータのみ)

  • 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(マルチエージェントランタイムでは絶対パスを推奨)
  • opml_path
  • feed_urls
  • max_feeds_per_run
  • max_items_per_feed
  • user_agent
  • seen_ttl_days
  • enable_conditional_get
  • 設定例:assets/config.example.json

エラーと境界ケースの処理

  • フィードの HTTP/ネットワークエラー:ほかのフィードの同期を続行し、last_error を記録します。
  • フィードが 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(フィード候補一覧)
  • assets/config.example.json

スクリプト

  • scripts/rss_subscribe.py

コメント