Short description
PlayNotes is a Chrome extension that turns saved web text and personal notes into a lightweight listening library. Capture selected text from any page, organize notes into playlists, and play them back with browser speech synthesis so reading material becomes a hands-free audio queue.
Long description
PlayNotes helps people turn scattered reading material into an organized listening workflow. Instead of leaving useful articles, snippets, references, and study material across tabs or bookmarks, PlayNotes lets users save selected text from the browser, capture the current page, organize notes into playlists, search their library, and listen with auto-play next.
The core experience is intentionally lightweight: collect something while browsing, structure it into a playlist, and listen later when reading is inconvenient. It is useful for students, researchers, builders, and professionals who want to convert reading queues into audio without adopting a heavy knowledge-management system.
What it does
- Creates, edits, searches, and plays notes.
- Captures selected webpage text with the right-click
Add to PlayNotesaction. - Captures current page context into a new note.
- Organizes saved notes into playlists.
- Continues listening with browser speech synthesis and auto-play next.
- Supports local storage, playback progress, voice/speed controls, and a Chrome keyboard shortcut.
- Packages as a Manifest V3 Chrome extension.
How it was built
PlayNotes is a vanilla JavaScript Chrome extension built on Manifest V3. It uses:
chrome.storage.localfor notes, playlists, queue state, settings, and playback progress.chrome.contextMenusfor selected-text capture.chrome.actionand popup UI for the main extension experience.chrome.ttsand an offscreen document for more durable audio playback.- A content script for in-page capture affordances.
- Local validation and packaging scripts so judges can quickly test the extension.
How Codex and GPT-5.6 were used
Codex with GPT-5.6 was used to prepare the project for OpenAI Build Week submission. It helped:
- Verify the correct source folder for PlayNotes.
- Inspect the Manifest V3 Chrome extension structure.
- Run the local validation script.
- Package the extension artifact for judges.
- Read the OpenAI Build Week Devpost requirements.
- Draft the project description, setup guidance, and demo script.
Challenges
The main challenge was keeping the product simple and judge-testable while covering multiple browser-extension surfaces: popup UI, background service worker, content script, offscreen audio, permissions, local storage, and packaging. PlayNotes needed to feel like a coherent product rather than a loose set of extension APIs.
Accomplishments
- Working Chrome extension.
- Local note library with playlists and search.
- Selected-text capture from webpages.
- Text-to-speech playback with queue/auto-next behavior.
- Offscreen audio support for continued listening.
- Fresh packaged artifact for testing.
- Clear README with local install instructions.
What we learned
Small browser extensions can create meaningful everyday workflows when they reduce friction at the exact moment of intent. PlayNotes turns "I should read this later" into "I can listen to this later" with very little ceremony.
What's next
- Add cloud sync across devices.
- Add smarter AI tagging and summarization.
- Add playlist generation from captured notes.
- Add PDF/article cleanup.
- Add Chrome Web Store publishing.
- Add study-question generation for learners.
Installation instructions for judges
- Download or clone the repository.
- Open Chrome and go to
chrome://extensions. - Enable
Developer mode. - Click
Load unpacked. - Select the PlayNotes extension folder.
- Pin and open PlayNotes.
- Create a note, highlight text on a webpage, right-click
Add to PlayNotes, organize the note into a playlist, and press play.
Packaged artifact
A packaged Chrome extension zip was prepared locally as playnotes-1.0.0.zip.
Built With
- chrome
- chrome.contextmenus
- chrome.storage.local
- chrome.tts
- codex
- css
- gpt-5.6
- html
- javascript
- manifest-v3
- offscreen-documents