Install
openclaw skills install @yinxiang-team/yinxiang-skill【印象笔记官方Skill】 支持让 OpenClaw、Claude Code、Cursor、Codex、WorkBuddy 等支持 Skill 的 AI 助手连接印象笔记,帮你随时记录、查找和整理个人知识。 完成账号授权后,只要说一句“帮我记到印象笔记”,就能保存灵感、会议记录、待办事项等内容,并指定笔记本和标签; 遇到值得收藏的网页,也可以提交到印象笔记进行剪藏。 需要找回资料时,可以按关键词、标题、标签、笔记本或时间范围搜索笔记,并查看最近笔记和完整内容。 此外,还支持修改笔记标题与正文、移动笔记、更新标签,以及创建和批量整理笔记本。
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