ai-tech-rss-fetch について
RSS/Atomフィードを登録・同期し、フィードと記事のメタデータをSQLiteに保存するスキルです。複数の識別キーとコンテンツ指紋で重複を防ぎ、記事本文の取得や要約生成は行いません。
主な機能
- 01URLまたはOPMLから登録
- 02RSS/Atomの差分同期
- 03フィードと記事のメタデータをSQLiteに保存
- 04識別キーと指紋による重複排除
- 05ネットワークエラーと未変更応答への対応
活用シーン
- 01OPMLから購読フィードを一括登録
- 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 フェッチ
主な目的
- RSS/Atom ソースを購読します。
- フィードとエントリーのメタデータを SQLite に永続化します。
- 階層化された識別キーとコンテンツフィンガープリントを使ってエントリーを重複排除します。
- メタデータのみを保持します。記事本文全体の取得や要約は行いません。
トリガー条件
- URL または OPML から RSS フィードを購読するリクエストを受け取った場合。
- RSS の差分同期を確実に実行するリクエストを受け取った場合。
- 後続処理に向けて、安定したメタデータの永続化が必要な場合。
- 繰り返しの実行でフィード項目を安全に重複排除できるストレージが必要な場合。
ワークフロー
- ランタイムとデータベースを準備します。
- 依存関係がインストールされていることを確認します:
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"
- フィードの購読を追加します。
- フィード 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
- 差分同期を実行します。
- 有効なフィードを取得してメタデータを保存します:
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"
- 永続化されたメタデータを照会します。
- フィードを一覧表示します:
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_pathAI_RSS_DB_PATH(マルチエージェントランタイムでは絶対パスを推奨)opml_pathfeed_urlsmax_feeds_per_runmax_items_per_feeduser_agentseen_ttl_daysenable_conditional_get- 設定例:
assets/config.example.json
エラーと境界ケースの処理
- フィードの HTTP/ネットワークエラー:ほかのフィードの同期を続行し、
last_errorを記録します。 - フィードが
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(フィード候補一覧)assets/config.example.json
スクリプト
scripts/rss_subscribe.py
コメント
Markdown 対応