소개
정보 폭발의 시대에 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 获取 feed 内容
3. 解析 feed,提取标题、描述等元信息
4. 保存到 ~/.openclaw/data/rss/feeds.json
5. 确认订阅成功,显示源名称和最近文章数
### 定时抓取流程
1. 每 30 分钟(默认,可配置)检查所有活跃订阅
2. 使用 http_fetch 获取 feed 最新内容
3. 与已存储的文章对比,找出新增文章
4. 对新文章生成 AI 摘要(50-100字)
5. 存储新文章到 articles.json
6. 如果开启了推送,发送到用户频道
### OPML 导入流程
1. 解析 OPML XML 内容
2. 提取所有 feed URL 和分类信息
3. 逐个验证 feed 可访问性
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 格式:尝试自动发现页面中的 feed 链接
- 抓取频率限制:尊重 feed 的 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 或 机器学习 的文章
스킬은 feed 설정에 필터 규칙을 기록하고, 수집 시 일치하는 기사만 유지합니다.
테스트 절차
# 재시작하여 스킬 로드
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 요청, 파일 저장, 예약 스케줄링)를 결합하여 복잡한 기능을 구축하는 방법을 보여줍니다.