Configure multi-environment setup for Evernote integrations. Use when setting up dev, staging, and production environments, or managing environment-specific configurations. Trigger with phrases like "evernote environments", "evernote staging", "evernote dev setup", "multiple environments evernote".
Configure separate development, staging, and production environments for Evernote integrations with proper isolation, configuration management, and environment-aware client factories.
evernote-ci-integration)Create per-environment config files that define the Evernote endpoint, sandbox flag, rate limit settings, and logging level.
// config/environments.js
const configs = {
development: {
sandbox: true,
apiUrl: '',
rateLimitDelayMs: 0, // No throttle in dev
logLevel: 'debug'
},
staging: {
sandbox: true,
apiUrl: '',
rateLimitDelayMs: 100,
logLevel: 'info'
},
production: {
sandbox: false,
apiUrl: 'https://www.evernote.com',
rateLimitDelayMs: 200,
logLevel: 'warn'
}
};
module.exports = configs[process.env.NODE_ENV || 'development'];
Define environment-specific .env files. Each environment uses its own API key and token. The EVERNOTE_SANDBOX flag controls which Evernote endpoint the SDK connects to.
# .env.development - sandbox with dev token
EVERNOTE_SANDBOX=true
EVERNOTE_DEV_TOKEN=S=s1:U=...
# .env.production - production with OAuth
EVERNOTE_SANDBOX=false
EVERNOTE_CONSUMER_KEY=prod-key
EVERNOTE_CONSUMER_SECRET=prod-secret
Build a factory that creates properly configured Evernote clients based on the active environment. Include validation that production never uses sandbox tokens.
Define services for the app, Redis (caching), and a webhook receiver (ngrok or localtunnel) in docker-compose.yml. Mount .env.development as environment file.
Create a /health endpoint that verifies Evernote API connectivity, reports the active environment, and checks cache availability.
app.get('/health', async (req, res) => {
const checks = {
environment: process.env.NODE_ENV,
sandbox: config.sandbox,
evernoteApi: 'unknown',
cacheConnected: false
};
try {
await userStore.getUser();
checks.evernoteApi = 'connected';
} catch { checks.evernoteApi = 'error'; }
res.json(checks);
});
For the full configuration loader, client factory, Docker setup, and CI/CD environment matrix, see Implementation Guide.
.env templates for each environment| Error | Cause | Solution |
|-------|-------|----------|
| Invalid consumer key | Using sandbox key in production | Verify EVERNOTE_SANDBOX matches key type |
| Wrong environment | NODE_ENV not set | Default to development, warn in logs |
| Sandbox data in production | Environment misconfiguration | Add startup validation that checks key/env match |
| Docker connection refused | Service not started | Run docker compose up before testing |
For observability setup, see evernote-observability.
Three-environment setup: Development uses sandbox Developer Token for instant testing. Staging uses sandbox OAuth for integration testing. Production uses production OAuth with full rate limiting and monitoring.
Docker local dev: Run docker compose up to start the app with Redis caching and ngrok for webhook testing, all preconfigured for the sandbox environment.
npx skills add jeremylongshore/evernote-multi-env-setup下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer