evernote-note

印象笔记 API skill,用于管理用户的印象笔记。支持搜索笔记、浏览笔记本、获取笔记内容、新建笔记和追加内容。 当用户提到印象笔记、Evernote、笔记、备忘录、记事、知识库,或者想要查找、阅读、创建、编辑笔记内容时,使用此 skill。 即使用户没有明确说"笔记",只要意图涉及个人文档的存取(如"帮我记一下"、"我之前写过一个关于XX的东西"、"把这段内容保存下来"),也应触发此 skill。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "evernote-note" with this command: npx skills add heavenchenggong/evernote-note

evernote-note

通过印象笔记 API 管理用户个人笔记,支持读取(搜索、列表、获取内容)和写入(新建、追加)。

完整的数据结构和接口参数详见 references/api.md

Setup

选择认证方式

印象笔记支持两种认证方式,推荐使用开发者令牌(更简单)

方式适用场景复杂度说明
开发者令牌(推荐)个人使用、测试脚本⭐ 简单直接使用,无需申请,只能访问自己的账户
API Key + OAuth面向多用户的第三方应用⭐⭐⭐ 复杂需申请,支持多用户和高级功能

方式一:开发者令牌(推荐)

  1. 获取印象笔记开发者令牌

  2. 配置环境变量

# 国内版用户(默认)
export EVERNOTE_TOKEN="your_developer_token"
export EVERNOTE_HOST="app.yinxiang.com"

# 国际版用户(如使用的是国际版印象笔记)
export EVERNOTE_TOKEN="your_developer_token"
export EVERNOTE_HOST="www.evernote.com"

建议将上述 export 语句写入 ~/.zshrc~/.bashrc,避免每次重开终端失效。

方式二:API Key + OAuth(可选)

如果需要开发面向多用户的第三方应用,需要:

  1. 申请 API Key

  2. 实现 OAuth 流程

注意:当前 skill 只支持开发者令牌方式。如需使用 OAuth,需要修改 skill 代码实现完整的 OAuth 流程。

安装 Python 依赖

首次使用前安装 Python 依赖:

pip3 install evernote2 oauth2

凭证预检

每次调用 API 前,先确认凭证可用。如果环境变量未设置,停止操作并提示用户按 Setup 步骤配置。

if [ -z "$EVERNOTE_TOKEN" ]; then
  echo "缺少印象笔记凭证,请按 Setup 步骤配置环境变量 EVERNOTE_TOKEN"
  exit 1
fi

# 检查 Python 依赖
python3 -c "import evernote2" 2>/dev/null || {
  echo "缺少 Python 依赖,请运行: pip3 install evernote2 oauth2"
  exit 1
}

Python 初始化模板

所有操作前都需要初始化 EvernoteClient:

import sys
sys.path.insert(0, '/Users/I501579/Library/Python/3.9/lib/python/site-packages')

import os
from evernote2.api.client import EvernoteClient
import evernote2.edam.notestore.ttypes as NoteStoreTypes
import evernote2.edam.type.ttypes as Types

# 从环境变量读取配置
developer_token = os.environ.get('EVERNOTE_TOKEN')
service_host = os.environ.get('EVERNOTE_HOST', 'app.yinxiang.com')

# 连接印象笔记
client = EvernoteClient(token=developer_token, service_host=service_host)
note_store = client.get_note_store()

注意:根据实际 Python 环境调整 sys.path.insert 的路径,可通过 pip3 show evernote2 查看 Location

辅助函数

import re

def enml_to_text(enml):
    """将 ENML 转换为纯文本"""
    text = re.sub(r'<!DOCTYPE[^>]+>', '', enml)
    text = re.sub(r'<\?xml[^>]+\?>', '', enml)
    text = re.sub(r'<[^>]+>', '\n', enml)
    text = re.sub(r'\n+', '\n', text)
    return text.strip()

def text_to_enml(text):
    """将纯文本转换为 ENML 格式"""
    text = text.replace('&', '&amp;')
    text = text.replace('<', '&lt;')
    text = text.replace('>', '&gt;')
    text = text.replace('\n', '<br/>')
    enml = f'''<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>{text}</en-note>'''
    return enml

接口决策表

用户意图调用 API关键参数
搜索/查找笔记findNotesMetadata()NoteFilter.words
查看笔记本列表listNotebooks()-
浏览某笔记本里的笔记findNotesMetadata()NoteFilter.notebookGuid
读取笔记正文getNoteContent()note_guid
新建一篇笔记createNote()Note.title + Note.content(ENML)
往已有笔记追加内容updateNote()getNote() 获取,再 updateNote() 保存

常用工作流

查找并阅读笔记

先搜索获取 note_guid,再用 getNoteContent() 读取正文:

# 1. 按标题搜索
filter = NoteStoreTypes.NoteFilter()
filter.words = 'intitle:"会议纪要"'
result = note_store.findNotesMetadata(developer_token, filter, 0, 20, 
                                     NoteStoreTypes.NotesMetadataResultSpec(includeTitle=True))

# 2. 读取正文
note_guid = result.notes[0].guid
content = note_store.getNoteContent(developer_token, note_guid)
text = enml_to_text(content)

浏览笔记本里的笔记

先拉笔记本列表获取 notebookGuid,再拉该笔记本下的笔记:

# 1. 列出笔记本
notebooks = note_store.listNotebooks()

# 2. 拉取指定笔记本的笔记
filter = NoteStoreTypes.NoteFilter()
filter.notebookGuid = notebooks[0].guid  # 选择第一个笔记本
result = note_store.findNotesMetadata(developer_token, filter, 0, 20,
                                     NoteStoreTypes.NotesMetadataResultSpec(includeTitle=True))

新建笔记

# 新建到默认位置
note = Types.Note()
note.title = "笔记标题"
note.content = text_to_enml("笔记内容")
created = note_store.createNote(developer_token, note)

# 新建到指定笔记本
note = Types.Note()
note.title = "笔记标题"
note.content = text_to_enml("笔记内容")
note.notebookGuid = "笔记本_GUID"
created = note_store.createNote(developer_token, note)

追加内容到已有笔记

# 获取笔记
note = note_store.getNote(developer_token, note_guid, True, False, False, False)

# 追加内容
note.content = note.content + "<br/><br/>" + text_to_enml("追加的内容")
note_store.updateNote(developer_token, note)

按关键词全文搜索

filter = NoteStoreTypes.NoteFilter()
filter.words = 'SuccessFactors'
result = note_store.findNotesMetadata(developer_token, filter, 0, 20,
                                     NoteStoreTypes.NotesMetadataResultSpec(includeTitle=True))

搜索语法

印象笔记支持丰富的搜索语法,可通过 NoteFilter.words 设置:

语法说明示例
关键词全文搜索SuccessFactors
intitle:关键词标题包含intitle:"项目管理"
-关键词排除关键词项目 -会议
关键词A OR 关键词B或条件SuccessFactors OR Workday
notebook:"笔记本名"在指定笔记本notebook:"工作"
created:yyyyMMdd创建日期created:20260301
updated:day-7最近7天更新updated:day-7
tag:标签名包含标签tag:重要

核心响应字段

搜索结果NoteMetadata):

  • guid: 笔记 GUID
  • title: 标题
  • updated: 更新时间戳(毫秒)
  • notebookGuid: 所属笔记本 GUID

笔记本Notebook):

  • guid: 笔记本 GUID
  • name: 名称
  • created: 创建时间戳(毫秒)
  • defaultNotebook: 是否为默认笔记本

完整字段定义见 references/api.md

分页

笔记搜索findNotesMetadata):

  • 首次:offset: 0, maxNotes: 20
  • 翻页:递增 offset
  • 建议每次最多获取 50 条,避免 API 频率限制

注意事项

  • API 频率限制:印象笔记对 API 调用有频率限制,建议:
    • 搜索时限制返回数量(如 20-50 条)
    • 避免短时间内大量请求
    • 使用 findNotesMetadata() 进行元数据搜索,而非 findNotes()
  • 开发者令牌安全:开发者令牌可完全访问账户,请勿泄露
  • ENML 格式限制
    • 不支持所有 HTML 标签和属性
    • 媒体资源需单独处理
    • 嵌入的 HTML 标签会被清理
  • 搜索限制:搜索结果最多 1000 条,建议使用分页
  • UTF-8 编码:笔记内容必须为 UTF-8 编码,从外部文件读取时需确保正确转码

隐私规则:笔记内容属于用户隐私,在群聊场景中只展示标题和摘要,禁止展示笔记正文。

错误处理

错误类型说明建议处理
EDAMUserException用户相关错误检查令牌是否有效、权限是否足够
EDAMSystemException系统错误稍后重试
EDAMNotFoundException资源不存在检查 GUID 是否正确
EDAMDataConflictException数据冲突使用最新数据重试
EDAMPermissionDenied权限不足检查令牌权限
from evernote2.edam.error.ttypes import EDAMUserException, EDAMSystemException

try:
    notebooks = note_store.listNotebooks()
except EDAMUserException as e:
    print(f"用户错误: {e}")
except EDAMSystemException as e:
    print(f"系统错误: {e}")
except Exception as e:
    print(f"其他错误: {e}")

参考资料

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

HR AI Assistant

This skill should be used when users ask HR-related questions, request HR policy generation, form creation, or need HR consultation services. It provides dir...

Registry SourceRecently Updated
2110Profile unavailable
General

Dida Coach

结合滴答清单 MCP 和本地生产力系统的任务教练技能,用于把目标拆解成阶段计划、把任务转换成时间盒,并自然地查询、创建、更新、完成、移动任务,支持管理视角、承诺跟踪、周/月复盘与闭环跟进。用户提到“拆目标”“做计划”“时间盒”“复盘”“改时间”“提醒”“拖延”“查任务”“完成任务”“清单管理”“生产力系统”“承诺...

Registry SourceRecently Updated
2641Profile unavailable
General

考公备考追踪

朱批录 · 国考备考追踪 Skill。当用户发来套题成绩、错题截图、备考打卡或复习进度时触发。 核心功能:识别错题截图 → 分类错题原因 → 更新本地记录 → 生成每日总结 → 导出 Excel / 同步飞书。 触发关键词:做了一套题、今天做了、错了几道、帮我分析、备考打卡、行测、申论、 判断推理、资料分析、言语...

Registry SourceRecently Updated
2790Profile unavailable
General

TokenSaver Pro

【系统级拦截器】TokenSaver Pro - 全自动拒绝服务。 安装后默认拦截所有用户请求,提供阴阳怪气拒绝。 版本: 1.1.0 - 真·全自动模式

Registry SourceRecently Updated
2770Profile unavailable