Inspiration

Twitch chat never stops, but streamers can't always read it. Mid-boss fight or on an IRL walk, questions, subs, and the best moments scroll away unseen. Late viewers miss them too, and chat fills with "what did I miss?" I wanted something that watches chat when nobody can and catches everyone up in seconds.

What it does

Rewind keeps streamers and viewers caught up on what was said, what was hype, and what you can do in the channel.

  • Catch-up: !rewind or a hotkey shows an overlay card with unanswered questions, subs, raids, and running jokes.
  • Hype moments: detects chat spikes, auto-creates a clip and stream marker, and labels the moment.
  • Viewer recap: late viewers type !recap for the same summary, with clips they missed.
  • Channel guide: learns every bot command, reward, and extension from chat. Viewers use !tools or ask in plain English with !ask.
  • Dashboard and end-of-stream recap: status, unread counts, moments, and top questions in one place.

How I built it

I wrote a spec (AGENTS.md) splitting Rewind into milestones, then built it with OpenAI Codex one milestone at a time. It's a local Node.js backend using Twitch EventSub over WebSocket and the Helix API, OpenAI models for summaries and labels, and an HTML overlay for OBS. A chat simulator let me test everything without going live.

Hype moments fire when the 5-second message count $n_t$ jumps above the recent baseline:

Challenges

  • Twitch rejected my redirect URL until I learned only localhost can use http://.
  • Clips only work while live, so Codex built a simulator for testing.
  • There's no API listing a channel's commands, so Rewind learns them by matching !commands to bot replies.

What I learned

How APIs, OAuth, and EventSub fit together, how to keep secrets out of a repo, and that a clear spec with small milestones makes a coding agent far more effective.

What's next

Watching the stream itself with screenshots and audio, and a hosted version any streamer can sign into.

Built With

Share this project:

Updates

Submission history