Ixitxachitl's Stream Tools

Chat Comics

Your chat becomes a live comic strip starring a cast of fuzzy little monsters. Every chatter gets their own, in their chat color, and it's the same one every time they show up. Only the monsters who are talking are in a panel, and two chatters going back and forth share one. Faces change with the mood: laughing at "lol", crying at "rip", jaw on the floor for "no way". Meanwhile… KAPOW!

Live demo

This is the real overlay running with fake demo chat. On stream the background is transparent, so the strip sits over your game or camera.

How the story works

Panels

  • A panel fits two monsters and two bubbles, and only monsters with something to say are in it. When there's room, a new message joins the newest panel. If not, a fresh panel slides in and the oldest one slides out.
  • Panels come in different widths, and the gutters between them lean at different angles, so the strip looks like a real comic page.
  • Every panel gets an ink-and-screentone manga background that fits the mood: speed lines for shouting, a sunburst for laughing, sparkles and bubbles for love, gloom lines for sad, a flaming aura for angry, a spiral for confused. Everyday chat gets a little scenery: a city skyline, a room, a street with power lines or a cloudy sky.
  • When two chatters talk back and forth, they share a panel and turn to face each other. The @name at the start of a reply or mention is dropped, since the panel already shows who's talking.
  • Captions like "Our story begins…", "Later…" and "Meanwhile, in chat…" appear when the story picks back up.
  • When chat goes quiet, the strip falls away. It comes back with the next message.

Bubbles & faces

  • ALL CAPS gets a jagged yellow shout bubble, a wide-open mouth and speed lines.
  • Messages ending in … (or starting with "hmm") become thought clouds.
  • /me actions become narration boxes: "NeonWhiskers does a little victory dance".
  • Faces follow the mood of the message: laughing, heart eyes, crying, angry, shocked, confused. Emotes count too, so KEKW, Sadge and PogChamp all work.
  • No two monsters are alike: big round, tall, boxy or bell-shaped heads on small bodies, fur from smooth felt to shaggy, one, two or three eyes, horns, antennae, bunny or cat ears, fangs, party hats, tees, hoodies, sweaters, overalls, bow ties and scarves. Their fur is their chat name color. The streamer wears a crown. 👑
  • Sometimes a chatter gets a panel to themselves with a prop: a TV with a game on, an arcade machine, pizza, a boombox, a campfire, a dog, a snowman, an easel, a rain cloud, a telescope and 31 in all. It usually fits what they said ("pizza", "lag", "gn", "happy birthday"…), and they actually use it: munching pizza, mashing a controller, playing fetch, strumming a guitar, painting, reading, lifting weights, holding an umbrella in the rain, roasting marshmallows, or nodding off while a sheep hops the fence. Some props can be used more than one way, so the same prop doesn't always play out the same.
  • Monsters with arms act it out: waving while they talk, hands up when shocked, fists when angry, hands clasped for love, scratching their head when confused.
  • When a mod deletes a message or bans someone, their bubble gets blacked out with a red REDACTED stamp.

Setup guide

Get it on stream

  1. Add a Browser source In OBS click + under Sources → Browser. Paste https://comics.ixitxachitl.com/ as the URL and set it to 1920 × 1080. The background is transparent automatically.
  2. Open the settings Right-click the source → Interact. Move your mouse over the overlay and click the yellow gear in the bottom-right corner.
  3. Connect your chat Under Chat sources, type your Twitch and/or Kick channel name. Add TikTok or YouTube too if you stream there (see below).
  4. Place the strip Under Comic strip, pick how many panels, how big they are, and which corner they sit in. You can also give the strip a title, like The {channel} Chronicles.
  5. Save & apply Press Save & apply and close the Interact window. Your settings are saved inside this browser source.
The settings window shows on stream while it's open. Set things up before you go live, or hide the source while you tweak.

Chat sources

Twitch & Kick

Just type the channel name. Chat is read anonymously, so there's no login and no bot account needed. On Twitch, subs, resubs, gift subs, raids and bits each get their own splash panel.

TikTok

TikTok needs a bridge app running on your PC. If you use TikFinity, just type 1 in the TikTok box. Otherwise, paste your bridge's ws://… address.

YouTube

Paste your live stream's video ID or link, plus a YouTube Data API v3 key from the Google Cloud Console. You can also give a bridge ws://… address instead.

Several platforms at once

Fill in as many as you like. A chatter's monster comes from their name, so someone with the same name on two platforms looks the same on both.

Tips

  • A strip of 3–4 panels along the bottom works well at 1080p. For a sidebar, set the strip to 1 panel and make it tall.
  • Busy chat? Messages land one at a time so each gets a moment on screen. In a very fast chat the oldest waiting messages are skipped so it never falls behind. Pace × speeds it up.
  • Long messages shrink to fit. Text size sets the size they start at.
  • Chat bots like Nightbot and StreamElements are hidden by default. Add more in the filter.
  • BTTV, FFZ and 7TV emotes, badges and pronouns all show up.

All settings

Setting URL parameter Default What it does
Chat sources
Twitch channelchannel—Read anonymously, no login needed.
Kick channelkick—Read anonymously, no login needed.
TikTok bridgetiktok—1 uses TikFinity on this PC, or give a ws://… bridge address.
YouTube liveyoutube—Live video ID or link (needs the API key), or a bridge address.
YouTube API keyytkey—YouTube Data API v3 key from Google Cloud Console.
YouTube check every (s)ytpoll62–60. Lower is snappier but uses the daily API quota faster.
Demo chatdemooffFake chatters. Also runs on its own when no source is set.
Comic strip
Panels in the strippanels31–8.
Panel width (px)pw300140–900.
Panel height (px)ph300140–900. Everything in the strip (monsters, text, outlines) scales with it.
Space between panels (px)gap160–80.
Strip positionalignleftleft, center or right.
Strip edgevposbottombottom or top.
Distance from the side (px)mx30How far the strip sits from the left or right edge.
Distance from the top/bottom (px)my30How far the strip sits from the top or bottom edge.
Strip titletitle—Shown above the strip. {channel} becomes your channel name.
Clear after a quiet spell (s)idle60The strip falls away when chat goes quiet. 0 = never.
Story
Pace ×speed10.3–4. Higher = messages land faster.
Text size (px)fs1911–48, at the default 300px panel height; it scales with the panels. Long messages shrink to fit their panel.
"Meanwhile…" captionscaptionsonNarration boxes when the story starts or picks back up.
Props in solo panelspropsonSometimes a chatter gets a prop instead of a second chatter, so it looks like they're up to something.
Crown for the streamercrownonThe broadcaster's monster wears a crown.
Max message lengthmaxchars14020–500 characters.
Show badgesbadgesonTwitch and Kick badges; owner / mod / member / sub / follower on YouTube and TikTok.
Show pronounspronounsonTwitch chatters who set them on pronouns.alejo.io.
BTTV / FFZ / 7TV emotesextemotesonThird-party emotes in bubbles.
Splash panels for subs, gifts, raids & bitseventsonTwitch only.
Filtering
Show !commandscmdsoffShow messages that start with !.
Show first-time chattersfirsttimeoffTwitch flags these; spam bots usually show up this way.
Hide known botsbotlistonUses the public TwitchInsights bot list.
Always hide these usersignorenightbot, streamelements, streamlabs, moobot, fossabot, wizebotComma or line separated.

Switches take 1 (on) or 0 (off) in the URL.

For tinkerers

Custom integrations

Streamer.bot or your own scripts can add a line to the comic by calling this inside the browser source:

window.chatComics.say("name", "message", {
  color: "#ff00aa",
  platform: "twitch",
  replyTo: "othername", // optional: drops a leading "@othername"
});

window.chatComics.clear() clears the strip.

Questions

I only see demo chatters

No chat source is set yet. Add your channel in the settings (or the URL) and they'll stop.

Can a chatter pick their monster?

Not yet. The look comes from their name, so it's always the same. Their fur matches their chat name color.

My settings disappeared

Settings live in that browser source's storage. If your setup can't save them, the panel will tell you — use a setup link from the builder above instead.

Can I run two copies?

Yes. Give each browser source its own setup link and the URL settings win.