This directory contains browser console scripts to export your reading lists from Medium and Substack.
- Open https://medium.com/me/list/reading-list
- Open DevTools (F12)
- Go to Console tab
- Copy/paste contents of
export-medium.js - Press Enter
- Wait for download (CSV file)
- Use with web-recap:
web-recap reading-list --platform medium --file medium-reading-list-2025-12-27.csv
For public reading lists (e.g., https://medium.com/@username/list/reading-list):
- Open the public reading list URL in your browser
- Open DevTools (F12)
- Go to Console tab
- Copy/paste contents of
export-medium-public.js - Press Enter
- Wait for download (JSON file)
- Use with web-recap:
web-recap reading-list --platform medium --file medium-reading-list-2025-12-28.json
- Open https://substack.com/inbox
- Click "Saved" tab
- Open DevTools (F12)
- Go to Console tab
- Copy/paste contents of
export-substack.js - Press Enter
- Wait for download (JSON file)
- Use with web-recap:
web-recap reading-list --platform substack --file substack-saves-2025-12-27.json
- Open https://www.youtube.com/playlist?list=WL
- Open DevTools (F12)
- Go to Console tab
- Copy/paste contents of
export-youtube-watch-later.js - Press Enter
- Wait for download (JSON file)
- Copy videos to a public playlist:
web-recap youtube-copy-playlist --client-secret data/youtube/client.json --data data/youtube/watch-later-2025-12-28.json
- export-medium.js - Exports your own Medium reading list to CSV
- export-medium-public.js - Exports any public Medium reading list to JSON
- export-substack.js - Exports Substack saved posts to JSON
- export-youtube-watch-later.js - Exports YouTube Watch Later playlist to JSON
- README.md - This file
The scripts:
- Scroll through your reading list/saved posts
- Extract article data (title, URL, author, etc.)
- Format as CSV (Medium) or JSON (Substack)
- Trigger browser download
No download?
- Check browser's download settings
- Look in DevTools Console for errors
- Make sure you're logged in
Missing articles?
- Manually scroll first to load content
- Try running the script again
- Increase scroll wait time in the script
Empty fields?
- Normal - platforms don't always have all data
- web-recap handles missing fields gracefully
These scripts:
- ✅ Run entirely in your browser (client-side)
- ✅ Don't send data anywhere
- ✅ Don't require authentication credentials
- ✅ Are open source - review the code!
See READING_LIST.md for complete documentation.