SMF·GOODLINKS
Can a prompt replace GoodLinks?
Read it later & RSS — read-later, bookmarks and RSS
Exhibit tracking slip
Verdict
GoodLinks is deliberately small: save a link, extract the text, tag it, read it, and never sign in to anything. That whole loop is one sitting, and unlike most entries in this category there is no service behind the paid app to be missing — it is a one-off purchase for a local application. What you give up is the Apple side: iCloud sync, the share sheet, and the Shortcuts actions that let the rest of your system talk to it.
Exhibit A — The prompt
Received on31.07.2026Build a local-first read-later tool with a first-class automation surface. No account, no server, no sync.
Storage: SQLite in a documented location, holding the URL, title, author, published date, extracted text, tags, added date, read state, and highlights. The database is the product's contract with the rest of the system, so document its schema in the README and treat it as stable.
Saving: fetch the page with a descriptive user agent, honour robots.txt, run Readability, and store the result. On extraction failure, save the link with a clear unavailable state rather than storing a cookie banner. Never attempt to get past a paywall or a login.
Reading: a typography-first reader view with adjustable width, size and theme. Select text to highlight; a highlight can carry a note. Keyboard navigation throughout.
Organisation: tags with autocomplete, a starred flag, and full-text search across titles and extracted text using SQLite FTS.
The automation surface, which is the point of this build. Ship a CLI covering every operation the interface offers:
- add a URL, with optional tags, reading from an argument or stdin so a list of links can be piped in
- list, filtered by tag, read state, or a search term, with output as a table, JSON or plain URLs
- read, printing an article's extracted text to stdout so it can be piped into anything
- tag and untag, in bulk from a list of ids
- export, emitting the whole database as JSON or a folder of Markdown files
Every command must be scriptable: exit codes that mean something, JSON output on request, and no interactive prompt in any path. Document three worked examples in the README — saving every link from a Markdown file, exporting today's highlights into a notes folder, and a cron job that reports how many unread items are older than a month.
Also ship a bookmarklet and a small local HTTP endpoint bound to localhost so a browser can save without the command line.
Out of scope: sync of any kind, mobile apps, feed subscriptions, and any hosted service. Say in the README that the absence of a phone client is the real gap, and that the CLI is the compensation.
Opening prefills the prompt — press enter to run it.
Exhibit B — What you lose
- B.1 iCloud sync and the iPhone and iPad apps
- B.2 the system share sheet, which is how links get saved on a phone
- B.3 the Shortcuts actions that wire it into the rest of iOS
- B.4 the reading experience of a native app tuned for the platform
Prior art
Exhibit C — Why people still pay: capture polish, sync, and content partnerships
Because saving has to be effortless or it does not happen, and on a phone that means the share sheet. A tool you have to open and paste into is a tool you use for a fortnight.
Questions
Can I import my GoodLinks library?
Yes. GoodLinks exports as JSON including tags, read state and highlights, and all of it maps onto this schema. Extracted article text is not in the export, so the importer re-fetches, which means anything since taken offline arrives as a bare link.
Why build a CLI for a reading app?
Because it is the one thing a sandboxed native app cannot give you. GoodLinks has Shortcuts actions; a local SQLite file plus a scriptable command line lets you pipe articles into a summariser, cross-reference them with your notes, or bulk-retag five years of saves in one line.
What does it cost to run?
Nothing at all. It is a local application over a SQLite file with no keys, no server and no subscription, against a one-off app purchase and a small annual fee for the sync tier.
What is the one thing that does not survive the rebuild?
The share sheet. Almost every link worth saving is encountered on a phone, and the two-tap save is the entire reason a read-later app accumulates anything. Without it you save the links you happen to see at a desk, which is a much smaller and much duller list.
Related tools
Receipt