Inspiration

Twitch chat has its own language: repeated phrases, familiar jokes, and everyone saying the same thing when a streamer makes the same mistake again.

Inspired by danmaku culture and Twitch copypasta, we built Chat Echoes to make those running jokes part of the screen. A small channel can start with authored chants, then develop its own collection through real chat and viewer contributions.

What it does

Chat Echoes is a local Twitch overlay displayed through an OBS Browser Source.

Streamers mark moments such as Bad Draw, Low HP, Shop or Death. The overlay fires short chants with a visible formula label. A shop can become an argument between TAKE IT and SKIP IT; playing a Skill against Gremlin Nob can trigger SKILL ISSUE.

Viewers can summon formulas with commands such as !f nob_skill, !take and !skip. They can also submit their own lines for streamer approval.

Real messages from earlier stream sessions can return at similar moments. Purple labels identify historical chat, gold labels identify approved contributions, and the ≡ symbol identifies authored formulas. Authored text never becomes fake viewer history.

Viewers can opt out, and streamers can hide contributions or clear the overlay.

How we built it with Codex

OpenAI Codex helped implement the project from a written specification through milestone commits: Twitch OAuth, EventSub chat reception, SQLite storage, timed capture windows, historical replay, moderation controls, scrolling lanes and formula bursts.

The application uses Node.js 24, built-in SQLite, Express, WebSockets and plain JavaScript, HTML and CSS.

An optional Slay the Spire adapter reads actual game state to recognize specific moments. It observes events rather than playing cards.

Challenges

The first challenge was making the overlay entertaining. Early lines were too long and explained the joke. Short chants, repetition and a few variations worked better.

The second challenge was preserving trust. Authored formulas, approved submissions and genuine historical messages needed distinct identities. Deletion, opt-out and clear actions also needed to cancel queued and delayed text, not just visible items.

Game detection required checking actual consequences. For the Nob joke, the observer checks both a Skill play and a real Strength increase.

Accomplishments

The project has 191 passing automated tests covering timing, filtering, authorization, cooldowns, game transitions and cancellation.

The demo includes human-played gameplay, genuine Twitch messages and emotes, a viewer command triggering the connected overlay, and the actual source code and test report in Codex.

What we learned

A working feature is only the beginning. The timing, wording and context of a joke matter more than the number of features. Clear source labels also let authored content and real community memories coexist.

What's next

More community-written formula packs, easier trigger controls, and additional game adapters built around verified events.

Demo disclosure

The game encounter was prepared with a mod. All cards and turns were played manually. Card-name and reload jokes in the edited gameplay segment were added in post-production; the Twitch chat and command response were recorded live.

Built With

Share this project:

Updates

Submission history