Navrhněte si vlastní překryvné vrstvy sociálního proudu

Stahujte, přizpůsobujte, připojujte a testujte místní návrhy překryvů v OBS s průvodci pro každou rodinu překryvů.

Vytvořte vlastní překryv v 5 krocích

Stáhněte si souboryZměňte designOtevřít v OBS
  1. Zvolte překryv který chcete změnit.
  2. Stáhněte si zdrojový ZIP, rozbalte jej a zkopírujte soubor HTML daného překryvu.
  3. Upravte kopii sami nebo o to požádejte AI.
  4. Otevřete svou kopii v OBS s nastavením relace SSN přidaným k jeho adrese.
  5. Vyzkoušejte se skutečným spouštěčem překryvu.
Chcete jen jiné barvy nebo písma? Stahování přeskočte. Ponechte běžný hostovaný odkaz a vložte CSS do pole zdroje prohlížeče OBS Vlastní CSS pole.

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í.

Před změnou vzhledu vyberte pracovní překrytí.
Začněte překryvem, který už funguje.

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ávrhemSpouštěcí souboryCo to pohání
Chat a ukotvenísampleoverlay.html, dock.html, themes/*Každá zachycená chatová zpráva
Vybrané zprávyfeatured.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.htmlOdpovídající události / řádky placeného chatu
Grafické anketypoll.htmlHlasy plus nastavení hostitelské ankety
Zavařovací sklenice a cíletipjar.htmlKonfigurovaná metrika podpory/počet/Hype
Počítadla a žebříčkyhype.html, meta.html, leaderboard.html, scoreboard.htmlPočty, metadata, aktivity nebo snímky bodů
Čekací listiny a losování do frontwaitlist.htmlHostitelská fronta a vítězný stav
Prozradí se zobrazígiveaway.html, giveaway-obs-entries.htmlSpravovaný stav prozradí nebo starší vstupní zdroj
Časovačetimer.htmlStav časovače a ovládací prvky
Tickersticker.htmlNakonfigurovaný obsah tickeru
Slovní mraky a mapywordcloud.html, map.htmlShoda slov nebo míst
Reakce a mediální efektyreactions.html, emotes.html, content.html, gif.html, confetti.html, stickers.html, actions.htmlSpouštěč konkrétního média/události/akce na stránce
Závěrečné titulkycredits.htmlKontroly shromážděných účastníků a kreditů
Zobrazení hudby a umělé inteligencespotify-overlay.html, cohost-overlay.html, bot.html, chatbot.htmlPrávě hraje nebo aktualizace robotů/cohostů
Výrobky a deskymonetization.html, commerce-board.html, shop_the_stream.htmlStav sdíleného obchodu
Hry a odměnygames/*, games/templates/*, games.html, battle.htmlKonverzace, dárky a příkazy specifické pro hru
Generovaná překrytí AIaioverlay.html, aievent-overlay.htmlUlož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

  1. Stáhnout zdrojový ZIP beta verze. Nebo otevřete beta úložiště a vyberte Kód → Stáhnout ZIP.
  2. Rozbalte do složky, kterou si ponecháte, například C:\SSN\social_stream-beta\. Neupravujte soubory uvnitř ZIPu. SSN nemusíte přeinstalovat.
  3. 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říklad themes/featured-styles/featured-modern.html, ponechte kopii ve stejné složce.
  4. Otevřete kopii v textovém editoru nebo editoru kódu. Uložte ji jako .html, ne .html.txt.
Ponechte celou rozbalenou složku. Jediný soubor HTML může načítat skripty, styly, písma, obrázky, zvuk či data z okolních složek. Přesun stránky tyto odkazy poruší. Zobrazení souboru na GitHubu ani „Uložit stránku“ v prohlížeči nestáhne vše.
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í.

PravidloProč
? 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í serveruserver, 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é hodnotySkuteč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.

  1. Přetáhněte kopii HTML do Chromu nebo Edge. Zkopírujte její adresu. Začíná na file:///.
  2. 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.
  3. Otevřete spojenou adresu v prohlížeči a vyzkoušejte ji.
  4. 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ětPodrobnosti
Toto nastavíte jen jednouOBS 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:

  1. Uložte kód níže jako launch-my-poll.html vedle my-poll.html.
  2. Nahraďte ukázkový odkaz úplným zkopírovaným odkazem SSN. Změňte ./my-poll.html na název svého souboru. Odkaz ponechte v uvozovkách s běžným & znaky.
  3. 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 CSSPonechte 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 HTMLPř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í HTMLZachovejte 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 skriptZkopí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.
Nespokojte se s nefunkční napodobeninou. Návrh, který funguje jen s napevno zadanými ukázkovými zprávami, není hotový. Ponechte originál a porovnejte obě verze se stejnými vstupy.

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.

PoleJak jej zobrazit
chatmessage s textonly trueProstý text (textContent).
chatmessage jinakMůže obsahovat emotikony a povolené formátování. Použijte přibalený sanitizér.
Jména, částky, nadpisy a další obyčejná poleProstý text (textContent).
chatimg, contentimg, odkazyURL, 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>" s textonly: 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

TestJak
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í SSNNechte 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í.
OBSZkontrolujte 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.
Obnovením můžete ztratit data. Některé stránky uchovávají data v paměti. Před zapnutím automatického obnovování nebo vypínání při skrytí přečtěte průvodce daným typem. Odstraňte 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ů.

SouborK čemu slouží
docs/event-reference.htmlOficiální pole, pojmenované události, metadata, média a hodnoty darů.
docs/customoverlays.mdVlastní 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.htmlUkázková data a režimy doručování.
libs/objects.js a shared/utils/chatHtml.jsPřibalený sanitizér zobrazení.
shared/utils/chatBadges.js a shared/utils/contentImage.jsStávající zpracování odznaků a obrázků.
js/transport-dedupe.js, js/local-server-url.js, shared/overlay-control-transport.jsStávající podpora připojení, pokud je stránka načítá.
currency.jsPonechte hasDonation pro zobrazení a použijte platnou číselnou hodnotu USD donoValue, včetně nuly.
Event Flow a Příkazy a APIPokud návrh potřebuje spouštěč, použijte stávající ovládání.

Řešení problémů

ProblémVyzkoušejte
Soubor nenalezenZnovu 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ázekRozbalenou 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čiZkontrolujte šíř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átZkontrolujte 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.