SuperAPI AI 工具集

evernote-hello-world

办公与效率

查看项目

更新于 10-16 15:11

技能介绍

用途

本技能用于创建一个最小可运行的 Evernote 示例,帮助开发者开始新的 Evernote 集成、测试环境配置,或学习 Evernote API 的基础使用模式。

主要能力

  • 使用 Evernote Cloud API 创建第一条笔记
  • 演示 ENML(Evernote Markup Language)格式
  • 演示 NoteStore 操作,包括创建笔记、列出笔记本、检索笔记

前置条件

  • 已完成 evernote-install-auth 设置
  • 拥有有效的访问令牌(沙箱使用 Developer Token,生产环境使用 OAuth access token)
  • 开发环境就绪

使用方式

第一步:创建入口文件

初始化一个已认证的 Evernote 客户端。沙箱环境使用 Developer Token,生产环境使用 OAuth 访问令牌。

// hello-evernote.js
const Evernote = require('evernote');

const client = new Evernote.Client({
  token: process.env.EVERNOTE_ACCESS_TOKEN,
  sandbox: true // false for production
});

第二步:了解 ENML 格式

Evernote 使用 ENML,一种受限的 XHTML 子集。每条笔记必须包含 XML 声明、DOCTYPE 和 <en-note> 根元素。禁止使用的元素包括 <script>、<form>、<iframe>。仅允许内联样式(不允许 class 或 id 属性)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>
  <h1>Note Title</h1>
  <p>Content goes here</p>
  <en-todo checked="false"/> A task item
</en-note>

第三步:创建第一条笔记

构建 ENML 内容并调用 noteStore.createNote()。返回的对象包含 guid、标题和创建时间戳。

async function createHelloWorldNote() {
  const noteStore = client.getNoteStore();

  const content = `<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>
  <h1>Hello from Claude Code!</h1>
  <p>Created at: ${new Date().toISOString()}</p>
</en-note>`;

  const note = new Evernote.Types.Note();
  note.title = 'Hello World - Evernote API';
  note.content = content;

  const createdNote = await noteStore.createNote(note);
  console.log('Note GUID:', createdNote.guid);
  return createdNote;
}

第四步:列出笔记本并检索笔记

使用 listNotebooks() 枚举笔记本,使用 getNote() 配合布尔标志控制返回的数据(内容、资源、识别、备用数据)。

const noteStore = client.getNoteStore();

// List all notebooks
const notebooks = await noteStore.listNotebooks();
notebooks.forEach(nb => console.log(`- ${nb.name} (${nb.guid})`));

// Retrieve a note with content
const note = await noteStore.getNote(noteGuid, true, false, false, false);
console.log('Title:', note.title);

如需包含 Python SDK、待办列表和组合工作流的完整可运行示例,请参阅 Implementation Guide。

输出

  • 包含 Evernote 客户端初始化的可运行代码文件
  • 在 Evernote 账户中成功创建的笔记
  • 包含笔记 GUID 和确认信息的控制台输出

错误处理

错误 原因 解决方案
EDAMUserException: BAD_DATA_FORMAT ENML 内容无效 对照 ENML DTD 校验;确保包含 XML 声明和 DOCTYPE
EDAMNotFoundException 笔记或笔记本未找到 检查 GUID 是否正确,笔记是否在回收站中
EDAMSystemException: RATE_LIMIT_REACHED 请求过多 等待 rateLimitDuration 秒后重试
Missing DOCTYPE ENML 缺少必需的头部 在 <en-note> 前添加 <?xml ...?> 和 <!DOCTYPE ...>

适用场景

  • 开始新的 Evernote 集成时快速验证环境
  • 测试 Evernote 账户与访问令牌配置
  • 学习 Evernote API 的基础模式

限制

  • 使用前必须先完成 evernote-install-auth 设置并拥有有效访问令牌
  • 内容必须符合 ENML 规范,禁止使用 <script>、<form>、<iframe> 等元素,仅允许内联样式
  • 受 API 速率限制约束,超出限制需等待后重试

资源

  • Creating Notes
  • ENML Reference
  • Core Concepts
  • API Reference

后续步骤

继续进行 evernote-local-dev-loop 以配置开发工作流。

示例

  • 沙箱测试:使用 Developer Token 并设置 sandbox: true 创建笔记,验证其出现在 sandbox.evernote.com 的沙箱账户中。
  • 生产笔记:切换到 OAuth 访问令牌,设置 sandbox: false,使用 note.notebookGuid 在指定笔记本中创建笔记。