Fetch and analyze Readwise reading activity for any date range. Use when user asks about articles saved, highlights created, or most-highlighted content for today, yesterday, last week, last month, or custom date ranges (e.g., "show my Readwise activity from Jan 1-7"). Requires READWISE_API_TOKEN env var. Connects to Readwise Highlights API (v2) and Reader API (v3).
Resources
5Install
npx skillscat add otrebu/agents/readwise-api Install via the SkillsCat registry.
We need to produce a 2-3 sentence plain-text summary, objective, factual, no marketing language, no superlatives, no calls to action. Must be at most 60 words. No quotes, no markdown, no bullet points, no headings. Just plain text. Summarize: skill fetches and analyzes Readwise reading activity for any date range, using Readwise APIs, requires token, can fetch saved articles, highlights, most-highlighted content. Problem: need to retrieve personal reading data from Readwise for analysis or reporting.
Readwise API
Connect to Readwise APIs to fetch and analyze reading activity.
Overview
Fetch saved articles, highlights, and identify most-highlighted content from user's Readwise account for any date range. Uses Readwise v2 Highlights API and v3 Reader API.
Default behavior: Last 7 days (when no date flags specified)
Prerequisites
API Token: Set READWISE_API_TOKEN environment variable
- Get token: https://readwise.io/access_token
export READWISE_API_TOKEN="your_token_here"
Dependencies: Installed via pnpm (auto on first use)
- chalk (terminal colors)
- ora (spinners)
- TypeScript support
Date Range Options
All commands support flexible date ranges via flags:
Preset Shortcuts
--today: Midnight today → now--yesterday: Yesterday (full day)--last-week: Last 7 days (default when no flags specified)--last-month: Last 30 days
Custom Ranges
--from YYYY-MM-DD: Start date (inclusive)--to YYYY-MM-DD: End date (inclusive)- Can use together:
--from 2025-01-01 --to 2025-01-07
Examples
# Today only
pnpm tsx scripts/fetch-todays-activity.ts articles --today
# Yesterday
pnpm tsx scripts/fetch-todays-activity.ts highlights --yesterday
# Custom range
pnpm tsx scripts/fetch-todays-activity.ts all --from 2025-01-01 --to 2025-01-07
# Default (no flags) = last 7 days
pnpm tsx scripts/fetch-todays-activity.ts allNote: Reader API doesn't support end dates natively. Articles filtered client-side for accurate date ranges.
Core Capabilities
Default: Comprehensive Activity Summary
Command:
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts all [date-flags]Output: Four-section analysis w/ insights-first approach:
🧠 Key Learnings
- Top 5 insights extracted from highlight content
- Domain-tagged bullets (emoji + category: insight)
- Reading context paragraph (pattern + domain mix)
📈 Activity Timeline
- Daily breakdown w/ visual bars (unicode blocks)
- Peak days identified
- Reading pattern analysis (consistent/burst/weekend/weekday)
📂 By Category
- Domain grouping w/ visual bars + percentages
- Auto-inferred from content (Architecture, Performance, Psychology, etc.)
- Top 2 focus areas highlighted
📊 Stats Dashboard
- Articles saved, highlights created
- Unique sources, avg/day
- Top source by highlight count
When to use: User asks "Show my Readwise activity", "What have I been learning?", "My reading summary"
Individual Modes
1. Key Learnings Only
Command:
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts learnings [date-flags]Output: Insights + context only (no timeline/stats)
When to use: User wants just the learnings/insights
2. Activity Timeline Only
Command:
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts timeline [date-flags]Output: Daily activity visualization + peaks + pattern
When to use: User asks "When am I most active?" or "Show my reading schedule"
3. Category Breakdown Only
Command:
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts categories [date-flags]Output: Domain distribution w/ visual bars
When to use: User asks "What topics am I focusing on?" or "My reading categories"
4. Stats Dashboard Only
Command:
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts dashboard [date-flags]Output: Stats summary box
When to use: User wants quick metrics only
Legacy Modes (Still Available)
Articles
Command: pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts articles [date-flags]
Output: List of saved articles w/ categories, titles, authors, URLs
Highlights
Command: pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts highlights [date-flags]
Output: All highlights grouped by source, showing text + notes
Top Highlighted
Command: pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts top-highlighted [N] [date-flags]
Output: Top N sources ranked by highlight count
Usage Examples
Example 1: "What have I been learning on Readwise this week?"
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts allReturns comprehensive analysis: insights, timeline, categories, stats (default = last 7 days)
Example 2: "Show my key insights from today"
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts learnings --todayReturns top 5 insights extracted from today's highlights + reading context
Example 3: "When am I most active on Readwise?"
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts timeline --last-monthReturns daily activity visualization for last 30 days w/ peak identification
Example 4: "What topics am I focusing on?"
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts categoriesReturns domain distribution w/ visual bars (default = last 7 days)
Example 5: "Show Readwise stats from Jan 1-7"
pnpm tsx skills/readwise-api/scripts/fetch-todays-activity.ts dashboard --from 2025-01-01 --to 2025-01-07Returns metrics dashboard for custom date range
Error Handling
Missing API token: Clear error with link to get token
Rate limits: Automatic 3s delays between paginated requests (20 req/min limit)
Network errors: Graceful failure with error messages via spinner
Empty results: Friendly "no activity yet" messages
API Details
Rate Limits: 20 requests/minute per access token
- Script auto-throttles with 3s delays between requests
- Pagination handled automatically
Date Filtering:
- Presets: today, yesterday, last-week (7d), last-month (30d)
- Custom ranges via --from/--to flags (ISO 8601: YYYY-MM-DD)
- Default: last 7 days
- Timezone: Local (dates converted to UTC for API)
Reader API Limitation:
- Supports only start date (
updatedAfter), no end date - End date filtering done client-side after fetch
- May fetch extra data that gets filtered locally
Pagination: Automatically follows next URLs (v2) and pageCursor (v3)
Implementation
API Client: scripts/readwise-client.ts
- Pure functions, typed errors
- Handles pagination and rate limiting
- Returns
ApiResult<T>with success/error
Analysis: scripts/analyze-highlights.ts
- Daily grouping + peak detection
- Domain inference (14 categories: Architecture, Performance, Psychology, etc.)
- NLP-style insight extraction (sentence scoring, clustering, ranking)
- Pattern analysis (consistent/burst/weekend/weekday reader)
- Pure functions, immutable transformations
CLI: scripts/fetch-todays-activity.ts
- Human-readable terminal output w/ unicode visual bars
- Colored text via chalk, spinners via ora
- Eight modes: learnings, timeline, categories, dashboard, articles, highlights, top-highlighted, all
- Default order: insights → timeline → categories → stats
Tests: scripts/__tests__/analyze-highlights.test.ts
- Comprehensive coverage (52 tests)
- Edge cases: empty data, date boundaries, pattern detection
References
Detailed API documentation: references/api_reference.md
- Endpoint details
- Authentication
- Rate limits
- Request/response formats
- Example code