はじめに
情報過多の時代においても、RSS は依然として最も効率的な情報収集方法の一つです。RSS 購読 Skill を開発することで、OpenClaw に興味のある情報ソースを自動的に監視させ、要約を生成してチャットチャンネルにプッシュさせることができます。
本チュートリアルでは、マルチソース集約、AI 要約、定期プッシュ、OPML インポートに対応した、完全な RSS 購読とニュースプッシュ Skill を実装します。
機能概要
| 機能 | 説明 |
|---|---|
| 購読の追加 | RSS/Atom URL で購読ソースを追加 |
| OPML インポート | 既存の RSS 購読を一括インポート |
| 定期取得 | 設定した間隔で新しいコンテンツを自動チェック |
| AI 要約 | 記事の要約を自動生成 |
| チャンネルプッシュ | 新しいコンテンツを指定チャットチャンネルにプッシュ |
| 購読管理 | 購読ソースの確認、削除、カテゴリ管理 |
準備作業
MCP ツールの設定
~/.config/openclaw/openclaw.json5 に必要な MCP ツールを追加します:
{
mcp: {
servers: {
"http-fetch": {
command: "npx",
args: ["-y", "@openclaw-mcp/http-fetch"]
},
"filesystem": {
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem",
"--allow-read", "--allow-write",
"~/.openclaw/data/rss/"]
},
"scheduler": {
command: "npx",
args: ["-y", "@openclaw-mcp/scheduler"]
}
}
}
}
データディレクトリを作成します:
mkdir -p ~/.openclaw/data/rss/
SKILL.md の作成
~/.openclaw/skills/rss-reader.SKILL.md を作成します:
---
name: rss-reader
version: 1.0.0
description: RSS/Atom 購読監視とニュースプッシュスキル
triggers:
- rss
- 購読
- subscribe
- ニュース
- news
- 情報
- feed
mcp_tools:
- http_fetch
- filesystem
- scheduler
---
# RSS 購読とニュースプッシュスキル
## Description
RSS/Atom 購読ソースを監視し、新しいコンテンツを自動取得して AI 要約を生成し、
ユーザーのチャットチャンネルにプッシュします。
## Commands
ユーザーは以下のコマンドで RSS スキルと対話できます:
### 購読の追加
- 「購読 {URL}」 - RSS 購読ソースを追加
- 「購読 {URL} カテゴリ {カテゴリ名}」 - 追加してカテゴリに分類
### 購読の管理
- 「購読一覧」 / 「マイ購読」 - すべての購読を表示
- 「購読解除 {名前または番号}」 - 購読を削除
- 「購読一時停止 {名前または番号}」 - 更新チェックを一時停止
- 「購読再開 {名前または番号}」 - 更新チェックを再開
### コンテンツの確認
- 「最新ニュース」 / 「今日のニュース」 - 最新の未読コンテンツを表示
- 「{購読名} の更新を見る」 - 特定ソースの更新を表示
### OPML 操作
- 「OPML インポート {URLまたは内容}」 - 購読を一括インポート
- 「OPML エクスポート」 - 現在のすべての購読をエクスポート
### プッシュ設定
- 「プッシュ時間を設定 {時間}」 - 毎日のプッシュ時間を設定
- 「プッシュ停止」 / 「プッシュ開始」 - プッシュ状態を切り替え
## Behavior
### 購読追加フロー
1. ユーザーが RSS/Atom URL を提供
2. http_fetch でフィードコンテンツを取得
3. フィードを解析し、タイトル、説明などのメタ情報を抽出
4. ~/.openclaw/data/rss/feeds.json に保存
5. 購読成功を確認し、ソース名と最新記事数を表示
### 定期取得フロー
1. 30分ごと(デフォルト、設定変更可能)にすべてのアクティブな購読をチェック
2. http_fetch でフィードの最新コンテンツを取得
3. 保存済み記事と比較し、新着記事を特定
4. 新着記事の AI 要約を生成(50-100文字)
5. 新着記事を articles.json に保存
6. プッシュが有効な場合、ユーザーのチャンネルに送信
### OPML インポートフロー
1. OPML XML コンテンツを解析
2. すべてのフィード URL とカテゴリ情報を抽出
3. 各フィードのアクセス可能性を順次検証
4. feeds.json に一括追加
5. インポート結果を報告(成功数、失敗数)
## Data Schema
### feeds.json
```json
{
"feeds": [
{
"id": "feed_001",
"url": "https://example.com/rss.xml",
"title": "Example Blog",
"description": "A great blog about tech",
"category": "技術",
"status": "active",
"pollInterval": 1800,
"lastChecked": "2026-03-28T10:00:00+08:00",
"lastUpdated": "2026-03-28T09:30:00+08:00",
"addedAt": "2026-03-25T14:00:00+08:00",
"channelType": "telegram",
"channelId": "12345678"
}
]
}
articles.json
{
"articles": [
{
"id": "art_20260328_001",
"feedId": "feed_001",
"title": "Article Title",
"url": "https://example.com/post/123",
"publishedAt": "2026-03-28T08:00:00Z",
"summary": "AIが生成した記事の要約...",
"isRead": false,
"isPushed": false
}
]
}
Output Format
購読追加成功
✅ 購読に成功しました!
📰 名前:{ソース名}
🔗 アドレス:{URL}
📁 カテゴリ:{カテゴリ}
📊 現在の記事数:{N} 件
最近の3件の記事:
1. {タイトル1} ({日付1})
2. {タイトル2} ({日付2})
3. {タイトル3} ({日付3})
購読一覧
📋 あなたの RSS 購読(全 {N} 件)
技術:
1. ✅ Example Blog (最終更新: 2時間前) [feed_001]
2. ✅ Tech News (最終更新: 30分前) [feed_002]
デザイン:
3. ⏸️ Design Weekly (一時停止中) [feed_003]
未分類:
4. ✅ Personal Blog (最終更新: 1日前) [feed_004]
ニュースプッシュ
📬 本日のニュースプッシュ (2026-03-28)
━━━━━━━━━━━━━━━━
📰 Example Blog
▸ {記事タイトル1}
{50-100文字のAI要約}
🔗 全文を読む
▸ {記事タイトル2}
{50-100文字のAI要約}
🔗 全文を読む
━━━━━━━━━━━━━━━━
📰 Tech News
▸ {記事タイトル3}
{50-100文字のAI要約}
🔗 全文を読む
━━━━━━━━━━━━━━━━
全 {N} 件の新着コンテンツ
Push Schedule Configuration
ユーザーはプッシュ時間をカスタマイズできます:
- デフォルトの日次プッシュ時間:08:00 と 18:00
- カスタム対応:任意の時間帯、複数の時間帯
- scheduler ツールを使用してタイマータスクを登録
プッシュ設定は feeds.json のトップレベルに保存されます:
{
"pushSettings": {
"enabled": true,
"times": ["08:00", "18:00"],
"timezone": "Asia/Shanghai",
"maxArticlesPerPush": 20,
"summarize": true
},
"feeds": [...]
}
OPML Format Reference
インポート時は標準 OPML フォーマットに対応しています:
<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
<head>
<title>My Subscriptions</title>
</head>
<body>
<outline text="技術" title="技術">
<outline type="rss" text="Example Blog"
xmlUrl="https://example.com/rss.xml"
htmlUrl="https://example.com"/>
</outline>
</body>
</opml>
エクスポート時も同じフォーマットの OPML を生成し、他の RSS リーダーにインポートできます。
Error Handling
- URL にアクセスできない場合:URL が正しいかユーザーに確認を促します
- RSS/Atom フォーマットではない場合:ページ内のフィードリンクを自動検出します
- 取得頻度の制限:フィードの TTL 設定と HTTP Cache ヘッダーを尊重します
- ストレージファイルの破損:自動バックアップからの復元を行います
## 上級設定
### カスタム取得間隔
異なる種類の購読に異なる取得間隔を設定できます:
```json5
// openclaw.json5 で RSS スキルに追加設定
{
skillConfig: {
"rss-reader": {
defaultPollInterval: 1800, // デフォルト30分
minPollInterval: 300, // 最小5分
maxArticlesStore: 1000, // 最大1000件の記事を保存
summaryMaxLength: 100, // 要約の最大文字数
autoCleanupDays: 30 // 30日前の記事を自動クリーンアップ
}
}
}
コンテンツフィルタリング
購読ソースにキーワードフィルタリングを設定できます:
購読 https://example.com/rss.xml AI または 機械学習 を含む記事のみ表示
スキルはフィード設定にフィルタリングルールを記録し、取得時にマッチする記事のみ保持します。
テストフロー
# スキルをロードするために再起動
openclaw restart
# スキルのロードを確認
openclaw skill list
テストシナリオ:
-
既知の RSS ソース(Hacker News など)を追加:
購読 https://hnrss.org/frontpage -
購読一覧を確認:
マイ購読 -
最新コンテンツを確認:
最新ニュース -
OPML インポートのテスト(オンライン OPML ファイルを使用)
-
プッシュ時間を設定してトリガーを待機
おすすめの RSS ソース
テスト用に高品質な中国語 RSS ソースをいくつかご紹介します:
| 名前 | URL | カテゴリ |
|---|---|---|
| 少数派 | https://sspai.com/feed |
テクノロジー |
| 36氪 | https://36kr.com/feed |
スタートアップ |
| InfoQ 中国語版 | https://www.infoq.cn/feed |
技術 |
| 编程随想 | 自身で検索 | 技術 |
| Hacker News | https://hnrss.org/frontpage |
技術 |
まとめ
RSS 購読 Skill は OpenClaw をスマートな情報アグリゲーターに変えます。AI による自動要約生成と定期プッシュにより、情報に埋もれることなく重要な情報への注目を維持できます。この Skill は、複数の MCP ツール(HTTP リクエスト、ファイルストレージ、タイマースケジューリング)を組み合わせて複雑な機能を構築する方法を示しています。