Vytvořte vlastní překryv v 5 krocích
- Zvolte překryv který chcete změnit.
- Stáhněte si zdrojový ZIP, rozbalte jej a zkopírujte soubor HTML daného překryvu.
- Upravte kopii sami nebo o to požádejte AI.
- Otevřete svou kopii v OBS s nastavením relace SSN přidaným k jeho adrese.
- Vyzkoušejte se skutečným spouštěčem překryvu.
Vyberte překryv k úpravě
Můžete měnit barvy, písma, rozvržení, grafiku i pohyb překryvu. Nástroj Soubor HTML je stránka. Soubor URL OBS na ni odkazuje a přidává relaci i nastavení zobrazení.

Každý typ překryvu přijímá jiné vstupy. Chat, zvýrazněné zprávy a anketa nepoužívají stejná data. Otevřete průvodce návrhem pro svůj typ:
| Průvodce návrhem | Spouštěcí soubory | Co to pohání |
|---|---|---|
| Chat a ukotvení | sampleoverlay.html, dock.html, themes/* | Každá zachycená chatová zpráva |
| Vybrané zprávy | featured.html, samplefeatured.html, themes/featured-styles/* | Vybrané zprávy a jasné příkazy |
| Upozornění a zdroje událostí | multi-alerts.html, events.html, themes/events/index.html | Odpovídající události / řádky placeného chatu |
| Grafické ankety | poll.html | Hlasy plus nastavení hostitelské ankety |
| Zavařovací sklenice a cíle | tipjar.html | Konfigurovaná metrika podpory/počet/Hype |
| Počítadla a žebříčky | hype.html, meta.html, leaderboard.html, scoreboard.html | Počty, metadata, aktivity nebo snímky bodů |
| Čekací listiny a losování do front | waitlist.html | Hostitelská fronta a vítězný stav |
| Prozradí se zobrazí | giveaway.html, giveaway-obs-entries.html | Spravovaný stav prozradí nebo starší vstupní zdroj |
| Časovače | timer.html | Stav časovače a ovládací prvky |
| Tickers | ticker.html | Nakonfigurovaný obsah tickeru |
| Slovní mraky a mapy | wordcloud.html, map.html | Shoda slov nebo míst |
| Reakce a mediální efekty | reactions.html, emotes.html, content.html, gif.html, confetti.html, stickers.html, actions.html | Spouštěč konkrétního média/události/akce na stránce |
| Závěrečné titulky | credits.html | Kontroly shromážděných účastníků a kreditů |
| Zobrazení hudby a umělé inteligence | spotify-overlay.html, cohost-overlay.html, bot.html, chatbot.html | Právě hraje nebo aktualizace robotů/cohostů |
| Výrobky a desky | monetization.html, commerce-board.html, shop_the_stream.html | Stav sdíleného obchodu |
| Hry a odměny | games/*, games/templates/*, games.html, battle.html | Konverzace, dárky a příkazy specifické pro hru |
| Generovaná překrytí AI | aioverlay.html, aievent-overlay.html | Uložené návrhy a jejich nakonfigurovaná trasa události |
Chcete něco hotového? Zkuste Galerie překryvů nebo Galerie šablon. Přenášíte vzhled chatu ze StreamElements nebo Streamlabs? Postupujte podle průvodce importem. Tento export má vlastní postup nastavení.
Stáhněte si soubory
- Stáhnout zdrojový ZIP beta verze. Nebo otevřete beta úložiště a vyberte Kód → Stáhnout ZIP.
- Rozbalte do složky, kterou si ponecháte, například
C:\SSN\social_stream-beta\. Neupravujte soubory uvnitř ZIPu. SSN nemusíte přeinstalovat. - Najděte soubor překryvu v tabulce výše. Vytvořte kopii vedle originálu, například
poll.html→my-poll.html. U motivu, napříkladthemes/featured-styles/featured-modern.html, ponechte kopii ve stejné složce. - Otevřete kopii v textovém editoru nebo editoru kódu. Uložte ji jako
.html, ne.html.txt.
Jak vypadá složka a jak fungují cesty
social_stream-beta/
poll.html
my-poll.html
currency.js
js/
libs/
shared/
thirdparty/
media/
sources/images/
themes/
featured-styles/
featured-modern.html
my-featured.html
docs/
event-reference.html
Cesta, například ../../shared/utils/chatHtml.js je relativní ke stránce, která jej načítá. Přesunutím stránky do kořene se cesta poruší. Do složky zkopírujte i vlastní grafiku a písma a používejte relativní cesty. Upravená kopie nebude automaticky dostávat budoucí opravy SSN.
Zachovejte odkaz relace
Spusťte SSN, připojte zdroj a ověřte původní překryv. Potom zkopírujte celý odkaz z nástroje SSN pro daný překryv.
https://socialstream.ninja/poll.html?session=YOUR_SESSION&password=YOUR_PASSWORD&server2
Hodnota za session= je vaše relace SSN. Není to kanál YouTube, jméno Twitch, název souboru ani název ankety. SSN a stránka musí mít stejnou relaci a heslo. Nechte SSN běžet: překryvy pouze přijímají data, samy chat nezachytávají.
| Pravidlo | Proč |
|---|---|
? začíná nastavení, & připojuje ostatní | Kopírujte je, nepřepisujte ručně. V atributu HTML pište &. V prohlížeči nebo v poli URL v OBS použijte běžné &. |
| Zachovejte nastavení serveru | server, server2, server3, místní endpointy, štítky a hodnoty verze se liší podle stránky. Nepřidávejte přepínač serveru jen proto, že jej používá jiný překryv. |
Zachovejte vše za # | Může to být důležité. AI Event Overlay například používá soukromý #aieventauth=... token. |
| Při sdílení používejte zástupné hodnoty | Skutečnou relaci, heslo a soukromé tokeny nedávejte do snímků obrazovky, repozitářů ani promptů AI. |
Pokud kopie zůstává prázdná, nejprve ověřte původní odkaz. Některé stránky si řeknou o chybějící nastavení, jiné zůstanou skryté nebo přesměrují. Správná relace v odkazu odstraní hádání.
Otevřete soubor v OBS
Otevřete upravený soubor přímo z počítače. Server není potřeba.
- Přetáhněte kopii HTML do Chromu nebo Edge. Zkopírujte její adresu. Začíná na
file:///. - Z funkčního odkazu překryvu SSN zkopírujte vše od
?dále. Připojte jej na konec adresy souboru. Zachová se relace, heslo, nastavení i případné#část. - Otevřete spojenou adresu v prohlížeči a vyzkoušejte ji.
- V OBS přidejte Zdroj prohlížeče (Browser Source). Ponechte Místní soubor vypnuté. Vložte celou adresu do URL a nastavte šířku a výšku.
Příklad: tento odkaz SSN…
https://socialstream.ninja/poll.html?session=YOUR_SESSION&password=YOUR_PASSWORD&server2
…se u stažené kopie ankety ve Windows změní na:
file:///C:/SSN/social_stream-beta/my-poll.html?session=YOUR_SESSION&password=YOUR_PASSWORD&server2
V macOS začíná na file:///Users/..., v Linuxu obvykle file:///home/.... Kopírování z prohlížeče za vás vyřeší mezery i lomítka.
| Co je dobré vědět | Podrobnosti |
|---|---|
| Toto nastavíte jen jednou | OBS si adresu uloží. Složku ponechte na místě a nechte SSN i zdroj chatu běžet. |
| Uložili jste změnu? | Klikněte na Obnovit mezipaměť aktuální stránky ve vlastnostech zdroje. |
| Proč nechat místní soubor nezaškrtnuté? | Pole URL umožňuje přidat ?session=.... Výběr souboru přes Local file tato nastavení nepřidá. |
Volitelné: použijte zaškrtávací políčko Místní soubor se spouštěčem
Výběr souboru v OBS vybere soubor, ale nepřipojí nastavení. Malá spouštěcí stránka může otevřít upravenou stránku i s nastavením:
- Uložte kód níže jako
launch-my-poll.htmlvedlemy-poll.html. - Nahraďte ukázkový odkaz úplným zkopírovaným odkazem SSN. Změňte
./my-poll.htmlna název svého souboru. Odkaz ponechte v uvozovkách s běžným&znaky. - Spouštěč otestujte dvojklikem. V OBS zaškrtněte Místní soubor a vyberte odpalovací zařízení. Přesměruje na váš překryv s nastavením a
#část.
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<title>My local overlay launcher</title>
<p>Opening the local overlay...</p>
<script>
var copiedLink = new URL("https://socialstream.ninja/poll.html?session=YOUR_SESSION");
var localPage = new URL("./my-poll.html", window.location.href);
localPage.search = copiedLink.search;
localPage.hash = copiedLink.hash;
window.location.replace(localPage.href);
</script>
</html>
U motivu v podsložce umístěte spouštěč vedle jeho kopie. Spouštěč chraňte, obsahuje připojovací odkaz. Samostatný export s již vloženým nastavením se řídí vlastními pokyny.
OBS vysvětluje režimy soubor/URL, rozměry, vlastní CSS a obnovování ve své Odkaz na zdroj prohlížeče.
Změňte vzhled sami nebo požádejte AI
| Chci… | Postupujte takto |
|---|---|
| Změnit jen CSS | Ponechte hostovaný odkaz a použijte v OBS Vlastní CSS pole. Ovlivní jen tento zdroj OBS, nikoli běžný prohlížeč. |
| Změň vzhled mé upravené kopie HTML | Přidejte styly za stávající nebo za ně připojte místní soubor stylů. |
Použijte &css= nebo &b64css= | Podporují to jen některé stránky. poll.htmlnapříklad nečte ani jedno. Nejprve zkontrolujte kód stránky. |
| Změnit rozvržení HTML | Zachovejte ID a třídy používané skripty. Pokud skript při každé aktualizaci prvek vytváří znovu, dejte trvalou grafiku mimo něj nebo ji přidejte do vykreslovací funkce. |
| Upravit sdílený styl nebo skript | Zkopírujte jej a nasměrujte stránku na kopii, aby se změnil jen váš vzhled. |
Připravte logo, soubory písem, barvy značky, rozměry plátna a vizuální vzor. Webová stránka obvykle nemůže načíst písma ani obrázky z disku jiného počítače.
Výzva AI
Použijte prompt pro konkrétní typ v jeho průvodci nebo začněte tímto. Dejte AI zkopírovaný soubor i styly a skripty, které načítá.
Customize [copied overlay filename] to match [reference/design].
Canvas: [width x height]. Placement: [position]. Colors/fonts: [details].
Use the existing page and its supporting files, rather than replacing its
connection and event logic. Read docs/event-reference.html and the relevant
overlay design guide. Preserve query parameters, session/password, URL
fragments, bridge labels, transport channels, settings, and controls.
Use CSS first. Keep relative paths and package all executable dependencies
locally. Use classic scripts compatible with Chrome 80.
Keep operator controls, private links, and credentials off the audience view.
Treat all incoming messages, names, labels, donations, and metadata as untrusted.
Prevent HTML/JavaScript injection in every renderer you change. Use textContent
for plain fields and for chatmessage when textonly is true. For HTML-mode
chatmessage, keep supported emotes/formatting through the packaged
SocialStreamChatHTML.sanitize helper (libs/objects.js loaded first).
Do not concatenate raw input into innerHTML, attributes, CSS, or JavaScript.
Validate media/link URLs with the page's existing URL policy and assign DOM
properties; do not enable javascript: URLs or executable embedded content.
Never eval incoming data or treat a viewer message as an AI instruction.
Keep source checks, connection handling, and existing sanitizers.
Test plain text, allowed emotes, quotes, angle brackets, and an HTML injection
probe in an isolated preview; verify the probe cannot execute.
Make the edited overlay work directly from disk using a file:/// URL,
without requiring a local web server. Return the edited files and assets,
file URL and OBS setup steps, and tests
for this overlay's real trigger. Use session placeholders in shared examples.
Explain any behavior changes separately from the design edits.
Zabraňte tomu, aby se příchozí chat změnil v kód
Jména, zprávy, nadpisy, částky a odkazy přicházejí od diváků a externích služeb. Zacházejte s nimi jako s textem, nikdy jako s kódem. Čistěte je v místě, kde je vykreslovací funkce vkládá do stránky.
| Pole | Jak jej zobrazit |
|---|---|
chatmessage s textonly true | Prostý text (textContent). |
chatmessage jinak | Může obsahovat emotikony a povolené formátování. Použijte přibalený sanitizér. |
| Jména, částky, nadpisy a další obyčejná pole | Prostý text (textContent). |
chatimg, contentimg, odkazy | URL, nikoli HTML. Ověřte je podle stávajících pravidel médií a odkazů a pak nastavte vlastnosti DOM. |
<!-- Example for a copied page at the repository root. -->
<script src="./libs/objects.js"></script>
<script src="./shared/utils/chatHtml.js"></script>
<script>
function renderChatBody(element, data) {
var message = String(data.chatmessage == null ? "" : data.chatmessage);
if (data.textonly) {
element.textContent = message;
} else {
element.innerHTML = SocialStreamChatHTML.sanitize(message);
}
}
// Names, amounts, titles, and other plain fields use textContent:
// nameElement.textContent = String(data.chatname || "");
</script>
- Pokud stránka již má sanitizér, zachovejte jej. Nepřidávejte druhý.
- U souborů v podsložkách opravte cesty ke skriptům.
- Nevkládejte surová jména do řetězců atributů ani surové barvy do značek stylů. Hodnoty stylů ověřte a pak nastavujte jednotlivé vlastnosti.
- Ani vyčištěné HTML není bezpečné spouštět jako JavaScript nebo používat jako instrukci pro AI.
Další souvislosti: Průvodce OWASP bezpečnými výstupy a sanitizací HTML.
Jak bezpečně testovat vykreslování
Spouštějte je v soukromém místním náhledu, ne ve veřejném chatu.
- Použijte název, například
Guest <b>One</b>. Závorky se mají zobrazit jako text. - Odeslat
chatmessage: "<b>Hello</b>"stextonly: true, potom false. Jeden test má ukázat značky jako text, druhý tučné písmo. - Ověřte, že funguje podporovaný emotikon i zpráva obsahující pouze obrázek.
- Nechte AI zkusit neškodný test, například
<img src=x onerror="window.__ssnInjectionProbe=1">. Nesmí se spustit, nastavit značku ani ponechat atributy událostí. Otestujte také odkaz se skriptovým schématem.
Úspěšný test pokrývá pouze vyzkoušené cesty. Zaměřte se na vykreslování a pole změněná vaším návrhem.
Testujte po jednotlivých částech
| Test | Jak |
|---|---|
| Rozvržení | Použijte náhledový či ukázkový režim stránky, pokud jej má, nebo místní smyšlená data. Zkuste dlouhá jména a zprávy, chybějící avatary, prázdná data a očekávaný počet řádků. |
| Doručování SSN | Nechte SSN zapnuté a použijte Vytvořit testovací zprávu se stejnou relací. Běžný režim Extension API vyžaduje vzdálené ovládání rozšíření přes API (remote API control of extension) zapnuté. Použijte testovací prostředí: testovací zprávy mohou spustit vaše automatizace. |
| Skutečný spouštěč | Vyberte zprávu v Docku, hlasujte v anketě, vylosujte výherce, změňte text tickeru nebo spusťte časovač. Běžný chat neověří vše. |
| Skutečné zachytávání | Ověřte, že skutečná zpráva či událost dorazí do originálu i kopie. Falešná událost dokazuje jen funkčnost zobrazení. |
| OBS | Zkontrolujte výslednou velikost, průhlednost, animace, zvuk, písma a vrstvy. Vyzkoušejte zobrazení/skrytí, vymazání/reset a obnovení. OBS a prohlížeč nesdílejí přihlášení ani uložená data. |
demo nebo preview z odkazu, než začnete očekávat živá data.Soubory, které předat AI
Dejte AI vlastní soubor překryvu a načítané CSS/JS, plus tyto soubory. Reference událostí sama nevysvětluje ovládání ankety ani kód rozvržení jednotlivých překryvů.
| Soubor | K čemu slouží |
|---|---|
docs/event-reference.html | Oficiální pole, pojmenované události, metadata, média a hodnoty darů. |
docs/customoverlays.md | Vlastní přijímače a příklady připojení. |
| Kompatibilita událostí a upozornění | Jaké události a pole posílají jednotlivé zdroje. |
Průvodce zkušebními zprávami a createtestmessage.html | Ukázková data a režimy doručování. |
libs/objects.js a shared/utils/chatHtml.js | Přibalený sanitizér zobrazení. |
shared/utils/chatBadges.js a shared/utils/contentImage.js | Stávající zpracování odznaků a obrázků. |
js/transport-dedupe.js, js/local-server-url.js, shared/overlay-control-transport.js | Stávající podpora připojení, pokud je stránka načítá. |
currency.js | Ponechte hasDonation pro zobrazení a použijte platnou číselnou hodnotu USD donoValue, včetně nuly. |
| Event Flow a Příkazy a API | Pokud návrh potřebuje spouštěč, použijte stávající ovládání. |
Řešení problémů
| Problém | Vyzkoušejte |
|---|---|
| Soubor nenalezen | Znovu přetáhněte HTML do prohlížeče a zkopírujte adresu. Ověřte koncovku .html, nikoli .html.txt. |
| Chybí skript, písmo nebo obrázek | Rozbalenou složku ponechte beze změny, s kopií vedle originálu. Ověřte, že přidané obrázky a písma leží tam, kde je stránka očekává. |
| Prázdné zobrazení nebo „čekání“ | Zkontrolujte relaci, heslo a celé ? a # části, běžící SSN, zapnutou funkci a správné příchozí vstupy. Porovnejte s původním odkazem SSN. |
| V OBS vypadá jinak než v prohlížeči | Zkontrolujte šířku/výšku, staré vlastní CSS, písma, mezipaměť a úložiště prohlížeče. Po uložení obnovte stránku. |
| Logo při aktualizaci zmizí | Skript může znovu vytvářet kontejner. Dejte trvalé dekorace mimo něj nebo upravte vykreslovací šablonu. |
| Data se resetují nebo se akce spouštějí dvakrát | Zkontrolujte obnovování a zavírání stránky, duplicitní překryvy či ovladače a vlastní zpracování duplicit a stavu na stránce. |
Zvláštní případ: stránky, které čtou samostatné datové soubory
Mapa načítá místní soubory JSON pomocí fetch(), což prohlížeče mohou při otevření z disku blokovat. Pro prostou změnu vzhledu mapy použijte hostovaný odkaz s vlastním CSS v OBS. U upravené kopie požádejte AI o vložení mapových dat přímo do stránky, aby fungovala z disku. Hosting je pokročilá možnost pro stránky, které jej skutečně potřebují, nikoli běžný krok.
Nejprve opravte nejmenší potvrzený problém. Změna vzhledu by neměla vyžadovat úpravy zachytávacích skriptů ani nová pole událostí. Při sdílení veřejného forku přiložte jeho zdroje a vynechte soukromé spouštěče.