Developer Token:从 https://app.yinxiang.com/api/DeveloperToken.action 获取
Python 环境:需要 Python 3.7+
SDK 安装: bash
pip install evernote3 thrift html2text
在 .env 文件中设置:
text
EVERNOTE_TOKEN=S=s16:U=xxx:E=xxx:C=xxx:P=xxx:A=en-devtoken:V=2:H=xxx
EVERNOTE_NOTESTORE_URL=https://app.yinxiang.com/shard/s16/notestore
bash
python skills/yinxiang-notes/scripts/list_notebooks.py
python skills/yinxiang-notes/scripts/list_notebooks.py --verbose # 显示每个笔记本的笔记数量
bash
python skills/yinxiang-notes/scripts/list_tags.py
bash
python skills/yinxiang-notes/scripts/create_note.py --title "标题" --content "<en-note>内容</en-note>"
# 指定笔记本
python skills/yinxiang-notes/scripts/create_note.py --title "标题" --content "<en-note>内容</en-note>" --notebook "笔记本名"
# 添加标签
python skills/yinxiang-notes/scripts/create_note.py --title "标题" --content "<en-note>内容</en-note>" --tags "标签1,标签2"
ENML 格式说明:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>
笔记内容...
<en-todo checked="false">待办事项</en-todo>
</en-note>
bash
# 更新标题
python skills/yinxiang-notes/scripts/update_note.py --guid "笔记GUID" --title "新标题"
# 更新内容
python skills/yinxiang-notes/scripts/update_note.py --guid "笔记GUID" --content "<en-note>新内容</en-note>"
# 添加标签
python skills/yinxiang-notes/scripts/update_note.py --guid "笔记GUID" --add-tags "标签1,标签2"
# 移除标签
python skills/yinxiang-notes/scripts/update_note.py --guid "笔记GUID" --remove-tags "标签3"
# 组合操作
python skills/yinxiang-notes/scripts/update_note.py --guid "笔记GUID" --title "新标题" --add-tags "标签1"
bash
# 预览(不实际删除)
python skills/yinxiang-notes/scripts/delete_note.py --guid "笔记GUID"
# 确认删除(移至废纸篓,可在客户端恢复)
python skills/yinxiang-notes/scripts/delete_note.py --guid "笔记GUID" --confirm
删除行为说明:
delete_note.py 使用 deleteNote API,将笔记移至废纸篓,可在印象笔记客户端中恢复bash
python skills/yinxiang-notes/scripts/search_notes.py "关键词"
python skills/yinxiang-notes/scripts/search_notes.py "标题:关键词"
python skills/yinxiang-notes/scripts/search_notes.py "any:关键词1 关键词2"
搜索语法:
关键词 — 在标题和正文中搜索标题:关键词 — 仅搜索标题创建时间:2024-01-01 — 按创建时间筛选any:关键词1 关键词2 — 匹配任一关键词将印象笔记增量同步到本地 Obsidian vault,保持笔记本层级结构。
目标 vault: C:\Users\adun\Documents\印象笔记同步
bash
# 同步全部笔记本
python skills/yinxiang-notes/scripts/sync_to_obsidian.py
# 只同步指定笔记本
python skills/yinxiang-notes/scripts/sync_to_obsidian.py --notebook "笔记本名"
python skills/yinxiang-notes/scripts/sync_to_obsidian.py -n "笔记本名"
同步规则:
笔记类型判断条件处理方式📎 附件笔记资源有 fileName+扩展名enml_to_markdown + 附件 section🖼 内嵌图片笔记有 en-media 但无 fileNamehtml2text 转 Markdown + 附件 section📝 纯文本笔记无大量 HTML 标签和 en-media直接转为 Markdown📄 网页裁剪(短)HTML ≥3个标签且 < 200KBhtml2text 转为 Markdown🔗 网页裁剪(长)HTML ≥3个标签且 ≥ 200KB 且纯 HTML(无用户手写内容)存 HTML 进 _clips/
附件存储:每个笔记本有独立的附件和裁剪目录
text
印象笔记同步/
├── 笔记本A/
│ ├── 笔记.md
│ ├── _attachments/ ← 该笔记本附件(hash 去重)
│ └── _clips/ ← 该笔记本 HTML 裁剪(≥5KB)
├── 笔记本B/
│ ├── 笔记.md
│ ├── _attachments/
│ └── _clips/
└── .obsidian/
同步后笔记的 frontmatter:
yaml
---
title: 笔记标题
created: 2026-03-19 10:30:00
updated: 2026-03-19 14:22:00
source: Evernote
source_guid: xxx-xxx-xxx
notebook: 笔记本名
type: webclip # 仅网页裁剪(≥200KB)和内嵌图片笔记有此字段
---
特性:
--notebook 指定笔记本)bash
python skills/yinxiang-notes/scripts/list_trash.py
bash
python skills/yinxiang-notes/scripts/empty_trash.py
⚠️ 警告:此操作会永久删除废纸篓中的所有笔记, 无法恢复!
脚本功能list_notebooks.py获取笔记本列表(支持 --verbose 显示笔记数)list_tags.py获取标签列表create_note.py创建笔记update_note.py更新笔记(标题/内容/标签)delete_note.py删除笔记(移至废纸篓)search_notes.py搜索笔记sync_to_obsidian.py增量同步印象笔记到 Obsidian vaultlist_trash.py查看废纸篓中的笔记empty_trash.py清空废纸篓(永久删除)
环境NoteStore URL生产环境https://app.yinxiang.com/shard/s16/notestore沙盒环境https://sandbox.yinxiang.com/shard/s1/notestore
错误码说明解决方案EDAMUserException (errorCode=2)Token 无效或过期重新申请 Developer TokenEDAMNotFoundException资源不存在检查笔记 GUID 或笔记本名EDAMSystemException (errorCode=19)API 频率限制等待限流窗口后重试,脚本会自动处理
deleteNote 移至废纸篓;调用 expungeNote 或清空废纸篓会永久删除