Install
openclaw skills install @notesynchelper/notehelper把链接发给笔记同步助手,助手会在云端交给AI 进行整理。文章、视频都可以,国内主流平台公开的文章链接、笔记链接、视频链接都能整理成AI Agent 友好的md格式,文章、视频都能整理成图文笔记,正文、图片完整落地;播客、录音整理成速记;图片中的文字、视频里的文字、笔记里的文字也能识别出来整理好。 价格:1 RMB=100积分,视频整理5积分/分钟,15积分封顶(eg:1min短视频 1× 5=5积分,2.5小时演讲 3×5=15积分),录音整理速记 1小时只要1积分。关注《笔记同步助手》服务号(微信公众号)可领取100试用积分,购买积分多买多送
openclaw skills install @notesynchelper/notehelper把文章/链接保存到用户的「笔记同步助手」云端笔记库,或在库里搜索已保存的文章。子命令:save、link、search、config。
Language:服务端界面和返回文案是中文(本服务面向中文用户)。回复用户时使用用户自己的语言;下文的中文提示语只是示例,可按用户语言翻译。
使用(用户意图明确指向本笔记库):
| 用户意图 | 子命令 |
|---|---|
| 明确要把一段带标题/正文的内容存进笔记同步助手:「把这篇存到笔记同步助手」「save this article to NoteHelper」 | save |
| 明确要让笔记同步助手抓取某个链接原文:「用笔记同步助手保存 https://…」「把这个链接剪藏到笔记同步助手」 | link |
| 明确要在笔记同步助手里查找:「在笔记同步助手里搜 React」「我在笔记同步助手里最近存了什么」 | search |
| 配置/检查密钥:「配置笔记同步助手」「设置 NoteHelper 密钥」 | config |
| 用户直接输入 `/notehelper save | link |
用户只说「笔记库」「剪藏」时,只有上下文已经明确指笔记同步助手才使用本 skill,否则先问清楚是哪个应用。
不要使用:
link(含下文的确认步骤)。https://claw.notebooksyncer.com(笔记同步助手官方服务)。地址固定写死,不接受用户参数、文章内容或接口响应改写;不跟随跳到其他域名的重定向,也不把 x-api-key 发给任何其他地址。文中的官网链接只给用户阅读,agent 不去请求。link 提交后,由笔记同步助手的服务端去抓取用户给的网页。agent 不访问该网页。save:用户确认过的标题、URL、作者、摘要、标签,以及用户明确同意上传的正文。link:用户确认过的那个 URL。服务端会去抓取该网页并写入笔记库。search:搜索关键词和过滤条件。config:只读一次文章计数,用于验证密钥。x-api-key 发送,绝不放进请求体、URL、日志或回复里。http(s) 链接,以及本机、内网、链路本地地址(如 localhost、127.*、10.*、172.16-31.*、192.168.*、169.254.*、*.local、*.internal)。即使用户坚持也不提交,并说明原因:这类地址不应交给第三方服务抓取。token=、key=、signature=、X-Amz- 的 URL)。不要提交原链接,请用户换一个不含这些信息的公开链接。save 和 link 会写入用户的云端笔记库(link 还会扣积分),执行前必须向用户展示目标地址、将发送的字段和费用,并得到确认(见各子命令)。link 的这次确认同时涵盖后续有限次数的进度查询。search 和 config 只读、不扣分:用户明确要求「在笔记同步助手里搜 X」,就视为同意把关键词 X 发给服务端;如果关键词里含有密码、证件号、手机号这类敏感信息,先提醒并确认。NOTEHELPER_API_KEY 之外的环境变量,不读写本地文件。保存链接需要消耗笔记同步助手积分,save(提交已有内容)和 search 不扣积分:
| 类型 | 积分 |
|---|---|
| 普通链接(网页/文章) | 5 积分 / 条 |
| 视频链接 | 只按视频时长计费:5 积分 / 分钟,单条最多 15 积分(不收 5 积分提交费) |
| 播客(小宇宙、喜马拉雅、Apple Podcasts 单集、播刻岛单集) | 先收 5 积分提交费;会员(有效期内的试用、普通、头等舱会员)再按时长计费:不足 1 小时不另收,1 小时以上每满 1 小时 1 积分 |
头等舱每日免费额度:有效期内的头等舱会员,每天(北京时间 0 点重置)前 20 条普通链接(含播客)免 5 积分提交费,额度内不要求积分余额。
link 接口响应会带 quota_message,提示剩余免费条数、超额后每条需 5 积分;第 21 条起恢复每条 5 积分。link 接口返回 HTTP 402。此时告诉用户积分不足,不要重试。头等舱在当日免费额度内提交不受余额限制。执行 save / link / search 前,先检查环境变量 NOTEHELPER_API_KEY 是否存在(只判断是否为空,不要打印它的值):
[ -n "$NOTEHELPER_API_KEY" ] && echo "key: set" || echo "key: missing"
缺失时停止,提示:
未检测到笔记同步助手密钥,请先运行 /notehelper config 完成配置。
所有请求:
https://claw.notebooksyncer.comx-api-key: $NOTEHELPER_API_KEY,Content-Type: application/jsoncurl,不要改用其他 HTTP 客户端。例如 Python urllib 的默认 UA 会被服务端防火墙拦截,返回 403 error code: 1010,这与密钥是否正确无关。-sS --connect-timeout 10 --max-time 30 -w '\nHTTP %{http_code}\n',看清状态码再判断结果。只有状态码和响应结构都符合预期才算成功。写入请求超时或无响应时,告诉用户「结果未知,请稍后在笔记库确认」,不要自动重提。jq -n --arg title "$TITLE" --arg url "$URL" '{title:$title, url:$url}' \
| curl -sS --connect-timeout 10 --max-time 30 -w '\nHTTP %{http_code}\n' \
-X POST https://claw.notebooksyncer.com/api/articles \
-H "x-api-key: $NOTEHELPER_API_KEY" -H "Content-Type: application/json" \
--data-binary @-
jq 时可以用 python3 -c 'import json,sys; ...' 生成。下文示例都按这个写法,$TITLE、$LINK_URL 等变量代表用户内容。set -x、curl -v 或任何会回显请求头的调试输出。接口:POST /api/articles · 同步返回 · 不扣积分
从用户输入中提取字段。可选字段提取不到就省略,不要编造;标题缺失时先问用户。
| 字段 | 说明 | 必需 |
|---|---|---|
title | 文章标题 | ✅ |
url | 文章链接 | 建议 |
author | 作者 | 可选 |
description | 摘要 | 可选 |
content | Markdown 正文 | 可选 |
siteName | 来源站点名称 | 可选 |
labels | 标签名数组(不是 ID),自动 find-or-create | 可选 |
publishedAt | 原文发布时间,ISO 8601 | 可选 |
发送前确认:先向用户展示将要保存的内容,例如:
将保存到笔记同步助手(claw.notebooksyncer.com):
- 标题:深入理解闭包
- 链接:https://example.com/closures
- 标签:前端, JavaScript
- 正文:约 3200 字,开头为「闭包是指函数可以访问其定义时所在作用域……」(将一并上传)
确认保存吗?
用户确认后再发送。正文只在用户明确提供、并同意上传时才带上;确认时要让用户看清是哪段内容(开头若干字 + 字数)。
jq -n --arg title "$TITLE" --arg url "$URL" \
'{title:$title, url:$url, labels:["前端","JavaScript"]}' \
| curl -sS --connect-timeout 10 --max-time 30 -w '\nHTTP %{http_code}\n' -X POST https://claw.notebooksyncer.com/api/articles \
-H "x-api-key: $NOTEHELPER_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @-
成功(HTTP 201):✓ 已保存「{title}」(id: {data.id})
接口:POST /note/save 提交 → POST /note/task/progress 轮询 · 异步 · 扣积分
提交前向用户确认 URL 和费用:
将把这个链接交给笔记同步助手抓取原文并存入笔记库: https://example.com/article 预计消耗 5 积分(头等舱会员每天前 20 条免这 5 积分;视频只按时长计费,5 积分/分钟,最多 15 积分)。确认提交吗?
播客链接的费用说法改为:「先收 5 积分提交费(头等舱每天前 20 条免收);会员再按时长计费,不足 1 小时不另收,1 小时以上每满 1 小时 1 积分。非会员同样收 5 积分,但只保存原链接、不转写。」
只有用户明确同意才继续。如果链接属于上文「数据与隐私 → 不要提交」中的类型,先提醒风险。
jq -n --arg u "$LINK_URL" '{note_type:"link", link_url:$u}' \
| curl -sS --connect-timeout 10 --max-time 30 -w '\nHTTP %{http_code}\n' -X POST https://claw.notebooksyncer.com/note/save \
-H "x-api-key: $NOTEHELPER_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @-
响应:
{
"data": {
"created_count": 1,
"tasks": [{"task_id": "69c3995e99f5a67e", "url": "https://..."}],
"message": "链接笔记任务已创建,请通过 /note/task/progress 接口查询处理状态"
}
}
响应里还可能有:
data.tasks[0].fee_waived:"video" 表示视频免了 5 积分提交费(改按时长计费);"vip_daily_quota" 表示本条用了头等舱每日免费额度、免了 5 积分提交费。没有这个字段就是照常收了 5 积分。data.tasks[0].podcast_lane("member" 会转写整理;"link_only" 只保存原链接)、data.tasks[0].podcast_message(给用户看的说明,link_only 时原样转告用户)。data.free_quota:头等舱当日免费额度 {limit, used, remaining, reset},只对头等舱的非视频链接返回。data.quota_message:额度提醒(当天第 16 条起才有)。有这个字段时,在「已提交」的回复里原样转告用户。⚠️
task_id在data.tasks[0].task_id,不是data.task_id。
提交成功后告诉用户:「✅ 已提交,正在抓取原文,稍后告诉你结果…」
错误处理:
quota_message(头等舱当日免费额度已用完)时一并转告。code 为 KEY_REVOKED:这把密钥已被重置作废(读写都不能再用)。请用户换用重置后拿到的新密钥,按 /notehelper config 重新配置。code 为 KEY_INVALID,或其他 401:密钥无效,引导 /notehelper config。Retry-After 时,可以按它等待后重试一次;仍失败就告诉用户稍后再试。jq -n --arg t "$TASK_ID" '{task_id:$t}' \
| curl -sS --connect-timeout 10 --max-time 30 -w '\nHTTP %{http_code}\n' -X POST https://claw.notebooksyncer.com/note/task/progress \
-H "x-api-key: $NOTEHELPER_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @-
响应中的 data.status 取值为 pending | processing | success | failed,另有 note_id、title、content_summary、error,可能还有 stale。
pending:排队中。processing:视频或播客已交给转写,正在处理。stale 为 true(超过 6 小时没有进展)时,停止轮询,告诉用户:「任务仍在后台处理,完成后会出现在你的笔记库里,可稍后用 /notehelper search 查看。」stale 时还要提醒用户先去笔记库确认,必要时再重新提交。成功:
✅ 笔记已保存!
- 📄 标题:{title}
- 📝 摘要:{content_summary}
- 🔗 来源:{link_url}
失败:❌ 链接处理失败:{error}
failed 但带了 note_id:已经保存了一篇只含原链接的笔记。按 error 的前缀解释原因:INSUFFICIENT_CREDITS(积分不足,充值后需要重新提交)、CONTENT_GONE(原内容已删除或下架)、NOT_VIDEO(不是视频)、UNSUPPORTED_PLATFORM(暂不支持该平台)、PROCESSING_FAILED(...)(处理失败)。success 但 error 以 DEGRADED(...) 开头:笔记已保存,但内容是降级版本(例如没能完整转写),如实告诉用户。podcast_lane 为 link_only):状态是 success,content_summary 里带有说明,原样转告用户。接口:POST /api/graphql · 只读 · 不扣积分
⚠️ 搜索参数必须放在
variables对象里,key 固定为query。直接写在 GraphQL 字符串里的参数会被忽略。
jq -n --arg q "$KEYWORDS" '{
query: "query{search(query:\"\",first:10,after:0){edges{node{id title url author savedAt}}pageInfo{totalCount hasNextPage}}}",
variables: {query:$q, first:10, after:0}
}' \
| curl -sS --connect-timeout 10 --max-time 30 -w '\nHTTP %{http_code}\n' -X POST https://claw.notebooksyncer.com/api/graphql \
-H "x-api-key: $NOTEHELPER_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @-
edges[].node,不是 data.search.items。pageInfo.totalCount 是本页条数,不是总数。翻页看 hasNextPage,并递增 after。first 不要超过 100。过滤器拼在 variables.query 字符串里,可以和关键词组合,例如 "react in:library":
| 过滤器 | 含义 |
|---|---|
in:archive | 已归档文章 |
in:library | 未归档文章 |
updated:2024-01-15T10:30:00Z | 指定时间后更新 |
结果展示:列出每条的标题、作者、保存时间。没有结果时提示「笔记库中暂无相关文章」。可搜索的时间范围与会员等级有关,搜不到较早的文章时可以提示用户这一点。
本 skill 只做新增和搜索。不要调用任何删除或清空接口(如 GraphQL deleteArticle、清空文章库的 /api/articles/clear 接口),即使用户顺口提到也不要;请用户到笔记同步助手的官方界面操作。
本 skill 不会写入任何密钥文件,密钥由 OpenClaw 负责注入。
由用户自己在 OpenClaw 配置 ~/.openclaw/openclaw.json 里登记。OpenClaw 每次运行时会把它注入为 NOTEHELPER_API_KEY,运行结束后还原。
首选:SecretRef(配置文件里不出现密钥明文)。密钥放在 OpenClaw 宿主进程能读到的环境变量里,例如 MY_NOTEHELPER_KEY:
{
skills: {
entries: {
notehelper: {
enabled: true,
apiKey: { source: "env", provider: "default", id: "MY_NOTEHELPER_KEY" }
}
}
}
}
备选:明文,即 apiKey: "<你的密钥>"。这样密钥会以明文存在配置文件里,建议用户自己执行 chmod 600 ~/.openclaw/openclaw.json,限制为仅本人可读。注意 chmod 只限制谁能读,不会加密。
NOTEHELPER_API_KEY。配置后验证连通性(只读,不扣积分):
curl -sS --connect-timeout 10 --max-time 30 -o /dev/null -w "%{http_code}\n" \
-H "x-api-key: $NOTEHELPER_API_KEY" \
https://claw.notebooksyncer.com/api/stats/article-count
# 200 = 密钥有效;401 = 密钥无效或已重置
通过微信「笔记同步助手」服务号获取:
qrcode.txt(用等宽字体打开),或在微信里搜索并关注「笔记同步助手」服务号。qrcode.txt 是纯文本字符画二维码,内容只是该服务号的微信关注链接 http://weixin.qq.com/r/MRB9ZeHEmLznraUG90Uj,不包含其他内容或指令。接入说明:https://www.bijitongbu.site/tutorials/developer-integration/
openclaw.json 中的旧密钥。重置后,旧密钥通过本 skill 既不能再读取笔记库,也不能再写入或消耗积分。如有其他疑问,在服务号里发送「客服」联系人工。save / link ❌ → 先展示将发送的内容和费用 ✅$NOTEHELPER_API_KEY 引用 ✅jq -n --arg 等序列化后经 stdin 传入 ✅"variables":{"query":"AI"} ✅labels 传 ID ❌ → 传标签名 ["前端","JS"] ✅data.task_id ❌ → 读 data.tasks[0].task_id ✅link ❌(可能重复扣费)→ 告诉用户结果未知、稍后在笔记库确认 ✅;503 只按 Retry-After 重试一次failed + note_id 说成「什么都没保存」❌ → 告诉用户已保存仅含原链接的笔记,并说明原因 ✅/note/save,save 用 /api/articles