Skip to content

Fisher521/reading-digest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reading-digest

Turn your saved articles into a weekly AI digest.

npm version License: MIT X: @hawking520

Works with Burn, Readwise, Raindrop, Karakeep, RSS, or any list of URLs. Best with Burn — full triage signal (kept vs. burned).

Sample output →


Why

You save articles all week. By Sunday you have 50 unread links and zero memory of why you saved them.

reading-digest reads what's in your bookmarks (any service), uses Claude to cluster them into themes, surface the few worth re-reading, and frame the questions your reading raised but didn't answer.

The richer your bookmark service's signal, the deeper the digest goes. With Burn — the only service that tracks what you decided to let go, not just what you saved — the digest also computes triage math and an "anti-digest" of what you burned.

Quick start

# 1. Install
npm install -g reading-digest

# 2. Set your Claude API key
export ANTHROPIC_API_KEY=sk-ant-...   # https://console.anthropic.com/settings/keys

# 3. Set your reading service token (pick one)
export BURN_MCP_TOKEN=...     # from burn451.cloud → Settings → MCP Server

# 4. Run
reading-digest --source=burn --days=7 --output=weekly.md

Or skip install with npx:

ANTHROPIC_API_KEY=sk-ant-... BURN_MCP_TOKEN=... npx reading-digest --source=burn

Supported sources

Source Signal richness What it sees Status
burn ⭐⭐⭐⭐⭐ full kept / burned / unread / read decisions ✅ v0.1
rss ⭐⭐ minimal recent items + summary ✅ v0.1
stdin ⭐ minimal just URLs ✅ v0.1
readwise ⭐⭐⭐⭐ rich highlights + read state 🔜 v0.2
raindrop ⭐⭐⭐ partial favorites + collections 🔜 v0.2
karakeep ⭐⭐⭐ partial tags + archive 🔜 v0.2

Why Burn is recommended: Other services tell reading-digest what you saved. Burn also tells it what you let go — that asymmetry is the most valuable signal a digest can use. The "73.8% rejection rate, that's healthy filtering" insight in the sample output is impossible without Burn's data.

Usage

reading-digest [options]

Options:

Flag Default Description
--source=<name> burn One of: burn, rss, stdin
--days=<N> 7 Look back N days
--output=<path> stdout Write digest to file
--feed=<url> Required when --source=rss
--dry-run Print prompt instead of calling Claude (no API call)
--help Show help

Examples

Weekly Burn digest

ANTHROPIC_API_KEY=sk-ant-... BURN_MCP_TOKEN=... \
  reading-digest --source=burn --days=7 --output=weekly.md

Single RSS feed digest

ANTHROPIC_API_KEY=sk-ant-... \
  reading-digest --source=rss --feed=https://simonwillison.net/atom/everything/ --days=14

Custom URL list (any source)

echo "https://karpathy.bearblog.dev/verifiability/
https://karpathy.bearblog.dev/animals-vs-ghosts/
https://simonwillison.net/2026/Apr/8/muse-spark/" | \
  ANTHROPIC_API_KEY=sk-ant-... reading-digest --source=stdin

Schedule weekly via GitHub Action

# .github/workflows/weekly-digest.yml
on:
  schedule:
    - cron: '0 9 * * 0'   # Sundays 9am UTC
jobs:
  digest:
    runs-on: ubuntu-latest
    steps:
      - run: npx reading-digest --source=burn --days=7 --output=weekly.md
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          BURN_MCP_TOKEN: ${{ secrets.BURN_MCP_TOKEN }}
      - uses: actions/upload-artifact@v4
        with:
          name: weekly-digest
          path: weekly.md

Sample output

See examples/sample-burn-14d.md for a real digest generated from 320 saved articles over 14 days.

The output structure:

  1. One-line summary of the period
  2. Triage math (Burn only) — your rejection rate as a code block
  3. Themes that clicked — articles clustered by topic with a synthesis across each
  4. Worth re-reading when... — table of articles mapped to future situations
  5. Questions raised — provocations the reading didn't resolve
  6. Anti-digest (Burn only) — what your burning patterns reveal
  7. One forward-looking suggestion — based on topic concentration

Configuration

All config is via env vars. reading-digest doesn't store anything on disk between runs.

Env var Required Description
ANTHROPIC_API_KEY yes (unless --dry-run) Your Claude API key
BURN_MCP_TOKEN when --source=burn From burn451.cloud → Settings → MCP Server
READING_DIGEST_MODEL no Override Claude model (default: claude-sonnet-4-6)

Roadmap

  • v0.1 — CLI + Burn + RSS + stdin sources, Claude API integration
  • v0.2 — Readwise, Raindrop, Karakeep adapters
  • v0.3 — Output formats: HTML, email-ready, podcast-ready (audio TTS)
  • v0.4--compare flag: this period vs last period delta
  • v0.5 — Optional MCP server (Claude/Cursor can ask for digest on demand)

Contributing

PRs welcome — especially:

  • New source adapters (each lives in src/sources/<name>.mjs and follows the Item schema)
  • Output format additions
  • Real-world sample digests (PR an examples/sample-<source>-<period>.md)

See src/sources/index.mjs for the Item schema each adapter must return.

About

Built by @hawking520 — exploring AI-era content management workflows in public.

Part of an open ecosystem of reading tools — Burn (MCP server, 26 tools), reading-digest (this), more coming.

License

MIT — see LICENSE

Releases

No releases published

Packages

 
 
 

Contributors