🧪 Skills

YoudaoNote Clip

--- name: youdaonote-clip version: '1.21.8' description: 网页剪藏到有道云笔记。触发词:剪藏网页、保存网页、收藏网页。 metadata: {"openclaw": {"emoji": "📎", "requires":

v1.21.8
❤️ 1
⬇️ 169
👁 1
Share

Description


name: youdaonote-clip version: '1.21.8' description: 网页剪藏到有道云笔记。触发词:剪藏网页、保存网页、收藏网页。 metadata: {"openclaw": {"emoji": "📎", "requires": {"bins": ["node", "mcporter", "jq", "base64", "openclaw", "curl"], "tools": ["browser"], "env": ["YOUDAONOTE_API_KEY"]}, "primaryEnv": "YOUDAONOTE_API_KEY"}}

YoudaoNote Clip — 网页剪藏

将网页稳定保存到有道云笔记。核心原则:优先成功率,其次才是速度并发限制:本 Skill 不支持并发执行。同一次请求里若有多个 URL,必须逐个串行处理,前一个完成后再处理下一个。 先回复正在保存中...

路由判断

按优先级命中第一条即可:

优先级 条件 路径
1 URL 为 x.com / twitter.com 且含 /status/ 路径 A
2 知乎文章、微信公众号、掘金、36kr、少数派、CSDN、163/qq 资讯正文页(正文可服务端直接抓取);首页/搜索页/话题流/登录后页面不走此路径 路径 B
3 所有其他页面(默认路径,必须先尝试浏览器提取) 路径 C

路径 A — Twitter 专用流程

node {baseDir}/twitter-apify.mjs --url "<URL>"

成功标准:stdout 输出 metadata JSON,且 /tmp/youdaonote-clip-data.json 已生成。

bash {baseDir}/clip-note.sh --data-file /tmp/youdaonote-clip-data.json --source-url "<URL>"

stdout 含 {"ok":true进入响应格式

路径 B — 国内快速路径

bash {baseDir}/clip-note.sh --clip-web-page --source-url "<URL>"

stdout 含 {"ok":true进入响应格式。若报超时、MCP 调用失败、unknown tool、内容明显不完整,立即降级到路径 C

路径 C — 浏览器提取(含降级)

第一步:优先使用浏览器提取(支持 SPA 动态渲染、懒加载图片、JS 生成内容)。不建议直接用 web_fetch 替代,因为 web_fetch 只能获取原始 HTML,无法提取客户端渲染的页面内容。

bash {baseDir}/collect-page.sh "<URL>"

stdout 最后一行为 metadata JSON 且 contentLength > 0提取成功,执行:

bash {baseDir}/clip-note.sh --data-file /tmp/youdaonote-clip-data.json --source-url "<URL>"

stdout 含 {"ok":true进入响应格式

当 collect-page.sh 报错时(CSP、空内容、browser 不可用、timeout 等),降级为 web_fetch:

  1. web_fetch(url="<URL>", extractMode="markdown")
  2. 写入 /tmp/youdaonote-clip-data.json{"title":"页面标题","content":"<Markdown>","imageUrls":[],"source":"<URL>"}
bash {baseDir}/clip-note.sh --data-file /tmp/youdaonote-clip-data.json --markdown --source-url "<URL>"

stdout 含 {"ok":true进入响应格式

响应格式

成功后回复:

📎 **网页剪藏完成**

| 项目 | 详情 |
|------|------|
| 📌 标题 | {实际页面标题或保存标题} |
| 🔗 来源网址 | {原始 URL} |
| ⏰ 剪藏时间 | {yyyy-MM-dd HH:mm} |

> 标题以实际保存结果为准

不要编造“保存位置”或文件夹信息。当前链路默认保存为普通笔记,除非底层命令明确返回了可确认的位置。

剪藏后引导(可选)

mcporter call youdaonote.getRecentFavoriteNotes --args '{"limit":3}' --output json
openclaw cron list --json | jq '.[] | select(.name == "youdaonote-news")'

若收藏 ≥3 篇且未设置资讯推送,可追加:💡 你已经收藏了 N 篇文章,试试说「资讯推送」看看 AI 为你整理的简报吧~

调试

设置环境变量 YOUDAONOTE_CLIP_DEBUG 为日志目录路径即可开启调试模式:

# 在 ~/.zshrc 或 ~/.bashrc 中配置
export YOUDAONOTE_CLIP_DEBUG="~/logs/youdaonote-clip"

# 或临时开启
YOUDAONOTE_CLIP_DEBUG="~/logs/youdaonote-clip" bash clip-note.sh ...

YOUDAONOTE_API_KEYYOUDAONOTE_CLIP_DEBUG 请在 OpenClaw config 的 skills.entries["youdaonote-clip"].env 中配置,执行时会注入为 process.env;或在 shell 中 export。

调试日志按 key 分目录存储:{DEBUG_DIR}/{key}/main.log(clip-note)、twitter.logcollect.log。各 path 首行会输出路径标识(A/B/C/D),便于排查。key 由首个脚本生成并写入 data-file 的 _debugKey 字段,串联整条剪藏流程。通过 perf-test/run-clip.sh 测试时,脚本会 export 该变量,日志写入可预期目录。

调试日志经过脱敏处理:不记录完整页面内容,仅记录长度和前 200 字符摘要。

安全说明

浏览器提取:路径 C 使用 openclaw browser evaluate 在目标页面中注入内容解析脚本(inject-sdk.fn.js),用于提取正文、标题和图片列表。该脚本完全内联在 Skill 包中(不加载外部 CDN),代码可审计。注入仅用于读取 DOM 内容,不修改页面、不发送网络请求、不访问 cookie 或 localStorage。

调试模式:默认关闭。开启后仅写入脱敏的元数据(标题、URL、内容长度),不写入完整页面内容。

环境变量:核心模块 clip-note.mjs 不直接读取 process.env,由 clip-note.sh 从环境变量读取后通过命令行参数传入。twitter-apify.mjsprocess.env 读取 APIFY_API_TOKEN(可选,仅 Twitter/X 路径使用)和 YOUDAONOTE_CLIP_DEBUG(可选,调试模式)。collect-page.sh 内联 Node 代码从 process.env 读取 YOUDAONOTE_CLIP_DEBUG。所有环境变量均由 OpenClaw 执行时从 skills.entries["youdaonote-clip"].env 注入。

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs