Install
openclaw skills install @yinxiang-team/yinxiang-skillThis skill should be used when the user says "授权印象笔记"、"印象笔记授权"、"配置印象笔记" to guide the authorization flow. Use this skill when the user says "记一下"、"帮我记录"、"存到笔记"、"记录一下"、"保存到笔记"、"帮我存一下"、"记到 XX 笔记本"、"存到 XX 笔记本" to save content to Evernote via API. Use this skill when the user says "更新笔记"、"修改笔记"、"编辑笔记"、"给笔记添加标签"、"删除笔记标签"、"清空笔记标签"、"修改笔记本"、"移动笔记" to update note title, Markdown content, notebook, or tags by note GUID; when updating tags, pass the complete final tag set in tagNames, and pass clearTags=true if the final tag set is empty or the user wants to clear all tags. Use this skill when the user asks to "批量创建笔记本"、"创建一套笔记本"、"创建笔记本体系"、"批量移动笔记"、"整理笔记" to decompose the request and call existing note APIs multiple times. Use this skill when the user sends a URL with "保存"、"剪藏"、"收藏" to clip the webpage. Use this skill when the user says "列出笔记"、"有哪些笔记"、"有什么笔记" to list notes. Use this skill when the user says "最近笔记"、"最近的笔记"、"查找最近笔记" to search notes created in the last 3 days. Use this skill when the user says "搜一下"、"搜下"、"帮我搜索"、"找找我哪些笔记提到了 XX" to search notes, or asks "有多少篇"、"一共多少篇"、"总数" for notes filtered by keyword, title, tag, notebook, note GUID, or created-time range. Use this skill when the user says "有哪些笔记本"、"有什么笔记本"、"列出笔记本" to list notebooks. Use this skill when the user says "创建笔记本"、"新建笔记本"、"建一个笔记本" to create a notebook. Use this skill when the user says "创建标签"、"新建标签"、"建一个标签" to create a standalone tag. Use this skill when the user says "有哪些标签"、"有什么标签"、"列出所有标签" to list tags. Use this skill when the user says "笔记详情 XXX"、"XXX 笔记详情" to get note detail.
openclaw skills install @yinxiang-team/yinxiang-skillhttps://app.yinxiang.com/third/skills-oauth/scripts/ 中当前平台对应的脚本或 references/api-commands.md 中的命令调用 API;如果参考脚本疑似有误、在当前环境运行异常、输出格式不适合继续处理,或与接口文档/字段声明不一致,不要修改 skill 内置参考脚本,改为以 references/api-commands.md 的接口地址、请求字段、Token 规则为准,自行生成可运行的临时 bash/PowerShell 脚本并执行,真实调用 API。允许生成临时脚本来发起真实 API 请求;不得用本地文件、模拟数据或手写结果代替 API 调用结果,不得编造返回结果。source 标识请求来源,统一传 "source":"skill"。code、status.code、msg、message 等字段判断结果,但用户可见回复不要展示接口原始返回、JSON 或技术字段。成功时用自然语言说明成功;无匹配结果时只说没有找到匹配内容;失败时参考 message/msg 的含义,结合用户原始请求改写成中文自然语言原因,不要照抄英文接口消息;如果没有可用原因,只说操作失败或出错。给出自然语言结论后,不要再追加“接口返回 code/status/msg/message 表示...”之类的解释。触发任意场景前,首先判断当前 shell 环境,二选一执行:
若当前为 bash/zsh(macOS / Linux):
uname -s
返回 Darwin → macOS;返回 Linux → Linux。后续使用 bash 命令。
若当前为 PowerShell(Windows):
$env:OS
返回 Windows_NT → Windows。后续使用 PowerShell 命令。
判断依据:能否识别
uname命令。可以 → bash 环境;不能(报错"未找到命令")→ PowerShell 环境。
所有 API 调用使用以下 Token 表达式:
| 平台 | Token 表达式 |
|---|---|
| OpenClaw | 自动注入 YX_AUTH_TOKEN 环境变量 |
| macOS / Linux (bash) | $(cat ~/.config/yinxiang-skill/token 2>/dev/null || echo "$YX_AUTH_TOKEN") |
| Windows (PowerShell) | $raw = Get-Content "$HOME\.config\yinxiang-skill\token" -Raw -EA SilentlyContinue; $t = if ($raw) { $raw.Trim() } elseif ($env:YX_AUTH_TOKEN) { $env:YX_AUTH_TOKEN.Trim() } |
触发任意笔记场景前,验证 Token:
macOS / Linux:
bash -c 'T="$(cat ~/.config/yinxiang-skill/token 2>/dev/null || echo "$YX_AUTH_TOKEN")"; [ -n "$T" ] && echo "已授权" || echo "未授权"'
Windows (PowerShell):
$raw = Get-Content "$HOME\.config\yinxiang-skill\token" -Raw -EA SilentlyContinue; $t = if ($raw) { $raw.Trim() } elseif ($env:YX_AUTH_TOKEN) { $env:YX_AUTH_TOKEN.Trim() }; if ($t) { "已授权" } else { "未授权" }
Token 为空 → 停止执行,提示用户说"授权印象笔记"。
用户一次提出多个操作时,先拆成当前 skill 已支持的能力,再按依赖顺序执行。
优先使用最匹配的已支持脚本或接口;如果没有专用批量能力,就循环调用原子能力。如果某一步没有对应能力,先向用户说明不支持该步骤。
下文脚本按当前平台选择:macOS/Linux 使用 .sh,Windows 使用 .ps1。
原子能力:
scripts/create-note.sh / scripts/create-note.ps1scripts/update-note.sh / scripts/update-note.ps1scripts/clip-url.sh / scripts/clip-url.ps1scripts/create-notebook.sh / scripts/create-notebook.ps1scripts/create-tag.sh / scripts/create-tag.ps1scripts/search-notes.sh / scripts/search-notes.ps1scripts/list-notes.sh / scripts/list-notes.ps1scripts/list-notebooks.sh / scripts/list-notebooks.ps1scripts/list-tags.sh / scripts/list-tags.ps1scripts/get-note-detail.sh / scripts/get-note-detail.ps1批量操作通用规则:
示例:批量创建笔记本
示例:批量移动笔记
notebookGuidnoteGuid,逐个执行更新笔记脚本,仅传 noteGuid 和 notebookGuid复合任务示例:
noteGuid,再逐个更新笔记的 notebookGuid;若需要搜索获取笔记,必须先让用户确认搜索结果tagNames,最终标签为空时传 clearTags=true;若这些笔记来自搜索结果,必须先让用户确认触发词: "授权印象笔记"、"印象笔记授权"、"配置印象笔记"
告知用户访问授权地址:
请访问 https://app.yinxiang.com/third/skills-oauth/ 完成授权。 授权后页面显示以 S=s 开头的 Token,请发给我。
收到 Token 后,按平台执行:
OpenClaw(macOS / Linux):
openclaw config set skills.entries.yinxiang-skill.apiKey <Token> && mkdir -p ~/.config/yinxiang-skill && printf '%s' '<Token>' > ~/.config/yinxiang-skill/token && chmod 600 ~/.config/yinxiang-skill/token
OpenClaw(Windows):
openclaw config set skills.entries.yinxiang-skill.apiKey <Token>; New-Item -ItemType Directory -Force "$HOME\.config\yinxiang-skill" | Out-Null; Set-Content "$HOME\.config\yinxiang-skill\token" '<Token>' -NoNewline -Encoding UTF8
macOS / Linux (Claude Code / Codex / Cursor):
mkdir -p ~/.config/yinxiang-skill && printf '%s' '<Token>' > ~/.config/yinxiang-skill/token && chmod 600 ~/.config/yinxiang-skill/token
Windows (Claude Code / Codex / Cursor):
New-Item -ItemType Directory -Force "$HOME\.config\yinxiang-skill" | Out-Null; Set-Content "$HOME\.config\yinxiang-skill\token" '<Token>' -NoNewline -Encoding UTF8
告知用户授权成功,展示下方 10 个可用场景。
触发词: "记一下"、"帮我记录"、"存到笔记"、"记录一下"、"保存到笔记"、"帮我存一下"、"把这个记下来"
逻辑:
content 字段"tagNames":["标签1","标签2"],不存在的标签自动创建guidnotebookGuid,存入默认笔记本读取 references/api-commands.md,按当前平台执行 创建笔记 部分对应命令。
触发词: "更新笔记"、"修改笔记"、"编辑笔记"、"给笔记添加标签"、"删除笔记标签"、"清空笔记标签"、"修改笔记本"、"移动笔记"
逻辑:
noteGuid;缺少时先让用户提供笔记 IDnoteGuid 时,先执行场景五搜索笔记或场景四列出笔记,让用户确认要更新的笔记 ID;搜索/列表结果只用于确认笔记 ID,不用于校验标签名称title、content、notebookGuid、tagNames、clearTags 均为可选更新字段content 为 Markdown 格式文本,服务端会转换为 HTML 后保存content 字段,即使用户已直接提供 noteGuid,也必须先提示并等待用户确认:"确认要修改笔记内容吗?此操作会将笔记里的原有内容替换掉。" 用户确认后再调用更新笔记接口tagNames 必须传更新后的标签全集,不是增量,也不是只传新增/删除的标签data.dataDetail.tagList[].tagName,合并新增标签或移除指定标签后,计算完整最终标签列表tagNames 传入,不传 clearTags"clearTags":true;不要只传空的 tagNames,后端会把空 tagNames 当作未修改标签tagNames,也不传 clearTagsguidnoteGuid 和 notebookGuidnoteGuid 和最终完整 tagNamesnoteGuid、clearTags:true 和 source:"skill"a,删除 a → 最终标签为 [] → 传 clearTags:truea、b,删除 a → 最终标签为 ["b"] → 传 tagNames:["b"],不传 clearTagsclearTags:true读取 references/api-commands.md,按当前平台执行 更新笔记 部分对应命令。
触发词: 消息中包含 URL + "保存"/"剪藏"/"收藏"
逻辑:
guid,body 中追加读取 references/api-commands.md,按当前平台执行 网页剪藏 部分对应命令。
触发词: "列出笔记"、"有哪些笔记"、"我有哪些笔记"
读取 references/api-commands.md,按当前平台执行 列出笔记 部分对应命令。搜索/列表结果展示规则与场景五一致:展示搜索总数,以及响应中实际返回的笔记 ID 和标题;不要展示正文。用户说“最近笔记/最近的笔记/查找最近笔记”时,这不是列出笔记的独立能力,而是场景五的创建时间筛选条件。
触发词: "搜一下"、"搜下"、"帮我搜索"、"找找我哪些笔记提到了"、"笔记里有没有关于"、"最近笔记"、"最近的笔记"、"查找最近笔记"、"有多少篇"、"一共多少篇"、"总数"
从用户消息提取关键词、标题、标签、笔记本、笔记 ID、笔记创建时间范围等条件,读取 references/api-commands.md,按当前平台执行 搜索笔记 部分对应命令。
搜索接口请求体只使用下方过滤条件映射和 references/api-commands.md 已列出的字段,不要添加接口未声明的参数。
过滤条件映射:
keywordtitletagNamesnotebookNamenotebookGuidguidsstartTime、endTime,使用 UTC 毫秒时间戳startTime 和 endTimedata.total时间处理规则:
startTime、endTime 表示创建时间范围;不支持按更新时间、修改时间或编辑时间查询。00:00:00.000,结束日期取当天 23:59:59.999,再转换成 UTC 毫秒时间戳。scripts/search-notes.* --json 传入同一个请求体。时间意图示例:
00:00:00.000 到 23:59:59.999 创建的笔记。结果展示规则:
data.total,将其作为搜索总数;不要用返回列表长度代替总数。data.noteDetailList 或响应中实际存在的笔记列表字段;每条至少展示笔记 ID 和标题。笔记 ID 优先取 noteGuid,兼容 guid / noteId;标题优先取 noteTitle,兼容 title。status.code == 1107 或 data.total == 0,只说没有找到匹配内容。< 100,自然说明本次查询条件下的总数,然后展示笔记列表。>= 100,必须根据 data.total 触发提示,即使接口本次实际返回列表少于 100 条也要提示。回复结构为:
触发词: "有哪些笔记本"、"列出笔记本"、"我的笔记本"、"笔记本列表"
读取 references/api-commands.md,按当前平台执行 列出笔记本 部分对应命令。
触发词: "有哪些标签"、"列出所有标签"、"我的标签"、"标签列表"
读取 references/api-commands.md,按当前平台执行 列出标签 部分对应命令。
触发词: "创建标签"、"新建标签"、"建一个标签"
从用户消息提取标签名称替换 TAG_NAME,读取 references/api-commands.md,按当前平台执行 创建标签 部分对应命令。
接口返回 code == 0 表示成功,展示返回的 tagGuid。失败时参考 message 字段的语义线索,结合用户请求改写成中文自然语言原因;如果没有可用原因,只告诉用户创建标签失败。不要直接展示接口返回字段和值,也不要照抄英文接口消息。
触发词: "创建笔记本"、"新建笔记本"、"建一个笔记本"
从用户消息提取笔记本名称替换 BOOK_NAME,读取 references/api-commands.md,按当前平台执行 创建笔记本 部分对应命令。
接口返回 code == 0 表示成功,展示返回的 notebookGuid。失败时参考 message 字段的语义线索,结合用户请求改写成中文自然语言原因;如果没有可用原因,只告诉用户创建笔记本失败。不要直接展示接口返回字段和值,也不要照抄英文接口消息。
触发词: "笔记详情 [ID]"、"[ID] 笔记详情"、"查看笔记 [ID]"
从用户消息提取笔记 GUID 替换 GUID,读取 references/api-commands.md,按当前平台执行 获取笔记详情 部分对应命令。
references/api-commands.md - 全部 10 个场景的完整命令(含 bash / PowerShell 两版)及响应处理scripts/save-token.sh - macOS / Linux 保存 Tokenscripts/save-token.ps1 - Windows 保存 Tokenscripts/_common.sh - macOS / Linux 公共 Token 加载scripts/_common.ps1 - Windows PowerShell 公共 Token 加载scripts/*.ps1 - Windows 各场景独立脚本(Codex 直接调用)scripts/*.sh - macOS / Linux 各场景独立脚本(Codex 直接调用)templates/cursorrules - Cursor 专用模板,复制到项目根目录并重命名为 .cursorrulesCursor 不识别 SKILL.md,需手动配置:
templates/cursorrules 复制到你的项目根目录,重命名为 .cursorrules