A web application that extracts URLs from your Safari Reading List and uses Claude AI to generate summaries of the articles.
- Safari Integration: Automatically syncs URLs from your Safari Reading List
- AI Summarization: Uses Claude API to generate intelligent summaries
- Custom Instructions: Add your own instructions to customize how articles are summarized
- Flexible Processing: Process individual items or batch process multiple items
- Reprocessing Options: Choose to reprocess all items or only new ones
- Clean UI: Simple, modern interface to view and manage your reading list
- Backend: Python + FastAPI
- Database: SQLite
- Frontend: HTML/CSS/JavaScript
- AI: Anthropic Claude API
- Web Scraping: BeautifulSoup + Requests
cd /Users/jakuboleksy/github/reading-list-processorpython3 -m venv venv
source venv/bin/activatepip install -r requirements.txtCreate a .env file in the root directory:
cp .env.example .envEdit .env and add your configuration:
ANTHROPIC_API_KEY=your_actual_api_key_here
SAFARI_BOOKMARKS_PATH=/Users/yourusername/Library/Safari/Bookmarks.plist
Replace your_actual_api_key_here with your Anthropic API key.
uvicorn app.main:app --reloadThe application will be available at http://localhost:8000
- Sync Reading List: Click "Sync from Safari" to import URLs from your Safari Reading List
- View Items: All imported items will be displayed with their title, URL, and preview text
- Process Items:
- Click "Process" on individual items to generate a summary
- Click "Process All Unprocessed" to process all items that haven't been summarized yet
- Click "Reprocess All" to regenerate summaries for all items
- Custom Instructions: Click "Settings" to add custom instructions for how Claude should summarize articles
- Delete Items: Remove items from the database by clicking "Delete"
GET /- Main web interfaceGET /api/items- Get all reading list itemsPOST /api/sync- Sync from Safari Reading ListPOST /api/process- Process items with ClaudeGET /api/settings- Get application settingsPOST /api/settings- Update application settingsDELETE /api/items/{item_id}- Delete an item
reading-list-processor/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI application
│ ├── models.py # Database models
│ ├── database.py # Database configuration
│ ├── safari_reader.py # Safari Reading List parser
│ ├── summarizer.py # Claude API integration
│ ├── static/
│ │ ├── styles.css # Styles
│ │ └── app.js # Frontend JavaScript
│ └── templates/
│ └── index.html # Main HTML template
├── requirements.txt
├── .env
└── README.md
- The application reads your Safari Reading List from the Bookmarks.plist file (read-only)
- All data is stored in a local SQLite database (
reading_list.db) - The Claude API requires an active Anthropic account and API key
- Processing times depend on article length and API response times