版本
安装命令 点击复制
插件文档
openclaw-instapaper
OpenClaw 插件,用于 Instapaper 读取列表管理。提供 16 个工具,用于管理书签、文件夹、标记、标签和文章文本通过 OpenClaw。
基于 instapaper-cli,一个完整的 Go CLI untuk Instapaper API。
快速开始
[...]许可证
MIT
openclaw-instapaper
OpenClaw plugin for Instapaper reading list management. Provides 16 tools for managing bookmarks, folders, highlights, tags, and article text through OpenClaw.
Built on instapaper-cli, a full-featured Go CLI for the Instapaper API.
Quick Start
# 1. Install the CLI
brew tap vburojevic/tap && brew install instapaper-cli
# 2. Set credentials (get yours at https://www.instapaper.com/main/request_oauth_consumer_token)
export INSTAPAPER_CONSUMER_KEY="your-key"
export INSTAPAPER_CONSUMER_SECRET="your-secret"
# 3. Log in (one-time)
printf '%s' "your-password" | instapaper-cli auth login -username "you@example.com" -password-stdin
# 4. Install the plugin
openclaw plugins install instapaper-cliPrerequisites
instapaper-cli binary
The plugin wraps the instapaper-cli Go binary. Install via Homebrew:
brew tap vburojevic/tap && brew install instapaper-cliVerify: instapaper-cli version
The binary installs to /opt/homebrew/bin/instapaper-cli on Apple Silicon Macs. Ensure this is in your PATH.
Instapaper API credentials
Request an OAuth consumer token at https://www.instapaper.com/main/requestoauthconsumer_token
You will receive a consumer key and consumer secret. Keep these — you'll need them for authentication and plugin configuration.
Authentication (one-time)
export INSTAPAPER_CONSUMER_KEY="your-key"
export INSTAPAPER_CONSUMER_SECRET="your-secret"
printf '%s' "your-password" | instapaper-cli auth login -username "you@example.com" -password-stdinThis exchanges your credentials for OAuth tokens stored locally. You only need to do this once.
Verify: instapaper-cli auth status (should show logged_in: true)
Instapaper passwords are optional. If your account has no password, any value will work.
Install
From ClawHub
openclaw plugins install instapaper-cliOr for local development:
openclaw plugins install -l ~/path/to/openclaw-instapaperSymlink installs stay live with git pull updates.
Security note
This plugin uses Node.js execFile (not shell exec) to call the instapaper-cli binary. OpenClaw's static analysis scanner flags this at install time. If prompted, review the source code and use:
openclaw plugins install instapaper-cli --dangerously-force-unsafe-installThis is expected for any CLI-wrapper plugin. The plugin never executes arbitrary commands, only calls the instapaper-cli binary with structured arguments.
Configuration
The plugin needs your consumer key and secret at runtime to sign API requests. Choose one method:
Option A: SecretRef via secrets.json (recommended)
Add your credentials to ~/.openclaw/secrets.json:
{
"plugins": {
"instapaper": {
"consumerKey": "your-key",
"consumerSecret": "your-secret"
}
}
}Then wire the SecretRefs:
openclaw config set plugins.entries.instapaper-cli.config.consumerKey \
--ref-source file --ref-provider secrets --ref-id /plugins/instapaper/consumerKey
openclaw config set plugins.entries.instapaper-cli.config.consumerSecret \
--ref-source file --ref-provider secrets --ref-id /plugins/instapaper/consumerSecretOption B: macOS Keychain
security add-generic-password -s 'env/INSTAPAPER_CONSUMER_KEY' -a "$USER" -w 'your-key'
security add-generic-password -s 'env/INSTAPAPER_CONSUMER_SECRET' -a "$USER" -w 'your-secret'
openclaw config set plugins.entries.instapaper-cli.config.consumerKey \
'{"source":"exec","provider":"keychain","id":"env/INSTAPAPER_CONSUMER_KEY"}' --strict-json
openclaw config set plugins.entries.instapaper-cli.config.consumerSecret \
'{"source":"exec","provider":"keychain","id":"env/INSTAPAPER_CONSUMER_SECRET"}' --strict-jsonOption C: Environment variables
# Add to your gateway environment or ~/.openclaw/.env
INSTAPAPER_CONSUMER_KEY=your-key
INSTAPAPER_CONSUMER_SECRET=your-secretResolution order
The plugin resolves credentials from these sources (first match wins):
| Priority | Source | Details |
|---|---|---|
| 1 | Plugin config (SecretRef) | Resolved via file, env, or exec provider |
| 2 | Plugin config (string) | Direct value or env var interpolation |
| 3 | Environment variable | `INSTAPAPER_CONSUMER_KEY` / `INSTAPAPER_CONSUMER_SECRET` |
| 4 | macOS Keychain | `env/INSTAPAPER_CONSUMER_KEY` / `env/INSTAPAPER_CONSUMER_SECRET` |
Restart and verify
openclaw gateway restartTest by asking your agent: "Save https://example.com to Instapaper"
Tools
Bookmarks
| Tool | Description | Parameters |
|---|---|---|
| `instapaper_list` | List bookmarks | `folder`, `limit`, `tag` |
| `instapaper_add` | Save a URL | `url`, `title`, `folder`, `tags` |
| `instapaper_import` | Bulk import URLs | `urls[]`, `folder`, `tags` |
| `instapaper_archive` | Archive a bookmark | `bookmark_id` |
| `instapaper_unarchive` | Unarchive a bookmark | `bookmark_id` |
| `instapaper_star` | Star a bookmark | `bookmark_id` |
| `instapaper_unstar` | Unstar a bookmark | `bookmark_id` |
| `instapaper_move` | Move to folder | `bookmark_id`, `folder` |
| `instapaper_delete` | Permanently delete | `bookmark_id` |
| `instapaper_text` | Get article HTML | `bookmark_id` |
Folders
| Tool | Description | Parameters |
|---|---|---|
| `instapaper_folders_list` | List all folders | (none) |
| `instapaper_folders_add` | Create a folder | `title` |
| `instapaper_folders_delete` | Delete a folder | `title` |
Highlights & Tags
| Tool | Description | Parameters |
|---|---|---|
| `instapaper_highlights_list` | List highlights for a bookmark | `bookmark_id` |
| `instapaper_highlights_add` | Add a highlight | `bookmark_id`, `text` |
| `instapaper_tags_list` | List all tags | (none) |
Examples
instapaper_list { folder: "starred", limit: 10 }
instapaper_add { url: "https://example.com/article", tags: "tech,ai" }
instapaper_import { urls: ["https://a.com", "https://b.com"], folder: "Work" }
instapaper_text { bookmark_id: 12345678 }
instapaper_highlights_list { bookmark_id: 12345678 }Architecture
All tools shell out to the instapaper-cli binary via execFile. The plugin:
- Resolves consumer key/secret from config, env vars, or keychain
- Passes them as environment variables to the CLI process (never touches shell history)
- Parses ndjson or JSON output from the CLI
- Returns structured results to OpenClaw
The CLI handles OAuth 1.0a request signing (HMAC-SHA1) and token management internally. User OAuth tokens persist in ~/.config/ip/ from the one-time auth login step.
Troubleshooting
| Problem | Solution |
|---|---|
| `instapaper-cli not found` | Run `brew tap vburojevic/tap && brew install instapaper-cli` |
| `No Instapaper credentials configured` | Configure consumer key/secret via one of the methods above |
| `HTTP 401` | Consumer key/secret may be swapped, or OAuth token expired. Re-run `auth login` with the correct consumer credentials set. |
| Exit code 10 (rate limited) | Wait a few minutes. Instapaper enforces per-endpoint rate limits. |
| Exit code 11 (premium required) | Some features require Instapaper Premium. |
| Empty results from `instapaper_list` | Try `folder: "archive"` or `folder: "starred"`. |
License
MIT
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制