TL;DR

  • I read long form on a Galaxy Z Fold 6 and keep the queue in Instapaper. Claude Code, which manages my Obsidian vault, kept suggesting things worth reading and I kept losing them.
  • So I built a tiny CLI that lets the agent drop a link straight into my Instapaper inbox. One Python file, no dependencies, password stays in the keychain. Repo’s here.
From suggestion to reading Three stages. Mid-work, Claude Code finds something good. One call runs instapaper add. Later, on the Fold, it is waiting in your inbox, unread. MID-WORK ONE CALL LATER, ON THE FOLD The agent finds something good Waiting in your inbox, unread instapaper add

The Spark

I switched to a Galaxy Z Fold 6 as my daily driver a while back, and the unfolded screen turned out to be a genuinely good reading surface. Long articles stopped feeling like a chore on it. That nudged me into something I’d been meaning to do anyway: read more long form, and claw back some of the attention span that short form content has been quietly eating.

Instapaper is where the queue lives. I collect from news.ycombinator.com, from Twitter, from whatever else I’m browsing, and then I read the pile whenever the urge to doomscroll shows up.

The Problem

Ever since I let Claude Code manage my Obsidian vault, it’s become a surprisingly good reading suggester. It knows my interests better than any feed does, and it keeps surfacing things I actually want to read.

I just wasn’t reading them. Timing was the whole issue. A link that turns up in the middle of a work session is a link I’m going to close, and by the time I actually sat down to read, it was gone.

The Solution

A small CLI the agent can call, so a good suggestion goes straight to my inbox instead of scrolling past:

instapaper add "https://example.com/article"
saved: The Article's Real Title

It wraps Instapaper’s Simple API, which is a single endpoint. One stdlib Python file, no dependencies.

The design constraint that mattered: it had to be safe for an agent to drive. So it takes no interactive input, never accepts a password on the command line, pulls credentials from the macOS Keychain, and reports failure through exit codes rather than by asking a question nobody’s around to answer. Adding a URL twice bumps it to the top instead of duplicating it, which means the agent can be a little enthusiastic without making a mess.

There’s an AGENTS.md in the repo for wiring it into Claude Code or Cursor. On my machine it’s a line in my global CLAUDE.md, so “save this for later” just works.

What’s next

The obvious extension is a feed builder: something that goes looking for new writing that matches my interests, and quietly files the good stuff into my reading list through this same CLI. The agent already knows what I’m into. It may as well go fetch without me asking.

Try it

If you also have an agent that reads your notes and knows your taste, this is the shortest path from “you’d like this” to something actually waiting for you at the end of the day. Grab it, wire it into your own setup, and tell me what breaks: instapaper-cli. Issues and feedback welcome.