Auto-skip in-video ads and sponsor segments - think AI-powered SponsorBlock without the manual work.
A Chrome extension + server that uses LLM analysis of video captions to detect and automatically skip sponsor reads, affiliate promotions, cross-promos, and other ad segments in YouTube videos. Currently in POC state.
Chrome Extension Server (:3001)
┌──────────────┐ ┌──────────────────────┐
│ content.ts │──videoId──→ │ POST /segments/:id │
│ detects YT │ │ ↓ │
│ video, auto │ │ yt-dlp fetches VTT │
│ skips ads │ │ captions │
│ │ │ ↓ │
│ background.ts│←─ad blocks── │ GPT-4o analyzes │
│ fetch proxy │ via poll │ transcript for ads │
│ │ │ ↓ │
│ popup.html │ │ GET /segments/:id │
│ shows found │ │ → cached result │
│ segments │ └──────────────────────┘
└──────────────┘
- Extension detects the YouTube video ID
- Sends it to the local server, which fetches captions via
yt-dlp - GPT-4o analyzes the transcript to find ad/sponsor segments
- Extension polls for results, then automatically skips detected segments during playback
- A "Skipped ad" pill appears in the video player when a skip happens
- Click the extension icon to see all detected segments and jump to any of them
- Sponsor reads ("This episode is sponsored by...")
- Affiliate promotions with discount codes
- Cross-promotions for other podcasts/shows
- Premium subscription and membership upsells
- Merch store promotions
- Pre-roll and mid-roll ad breaks
It does not flag editorial content, outro credits, guest thank-yous, or casual brand mentions.
- Node.js 18+
- yt-dlp on PATH (
brew install yt-dlp) - An OpenAI API key
git clone https://github.com/masone/yt-ad-skip.git
cd yt-ad-skip
npm installCreate a .env file:
OPENAI_API_KEY=sk-...
npm start # Start the server on :3001
npm run build # Compile the extension to extension/dist/- Open
chrome://extensions - Enable "Developer mode"
- Click "Load unpacked" and select the
extension/folder - Navigate to any YouTube video — the extension handles the rest
- Automatic skipping: Just watch YouTube. The extension detects videos, sends them for analysis, and skips ad segments as they come up.
- Extension popup: Click the extension icon to see detected segments with timestamps and reasons. Click any segment to jump to its end.
- "Skipped ad" pill: Appears in the top-right of the video player for 3 seconds when a segment is skipped.
Results are cached in out/<videoId>/ — delete a folder to re-process a video.
| Command | Description |
|---|---|
npm start |
Start the server |
npm run build |
Build the extension |
npm run typecheck |
Type-check everything |
npm test |
Run unit tests |
npm run eval |
Run eval suite |