Use when operating the instapaper-cli (ip) tool or troubleshooting it: authenticating, listing/exporting/importing bookmarks, bulk mutations, folders/highlights/text, choosing output formats (ndjson/json/plain), cursor-based sync, and interpreting stderr-json/exit codes for automation.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add Demerzels-lab/elsamultiskillagent --skill instapaper --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Instapaper?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/demerzels-lab-instapaper)More formats (shields.io, HTML) on the badges page.
---
name: instapaper
description: "Use when operating the instapaper-cli (ip) tool or troubleshooting it: authenticating, listing/exporting/importing bookmarks, bulk mutations, folders/highlights/text, choosing output formats (ndjson/json/plain), cursor-based sync, and interpreting stderr-json/exit codes for automation."
---
# Instapaper CLI
## Overview
Use this skill to handle Instapaper operations via the `ip` CLI (which must be installed and available in `PATH`), especially when you need reliable automation, structured output, or troubleshooting guidance.
## Install the CLI
- Go install: `go install github.com/vburojevic/instapaper-cli/cmd/ip@latest`
- Homebrew: `brew tap vburojevic/tap && brew install instapaper-cli`
- From source: `go build ./cmd/ip` (run as `./ip`)
## Workflow (fast path)
1. Verify setup
- Ensure `INSTAPAPER_CONSUMER_KEY` and `INSTAPAPER_CONSUMER_SECRET` are set or passed during login.
- Prefer `--password-stdin` for auth; never store the password.
- Run `ip doctor --json` (or `ip auth status`) before long jobs.
2. Pick output format for automation
- Default is `--ndjson` (streaming, one object per line).
- Use `--json` for single objects or compact arrays.
- Use `--plain` for stable, line-oriented text.
- Add `--stderr-json` for structured errors and `--progress-json` for long runs.
3. Read data deterministically
- Use `list` or `export` with `--cursor`/`--cursor-dir` or `--since/--until` bounds.
- Use `--updated-since` for incremental sync.
- Use `--select` for client-side filtering when the API does not support it.
4. Mutate safely
- Use `--dry-run` or `--idempotent` when possible.
- For bulk actions, use `--ids` or `--stdin` and consider `--batch`.
- Deletions require explicit confirmation flags.
5. Handle extras
- Text view: `ip text` for article HTML.
- Highlights: `ip highlights list/add/delete`.
- Folders: `ip folders list/add/delete/order`.
6. Troubleshoot
- Use `--debug` for request timing and status.
- Use `--stderr-json` and map `exit_code` to action.
## Command reference
Read these when you need exact flags, formats, or examples:
- `references/commands.md`: command-by-command examples for auth, list/export/import, mutations, folders, highlights, and text.
- `references/output-and-sync.md`: output formats, progress streams, cursor/bounds syntax, and filtering.
- `references/errors.md`: exit codes and structured stderr error codes.
## Guardrails
- Avoid `--format table` for parsing; it is for humans only.
- Use `--output` or `--output-dir` for large exports to avoid stdout pressure.
- Prefer `--password-stdin` on Windows to avoid echoing passwords.

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!