document.addEventListener('DOMContentLoaded', function() {
const sitesData = [
{
name: 'YouTube Live',
icon: 'youtube.png',
description: 'The world\'s largest video platform with live streaming capabilities.',
type: 'popout',
instructions: `
- Pop out the chat to trigger (studio or guest view)
- Alternatively, add &socialstream to the YouTube link
`,
notes: 'YouTube Live chat loads automatically when using the popout chat. For best results, use the "Popout Chat" option from YouTube\'s menu.'
},
{
name: 'YouTube Static Comments',
icon: 'youtube.png',
description: 'Regular non-live YouTube video comments.',
type: 'manual',
instructions: `
- Click SS in the top right corner of Youtube
- Select the message you wish to publish inside the YT comment section via the new buttons there
`
},
{
name: 'Twitch',
icon: 'twitch.png',
description: 'Popular gaming and creative content live streaming platform.',
type: 'popout',
instructions: `
- Pop out the chat to trigger
- URL format: https://*.twitch.tv/popout/*
`,
notes: 'Twitch chat popout automatically connects when opened. Channel points redemptions are also supported.'
},
{
name: 'Facebook Live',
icon: 'facebook.png',
description: 'Live streaming on Facebook\'s social media platform.',
type: 'standard',
instructions: `
- Works with guest view, publisher view, or the producer's pop-up chat on the web
- No need to pop out the chat
`,
notes: 'Facebook Live chat integration works on the main page. Also works with Workplace.com (using the same setup as Facebook). A creator-owned API bridge is also available at sources/websocket/facebook.html.'
},
{
name: 'Instagram Live',
icon: 'instagram.png',
description: 'Live streaming on Instagram\'s social media platform.',
type: 'standard',
instructions: `
- URL format: instagram.com/*/live/
- No need to pop out the chat
`,
notes: 'Payload type: instagramlive. CSS note for styling: [data.type = "instagramlive"]'
},
{
name: 'Instagram Post Comments',
icon: 'instagram.png',
description: 'Non-live Instagram post comments.',
type: 'toggle',
instructions: `
- REQUIRES the TOGGLE in menu to enable it
- Navigate to any Instagram post to capture comments
`,
notes: 'Payload type: instagram. CSS note for styling: [data.type = "instagram"]'
},
{
name: 'X Live (Twitter)',
icon: 'x.png',
description: 'Live video streaming on X (formerly Twitter).',
type: 'popout',
instructions: `
- Open the chat pop out: https://x.com/XXXXXXXXXX/chat
- Make sure chat permissions are enabled
`
},
{
name: 'X Static Posts',
icon: 'x.png',
description: 'Static posts on X (formerly Twitter).',
type: 'manual',
instructions: `
- Click "Enable Overlay" in the lower right of X to enable support
- Manually click posts to select which ones to display
`
},
{
name: 'Threads.net',
icon: 'threads.png',
description: 'Meta\'s text-based social platform.',
type: 'manual',
instructions: `
- Click the little funky star icon, right of the share icon, to select a thread to push to dock
`
},
{
name: 'TikTok Live',
icon: 'tiktok.png',
description: 'Live streaming on the popular short-form video platform.',
type: 'standard',
instructions: `
- URL format: tiktok.com/*/live
- The chat must be left open/visible if using the extension version
`
},
{
name: 'Discord',
icon: 'discord.png',
description: 'Popular communication platform for communities.',
type: 'toggle',
instructions: `
- REQUIRES the TOGGLE in menu to enable it
- Works with the web version (discord.com)
`,
notes: 'See this video for help with toggled integrations: https://www.youtube.com/watch?v=L3l0_8V1t0Q'
},
{
name: 'Zoom',
icon: 'zoom.png',
description: 'Video conferencing platform with chat functionality.',
type: 'standard',
instructions: `
- Works with web version (zoom.us)
- No need to pop out chat
`
},
{
name: 'Google Meet',
icon: 'meet.png',
description: 'Google\'s video conferencing platform.',
type: 'toggle',
instructions: `
- REQUIRES the TOGGLE in menu to enable it
- You can specify your own name, rather than "You", via the host/bot section in the extension menu
`
},
{
name: 'WhatsApp Web',
icon: 'whatsapp.png',
description: 'Web version of the popular messaging platform.',
type: 'toggle',
instructions: `
- REQUIRES the TOGGLE in menu to enable it
- Use at https://web.whatsapp.com
`,
notes: 'No avatar support available for WhatsApp integration.'
},
{
name: 'Telegram',
icon: 'telegram.png',
description: 'Cloud-based messaging service.',
type: 'toggle',
instructions: `
- REQUIRES the TOGGLE in menu to enable it
- Use web.telegram.org in stream mode
`,
notes: 'See this video for help with toggled integrations: https://www.youtube.com/watch?v=L3l0_8V1t0Q'
},
{
name: 'VPZone.tv',
icon: 'vpzone.png',
description: 'Live streaming platform with on-page chat capture and an authenticated API page option. Supports Pixels tips as donations, dock delete/block sync, and a stream title/category editor for channel owners.',
type: 'standard',
instructions: `
- Open the regular stream page with the chat column visible
- URL: https://vpzone.tv/watch/USERNAME
`,
notes: 'An API-backed source is also available at sources/websocket/vpzone.html?channel=USERNAME.'
},
{
name: 'Slack',
icon: 'slack.png',
description: 'Business communication platform.',
type: 'toggle',
instructions: `
- REQUIRES the TOGGLE in menu to enable it
- Use at https://app.slack.com/
`,
notes: 'See this video for help with toggled integrations: https://www.youtube.com/watch?v=L3l0_8V1t0Q'
},
{
name: 'LinkedIn Events',
icon: 'linkedin.png',
description: 'Professional network\'s live events platform.',
type: 'standard',
instructions: `
- Works with linkedin.com/videos/live/* or linkedin.com/videos/events/* or linkedin.com/events/*
- No need to pop out the chat
`
},
{
name: 'VDO.Ninja',
icon: 'vdoninja.png',
description: 'Free, peer-to-peer, broadcasting tool.',
type: 'popout',
instructions: `
- Use the pop-out chat feature
`
},
{
name: 'Microsoft Teams',
icon: 'teams.png',
description: 'Microsoft\'s collaboration platform.',
type: 'standard',
instructions: `
- Works with teams.live.com and teams.microsoft.com
- No need to pop out the chat
`
},
{
name: 'Restream.io Chat',
icon: 'restream.png',
description: 'Multi-platform streaming service\'s chat.',
type: 'standard',
instructions: `
- URL: https://chat.restream.io/chat
`
},
{
name: 'Owncast',
icon: 'owncast.png',
description: 'Self-hosted streaming platform.',
type: 'standard',
instructions: `
- Use the demo page: watch.owncast.online
- For pop-out chat: https://watch.owncast.online/embed/chat/readwrite/
`
},
{
name: 'Twitch IRC WebSocket',
icon: 'twitch.png',
description: 'WebSocket connection to Twitch chat.',
type: 'websocket',
instructions: `
- URL: https://socialstream.ninja/sources/websocket/twitch
`
},
{
name: 'Joystick Bot WebSocket',
icon: 'joystick.png',
description: 'WebSocket connection using your own Joystick bot credentials.',
type: 'websocket',
instructions: `
- URL: https://socialstream.ninja/sources/websocket/joystick
- Enter your bot client ID/client secret, then connect to GatewayChannel
`
},
{
name: 'IRC WebSocket',
icon: 'irc.png',
description: 'WebSocket connection to IRC networks.',
type: 'websocket',
instructions: `
- URL: http://socialstream.ninja/sources/websocket/irc
- Supports Libera Chat and custom IRC servers
`
},
{
name: 'Kick.com',
icon: 'kick.png',
description: 'Emerging live streaming platform.',
type: 'popout',
instructions: `
- Use the pop out chat
- URL formats: https://kick.com/*/chatroom or https://kick.com/popout/*/chat
`
},
{
name: 'GoodGame.ru',
icon: 'goodgame.png',
description: 'Live streaming platform with a standalone popout chat page.',
type: 'popout',
instructions: `
- Use the pop out chat page
- URL format: https://goodgame.ru/*/chat
`
},
{
name: 'Rumble',
icon: 'rumble.png',
description: 'Video sharing and streaming platform.',
type: 'popout',
instructions: `
- Use the pop out chat
- URL: https://rumble.com/chat/popup/*
`,
notes: 'A creator-owned API-backed source is also available at sources/websocket/rumble.html?apiUrl=....'
},
{
name: 'Rumble API URL',
icon: 'rumble.png',
description: 'Read-only creator API bridge for Rumble chat and stream events.',
type: 'websocket',
instructions: `
- URL: https://socialstream.ninja/sources/websocket/rumble.html
- Paste the Live Stream API URL from https://rumble.com/account/livestream-api
`,
notes: 'Read-only mode. The API URL is secret and includes your live stream key; Rumble currently documents no separate OAuth requirement for reading it. The page can also resolve the normal https://rumble.com/chat/popup/<stream-id> URL so you can open the injected popup directly without first scraping the /live page.'
},
{
name: 'Odysee',
icon: 'odysee.png',
description: 'Blockchain-based media platform.',
type: 'popout',
instructions: `
- Use the pop out chat
- URL: https://odysee.com/$/popout/*
`
},
{
name: 'Amazon Live',
icon: 'amazon.png',
description: 'Amazon\'s live shopping platform.',
type: 'standard',
instructions: `
- URL: https://www.amazon.com/live
`
},
{
name: 'Vimeo',
icon: 'vimeo.png',
description: 'High-quality video platform with live streaming.',
type: 'standard',
instructions: `
- Works with vimeo.com/events/xxx pages or https://vimeo.com/live-chat/xxxxxxxxx/interaction/
`
},
{
name: 'Picarto.tv',
icon: 'picarto.png',
description: 'Art streaming platform.',
type: 'popout',
instructions: `
- Use the pop-out chat
- URL: https://picarto.tv/chatpopout/CHANNELNAMEHERE/public
`
},
{
name: 'Crowdcast.io',
icon: 'crowdcast.png',
description: 'Interactive webinar platform.',
type: 'standard',
instructions: `
- URL: https://www.crowdcast.io/e/*
- No pop out needed
`
},
{
name: 'Mixcloud Live',
icon: 'mixcloud.png',
description: 'Audio streaming platform.',
type: 'popout',
instructions: `
- Use the pop out chat
- URL: https://www.mixcloud.com/live/*/chat/
`
},
{
name: 'Bilibili.tv',
icon: 'bilibili.png',
description: 'Chinese video sharing and streaming platform.',
type: 'standard',
instructions: `
- Use the regular view page with chat; no pop out needed
- URL: https://bilibili.tv/*/live/*
`
},
{
name: 'Whop',
icon: 'whop.png',
description: 'Pay to view crypto videos.',
type: 'standard',
instructions: `
- Use the regular view page with chat; no pop out needed
- URL: https://whop.com/*
`
},
{
name: 'Bilibili.com',
icon: 'bilibili.png',
description: 'Chinese video sharing website (main domain).',
type: 'standard',
instructions: `
- Use the regular view page with chat; no pop out needed
- URL: https://live.bilibili.com/*
`
},
{
name: 'VK Play Live',
icon: 'vkplay.png',
description: 'Russian streaming platform (formerly vkplay.live).',
type: 'popout',
instructions: `
- Pop out the chat
- URL: https://live.vkplay.ru/*/only-chat?*
`
},
{
name: 'VK Live',
icon: 'vk.png',
description: 'Live streaming on VK.com.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://vk.com/*
`
},
{
name: 'Piczel.tv',
icon: 'piczel.png',
description: 'Art streaming platform.',
type: 'popout',
instructions: `
- Use the pop out chat
- URL: https://piczel.tv/chat/* or https://piczel.tv/watch/*
`
},
{
name: 'Locals.com',
icon: 'locals.png',
description: 'Subscription-based community platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://*.locals.com/post/* or https://*.locals.com/feed/*
`
},
{
name: 'Nimo.TV',
icon: 'nimo.png',
description: 'Global gaming live streaming platform.',
type: 'popout',
instructions: `
- Use the pop out chat
- URL: https://www.nimo.tv/popout/chat/xxxx
`
},
{
name: 'Amazon Chime',
icon: 'chime.png',
description: 'Amazon\'s communication service.',
type: 'standard',
instructions: `
- URL: https://app.chime.aws/meetings/xxxxxxxxx
`
},
{
name: 'NonOLive',
icon: 'nonolive.png',
description: 'Live streaming platform popular in Asia.',
type: 'standard',
instructions: `
- No pop out needed
- Only partial support added so far
`
},
{
name: 'StageTEN.tv',
icon: 'generic.png',
description: 'Interactive live streaming platform.',
type: 'standard',
instructions: `
- URL: https://*.stageten.tv/* or https://stageten.tv/*
`
},
{
name: 'Blaze.stream',
icon: 'blaze.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- No pop out chat support
- Just pause the video while keeping the chat open
`
},
{
name: 'BandLab',
icon: 'bandlab.png',
description: 'Music creation and sharing platform.',
type: 'standard',
instructions: `
- No pop out available
- Just pause the video while keeping the chat open
`
},
{
name: 'FloatPlane',
icon: 'floatplane.png',
description: 'Subscription-based video platform.',
type: 'popout',
instructions: `
- Pop out chat
- URL: https://*.floatplane.com/popout/livechat
- Main window must remain open
`
},
{
name: 'ChatGPT',
icon: 'openai.png',
description: 'Capture new User and ChatGPT turns from an open browser conversation, or use the tab as an experimental relay companion.',
type: 'toggle',
instructions: `
- Enable the ChatGPT opt-in toggle in the Social Stream Ninja menu
- Open or reload https://chatgpt.com/ after enabling it
- Only new conversation turns are captured; existing history is ignored
- For experimental companion mode, set relay destinations to
openai
`,
notes: 'No OpenAI API key is used for browser capture. This is separate from the ChatGPT API provider. Regular text chat is the most reliable target; ChatGPT Voice mode and page controls can change. See the ChatGPT browser companion guide.'
},
{
name: 'Livestorm.io',
icon: 'livestorm.png',
description: 'Professional video communication platform.',
type: 'standard',
instructions: `
- Open the 'external sidebar', which might be a plugin, to capture chat
`
},
{
name: 'Cozy.tv',
icon: 'cozy.png',
description: 'Alternative streaming platform.',
type: 'standard',
instructions: `
- No pop out needed
- Just open the view page
`
},
{
name: 'Steam Broadcasts',
icon: 'steam.png',
description: 'Steam\'s built-in broadcasting feature.',
type: 'standard',
instructions: `
- URL: https://steamcommunity.com/broadcast/chatonly/XXXXXXXX
`
},
{
name: 'Whatnot',
icon: 'whatnot.png',
description: 'Live shopping and auction platform.',
type: 'standard',
instructions: `
- No pop out available
- Just open the view page
`
},
{
name: 'eBay Live',
icon: 'ebay.png',
description: 'Live shopping and auction streaming on eBay.',
type: 'standard',
instructions: `
- No pop out needed
- Just open the watch page
`
},
{
name: 'Sessions.us',
icon: 'sessions.png',
description: 'Video meeting platform.',
type: 'standard',
instructions: `
- Use the meeting video chat, not popped out
- You can specify your own name, rather than "You", via the host/bot section in the extension menu
`
},
{
name: 'Chzzk.naver.com',
icon: 'chzzk.png',
description: 'Korean streaming platform by Naver.',
type: 'popout',
instructions: `
- Pop out the chat
- URL: https://chzzk.naver.com/live/*/chat or https://chzzk.naver.com/iframe/live/*/chat
`
},
{
name: 'IRC Quakenet',
icon: 'irc.png',
description: 'QuakeNet IRC web client.',
type: 'standard',
instructions: `
- URL: https://webchat.quakenet.org
`
},
{
name: 'IRC KiwiIRC',
icon: 'kiwiirc.png',
description: 'KiwiIRC web client.',
type: 'standard',
instructions: `
- URL: https://kiwiirc.com/nextclient/*
`
},
{
name: 'Webex',
icon: 'webex.png',
description: 'Cisco\'s video conferencing platform.',
type: 'standard',
instructions: `
- Use the live chat (not the pop out)
`
},
{
name: 'Riverside.fm',
icon: 'riverside.png',
description: 'Professional recording platform.',
type: 'standard',
instructions: `
- Just open the chat bar
- Note: you can opt-out of capture via the extension menu
`
},
{
name: 'Fansly',
icon: 'fansly.png',
description: 'Creator subscription platform.',
type: 'popout',
instructions: `
- Pop out chat
- URL: https://fansly.com/chatroom/*
`
},
{
name: 'Camsoda',
icon: 'camsoda.png',
description: 'Adult live streaming platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://www.camsoda.com/*
`
},
{
name: 'MyFreeCams',
icon: 'myfreecams.png',
description: 'Adult live streaming platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://myfreecams.com/* or https://www.myfreecams.com/*
`
},
{
name: 'Bongacams',
icon: 'bongacams.png',
description: 'Adult live streaming platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://bongacams.com/* or https://www.bongacams.com/*
`
},
{
name: 'CAM4',
icon: 'cam4.png',
description: 'Adult live streaming platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://cam4.com/* or https://www.cam4.com/*
`
},
{
name: 'Stripchat',
icon: 'stripchat.png',
description: 'Adult live streaming platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://stripchat.com/*
`
},
{
name: 'TwitCasting',
icon: 'twitcasting.png',
description: 'Japanese live streaming platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://*.twitcasting.tv/* or https://twitcasting.tv/*
`
},
{
name: 'Bigo.tv',
icon: 'bigo.png',
description: 'Global live streaming platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://www.bigo.tv/*
`
},
{
name: 'Substack',
icon: 'substack.png',
description: 'Newsletter and publishing platform.',
type: 'standard',
instructions: `
- URL: https://substack.com/*?liveStream=* or https://*.substack.com/live-stream/*
`
},
{
name: 'Roll20',
icon: 'roll20.png',
description: 'Virtual tabletop for roleplaying games.',
type: 'standard',
instructions: `
- URL: https://*.roll20.net/* or https://roll20.net/*
`
},
{
name: 'On24',
icon: 'on24.png',
description: 'Webinar and virtual event platform.',
type: 'standard',
instructions: `
- URL: https://*.on24.com/view/*
- Q&A questions supported
`
},
{
name: 'Chaturbate',
icon: 'chaturbate.png',
description: 'Adult live streaming platform.',
type: 'standard',
instructions: `
- URL: https://chaturbate.com/*/
- No pop out needed
`
},
{
name: 'Cherry TV',
icon: 'cherrytv.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- URL: https://cherry.tv/*
- No pop out needed
`
},
{
name: 'Truffle.vip',
icon: 'truffle.png',
description: 'Chat platform for creators.',
type: 'standard',
instructions: `
- URL: https://chat.truffle.vip/chat/*
`
},
{
name: 'Favorited',
icon: 'favorited.png',
description: 'Streaming platform for creators.',
type: 'popout',
instructions: `
- Use the studio popout chat
- URL: https://studio.favorited.com/popout/chat
`
},
{
name: 'Simps',
icon: 'simps.png',
description: 'Streaming platform with app-based chat.',
type: 'standard',
instructions: `
- URL: https://simps.com/app/*
- No pop out needed
`
},
{
name: 'Pilled.net',
icon: 'pilled.png',
description: 'Alternative social media platform.',
type: 'standard',
instructions: `
- URL: https://pilled.net/*
- Pop out the chat
`
},
{
name: 'Portal',
icon: 'portal.png',
description: 'Streaming portal platform.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://portal.abs.xyz/stream/*
`
},
{
name: 'Pump.fun',
icon: 'pumpfun.png',
description: 'Live trading and chat for Pump.fun coins.',
type: 'standard',
instructions: `
- No pop out needed
- URL: https://pump.fun/coin/*
`,
notes: 'Keep the coin page open with the live chat visible.'
},
{
name: 'NicoVideo',
icon: 'nicovideo.png',
description: 'Japanese video streaming platform.',
type: 'standard',
instructions: `
- URL: https://live.nicovideo.jp/watch/*
- No pop out needed
`
},
{
name: 'Rutube',
icon: 'rutube.png',
description: 'Russian video streaming platform.',
type: 'popout',
instructions: `
- URL: https://rutube.ru/live/chat/*/
`
},
{
name: 'FC2',
icon: 'fc2.png',
description: 'Japanese content platform with streaming.',
type: 'standard',
instructions: `
- URL: https://live.fc2.com/*/
- No pop out needed
`
},
{
name: 'Vertical Pixel Zone',
icon: 'generic.png',
description: 'Streaming platform.',
type: 'standard',
instructions: `
- URL: https://verticalpixelzone.com/*
`
},
{
name: 'Mixlr',
icon: 'mixlr.png',
description: 'Audio streaming platform.',
type: 'standard',
instructions: `
- URL: https://*.mixlr.com/events/*
- Note: May be paywalled and limited support
`
},
{
name: 'Jaco.live',
icon: 'jaco.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- URL: https://jaco.live/golive
`
},
{
name: 'Gala Music',
icon: 'gala.png',
description: 'Music streaming platform.',
type: 'standard',
instructions: `
- URL: https://music.gala.com/streaming/*
- No pop out needed
`
},
{
name: 'Circle.so',
icon: 'generic.png',
description: 'Community platform.',
type: 'standard',
instructions: `
- URL: https://*.circle.so/*
- Also works with community.insidethe.show and similar Circle-powered domains
`
},
{
name: 'Estrim',
icon: 'estrim.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- URL: https://estrim.com/publications/view/*
`
},
{
name: 'Online Church',
icon: 'onlinechurch.png',
description: 'Church streaming platform.',
type: 'standard',
instructions: `
- URL: https://*.online.church/
- No pop out needed
`
},
{
name: 'Parti',
icon: 'parti.png',
description: 'Chat platform.',
type: 'popout',
instructions: `
- URL: https://parti.com/USERNAME or https://parti.com/popout-chat?id=USER_ID
- Profile chat and popout chat are supported
`
},
{
name: 'Wave Video',
icon: 'wavevideo.png',
description: 'Video creation and streaming platform.',
type: 'standard',
instructions: `
- URL: https://wave.video/*
`
},
{
name: 'WorldsWave',
icon: 'worldswave.png',
description: 'Social media and live streaming platform.',
type: 'popout',
instructions: `
- Open the live stream page with chat visible, or use the chat-only popout
- Popout URL: https://worldswave.com/kn_livecmd.php?cmd=viewStream&streamId=STREAM_ID&chatonly=1
`,
notes: 'Captures new rendered chat messages. Viewer counts require Show viewer count or Hype Mode.'
},
{
name: 'WebinarGeek',
icon: 'webinargeek.png',
description: 'Webinar platform.',
type: 'standard',
instructions: `
- URL: https://*.webinargeek.com/webinar/* or https://*.webinargeek.com/watch/*
- Chat only, no pop out needed
`
},
{
name: 'uScreen',
icon: 'uscreen.png',
description: 'Video monetization platform.',
type: 'standard',
instructions: `
- URL: https://www.ilmfix.de/programs/*
`
},
{
name: 'Zap.stream',
icon: 'zapstream.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- URL: https://zap.stream/*
- No pop out needed
`
},
{
name: 'MeetMe',
icon: 'meetme.png',
description: 'Social discovery app.',
type: 'standard',
instructions: `
- URL: https://*.meetme.com/* or https://meetme.com/*
`
},
{
name: 'SoopLive',
icon: 'sooplive.png',
description: 'Streaming platform.',
type: 'popout',
instructions: `
- URL: https://www.sooplive.com/chat/*
- URL: https://play.sooplive.com/*?vtype=chat
- Pop out the chat to use
`
},
{
name: 'FLEX TV',
icon: 'flextv.png',
description: 'Korean live streaming platform.',
type: 'standard',
instructions: `
- URL: https://www.flextv.co.kr/channels/*/live
- Open the live page with the chat panel visible
`,
notes: 'Chat capture is based on the rendered chat panel and starts with new messages after Social Stream attaches.'
},
{
name: 'Beamstream',
icon: 'beamstream.png',
description: 'Live streaming platform.',
type: 'popout',
instructions: `
- URL: https://beamstream.gg/*/chat
- Open https://beamstream.gg/USERNAME/chat (*note the /chat added at the end)
`
},
{
name: 'Seal Team Sloth',
icon: 'sealteamsloth.png',
description: 'Live streaming platform.',
type: 'popout',
instructions: `
- URL: https://sealteamsloth.com/popout-chat/USERNAME
- Open the streamer's pop-out chat while signed in
`,
notes: 'Captures new chat messages, emotes, avatars, name colors, user/message IDs, and optional viewer-count updates.'
},
{
name: 'Castyr',
icon: 'castyr.png',
description: 'Live streaming platform with standalone pop-out chat.',
type: 'popout',
instructions: `
- URL: https://castyr.live/homebeta/popout-chat/USERNAME
- Open the streamer's pop-out chat
`,
notes: 'Captures new rendered chat messages, name colors, inline emotes, and optional viewer-count updates.'
},
{
name: 'CI.ME',
icon: 'cime.png',
description: 'Korean live streaming platform.',
type: 'standard',
instructions: `
- URL: https://ci.me/@USERNAME/live
- Keep the on-page chat visible; no pop out needed
`
},
{
name: 'Castr',
icon: 'castr.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- URL: https://chat.castr.io/room/XXXXXXXX
`
},
{
name: 'Chatroll',
icon: 'chatroll.png',
description: 'Embeddable chat service.',
type: 'standard',
instructions: `
- URL: https://chatroll.com/embed/chat/*
`
},
{
name: 'Tellonym',
icon: 'generic.png',
description: 'Anonymous messaging platform.',
type: 'standard',
instructions: `
- URL: https://tellonym.me/*
`
},
{
name: 'LivePush',
icon: 'livepush.png',
description: 'Multi-platform chat solution.',
type: 'standard',
instructions: `
- URL: https://multichat.livepush.io/*
- No input field support
`
},
{
name: 'MegaphoneTV',
icon: 'megaphonetv.png',
description: 'Interactive streaming platform.',
type: 'standard',
instructions: `
- In Studio, select UGC, then open Recent messages
- URL: https://apps.megaphonetv.com/socialharvest/live/*
`
},
{
name: 'NextCloud',
icon: 'nextcloud.png',
description: 'Self-hosted productivity platform with chat.',
type: 'standard',
instructions: `
- Requires domain to be added
- Example URL: https://cloud.malte-schroeder.de/call/*
`
},
{
name: 'PeerTube',
icon: 'peertube.png',
description: 'Decentralized video platform.',
type: 'standard',
instructions: `
- URL: https://*/plugins/livechat/*router/webchat/room/* or https://*/p/livechat/room?room=*
`
},
{
name: 'Bitchute',
icon: 'bitchute.png',
description: 'Video hosting platform.',
type: 'standard',
instructions: `
- URL: https://www.bitchute.com/video/*
- No pop out chat
`
},
{
name: 'Buzzit',
icon: 'buzzit.png',
description: 'Community platform.',
type: 'standard',
instructions: `
- URL: https://www.buzzit.ca/event/*/chat
- Community member submitted integration
`
},
{
name: 'Joystick.tv',
icon: 'joystick.png',
description: 'Adult streaming platform.',
type: 'standard',
instructions: `
- URL: https://joystick.tv/u/*/chat
`
},
{
name: 'Rooter',
icon: 'rooter.png',
description: 'Game streaming platform.',
type: 'standard',
instructions: `
- URL: https://*.rooter.gg/*
- No pop out available - just pause the video if needed
`
},
{
name: 'Loco.gg',
icon: 'loco.png',
description: 'Game streaming platform.',
type: 'standard',
instructions: `
- URL: https://*.loco.gg/* or https://loco.gg/streamers/*
- No pop out available - just pause the video if needed
`,
notes: 'Also works with loco.com domains'
},
{
name: 'Arena Social',
icon: 'arenasocial.png',
description: 'Social streaming platform.',
type: 'standard',
instructions: `
- URL: https://arena.social/live/*
`
},
{
name: 'Versus.cam',
icon: 'generic.png',
description: 'Testing platform.',
type: 'standard',
instructions: `
- URL: https://versus.cam/?testchat
- Testing platform
`
},
{
name: 'Vercel Demo',
icon: 'generic.png',
description: 'Social Stream Ninja demo.',
type: 'standard',
instructions: `
- URL: https://maestro-launcher.vercel.app/
- Demo launcher
`
},
{
name: 'CBOX',
icon: 'cbox.png',
description: 'Embeddable chat service.',
type: 'standard',
instructions: `
- URL: https://*.cbox.ws/box/*
- No pop out needed
`
},
{
name: 'Wix Live',
icon: 'wix.png',
description: 'Live streaming on Wix websites.',
type: 'standard',
instructions: `
- URL: https://*.wix.com/*
- Also supports embedded Wix video widgets
`,
notes: 'Also works with: https://manage.wix.com/dashboard/*/live-video/* and embedded widgets at https://editor.wixapps.net/render/prod/modals/wix-vod-widget/*'
},
{
name: 'Retake.tv',
icon: 'retake.png',
description: 'Web3 live streaming platform.',
type: 'standard',
instructions: `
- URL: https://retake.tv/live/*
- No pop out needed
`
},
{
name: 'BoltPlus.tv',
icon: 'boltplus.png',
description: 'Live streaming platform.',
type: 'popout',
instructions: `
- URL: https://boltplus.tv/chatpopout*
- Use the chat popout
`
},
{
name: 'Velora.tv',
icon: 'velora.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- URL: https://velora.tv/*
- Dashboard popout is supported: https://velora.tv/dashboard/stream/popout?panels=chat%2Cactivity&channel=CHANNEL&layout=vertical
- OBS chat popout is supported: https://velora.tv/dashboard/stream/popout/CHANNEL/obs-chat
- Login URL: https://velora.tv/login
`
},
{
name: 'RokFin',
icon: 'rokfin.png',
description: 'Creator-focused content platform.',
type: 'popout',
instructions: `
- URL: https://rokfin.com/popout/chat/*
- Use the chat popout
`
},
{
name: 'Stream.place',
icon: 'streamplace.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- URL: https://stream.place/*
- No pop out needed
`
},
{
name: 'TradingView Streams',
icon: 'tradingview.png',
description: 'Financial charting platform with live streams.',
type: 'standard',
instructions: `
- URL: https://www.tradingview.com/streams/*
- No pop out needed
`
},
{
name: 'SharePlay.tv',
icon: 'shareplay.png',
description: 'Live streaming platform.',
type: 'standard',
instructions: `
- URL: https://shareplay.tv/*
- No pop out needed
`
},
{
name: 'CloutHub',
icon: 'cloudhub.png',
description: 'Social media and community platform.',
type: 'standard',
instructions: `
- URL: https://app.clouthub.com/*
- No pop out needed
`
},
{
name: 'Slido',
icon: 'slido.png',
description: 'Audience interaction and Q&A platform for webinars.',
type: 'standard',
instructions: `
- URL: https://admin.sli.do/event/*, https://app.sli.do/event/*, or https://wall.sli.do/event/*
- Works with admin, app, and wall views
`
},
{
name: 'YouNow',
icon: 'younow.png',
description: 'Live broadcasting platform.',
type: 'standard',
instructions: `
- URL: https://www.younow.com/*
- No pop out needed
`
},
{
name: 'QuickChannel',
icon: 'quickchannel.png',
description: 'Live streaming and video platform.',
type: 'standard',
instructions: `
- URL: https://play.quickchannel.com/*
- No pop out needed
`
},
{
name: 'Instafeed',
icon: 'generic.png',
description: 'Instagram feed aggregation service.',
type: 'standard',
instructions: `
- URL: https://instafeed.me/*
- No pop out needed
`
},
{
name: 'Patreon',
icon: 'patreon.png',
description: 'Creator subscription and membership platform.',
type: 'toggle',
instructions: `
- REQUIRES the TOGGLE in menu to enable it
- URL: https://patreon.com/*
`
},
{
name: 'Minnit Chat',
icon: 'minnit.png',
description: 'Embeddable chat service.',
type: 'standard',
instructions: `
- URL: https://minnit.chat/*
- No pop out needed
`
},
{
name: 'LFG.tv',
icon: 'lfg.png',
description: 'Gaming and esports streaming platform.',
type: 'standard',
instructions: `
- URL: https://lfg.tv/*
- No pop out needed
`
},
{
name: 'Kwai Studio',
icon: 'kwai.png',
description: 'Kwai live-streaming studio chat and activity feed.',
type: 'standard',
instructions: `
- URL: https://studio.kwai.com/*
- Keep the chat or activity-feed panel visible
`
},
{
name: 'Livestream.com',
icon: 'livestream.png',
description: 'Live video and event streaming platform.',
type: 'standard',
instructions: `
- URL: https://livestream.com/accounts/*
- Open the event page with chat visible
`
},
{
name: 'Open Streaming Platform',
icon: 'openstreamingplatform.png',
description: 'Open-source video streaming platform with chat-only views.',
type: 'popout',
instructions: `
- Open the chat-only view ending in chatOnly=True
- Example: https://demo.openstreamingplatform.com/view/*chatOnly=True*
`
},
{
name: 'StreamElements',
icon: 'streamelements.png',
description: 'Overlay relay for tips, subscriptions, follows, and other alerts.',
type: 'standard',
instructions: `
- Open your https://streamelements.com/overlay/* page
- Keep the overlay page open while streaming
`
},
{
name: 'TikFinity Activity Feed',
icon: 'tikfinity.png',
description: 'Read-only TikTok chat and event ingestion through TikFinity.',
type: 'standard',
instructions: `
- Open the TikFinity activity-feed widget
- URL: https://tikfinity.zerody.one/widget/activity-feed*
`,
notes: 'Events are normalized as TikTok events; chat send-back is not supported through this feed.'
},
{
name: 'XP Sync',
icon: 'xpsync.png',
description: 'Live chat platform with replies, follows, Sparks, and viewer updates.',
type: 'standard',
instructions: `
- URL: https://xpsync.com/* or https://www.xpsync.com/*
- Open the live page with chat visible
`
},
{
name: 'Streamlabs',
icon: 'streamlabs.png',
description: 'Alert box relay for donations, subs, follows, and more.',
type: 'websocket',
instructions: `
- Open your Streamlabs alert box URL (https://streamlabs.com/alert-box/...) and keep it open
- Alternatively, use the token-based socket bridge (sources/websocket/streamlabs.html): paste your Socket API token and connect
`,
notes: 'Send a test alert from Streamlabs to verify events are flowing.'
}
];
// Sort sites alphabetically
sitesData.sort((a, b) => a.name.localeCompare(b.name));
const sitesGrid = document.getElementById('sitesGrid');
const siteSearch = document.getElementById('siteSearch');
const siteModal = document.getElementById('siteModal');
const modalClose = document.querySelector('.close-modal');
// Populate sites grid
function populateSites(sites) {
sitesGrid.innerHTML = '';
sites.forEach(site => {
const siteItem = document.createElement('div');
siteItem.className = 'site-item';
siteItem.setAttribute('data-site', site.name);
// Add tag based on type
let tagText = '';
let tagClass = '';
switch(site.type) {
case 'popout':
tagText = 'Popout';
tagClass = 'popout';
break;
case 'websocket':
tagText = 'WebSocket';
tagClass = 'websocket';
break;
case 'toggle':
tagText = 'Toggle Required';
tagClass = 'toggle';
break;
case 'manual':
tagText = 'Manual Selection';
tagClass = 'manual';
break;
}
if(tagText) {
const tag = document.createElement('span');
tag.className = `site-item-tag ${tagClass}`;
tag.textContent = tagText;
siteItem.appendChild(tag);
}
// Site content
siteItem.innerHTML += `
${site.name}
`;
// Event listener for opening modal
siteItem.addEventListener('click', () => openSiteModal(site));
sitesGrid.appendChild(siteItem);
});
}
// Search functionality
siteSearch.addEventListener('input', () => {
const searchValue = siteSearch.value.toLowerCase();
if(searchValue === '') {
populateSites(sitesData);
return;
}
const filteredSites = sitesData.filter(site =>
site.name.toLowerCase().includes(searchValue) ||
site.description.toLowerCase().includes(searchValue)
);
populateSites(filteredSites);
});
// Open site modal
function openSiteModal(site) {
// Set modal content
const modalIcon = document.getElementById('modalIcon');
modalIcon.onerror = function() { this.onerror = null; this.src = '../sources/images/generic.png'; };
modalIcon.src = `../sources/images/${site.icon}`;
document.getElementById('modalTitle').textContent = site.name;
document.getElementById('modalDescription').textContent = site.description;
document.getElementById('modalInstructions').innerHTML = site.instructions;
// Set notes if they exist
const modalNotes = document.getElementById('modalNotes');
if(site.notes) {
modalNotes.innerHTML = `Additional Notes:
${site.notes}
`;
modalNotes.classList.remove('hidden');
} else {
modalNotes.classList.add('hidden');
}
// Show modal
siteModal.classList.add('show');
document.body.style.overflow = 'hidden';
}
// Close modal
modalClose.addEventListener('click', () => {
siteModal.classList.remove('show');
document.body.style.overflow = '';
});
// Close modal on click outside
window.addEventListener('click', (e) => {
if(e.target === siteModal) {
siteModal.classList.remove('show');
document.body.style.overflow = '';
}
});
// Close modal on escape key
document.addEventListener('keydown', (e) => {
if(e.key === 'Escape' && siteModal.classList.contains('show')) {
siteModal.classList.remove('show');
document.body.style.overflow = '';
}
});
// Initial population of sites
populateSites(sitesData);
});