raindrop
gmickel/raindrop-skillManage Raindrop.io bookmarks, collections, tags, and highlights via API. Use when user mentions raindrop, bookmarks, saving links, organizing URLs, bookmark collections, or web highlights.
SKILL.md
name: raindrop description: Manage Raindrop.io bookmarks, collections, tags, and highlights via API. Use when user mentions raindrop, bookmarks, saving links, organizing URLs, bookmark collections, or web highlights.
Raindrop.io API Skill
Manage bookmarks via Raindrop.io REST API.
Prerequisites
User must have RAINDROP_TOKEN env var set. If not configured, instruct them to:
- Create app at https://app.raindrop.io/settings/integrations
- Generate test token
- Add
export RAINDROP_TOKEN="..."to~/.zshrc.local
Authentication
All requests require:
Authorization: Bearer $RAINDROP_TOKEN
Base URL
https://api.raindrop.io/rest/v1/
Helper Script
Use scripts/raindrop.sh for API calls:
./scripts/raindrop.sh GET /collections
./scripts/raindrop.sh POST /raindrop '{"link":"https://example.com","pleaseParse":{}}'
./scripts/raindrop.sh PUT /raindrop/123 '{"tags":["new-tag"]}'
./scripts/raindrop.sh DELETE /raindrop/123
Quick Reference
Collections
| Action | Method | Endpoint |
|---|---|---|
| List root | GET | /collections |
| List children | GET | /collections/childrens |
| Get one | GET | /collection/{id} |
| Create | POST | /collection |
| Update | PUT | /collection/{id} |
| Delete | DELETE | /collection/{id} |
Raindrops (Bookmarks)
| Action | Method | Endpoint |
|---|---|---|
| List | GET | /raindrops/{collectionId} |
| Get one | GET | /raindrop/{id} |
| Create | POST | /raindrop |
| Update | PUT | /raindrop/{id} |
| Delete | DELETE | /raindrop/{id} |
| Search | GET | /raindrops/0?search=... |
Special collection IDs: 0 = all, -1 = unsorted, -99 = trash
Tags
| Action | Method | Endpoint |
|---|---|---|
| List all | GET | /tags |
| List in collection | GET | /tags/{collectionId} |
| Rename | PUT | /tags/{collectionId} |
| Delete | DELETE | /tags/{collectionId} |
Highlights
| Action | Method | Endpoint |
|---|---|---|
| List all | GET | /highlights |
| In collection | GET | /highlights/{collectionId} |
| Add/Update/Remove | PUT | /raindrop/{id} |
Colors: blue, brown, cyan, gray, green, indigo, orange, pink, purple, red, teal, yellow
Common Operations
Create bookmark with auto-parse
./scripts/raindrop.sh POST /raindrop '{
"link": "https://example.com",
"collection": {"$id": 12345},
"tags": ["tag1", "tag2"],
"pleaseParse": {}
}'
Search bookmarks
./scripts/raindrop.sh GET '/raindrops/0?search=keyword&sort=-created'
Search operators:
#tag- by tagtype:article- by type (link, article, image, video, document, audio)domain:example.com- by domaincreated:>2024-01-01- by dateimportant:true- favorites only
Create collection
./scripts/raindrop.sh POST /collection '{
"title": "My Collection",
"public": false
}'
Add highlight to bookmark
./scripts/raindrop.sh PUT /raindrop/123 '{
"highlights": [{"text": "highlighted text", "color": "yellow", "note": "my note"}]
}'
Bulk tag bookmarks
./scripts/raindrop.sh PUT /raindrops/0 '{
"ids": [1, 2, 3],
"tags": ["new-tag"]
}'
Export collection
curl -s "https://api.raindrop.io/rest/v1/raindrops/{collectionId}/export.csv" \
-H "Authorization: Bearer $RAINDROP_TOKEN" > bookmarks.csv
Formats: csv, html, zip
Rate Limits
120 requests/minute. Check headers: X-RateLimit-Limit, RateLimit-Remaining, X-RateLimit-Reset
Detailed Reference
See references/API-REFERENCE.md for complete endpoint documentation.
README
Raindrop.io Agent Skill
Manage your Raindrop.io bookmarks with AI assistants.
Save links, organize collections, search bookmarks, add highlights—all through natural language.
Features
- Bookmarks — Create, search, update, bulk edit, import/export
- Collections — Organize, nest, share with collaborators
- Tags — Add, rename, merge across bookmarks
- Highlights — Save annotated snippets with colors
- Multi-client — Works with Claude Code, Codex, Amp, OpenCode
Quick Start
# 1. Get token from Raindrop
# https://app.raindrop.io/settings/integrations
# → Create app → Create test token
# 2. Add to shell
echo 'export RAINDROP_TOKEN="your_token"' >> ~/.zshrc.local
source ~/.zshrc
# 3. Install (Claude Code / Amp / OpenCode)
git clone https://github.com/gmickel/raindrop-skill ~/.claude/skills/raindrop
# 3. Install (Codex)
git clone https://github.com/gmickel/raindrop-skill ~/.codex/skills/raindrop
# 4. Use it
"Save this article to my Reading collection"
"Search my bookmarks for React hooks"
"List all tags in my Dev collection"
Setup
1. Create Raindrop App
- Go to app.raindrop.io/settings/integrations
- Click Create new app
- Fill in:
- Name:
AI Assistant(or anything) - Redirect URI:
http://localhost(required, not used)
- Name:
- Click Create
2. Get Test Token
- Open your app settings
- Click Create test token
- Copy the token
3. Configure Shell
# Add to ~/.zshrc.local or ~/.bashrc
export RAINDROP_TOKEN="your_test_token_here"
4. Verify
curl -s "https://api.raindrop.io/rest/v1/user" \
-H "Authorization: Bearer $RAINDROP_TOKEN" | jq .fullName
Why Test Tokens?
We use Raindrop's test token + environment variable approach because:
- Standard pattern — Same as
GH_TOKEN,ANTHROPIC_API_KEY, etc. - No expiration — Test tokens are permanent (OAuth tokens expire in 2 weeks)
- No OAuth dance — No redirect URI, no token refresh logic
- Subprocess-friendly — Env vars are inherited by agents and scripts
For personal/CLI use, this is the accepted approach. Store in .zshrc.local (not committed to dotfiles) and you're set.
Want more security? Use 1Password CLI or macOS Keychain:
export RAINDROP_TOKEN=$(op read "op://Private/Raindrop/token")
Installation
Claude Code
# User-level (all projects)
git clone https://github.com/gmickel/raindrop-skill ~/.claude/skills/raindrop
# Project-level (single repo)
git clone https://github.com/gmickel/raindrop-skill .claude/skills/raindrop
Codex CLI
# User-level
git clone https://github.com/gmickel/raindrop-skill ~/.codex/skills/raindrop
# Project-level
git clone https://github.com/gmickel/raindrop-skill .codex/skills/raindrop
Amp / OpenCode
Both fall back to .claude/skills/:
git clone https://github.com/gmickel/raindrop-skill ~/.claude/skills/raindrop
See docs/ for detailed installation guides.
Usage Examples
Once installed, just ask:
| Task | Example |
|---|---|
| Save link | "Save https://example.com to my Dev collection" |
| Search | "Find bookmarks about TypeScript" |
| List | "Show my collections" |
| Tag | "Add #reading tag to my last 5 bookmarks" |
| Highlight | "Show highlights from my Research collection" |
| Export | "Export my bookmarks as CSV" |
Files
raindrop-skill/
├── SKILL.md # Main skill instructions
├── scripts/
│ └── raindrop.sh # API helper
├── references/
│ └── API-REFERENCE.md # Complete API docs
└── docs/
├── INSTALL-CLAUDE-CODE.md
├── INSTALL-CODEX.md
└── INSTALL-OTHER-CLIENTS.md
API Coverage
| Resource | Operations |
|---|---|
| Raindrops | CRUD, search, bulk ops, file upload |
| Collections | CRUD, nesting, sharing, covers |
| Highlights | Create, update, delete with 12 colors |
| Tags | List, rename, merge, delete |
| Import/Export | HTML, CSV, ZIP, URL parsing |
| Backups | List, download, generate |
Full reference: API-REFERENCE.md
License
MIT