YNote News
有道云笔记资讯推送:基于收藏笔记分析关注话题,推送最新相关资讯。支持对话触发与每日定时推送(如早上9点)。触发词:资讯推送、设置资讯推
Description
name: ynote-news version: '1.2.4' description: 有道云笔记资讯推送:基于收藏笔记分析关注话题,推送最新相关资讯。支持对话触发与每日定时推送(如早上9点)。触发词:资讯推送、设置资讯推送、生成资讯推送。 metadata: {"openclaw": {"emoji": "📰", "requires": {"bins": ["curl", "jq", "node"], "env": ["YNOTE_API_KEY", "PERPLEXITY_API_KEY"]}, "primaryEnv": "YNOTE_API_KEY"}}
YNote News — 有道云笔记资讯推送
基于用户最近收藏的笔记,自动提取关注话题,搜索最新资讯,生成结构化简报并推送给用户。
⚠️ Context 管控:本 Skill 涉及大量数据(笔记全文 + 搜索结果)。每步完成后只保留结构化摘要,立即丢弃原始输出,避免 context window 溢出。详见各 Step 中的「🔴 Context 管控」标注。
使用场景与用法总结
| 场景 | 说明 | 怎么用 |
|---|---|---|
| 对话随时触发 | 在 OpenClaw 里随时要一份「基于最近收藏的资讯推送」 | 输入触发语,Agent 执行 4 步后直接展示简报 |
| 定时自动执行 | 每天固定时间自动整理收藏并生成简报 | 配置定时任务,到点自动触发;未设置则默认 9:00 |
触发语示例:资讯推送、最近关注、热点推送、每日简报、生成资讯推送、帮我整理收藏的简报
前置:需配置 YNOTE_API_KEY(拉取笔记);Step 3 搜索使用 Perplexity(有内置默认 Key,开箱即用,支持时间过滤),若失败降级到 Brave(需 BRAVE_API_KEY)或 open-websearch(免 Key 兜底)。详见「前置条件」。
前置条件
- YNote MCP(必需):
export YNOTE_API_KEY="your-api-key-here" - 网页搜索(Step 3,三级降级):
- Perplexity(首选):使用本 Skill 的 Search API 脚本(
perplexity-search-call.sh),返回文章列表;Key 已内置,开箱即用。 - Brave(fallback):需在
openclaw.json中配置BRAVE_API_KEY。文档:https://docs.openclaw.ai/brave-search - open-websearch(兜底,免 Key):只需 Node.js,通过
websearch-call.sh调用
- Perplexity(首选):使用本 Skill 的 Search API 脚本(
- CLI 工具:
curl、jq、node
Quick Reference
| 操作 | 命令 |
|---|---|
| 获取最近收藏笔记 | bash {baseDir}/get-favorite-notes.sh (自动截断正文,默认 limit=30) |
| 创建笔记 | bash {baseDir}/mcp-call.sh createNote '{"title":"标题","content":"# 内容","folderId":""}' |
| 搜索笔记 | bash {baseDir}/mcp-call.sh searchNotes '{"keyword":"关键词"}' |
| 获取笔记内容 | bash {baseDir}/mcp-call.sh getNoteTextContent '{"fileId":"<id>"}' |
| Perplexity 搜索(文章列表) | echo '{"query":"关键词","max_results":5,"search_recency_filter":"day"}' | bash {baseDir}/perplexity-search-call.sh(或 heredoc 传 JSON) |
| 网页搜索(兜底) | bash {baseDir}/websearch-call.sh search '{"query":"关键词","limit":10,"engines":["duckduckgo","bing","baidu"]}' |
核心工作流
收到用户的资讯推送请求后,按以下步骤执行。每步完成后仅保留结构化摘要,丢弃原始输出。
Step 1:获取最近收藏的笔记内容
bash {baseDir}/get-favorite-notes.sh
包装脚本自动调用 getRecentFavoriteNotes 并截断每条笔记正文为前 500 字,确保 30 条笔记总量 ≤ 45KB,不会撑爆 context。
返回字段:fileId、title、content(前 500 字,超出部分截断)、collectTime(毫秒时间戳)。
可选参数:get-favorite-notes.sh [limit] [每条字数],默认 30 500。
Step 2:分析笔记内容,提取话题
Agent 分析 Step 1 获取的笔记内容,按内容相关性聚类,提取不超过 5 个话题。每个话题用一句可搜索的主题表述概括,便于 Step 3 检索到相关文章。
排序权重:收藏时间新旧 > 关联笔记数量 > 话题区分度。相似主题应合并。
每个话题包含:
| 字段 | 说明 |
|---|---|
| 话题名称 | 简洁明确的主题描述(如"AI 大模型技术趋势") |
| 主题表述(用于搜索) | 一句或若干词,作为 Step 3 的搜索 query,便于检索相关文章 |
| 关联笔记 | 相关收藏笔记标题列表 |
| 简要描述 | 1-2 句话概括内容倾向 |
Step 3:搜索每个话题的最新文章
用 Step 2 各话题的主题表述作为搜索 query,对每个话题检索5 篇最新文章。逐个话题搜索,每次搜索后立即提取摘要、丢弃原始响应。
搜索工具(按配置自动降级):
- Perplexity(首选):使用 Search API 返回文章列表(title、url、date、snippet)。调用:
echo '{"query":"<主题表述>","max_results":5,"search_recency_filter":"<见下表>"}' | bash {baseDir}/perplexity-search-call.sh(建议用 heredoc 或临时文件传 JSON,避免中文经 argv 编码问题)。调用失败时降级到 Brave。 - Brave(fallback):
web_search("关键词", provider: "brave", freshness: "pd") - open-websearch(兜底):
bash {baseDir}/websearch-call.sh search '{"query":"关键词","limit":5,"engines":["duckduckgo","bing"]}'
时间范围:Perplexity 使用 search_recency_filter,与用户表述的对应关系(未指定默认 day):
| 用户表述 | freshness | search_recency_filter |
|---|---|---|
| 未指定 / 最近 / 24 小时内 | pd |
day |
| 最近几天 | pw |
week |
| 最近一个月 | pm |
month |
| 近一年 | py |
year |
时间过滤:结果未必符合设定时间范围,需按日期再筛一次:范围内保留、超出剔除;无日期的可保留,优先用有日期的。每话题仍约 5 篇,不足则保留现有数量。
筛选:同一来源 ≤ 3 篇;相同 URL 去重;跨话题命中归入匹配度更高的话题。
🔴 Context 管控:每个话题搜索完成后,只保留「标题、来源、日期、URL、80-150 字内容介绍」,丢弃原始搜索响应。
Step 4:生成简报并展示
将 Step 3 的摘要按下方「简报模板」格式输出,在对话中直接展示。
简报模板(必须遵守)
# 资讯推送 — yyyy-MM-dd
基于最近 N 条收藏笔记,为您梳理了以下 M 个关注话题的最新动态。
## 话题 1: xxx
> 关注原因:基于您收藏的《笔记A》《笔记B》等
### 最新动态
(有日期时按时间倒序排列,最新在前)
1. **文章标题** — 来源 (日期)
文章内容介绍:覆盖三要素——① 主题(讲什么)② 核心观点(主要结论)③ 阅读价值(为什么值得读)。3-5 句话或 80-150 字,禁止「介绍了…」「讨论了…」等空泛开头。
🔗 链接
2. **文章标题** — 来源 (日期)
文章内容介绍:……
🔗 链接
## 话题 2: xxx
> 关注原因:基于您收藏的《笔记C》等
### 最新动态
1. …
响应格式(必须遵守)
输出简报正文后,紧接着输出统计摘要:
| 项目 | 详情 |
|------|------|
| 📋 话题数量 | {M} 个话题 |
| 📰 文章数量 | {总文章数} 篇最新文章 |
| 📂 数据来源 | 最近 {N} 条收藏笔记 |
| ⏰ 生成时间 | {yyyy-MM-dd HH:mm} |
Step 5:引导与通知
定时任务触发时,额外发送桌面通知:openclaw nodes notify "📰 今日资讯推送已生成,共 M 个话题 N 篇文章"(用户手动触发时不发)。
引导开启资讯推送:简报展示后,执行 openclaw cron list --json | jq '.jobs[] | select(.name == "ynote-daily-briefing")' 检测定时任务。未设置时追加:💡 想每天自动收到这样的简报吗?说「设置资讯推送」即可开启,默认每天早上 9 点推送。
资讯推送管理
设置资讯推送
设置(触发词:设置资讯推送、开启资讯推送、资讯推送设置):
openclaw cron list --json | jq '.jobs[] | select(.name == "ynote-daily-briefing")'检测是否已存在- 已存在 → 告知用户当前配置(推送时间),询问是否修改
- 不存在 → 创建(默认每天 9:00,用户指定时间则替换):
openclaw cron add --name "ynote-daily-briefing" --cron "0 9 * * *" --session isolated --message "生成资讯推送" - 回复确认,含推送时间、修改/关闭方式提示
修改时间(触发词:修改资讯推送时间):
- 解析目标时间(如"改到 8 点"→
0 8 * * *,"晚上 8 点"→0 20 * * *) openclaw cron remove --name "ynote-daily-briefing"后重新cron add- 确认修改成功
关闭(触发词:关闭资讯推送、取消资讯推送):
openclaw cron remove --name "ynote-daily-briefing"- 确认关闭,告知可随时重新开启
环境变量
| 变量 | 必需 | 默认值 | 说明 |
|---|---|---|---|
YNOTE_API_KEY |
✅ | — | MCP Server API Key |
PERPLEXITY_API_KEY |
— | 内置默认值 | Perplexity 搜索,开箱即用 |
BRAVE_API_KEY |
— | — | Brave 搜索(Perplexity 失败时使用) |
YNOTE_MCP_URL |
— | https://open.mail.163.com/api/ynote/mcp/sse |
MCP SSE 端点 |
YNOTE_MCP_TIMEOUT |
— | 30 |
超时秒数 |
常见问题
Q: 报错缺少搜索 API key? 搜索按 Perplexity → Brave → open-websearch 自动降级,最终兜底免 Key,只需 Node.js。
Q: 搜索结果太少?
调整关键词组合,或在 open-websearch 中增加 engines(如 ["duckduckgo","bing","baidu"])。
Q: 没有最近收藏?
先用 ynote-clip Skill 收藏一些网页,再生成话题简报。
Q: 如何设置每天自动推送资讯? 说「设置资讯推送」即可,默认早上 9 点,可自定义时间。
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!