Skip to content

About

Auto-advance reels & shorts on TikTok, YouTube, Instagram, Facebook & X — with a draggable floating Picture-in-Picture mini-window. Chrome MV3 extension. 10 languages. Zero tracking.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Reels Cycler

Reels Cycler

Auto-advance reels & shorts on TikTok, YouTube Shorts, Instagram Reels, Facebook and X — with a draggable floating mini-window (Picture-in-Picture).

Manifest V3 License: MIT Languages: 10 PRs Welcome

English · Türkçe


English

What it does

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.

Features

  • ✅ 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

Install (developer mode, until store approval)

  1. Download or clone this repo
  2. Open chrome://extensions
  3. Toggle Developer mode (top-right)
  4. Click Load unpacked
  5. Select the chrome-social-cycler folder

The icon will appear in the toolbar. Pin it.

Daily use

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

How it works (technical)

  1. inject.js runs in MAIN world and:
    • Removes the loop attribute browsers set on reels so the native ended event fires properly
    • Wraps navigator.mediaSession.setActionHandler so the site's own next/previous handlers (which run in privileged context) are preserved and triggered when PiP buttons are pressed
    • Falls back to scrollIntoView on the next sibling reel element if the site's own handler isn't available
  2. content.js runs in ISOLATED world and provides:
    • The draggable PiP button, position persisted in chrome.storage.local
    • Cross-tab cycle messaging to the service worker
  3. 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.

Why this exists

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.

Acknowledgements

The platform-specific navigation logic was studied from these open-source projects — credit to their authors:

Contributing

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

License

MIT — do whatever you want, please don't ship malware.


Türkçe

Ne yapar

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.

Özellikler

  • ✅ 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

Kurulum (mağaza onayı gelene kadar geliştirici modu)

  1. Bu repoyu indir veya klonla
  2. chrome://extensions aç
  3. Geliştirici modu'nu aç (sağ üst)
  4. Paketlenmemiş öğe yükle
  5. chrome-social-cycler klasörünü seç

Simge araç çubuğuna gelir. Pinle.

Günlük kullanım

İ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

Nasıl çalışır (teknik)

  1. inject.js MAIN world'de çalışır:
    • Reels sitelerinin <video> elementlerine eklediği loop attribute'unu kaldırır — böylece ended event'i doğal olarak fire eder
    • navigator.mediaSession.setActionHandler wrapper'lar — sitenin kendi next/previous handler'larını koruyup PiP butonu basıldığında tetikler
    • Site handler'ı yoksa scrollIntoView ile yedek scroll yapar
  2. content.js ISOLATED world'de:
    • Sürüklenebilir PiP butonu (konum chrome.storage.local'de)
    • Tab arası cycle mesajları
  3. 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).

Neden var

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.

Teşekkür

Platform-özel gezinme mantığı şu açık kaynak projelerinden incelendi:

Katkı

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

Lisans

MIT — istediğin gibi kullan, ama lütfen kötü amaçlı yazılım yapma.

About

Auto-advance reels & shorts on TikTok, YouTube, Instagram, Facebook & X — with a draggable floating Picture-in-Picture mini-window. Chrome MV3 extension. 10 languages. Zero tracking.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages