evernote-install-auth
Install and configure Evernote SDK and OAuth authentication. Use when setting up a new Evernote integration, configuring API keys, or initializing Evernote in your project. Trigger with phrases like "install evernote", "setup evernote", "evernote auth", "configure evernote API", "evernote oauth".
- License 许可
- MIT
- 最近更新
- 2026-03-20
- Stars
- ★ 4
- Forks
- 0
01 前言 Front Matter
- name
- evernote-install-auth
- author
- Jeremy Longshore <jeremy@intentsolutions.io>
- license
- MIT
- version
- 1.0.0
- description
- Install and configure Evernote SDK and OAuth authentication. Use when setting up a new Evernote integration, configuring API keys, or initializing Evernote in your project. Trigger with phrases like "install evernote", "setup evernote", "evernote auth", "configure evernote API", "evernote oauth".
- allowed-tools
- Read, Write, Edit, Bash(npm:*), Bash(pip:*), Grep
- compatible-with
- claude-code, codex, openclaw
03 SKILL.md 正文
Evernote Install & Auth
Overview
Set up Evernote SDK and configure OAuth 1.0a authentication for accessing the Evernote Cloud API.
Prerequisites
- Node.js 18+ or Python 3.10+
- Package manager (npm, pnpm, or pip)
- Evernote developer account
- API key from Evernote Developer Portal (requires approval, allow 5 business days)
Instructions
Step 1: Request API Key
- Go to Evernote Developer Portal
- Request an API key via the contact form
- Wait for manual approval (up to 5 business days)
- Receive your
consumerKeyandconsumerSecret
Step 2: Install SDK
set -euo pipefail
# Node.js
npm install evernote
# Python
pip install evernote
Step 3: Configure Environment
# Create .env file
cat << 'EOF' >> .env
EVERNOTE_CONSUMER_KEY=your-consumer-key
EVERNOTE_CONSUMER_SECRET=your-consumer-secret
EVERNOTE_SANDBOX=true
EOF
Step 4: Initialize OAuth Client
// Node.js - Initialize client for OAuth flow
const Evernote = require('evernote');
const client = new Evernote.Client({
consumerKey: process.env.EVERNOTE_CONSUMER_KEY,
consumerSecret: process.env.EVERNOTE_CONSUMER_SECRET,
sandbox: process.env.EVERNOTE_SANDBOX === 'true',
china: false
});
# Python - Initialize client
from evernote.api.client import EvernoteClient
client = EvernoteClient(
consumer_key='your-consumer-key',
consumer_secret='your-consumer-secret',
sandbox=True
)
Step 5: Implement OAuth Flow
// Step 5a: Get request token and redirect URL
const callbackUrl = 'http://localhost:3000/oauth/callback'; # 3000: 3 seconds in ms
client.getRequestToken(callbackUrl, (error, oauthToken, oauthTokenSecret) => {
if (error) {
console.error('Failed to get request token:', error);
return;
}
// Store tokens in session (required for callback)
req.session.oauthToken = oauthToken;
req.session.oauthTokenSecret = oauthTokenSecret;
// Redirect user to Evernote authorization page
const authorizeUrl = client.getAuthorizeUrl(oauthToken);
res.redirect(authorizeUrl);
});
// Step 5b: Handle OAuth callback
app.get('/oauth/callback', (req, res) => {
const oauthVerifier = req.query.oauth_verifier;
client.getAccessToken(
req.session.oauthToken,
req.session.oauthTokenSecret,
oauthVerifier,
(error, oauthAccessToken, oauthAccessTokenSecret, results) => {
if (error) {
console.error('Failed to get access token:', error);
return res.status(500).send('Authentication failed'); # HTTP 500 Internal Server Error
}
// Store access token securely (valid for 1 year by default)
req.session.accessToken = oauthAccessToken;
// Token expiration included in results.edam_expires
console.log('Token expires:', new Date(parseInt(results.edam_expires)));
res.redirect('/dashboard');
}
);
});
Step 6: Verify Connection
// Create authenticated client and verify
const authenticatedClient = new Evernote.Client({
token: req.session.accessToken,
sandbox: true
});
const userStore = authenticatedClient.getUserStore();
const noteStore = authenticatedClient.getNoteStore();
// Verify connection
userStore.getUser().then(user => {
console.log('Authenticated as:', user.username);
console.log('User ID:', user.id);
}).catch(err => {
console.error('Authentication verification failed:', err);
});
Development Tokens (Sandbox Only)
For development, use a Developer Token instead of full OAuth:
- Create a sandbox account at https://sandbox.evernote.com
- Get a Developer Token from https://sandbox.evernote.com/api/DeveloperToken.action
- Use directly without OAuth flow:
const client = new Evernote.Client({
token: process.env.EVERNOTE_DEV_TOKEN,
sandbox: true
});
const noteStore = client.getNoteStore();
Note: Developer tokens are currently unavailable for production. Use OAuth for production applications.
Output
- Installed SDK package in node_modules or site-packages
- Environment variables configured
- Working OAuth flow implementation
- Successful connection verification
Error Handling
| Error | Cause | Solution |
|---|---|---|
Invalid consumer key |
Wrong or unapproved key | Verify key from developer portal |
OAuth signature mismatch |
Incorrect consumer secret | Check secret matches portal |
Token expired |
Access token > 1 year old | Re-authenticate user via OAuth |
RATE_LIMIT_REACHED |
Too many API calls | Implement exponential backoff |
Permission denied |
Insufficient API key permissions | Request additional permissions |
Token Expiration
- Default token validity: 1 year
- Users can reduce to: 1 day, 1 week, or 1 month
- Expiration timestamp in
edam_expiresparameter - Implement token refresh before expiration
Resources
Next Steps
After successful auth, proceed to evernote-hello-world for your first note creation.
Examples
Basic usage: Apply evernote install auth to a standard project setup with default configuration options.
Advanced scenario: Customize evernote install auth for production environments with multiple constraints and team-specific requirements.
04 同仓库更多 Skills
azure-apim-architecture
Analyzes and explains Azure API Management architecture decisions for enterprise API marketplace implementations using VNet Internal mode, Front Door, hybrid authentication, and multi-environment strategies. Use when discussing APIM component selection, network topology, cost optimization, or comparing alternatives like workspaces vs instances, VNet Internal vs External mode, or Front Door vs Application Gateway.
apiops-deployment
Guides deployment of Azure API Management infrastructure using Infrastructure as Code (Bicep/Terraform), CI/CD pipelines (GitHub Actions/Azure DevOps), and APIOps workflows. Use when deploying APIM, creating pipelines, or implementing dev→test→prod promotion strategies.
apim-policy-authoring
Creates production-ready Azure API Management policy XML for authentication (OAuth 2.0, JWT validation, subscription keys), rate limiting, CORS configuration, error handling, and API transformations. Use when implementing API security, access control, or request/response processing logic.
api-security-review
Reviews Azure API Management configurations for security vulnerabilities, OWASP API Security Top 10 compliance, VNet Internal mode validation, Private Link verification, and Azure Security Benchmark alignment. Use when performing security audits, pre-deployment validation, or compliance reviews.
jira-cli
Interact with Jira from the command line to create, list, view, edit, and transition issues, manage sprints and epics, and perform common Jira workflows. Use when the user asks about Jira tasks, tickets, issues, sprints, or needs to manage project work items.
calculator
Performs arbitrary-precision arithmetic calculations including addition, subtraction, multiplication, division, and exponents. Use when the user asks to calculate, compute, or evaluate math expressions, or when precise decimal arithmetic is needed to avoid floating-point errors.