Auto-advance reels & shorts on TikTok, YouTube Shorts, Instagram Reels, Facebook and X — with a draggable floating mini-window (Picture-in-Picture).
When you finish watching a reel/short, Reels Cycler automatically moves you to the next one — without you touching the keyboard, mouse, or phone. Works across five major platforms:
- YouTube Shorts
- TikTok
- Instagram Reels
- Facebook Watch
- X (Twitter)
It also gives every video a small, draggable Picture-in-Picture button so you can pop the video out into a floating mini-window — drag it to any monitor, keep watching while you work in other apps.
- ✅ Auto-next on natural video end — never restarts the same reel by accident
- ✅ Draggable PiP button on every video — hover to reveal, drag to reposition, click to toggle Picture-in-Picture (position is remembered per device)
- ✅ MediaSession prev/next — the ⏮ ⏭ buttons in PiP's title bar actually navigate reels via each site's own privileged handler
- ✅ PiP transfer on next — clicking ⏭ in PiP moves the floating window to the new reel
- ✅ Cross-site cycle — manually rotate between the open tabs of YT / TikTok / Insta / FB / X
- ✅ 10 languages — Turkish, English, Spanish, French, German, Italian, Portuguese, Russian, Arabic, Japanese (auto-selected from Chrome's UI language)
- ✅ Zero tracking, zero accounts — fully local, no analytics, no remote calls
- ✅ MV3 service worker — modern Chrome architecture
- Download or clone this repo
- Open
chrome://extensions - Toggle Developer mode (top-right)
- Click Load unpacked
- Select the
chrome-social-cyclerfolder
The icon will appear in the toolbar. Pin it.
| What you want | How |
|---|---|
| Watch a reel in a floating window | Hover the video → click the PiP button (top-right corner) |
| Move the PiP button | Click + hold + drag it anywhere on the page (position remembered) |
| Manually jump to the next site | Open extension popup → click "Switch now →" |
| Navigate reels inside PiP | Use the ⏮ ⏭ buttons in PiP's title bar |
| Toggle behaviors | Open the popup — every option has a one-line plain-language hint |
inject.jsruns in MAIN world and:- Removes the
loopattribute browsers set on reels so the nativeendedevent fires properly - Wraps
navigator.mediaSession.setActionHandlerso the site's own next/previous handlers (which run in privileged context) are preserved and triggered when PiP buttons are pressed - Falls back to
scrollIntoViewon the next sibling reel element if the site's own handler isn't available
- Removes the
content.jsruns in ISOLATED world and provides:- The draggable PiP button, position persisted in
chrome.storage.local - Cross-tab cycle messaging to the service worker
- The draggable PiP button, position persisted in
background.js(service worker) manages cycling between tabs without focusing the Chrome window (so it doesn't interrupt other apps)
The trickiest part — programmatic scroll/click/KeyboardEvent are rejected by modern reels SPAs (they require trusted user input). The solution: ride the site's own MediaSession handler, which carries user activation when a real user presses PiP's button. For natural video-end advancement, Chrome's native autoplay-next kicks in once loop is removed.
Other extensions exist for individual sites (YouTube Shorts auto-scroll, TikTok auto-next, etc.) but nothing handles all five platforms with PiP + cross-site cycling. This is the unified package.
The platform-specific navigation logic was studied from these open-source projects — credit to their authors:
- Tyson3101/Auto-Youtube-Shorts-Scroller —
scrollIntoViewpattern for YouTube - Tyson3101/Auto-TikTok-Scroller — TikTok feed container selectors
- CPT-Dawn/EXT-YouTube-Shorts-Auto-Scroller — the critical
loopattribute removal trick - nopigom119/youtube_shorts_autoscroll —
timeupdatebased progress detection - panthebig/Youtube-Shorts-Autoscroller-Chrome-Extension —
document.dispatchEvent(KeyboardEvent)fallback approach
PRs are welcome — see CONTRIBUTING.md. The most useful contributions right now:
- Selectors for Instagram Reels and Facebook Watch auto-advance (currently fallback-only)
- Additional languages in
_locales/ - Bug reports with the page URL, browser version, and a short reproduction
MIT — do whatever you want, please don't ship malware.
Reels Cycler, bir reels/short bittiğinde otomatik olarak sıradakini açar — klavyeye, fareye veya telefona dokunmadan. Beş büyük platformda çalışır:
- YouTube Shorts
- TikTok
- Instagram Reels
- Facebook Watch
- X (Twitter)
Ayrıca her videoya sürüklenebilir bir Mini Pencere (Picture-in-Picture) butonu ekler. Videoyu küçük bir pencerede pop-up gibi koparıp istediğin ekrana sürükleyebilir, başka uygulamada çalışırken izlemeye devam edebilirsin.
- ✅ Video gerçekten bitince geç — yanlışlıkla aynı reel'i tekrar başlatmaz
- ✅ Her videoda sürüklenebilir PiP butonu — hover ile görün, sürükleyip taşı, tıklayıp PiP'i aç/kapat (konumu hatırlanır)
- ✅ PiP penceresinde ⏮ ⏭ butonları — sitenin kendi ayrıcalıklı handler'ı üzerinden gerçek reel geçişi
- ✅ PiP transferi — ⏭'e bastığında PiP yeni videoya transfer olur
- ✅ Siteler arası döngü — popup'taki "Şimdi geç →" ile YT / TikTok / Insta / FB / X arasında dolaş
- ✅ 10 dil — Türkçe, İngilizce, İspanyolca, Fransızca, Almanca, İtalyanca, Portekizce, Rusça, Arapça, Japonca (Chrome'un diline göre otomatik)
- ✅ Hiç takip yok, hesap yok — tamamen yerel, analytics yok, harici çağrı yok
- ✅ MV3 service worker — modern Chrome mimarisi
- Bu repoyu indir veya klonla
chrome://extensionsaç- Geliştirici modu'nu aç (sağ üst)
- Paketlenmemiş öğe yükle
chrome-social-cyclerklasörünü seç
Simge araç çubuğuna gelir. Pinle.
| İstediğin | Nasıl |
|---|---|
| Videoyu mini pencerede izle | Video'ya hover et → PiP butonuna tıkla (sağ üst köşede) |
| Buton konumunu değiştir | Butonu tut + sürükle + bırak (konum hatırlanır) |
| Diğer siteye elle geç | Extension popup → "Şimdi geç →" |
| PiP içinde reels gezme | PiP penceresinin üst kontrol çubuğundaki ⏮ ⏭ butonları |
| Ayarları değiştir | Popup'ı aç — her seçeneğin altında 1 cümle açıklama var |
inject.jsMAIN world'de çalışır:- Reels sitelerinin
<video>elementlerine eklediğiloopattribute'unu kaldırır — böyleceendedevent'i doğal olarak fire eder navigator.mediaSession.setActionHandlerwrapper'lar — sitenin kendi next/previous handler'larını koruyup PiP butonu basıldığında tetikler- Site handler'ı yoksa
scrollIntoViewile yedek scroll yapar
- Reels sitelerinin
content.jsISOLATED world'de:- Sürüklenebilir PiP butonu (konum
chrome.storage.local'de) - Tab arası cycle mesajları
- Sürüklenebilir PiP butonu (konum
background.js(service worker) — Chrome penceresini öne çıkarmadan tab değişimi yapar
En zor kısım: modern reels SPA'leri programatic scroll/click/KeyboardEvent'ı reddediyor (trusted user input istiyor). Çözüm: sitenin kendi MediaSession handler'ına binmek — kullanıcı PiP butonuna gerçekten bastığında user activation taşınıyor. Doğal video sonu için Chrome'un native autoplay-next'i devreye giriyor (sadece loop kaldırılırsa).
Tek tek siteler için extension'lar var (YouTube Shorts autoscroll, TikTok auto-next vb.) ama beş platformu birden + PiP + siteler arası geçişi destekleyen yok. Bu birleşik paket.
Platform-özel gezinme mantığı şu açık kaynak projelerinden incelendi:
- Tyson3101/Auto-Youtube-Shorts-Scroller
- Tyson3101/Auto-TikTok-Scroller
- CPT-Dawn/EXT-YouTube-Shorts-Auto-Scroller — kritik
loopattribute kaldırma yöntemi - nopigom119/youtube_shorts_autoscroll
- panthebig/Youtube-Shorts-Autoscroller-Chrome-Extension
PR'lar bekleniyor — CONTRIBUTING.md. Şu an en faydalı katkılar:
- Instagram Reels ve Facebook Watch için auto-advance selector'ları (şu an sadece fallback)
_locales/altında yeni diller- Hata raporları — sayfa URL'i, Chrome versiyonu, kısa repro
MIT — istediğin gibi kullan, ama lütfen kötü amaçlı yazılım yapma.
