A self-hosted Twitch VOD rerun system built entirely with Hono + Cloudflare Pages + KV. Play your old VODs on loop through OBS with a VLC source, complete with live overlays and automatic stream category updates. No React or Next.js required.
- 📺 VOD Playlist — Add Twitch VOD URLs, auto-resolves stream URLs for VLC
- ✅ Enable/Disable VODs — Toggle individual VODs without deleting them
- 🎮 OBS Remote Control — Play, pause, stop, next, previous, shuffle via WebSocket over Local or Remote tunnels.
- 🔄 Auto Category Update — Automatically updates your Twitch stream category when a new VOD starts
- ⏳ Countdown Overlay — Dynamic "Going Live" countdown timer
- 📊 Follower & Sub Overlays — Live browser source overlays with customizable progress bars and goals
- ❤️ Recent Followers Ticker — Scrolling marquee of your latest followers
- 🎨 Fully Customizable — Colors, sizes, timezones, scroll speed, follower count — all visually configurable from the dashboard.
- Node.js v18+
- Cloudflare account (free tier works)
- Wrangler CLI —
npm install -g wrangler
git clone https://github.com/AlphaKing112/twitchrerun.git
cd twitchrerun
npm installwrangler kv namespace create RERUN_STORECopy the id from the output and update wrangler.toml:
[[kv_namespaces]]
binding = "RERUN_STORE"
id = "YOUR_KV_ID_HERE"# Deploys directly to Cloudflare Pages without compiling
npm run deploy- Open your deployed URL.
- Connect to OBS WebSocket (Tools → WebSocket Server Settings in OBS).
- Go to Twitch Access and enter your User Access Token.
Go to twitchtokengenerator.com and generate a Custom Bot Token (or User Token) with these specific scopes required for the dashboard features:
moderator:read:followers— Required for follower count & recent followers listschannel:read:subscriptions— Required for subscriber countschannel:manage:broadcast— Required for auto category updates when a new rerun starts
Copy the overlay URLs from the dashboard and add them as Browser Sources in OBS:
| Overlay | Recommended Size |
|---|---|
| Followers Goal | 280 × 80 |
| Subscribers Goal | 280 × 80 |
| Recent Followers Ticker | 1200 × 60 |
| Countdown Timer | 800 × 120 |
Since this project has been streamlined from Next.js to pure Cloudflare Pages functions, local development is instantaneous.
# Run with Cloudflare Workers runtime (full local test with KV emulation)
npm run dev- Hono — Lightweight web framework powering the backend routes and HTML injection.
- Cloudflare Pages Functions — Serverless edge hosting.
- Cloudflare KV — Persistent key-value storage for dashboard settings and playlists.
- obs-websocket-js — Browser-side OBS remote control over WebSockets.