AI-powered Chrome extension that automatically detects and skips sponsorships, intros, outros, and promotional content in YouTube videos using Claude AI or OpenAI.
Install from Chrome Web Store β’ Video β’ Screenshots β’ Support
skiptube-ai-promo.mp4
βΆ Press play for sound. Not rendering in GitHub? Download the MP4.
- π€ Multiple AI Providers: Choose between Anthropic Claude or OpenAI GPT for transcript analysis
- π― Smart Model Selection: Pick the best model for your needs (Haiku/Sonnet for Claude, GPT-4o/4o-mini for OpenAI)
- β‘ Automatic Skipping: Seamlessly skips detected segments without interruption
- π¨ Visual Timeline Markers: Color-coded segments on YouTube's progress bar
- βοΈ Customizable Categories: Choose what to skip (sponsors, intros, outros, donations, self-promo)
- πΎ Smart Caching: Stores analysis results locally for 30 days
- π Detailed Statistics: Track time saved, segments skipped, and analyzed videos
- π Privacy-First: All data stored locally, you control your own API key
- π― Channel Whitelist: Exclude specific channels to support your favorite creators
- β‘ Advanced Settings: Configure AI model, confidence threshold, and skip buffer
| Popup settings | Advanced configuration |
|---|---|
![]() |
![]() |
| Statistics | Channel exclusions |
|---|---|
![]() |
![]() |
-
Install from Chrome Web Store (Recommended)
- Visit the SkipTube AI Chrome Web Store page
- Click "Add to Chrome"
- Follow the installation prompts
-
Get Your API Key
Choose your preferred AI provider:
Option A: Anthropic Claude (Recommended)
- Visit Anthropic Console
- Create a free account if you don't have one
- Generate a new API key (starts with
sk-ant-)
Option B: OpenAI GPT
- Visit OpenAI Platform
- Create an account if you don't have one
- Generate a new API key (starts with
sk-)
-
Configure the Extension
- Click the SkipTube AI icon in your Chrome toolbar
- Select your AI Provider (Claude or OpenAI)
- Paste your API key in the corresponding section
- Click "Save"
- Choose your preferred AI model
- Select which categories to skip
- Done! Start watching YouTube videos
See Development Setup below.
- Transcript Extraction: When you watch a YouTube video with captions, SkipTube AI extracts the transcript from the page
- AI Analysis: The transcript is sent to Claude AI for intelligent analysis
- Segment Detection: Claude identifies sponsorships, intros, outros, donations, and self-promotions
- Smart Caching: Results are cached locally for 30 days to avoid re-analysis
- Visual Feedback: Colored markers appear on the video timeline
- Automatic Skipping: The extension automatically skips identified segments during playback
- β Your API key is stored locally in your browser (encrypted by Chrome)
- β All settings and cache are stored locally on your device
- β No tracking - we don't collect any personal data
- β No remote servers - we don't operate any backend
- β Open source - all code is publicly auditable
- β Transparent - only video transcripts are sent to Anthropic for analysis
Read our full Privacy Policy.
| Category | Description | Color |
|---|---|---|
| π― Sponsorships | Paid promotions, sponsored content, discount codes | π΄ Red |
| π¬ Intros | Opening sequences, channel intros | π΅ Cyan |
| π Outros | Closing sequences, end screens | π£ Purple |
| π Donations | SuperChat readings, patron mentions | π’ Green |
| π’ Self-Promotion | Merch plugs, social media callouts | π Orange |
Does it work on all YouTube videos?
It works on videos with available captions/transcripts. If a video doesn't have captions, the extension cannot analyze it.
Is my API key secure?
Yes! Your API key is stored locally using Chrome's secure storage API. It's never transmitted to us or third parties (except Anthropic for analysis).
Can I exclude certain channels?
Absolutely! Go to "Advanced Settings" β "Excluded channels" and add channels you want to support.
Does it slow down YouTube?
No! Analysis happens in the background. Already-analyzed videos load instantly (< 100ms) thanks to caching.
Can I customize what gets skipped?
Yes! You can individually enable/disable each category and adjust the AI confidence threshold (0.5-1.0).
- Node.js (v16 or higher)
- npm or yarn
- Chrome browser
- API key from either:
- Anthropic Console (Claude)
- OpenAI Platform (GPT)
git clone https://github.com/ChromuSx/SkipTubeAI.git
cd SkipTubeAI
npm install# Development build (with source maps)
npm run build
# Watch mode (rebuilds on file changes)
npm run watch
# Production build (minified)
NODE_ENV=production npm run build- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" (toggle in top-right)
- Click "Load unpacked"
- Select the
distdirectory (not the root directory!) - The extension is now loaded!
- Click the extension icon in Chrome toolbar
- Enter your Claude API key in the popup
- Click "Save"
Note: Unlike the old version, the API key is now configured through the UI, not hardcoded in source files.
SkipTubeAI/
βββ src/ # π SOURCE CODE (edit here)
β βββ background/ # Background service worker
β β βββ background-main.js # Main background orchestrator
β β
β βββ content/ # Content script (YouTube page)
β β βββ content-main.js # Main content orchestrator
β β
β βββ popup/ # Extension popup
β β βββ popup.html # Popup UI
β β βββ popup-main.js # Popup logic
β β
β βββ cache-viewer/ # Cache viewer page
β β βββ cache-viewer.html # Cache viewer UI
β β βββ cache-viewer-main.js # Cache viewer logic
β β
β βββ help/ # Help page
β β βββ help.html # Help page UI
β β βββ help.js # Help page script
β β
β βββ shared/ # Shared modules
β β βββ config.js # Configuration constants
β β βββ constants.js # Application constants
β β βββ utils.js # Utility functions
β β β
β β βββ errors/ # Error classes
β β β βββ base-error.js
β β β βββ api-error.js
β β β βββ storage-error.js
β β β βββ validation-error.js
β β β βββ transcript-error.js
β β β βββ error-handler.js
β β β
β β βββ logger/ # Logging system
β β β βββ log-levels.js
β β β βββ logger.js
β β β
β β βββ models/ # Data models
β β β βββ segment.js
β β β βββ transcript.js
β β β βββ settings.js
β β β βββ analysis-result.js
β β β
β β βββ validators/ # Validation logic
β β β βββ segment-validator.js
β β β βββ settings-validator.js
β β β βββ api-validator.js
β β β βββ transcript-validator.js
β β β
β β βββ repositories/ # Data access layer
β β β βββ cache-repository.js
β β β βββ settings-repository.js
β β β βββ stats-repository.js
β β β
β β βββ services/ # Business logic
β β βββ ai-service.js # AI analysis
β β βββ storage-service.js # Chrome storage wrapper
β β βββ analytics-service.js # Statistics tracking
β β βββ transcript-service.js # Transcript extraction
β β βββ providers/ # AI provider implementations
β β βββ base-provider.js # Abstract provider class
β β βββ claude-provider.js # Anthropic Claude
β β βββ openai-provider.js # OpenAI GPT
β β
β βββ manifest.json # Chrome extension manifest
β βββ icons/ # Extension icons
β βββ logo.png # Extension logo
β
βββ dist/ # π¦ BUILD OUTPUT (load this in Chrome!)
β βββ manifest.json # Copied from src/
β βββ popup.html # Copied from src/popup/
β βββ cache-viewer.html # Copied from src/cache-viewer/
β βββ help.html # Copied from src/help/
β βββ help.js # Copied from src/help/
β βββ icons/ # Copied from src/
β βββ logo.png # Copied from src/
β βββ background-bundle.js # Compiled from src/background/
β βββ content-bundle.js # Compiled from src/content/
β βββ popup-bundle.js # Compiled from src/popup/
β βββ cache-viewer-bundle.js # Compiled from src/cache-viewer/
β
βββ rollup.config.*.js # Build configurations
βββ package.json # Dependencies and scripts
βββ marketplace/ # Chrome Web Store listing text and assets
β βββ chrome-web-store/
β βββ screenshots/ # Store screenshots
β βββ promotional-images/ # Store promo tiles
β βββ promotional-video/ # MP4, thumbnail, YouTube metadata
β βββ video/ # Remotion source for the promo video
βββ PRIVACY.md # Privacy policy
βββ CLAUDE.md # Claude Code instructions
βββ README.md # This file
All store-ready assets live in marketplace/chrome-web-store/:
listing-description.md- detailed Chrome Web Store descriptionlisting-fields.md- name, summary, category, support URL, homepage URL, and privacy URLprivacy-dashboard.md- single purpose and permission justificationsscreenshots/- final store screenshotspromotional-images/- small and featured promotional tilespromotional-video/- rendered MP4, YouTube thumbnail, and upload metadatavideo/- Remotion source used to render the promotional video
Render the promo video locally with:
npm run promo:video:render
npm run promo:video:thumbnail- Edit files in
src/- This is your source code - Run
npm run build- Compiles everything todist/ - Load
dist/in Chrome - Load the dist folder as unpacked extension - Changes not showing? - Rebuild and reload the extension
YouTube Page (content.js)
β
Extract Transcript
β
Send to Background βββ Background Service Worker
β
Check Cache
β
AI Analysis (Claude)
β
Parse & Validate
β
Save Cache
β
Content Script βββββ Return Segments
β
Render Markers
β
Monitor & Skip
- AIService: Handles Claude API communication
- StorageService: Manages Chrome storage operations
- CacheRepository: Dual-layer caching (memory + persistent)
- AnalyticsService: Tracks statistics
- TranscriptService: Extracts transcripts from YouTube DOM
- VideoMonitor: Monitors playback and executes skips
- SegmentManager: Manages skip segments
- UIManager: Renders visual markers and notifications
- PopupManager: Manages settings UI
- SettingsRepository: Persists user preferences
- Models: Type-safe data structures (Segment, Transcript, Settings, AnalysisResult)
- Validators: Input validation and sanitization
- Errors: Custom error hierarchy
- Logger: Structured logging with levels
// src/shared/config.js
API: {
ENDPOINT: 'https://api.anthropic.com/v1/messages',
MODELS: {
HAIKU: 'claude-3-5-haiku-20241022', // Fast & economical
SONNET: 'claude-sonnet-4-5-20250929' // More accurate
}
}CACHE: {
MAX_AGE_DAYS: 30, // Auto-clean cache older than 30 days
KEY_PREFIX: 'analysis_'
}DEFAULTS: {
skipSponsors: true,
skipIntros: false,
skipOutros: false,
skipDonations: true,
skipSelfPromo: true,
autoSkip: true,
enablePreview: true
}The project uses Rollup for bundling with the following features:
- β Modular ES6+ source code
- β Tree-shaking for optimized bundles
- β Source maps in development mode
- β Minification in production mode
- β Separate bundles for background, content, popup, and cache-viewer
npm run build # Build all bundles
npm run build:content # Build content script only
npm run build:background # Build background script only
npm run build:popup # Build popup only
npm run build:cache-viewer # Build cache viewer only
npm run watch # Watch mode for development- Load extension in Chrome (see Development Setup)
- Open a YouTube video with captions
- Open DevTools Console (F12)
- Verify analysis starts automatically
- Check timeline for colored markers
- Test auto-skip functionality
- Background logs:
chrome://extensions/β Click "service worker" link - Content logs: F12 on YouTube page β Console tab
- Storage: DevTools β Application β Storage β Extension
- Clear cache: Click "Clear all" in extension popup
- Force reanalysis: Click "Reanalyze" button
- Verify the extension is enabled in
chrome://extensions/ - Check that the Active toggle is ON in the popup
- Ensure you've configured a valid API key
- Verify the video has captions/transcripts available
- Click the extension icon
- Enter your Claude API key in the "API Configuration" section
- Click "Save"
- Reload the YouTube page
- Video must have captions/transcripts
- Try manually opening the transcript panel on YouTube
- Check browser console for errors
- Verify at least one skip category is enabled
rm -rf node_modules dist
npm install
npm run build| Metric | Value |
|---|---|
| First analysis | 2-5 seconds |
| Cached video | < 100ms |
| Memory usage | 5-10 MB |
| Storage per video | 1-2 KB |
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Build and test:
npm run build - Commit:
git commit -m "Add amazing feature" - Push:
git push origin feature/amazing-feature - Open a Pull Request
- Follow existing code style
- Add JSDoc comments for new functions
- Test thoroughly before submitting
- Update documentation if needed
This project is completely free and open source. If you find it useful and would like to support its continued development and updates, consider making a donation. Your support helps keep the project alive and motivates me to add new features and improvements!
Every contribution, no matter how small, is greatly appreciated! β€οΈ
This project is licensed under the MIT License - see the LICENSE file for details.
- Claude AI by Anthropic for providing the AI analysis engine
- Chrome Extensions API for the extension framework
- Rollup for the build system
- YouTube for providing transcript data
- All contributors and users who provide feedback
- π Report bugs: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π Documentation: See CLAUDE.md for detailed implementation notes
- βοΈ Email: giovanni.guarino1999@gmail.com
If you find this extension helpful, consider β starring the repository!




