| name | raindrop-cli |
| description | Manage Raindrop.io bookmarks via the raindrop CLI. Use when the user wants to add, list, search, update, or delete bookmarks, organize collections, manage tags, work with highlights, import/export bookmarks, or automate bookmark workflows. Triggered by mentions of Raindrop, bookmarks, reading lists, collections, or link management.
|
| license | MIT |
| homepage | https://github.com/dedene/raindrop-cli |
| metadata | {"author":"dedene","version":"1.1.0","openclaw":{"primaryEnv":"RAINDROP_TOKEN","requires":{"env":["RAINDROP_TOKEN","RAINDROP_KEYRING_BACKEND"],"bins":["raindrop"]},"install":[{"kind":"brew","tap":"dedene/tap","formula":"raindrop","bins":["raindrop"]},{"kind":"go","package":"github.com/dedene/raindrop-cli/cmd/raindrop","bins":["raindrop"]}]}} |
raindrop-cli
Command-line interface for Raindrop.io bookmark management. Add, search, organize, and export bookmarks.
Quick Start
raindrop auth status
raindrop add https://example.com --tags "reference"
raindrop list --json
raindrop search "golang" --json
Authentication
Test Token (personal use)
Get a test token from raindrop.io/settings/integrations:
raindrop auth token <your-token>
raindrop auth status
Or use environment variable:
export RAINDROP_TOKEN=<your-token>
OAuth2 (apps/shared use)
Requires browser-based OAuth flow. User must run raindrop auth login interactively. Do not attempt OAuth setup on behalf of the user.
Core Rules
- Always use
--json when parsing output. Table format is for display only.
- Read before write -- fetch bookmark/collection before modifying.
- Collection names are case-insensitive --
Work and work are equivalent.
- Use
--force to skip confirmations in scripts.
- Pipe with jq -- extract IDs:
raindrop list --json | jq -r '.[].id'
Output Formats
| Flag | Format | Use case |
|---|
| (default) | Table | User-facing display |
--json | JSON | Agent parsing, scripting |
System Collections
| Name | ID | Description |
|---|
all | 0 | All bookmarks |
unsorted | -1 | Unsorted bookmarks |
trash | -99 | Trash |
Workflows
Add Bookmarks
raindrop add https://example.com
raindrop add https://example.com --collection Work --tags "docs,reference"
echo -e "https://a.com\nhttps://b.com" | raindrop add -
List and Search
raindrop list --json
raindrop list Work --json
raindrop list Work --all --json
raindrop list --favorites --json
raindrop search "golang tutorial" --json
raindrop search --tag programming --type article --json
Get and Update
raindrop get 12345 --json
raindrop update 12345 --title "New Title" --tags "updated,important"
raindrop open 12345
raindrop copy 12345
Delete
raindrop delete 12345
raindrop delete 12345 --force
Collections
raindrop collections list --json
raindrop collections get Work --json
raindrop collections create "New Project"
raindrop collections update Work --title "Work Projects"
raindrop collections delete "Old Project" --force
Tags
raindrop tags list --json
raindrop tags rename old-name new-name
raindrop tags merge tag1 tag2 --into combined
raindrop tags delete unused-tag
Highlights
raindrop highlights list 12345 --json
raindrop highlights add 12345 "Important quote from the page"
raindrop highlights delete 12345 <highlight-id>
Import/Export
raindrop import bookmarks.html
raindrop export --format csv > bookmarks.csv
raindrop export --format html > bookmarks.html
raindrop export --format zip > backup.zip
Scripting Examples
ID=$(raindrop add https://example.com --json | jq -r '.id')
raindrop list --json | jq -r '.[].link'
raindrop list --json | jq -r '.[] | select(.tags | length == 0) | .link'
raindrop collections list --json | jq -r '.[] | "\(.title): \(.count)"'
raindrop list trash --json | jq -r '.[].id' | xargs -I{} raindrop delete {} --force
Environment Variables
| Variable | Description |
|---|
RAINDROP_TOKEN | API token (skips keyring) |
Command Reference
| Command | Description |
|---|
add [url] | Add a bookmark |
list [collection] | List bookmarks |
get <id> | Get bookmark details |
update <id> | Update a bookmark |
delete <id> | Delete a bookmark |
search [query] | Search bookmarks |
open <id> | Open in browser |
copy <id> | Copy URL to clipboard |
collections list | List collections |
collections get <name> | Get collection |
collections create <name> | Create collection |
collections update <name> | Update collection |
collections delete <name> | Delete collection |
tags list | List all tags |
tags rename <old> <new> | Rename tag |
tags merge <tags> --into <target> | Merge tags |
tags delete <tags> | Delete tags |
highlights list <id> | List highlights |
highlights add <id> <text> | Add highlight |
highlights delete <id> <hid> | Delete highlight |
import <file> | Import bookmarks |
export | Export bookmarks |
auth token <token> | Set API token |
auth status | Check auth status |
config get <key> | Get config value |
config set <key> <value> | Set config value |
Guidelines
- Never expose or log API tokens.
- Confirm destructive operations (
delete) with the user first.
- Collections and tags are case-insensitive for matching.
- Use
--no-input in CI/scripts to fail on prompts instead of hanging.
Installation
brew install dedene/tap/raindrop