For every article you starred and forgot.
TL;DR is a Chrome extension + AI pipeline that automatically summarizes any article you save — and reads it back to you like a podcast. Save it once. Get the summary. Listen on the go.
Built at DiamondHacks 2026, powered by Browser Use.
- One click — save any article from Chrome with the extension
- AI browsing agent — Browser Use navigates the live page like a human, extracting the full content
- Gemini summarization — clean, concise 3-5 sentence prose summary, no bullet points
- Audio version — full text-to-speech MP3, ready to listen like a podcast
- Email notification — get pinged the moment your summary is ready
- Live dashboard — your digest, stats, and audio player, all in one place
Works on articles, PDFs, research papers, news sites — anything.
| Layer | Tech |
|---|---|
| Chrome Extension | Manifest V3 |
| Backend | Python, Flask, SQLite |
| AI Browsing Agent | Browser Use + LangChain |
| Summarization | Gemini 2.0 Flash |
| Text-to-Speech | gTTS |
| Notifications | SMTP (Gmail) |
| Frontend | HTML, CSS, Vanilla JS |
- Python 3.11+
- Conda
- Google API Key (Gemini)
- OpenAI API Key
- Chrome browser
git clone https://github.com/yourusername/tldr.git
cd tldrconda create -n tldr_env python=3.11
conda activate tldr_env
pip install -r requirements.txtCreate a .env file in the backend/ folder:
GOOGLE_API_KEY=your_gemini_api_key
OPENAI_API_KEY=your_openai_api_key
EMAIL_ADDRESS=your_gmail@gmail.com
EMAIL_PASSWORD=your_gmail_app_passwordNote: Gmail requires an App Password — not your regular password.
cd backend
python app.pyBackend runs at http://127.0.0.1:8080
- Open Chrome →
chrome://extensions - Enable Developer mode
- Click Load unpacked
- Select the
extension/folder
Open dashboard/index.html in your browser.
TL;DR/
├── backend/
│ ├── app.py # Flask API
│ ├── agent.py # Browser Use agent + PDF handler
│ ├── summarizer.py # Gemini summarization
│ ├── tts.py # gTTS audio generation
│ └── audio/ # Generated MP3s
├── extension/
│ ├── manifest.json
│ ├── popup.html
│ └── popup.js
└── dashboard/
├── index.html
├── styles.css
└── app.js
User clicks extension
↓
Chrome sends URL → Flask API
↓
Browser Use opens page in real Chromium
(waits through Cloudflare, JS rendering, etc.)
↓
Gemini 2.0 Flash summarizes content
↓
gTTS converts summary → MP3
↓
Email notification sent to user
↓
Dashboard shows summary + audio player
- Stats — total saved, summarized, time saved, audio ready
- Article cards — summary, source, read time
- Audio player — play/pause, skip ±15s, scrub bar
- Mode toggle — Text, Audio, or Both
- Email notifications — register once, get pinged every time
- Some sites (e.g. Medium) require Cloudflare to auto-resolve — this adds a few seconds
- Gmail SMTP requires an App Password, not a regular password
- Gemini free tier has rate limits — use a billing-enabled project for heavy use