Claude-code-plugins-plus-skills evernote-hello-world
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/evernote-pack/skills/evernote-hello-world" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-evernote-hello-world && rm -rf "$T"
manifest:
plugins/saas-packs/evernote-pack/skills/evernote-hello-world/SKILL.mdsource content
Evernote Hello World
Overview
Create your first Evernote note using the Cloud API, demonstrating ENML format and NoteStore operations.
Prerequisites
- Completed
setupevernote-install-auth - Valid access token (OAuth or Developer Token for sandbox)
- Development environment ready
Instructions
Step 1: Create Entry File
Initialize an authenticated Evernote client. Use a Developer Token for sandbox or an OAuth access token for production.
// hello-evernote.js const Evernote = require('evernote'); const client = new Evernote.Client({ token: process.env.EVERNOTE_ACCESS_TOKEN, sandbox: true // false for production });
Step 2: Understand ENML Format
Evernote uses ENML (Evernote Markup Language), a restricted XHTML subset. Every note must include the XML declaration, DOCTYPE, and
<en-note> root element. Forbidden elements include <script>, <form>, <iframe>. Only inline styles are allowed (no class or id attributes).
<?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>
Step 3: Create Your First Note
Build ENML content and call
noteStore.createNote(). The returned object contains the guid, title, and created timestamp.
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; }
Step 4: List Notebooks and Retrieve Notes
Use
listNotebooks() to enumerate notebooks and getNote() with boolean flags to control what data is returned (content, resources, recognition, alternate data).
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);
For the complete working example with Python SDK, todo lists, and a combined workflow, see Implementation Guide.
Output
- Working code file with Evernote client initialization
- Successfully created note in your Evernote account
- Console output with note GUID and confirmation
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Invalid ENML content | Validate against ENML DTD; ensure XML declaration and DOCTYPE |
| Note or notebook not found | Check GUID is correct and note is not in trash |
| Too many requests | Wait for seconds before retrying |
| ENML missing required header | Add and before |
Resources
Next Steps
Proceed to
evernote-local-dev-loop for development workflow setup.
Examples
Sandbox test: Create a note using a Developer Token with
sandbox: true, verify it appears in your sandbox account at sandbox.evernote.com.
Production note: Switch to OAuth access token, set
sandbox: false, create a note in a specific notebook using note.notebookGuid.