Inspiration
You're deep in a YouTube haul or an IG reel, you see the exact jacket you've been looking for, you tell yourself you'll come back and buy it later, but you never do.
What it does
Scout is a Chrome extension that turns any YouTube video into a shoppable list. One click on the "Save to Scout" button and we ingest the full video: title, description, transcript, top comments, and dense visual samples across the entire timeline. Each identified item comes with a clean search query so the next click is the buy. Scout is the memory layer.
How we built it
- Manifest V3 Chrome extension with service worker, YouTube content script, popup, and a full-page saves view
- Full-signal capture. From the watch page we pull the title,
channel, description, and current frame viacanvas.drawImage, - Dense timeline sampling via storyboard mosaics. Using
playerStoryboardSpecRenderer.specon every watch page, we parse the spec, pick the
densest level that fits under a sheet cap, and feed the mosaics to
the model as a single ordered strip. A 20-minute video becomes
hundreds of frames covering the full timeline. - Gemini 2.5 Flash vision with a structured JSON response schema,
a system prompt tuned for shoppable-product extraction. - Storage and UX. Products land in
chrome.storage.localwith
full video context, a searchable/filterable list, JSON + CSV
export, and per-video notes.
Challenges we ran into
- Race conditions in the content script. YouTube's SPA fires
yt-navigate-finishaggressively; two concurrent injections were producing duplicate save buttons. Fixed with an in-flight flag and
a post-await re-check. - Embeds.
youtube.com/embedrejectschrome-extension://
origins (Error 153), andyoutube-nocookie.comstill fails on
uploader embed-disabled videos. We abandoned the iframe. - Model hygiene. Gemini liked to fill required fields with
"Unknown","N/A", and"0:00"instead ofnull. Coercion
layer + explicit prompt instructions got us more clean data.
What's next
- Instagram Reels and TikTok support on the same pipeline, though all three (incl. YT) are walled gardens.
- Direct links from each detected product to the retailer, so "one
click" really is one click.
- Price + availability refresh in the saves view.
Built With
- captions)
- chrome-devtools-mcp
- chrome-extension-manifest-v3
- chrome-storage-api
- css
- google-gemini-2.5-flash-(vision)
- html
- html5
- javascript
- node.js
- openai-gpt-4o-mini
- openrouter
- service-workers
- youtube-data-(storyboards
- ytinitialplayerresponse
Log in or sign up for Devpost to join the conversation.