Daily Reading Digest
Turn your saved-links pile into a skimmable daily digest, delivered wherever you want it — with a one-click "Discuss with Claude" link on every item.
You know the folder. It's called To Review, or to-read, or Read Later, and it only ever grows. This plugin reads that folder (whatever you named it, from whichever browser you use), keeps a proper reading queue, summarizes the top unread items, and sends you a digest that makes each item one click away from either reading it or talking it through with Claude.
# To Review digest — 2026-07-09
_3 items today · 9 left in the queue_
## 1. How to Do Great Work
A long essay arguing that great work comes from choosing what to work on...
Read: https://paulgraham.com/greatwork.html
Discuss with Claude: https://claude.ai/new?q=I%20saved%20this%20article...
How it works
The queue is the source of truth, not the browser. Intake pulls newly saved links from your browser's bookmarks folder (read directly from disk — no browser automation needed) into a plain markdown checklist you own. The digest run summarizes the oldest unread items, delivers them, checks them off, and appends everything — link, URL, and summary — to a permanent local history file.
browser bookmarks folder ─┐
open tabs (optional) ─────┼──► reading queue ──► summarize ──► digest ──► Slack / email / file
/reading-digest:add ──────┘ (md file) └──► history.md (forever)
The plugin deliberately keeps its credential surface small: Slack and email are the only integrations that need credentials. Everything else is local files.
Install
Not technical? INSTALL.md is a click-by-click guide that assumes nothing — including how to get a Slack webhook and connect email.
Claude Code (as a plugin):
/plugin marketplace add wearescribes/reading-digest
/plugin install reading-digest@reading-digest
From a git clone (no marketplace):
git clone https://github.com/wearescribes/reading-digest.git
claude --plugin-dir ./reading-digest
Claude Cowork (desktop): download reading-digest.plugin from the latest GitHub Release and open it in Cowork — it installs with one click.
Quickstart
/reading-digest:tutorial # new here? guided tour — see a sample digest in 60 seconds
/reading-digest:setup # one-time interview: browser, label, queue, channels
/reading-digest:run # generate & deliver today's digest
/reading-digest:add <url> # save a link from anywhere
After installing, you can also just say "show me how this works" — the tutorial picks it up.
Personalization
All customization lives in one config file, written by /reading-digest:setup (user-level ~/.claude/reading-digest/config.json, project-level ./.claude/reading-digest.json, or any path via READING_DIGEST_CONFIG). Full schema in config.example.json.
| Key | What it controls | Default |
|---|---|---|
queue_label | The name of your bookmarks folder / grouping — call it anything | "To Review" |
browser | chrome, brave, edge, arc, vivaldi, chromium, firefox, safari | chrome |
intake | bookmarks_folder (exact, no automation), open_tabs (heuristic), manual | bookmarks_folder |
profile_path | Non-default browser profile location | auto-detect |
queue_file | Where the queue checklist lives (Obsidian-friendly) | ~/reading-queue.md |
history_file | The append-only log of every link, URL, and summary ever digested | ~/.claude/reading-digest/history.md |
notify | slack and/or email — the digest file is always written | ["file"] |
exclude_domains | Domains never treated as reading material in tab intake | mail/docs/etc. |
digest.max_items | Items per digest, oldest first | 10 |
digest.deep_links | "Discuss with Claude" link per item | true |
Choosing a browser (yes, without any browser extension)
Every major browser stores bookmarks in a file this plugin can read directly:
| Browser | Store | Notes |
|---|---|---|
| Chrome / Brave / Edge / Arc / Vivaldi / Chromium | Bookmarks (JSON) | all profiles scanned |
| Firefox | places.sqlite | copied before reading, safe while Firefox runs |
| Safari | Bookmarks.plist | macOS: grant your terminal Full Disk Access |
That's the recommended intake: exact, fast, works headless. open_tabs mode is available when you prefer scanning what's open — it uses whatever browser tooling your session has (Claude-in-Chrome extension, a local browser tool, or Playwright MCP) and classifies heuristically, because no browser API exposes tab-group membership. And manual mode needs no browser at all.
Notification channels
| Channel | Needs | Setup |
|---|---|---|
| Slack | connector or incoming webhook | connector mode wants the channel ID (channel details → Copy channel ID); webhook walkthrough in INSTALL.md |
| a connected mail tool that can send | destination address | |
| File | nothing | always on — digest_dir/digest-YYYY-MM-DD.md |
The history log
Every real digest run appends its items — title, URL, and the written summary — to one append-only markdown file (history_file, default in the plugin's local data folder ~/.claude/reading-digest/). It's your lifetime reading record: grep it, open it in Obsidian, or ask Claude questions against it.
Scheduling the daily run
Claude / Cowork scheduled task — create a scheduled task with a prompt like:
Run /reading-digest:run and deliver the digest to my configured channels.
macOS launchd / cron (Claude Code CLI):
# crontab -e — weekdays at 7:30
30 7 * * 1-5 claude -p "/reading-digest:run" >> ~/reading-digests/cron.log 2>&1
GitHub Actions — works in queue-only mode (no browser in CI): commit your queue file to a repo, run with --no-intake, notify via the Slack webhook.
Privacy
Everything runs where you run it. Bookmarks are read locally; the queue, digests, and history are plain files you own; and nothing is sent anywhere except the Slack channel and/or email address you configure.
Troubleshooting
"Folder not found" — the script prints every folder name it did find; update queue_label (matching is case-insensitive). Safari permission error — grant your terminal app Full Disk Access (System Settings → Privacy & Security). Slack channel search finds nothing — that's why setup asks for the channel ID directly. Cloud/Cowork sessions — the cloud workspace can't read your laptop's bookmark files; use open_tabs intake via the Chrome extension, keep the queue file in a connected folder, or add links with /reading-digest:add.
Contributing
Adapters are small and self-contained — new notifiers and browsers are very welcome. See CONTRIBUTING.md. Run the regression suite with python3 tests/run_tests.py.
License
MIT © 2026 David Johnson Igra