Створіть власні накладки Social Stream

Завантажуйте, налаштовуйте, підключайтеся та тестуйте локальні дизайни накладень у OBS із посібниками для кожної сімейства накладень.

Створіть власний оверлей за 5 кроків

Завантажте файлиЗмінити дизайнВідкрити в OBS
  1. Виберіть оверлей який хочете змінити.
  2. Завантажити вихідний файл ZIP, розпакуйте та скопіюйте HTML-файл оверлею.
  3. Змініть копію самостійно або попросіть інструмент ШІ.
  4. Відкрийте копію в OBS з налаштуваннями сесії SSN, доданими до адреси.
  5. Перевірте зі справжнім тригером оверлею.
Потрібні лише нові кольори чи шрифти? Пропустіть завантаження. Збережіть звичайне розміщене посилання та вставте CSS у браузерному джерелі OBS в поле Власний CSS .

Виберіть оверлей для зміни

Можна змінювати кольори, шрифти, компонування, графіку й рух оверлею. Сторінка Файл HTML — сама сторінка. Файл URL-адреса OBS указує на неї та додає налаштування сесії й відображення.

Виберіть робоче накладання, перш ніж змінювати його вигляд.
Почніть з оверлею, який уже працює.

Кожен тип оверлею слухає різні дані. Сторінка чату, виділеного повідомлення та опитування використовують різні вхідні дані. Відкрийте посібник із дизайну свого типу:

Керівництво з проектуванняЗапуск файлівЩо рухає цим
Чат і докsampleoverlay.html, dock.html, themes/*Кожне захоплене повідомлення чату
Вибрані повідомленняfeatured.html, samplefeatured.html, themes/featured-styles/*Вибрані повідомлення та чіткі команди
Сповіщення та стрічки подійmulti-alerts.html, events.html, themes/events/index.htmlВідповідні рядки подій/платних чатів
Графічні опитуванняpoll.htmlГолоси плюс налаштування опитування хоста
Наконечники та ціліtipjar.htmlНалаштована метрика підтримки/підрахунку/Hype
Лічильники та рейтингиhype.html, meta.html, leaderboard.html, scoreboard.htmlПідрахунки, метадані, дії або знімки точок
Списки очікування та розіграшіwaitlist.htmlЧерга хосту та стан переможця
Дисплеї роздачgiveaway.html, giveaway-obs-entries.htmlСтан керованої роздачі або застаріла стрічка записів
Таймериtimer.htmlСтан таймера та елементи керування
Тікериticker.htmlНалаштований вміст тікера
Хмари слів і картиwordcloud.html, map.htmlВідповідні слова або записи про місцезнаходження
Реакції та медіа-ефектиreactions.html, emotes.html, content.html, gif.html, confetti.html, stickers.html, actions.htmlСпеціальний медіа/подія/активатор сторінки
Титриcredits.htmlКонтроль зібраних учасників і кредитів
Дисплеї музики та штучного інтелектуspotify-overlay.html, cohost-overlay.html, bot.html, chatbot.htmlОновлення, що відтворюються зараз, або бот/співорганізатор
Вироби та платиmonetization.html, commerce-board.html, shop_the_stream.htmlСтан спільної торгівлі
Ігри та нагородиgames/*, games/templates/*, games.html, battle.htmlІгровий чат, подарунки та команди
Створено AI накладанняaioverlay.html, aievent-overlay.htmlЗбережені проекти та їх налаштований маршрут події

Потрібне готове рішення? Спробуйте Галерея оверлеїв або Галерея шаблонів. Хочете перенести оформлення чату StreamElements чи Streamlabs? Дотримуйтеся посібник з імпорту. Такий експорт має власні кроки налаштування.

Завантажте файли

  1. Завантажити код beta у ZIP. Або відкрийте бета-репозиторій і виберіть Код → Завантажити ZIP.
  2. Розпакуйте в постійну теку, наприклад C:\SSN\social_stream-beta\. Не редагуйте всередині ZIP. Перевстановлювати SSN не потрібно.
  3. Знайдіть файл оверлею (див. таблицю вище). Створіть копію поруч з оригіналом, наприклад poll.html → my-poll.html. Для теми на кшталт themes/featured-styles/featured-modern.html, тримайте копію в тій самій теці.
  4. Відкрийте копію в текстовому редакторі чи редакторі коду. Збережіть як .html, ні .html.txt.
Збережіть усю розпаковану теку. Один HTML-файл може завантажувати скрипти, стилі, шрифти, зображення, звук і дані із сусідніх тек. Переміщення сторінки ламає посилання. Перегляд файлу на GitHub або «Зберегти сторінку» в браузері не завантажує все.
Будова теки й робота шляхів
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

Шлях на кшталт ../../shared/utils/chatHtml.js задається відносно сторінки, що його завантажує. Переміщення сторінки в корінь ламає шлях. Скопіюйте графіку й шрифти до теки та використовуйте відносні шляхи. Змінена копія не отримує майбутніх виправлень SSN автоматично.

Збережіть посилання сесії

Запустіть SSN, підключіть джерело й перевірте початковий оверлей. Потім скопіюйте повне посилання з інструмента SSN для цього оверлею.

https://socialstream.ninja/poll.html?session=YOUR_SESSION&password=YOUR_PASSWORD&server2

Значення після session= — ваша сесія SSN. Це не канал YouTube, ім'я Twitch, ім'я файлу чи назва опитування. SSN і сторінка мають використовувати одну сесію та пароль. Залиште SSN запущеним: оверлеї лише отримують дані, а не захоплюють чат самі.

ПравилоЧому
? починає налаштування, & з'єднує рештуКопіюйте, не передруковуйте. Усередині атрибута HTML пишіть &. У браузері або полі URL OBS використовуйте звичайний &.
Збережіть налаштування сервераserver, server2, server3, локальні кінцеві точки, мітки й версії відрізняються між сторінками. Не додавайте параметр сервера лише тому, що його використовує інший оверлей.
Збережіть усе після #Це може бути важливо. Наприклад, AI Event Overlay використовує приватний #aieventauth=... .
Використовуйте заповнювачі під час публікаціїНе включайте справжню сесію, пароль і приватні токени до знімків екрана, репозиторіїв і промптів ШІ.

Якщо копія порожня, спочатку перевірте початкове посилання. Одні сторінки запитують відсутні налаштування, інші приховуються чи перенаправляють. Правильна сесія в посиланні позбавляє здогадок.

Відкрийте файл в OBS

Відкрийте змінений файл безпосередньо з комп'ютера. Сервер не потрібен.

  1. Перетягніть копію HTML у Chrome чи Edge. Скопіюйте адресу. Вона починається з file:///.
  2. Із робочого посилання оверлею SSN скопіюйте все починаючи з ? і далі. Вставте це в кінець адреси файлу. Так збережуться сесія, пароль, налаштування та будь-які # .
  3. Відкрийте отриману адресу в браузері для перевірки.
  4. В OBS додайте Джерело браузера (Browser Source). Залиште Локальний файл вимкненим. Вставте повну адресу до URL і задайте ширину та висоту.

Приклад: це посилання SSN…

https://socialstream.ninja/poll.html?session=YOUR_SESSION&password=YOUR_PASSWORD&server2

…стає таким для завантаженої копії опитування у Windows:

file:///C:/SSN/social_stream-beta/my-poll.html?session=YOUR_SESSION&password=YOUR_PASSWORD&server2

У macOS починається з file:///Users/..., у Linux зазвичай file:///home/.... Копіювання з браузера правильно обробляє пробіли та слеші.

Корисно знатиПодробиці
Це налаштовується один разOBS зберігає адресу. Не переміщуйте теку й залишайте SSN та джерело чату запущеними.
Зберегли зміну?Натисніть Оновити кеш поточної сторінки (Refresh cache of current page) у властивостях джерела.
Чому не відмічено позначку «Локальний файл»?Поле URL дозволяє додати ?session=.... Вибір через «Локальний файл» не додає цих налаштувань.
Додатково: використовуйте прапорець «Локальний файл» із засобом запуску

Діалог вибору файлу OBS вибирає файл, але не додає налаштувань. Невелика сторінка-запускач може відкрити змінену сторінку з налаштуваннями:

  1. Збережіть код нижче як launch-my-poll.html поруч із my-poll.html.
  2. Замініть посилання-заповнювач повним скопійованим посиланням SSN. Змініть ./my-poll.html на ім'я свого файлу. Залиште посилання в лапках зі звичайним & символи.
  3. Двічі клацніть запускач для перевірки. В OBS увімкніть Локальний файл і виберіть пускова установка. Він перенаправляє до оверлею з налаштуваннями й токеном # .
<!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>

Для теми в підтеці покладіть запускач поруч із копією теми. Тримайте його в таємниці: він містить посилання підключення. Самодостатній експорт із вбудованими налаштуваннями використовує власні інструкції.

OBS пояснює режими файлу/URL, розміри, користувацький CSS та оновлення в Посилання на джерело браузера.

Змінити дизайн самостійно або з ШІ

Я хочу…Що зробити
Змінити лише CSSЗбережіть розміщене посилання та використовуйте в OBS Власний CSS . Це впливає лише на це джерело OBS, не на звичайний браузер.
Змінити оформлення моєї HTML-копіїДодайте стилі після наявних або підключіть після них локальний файл стилів.
Використовуйте &css= або &b64css=Це підтримують лише деякі сторінки. poll.html, наприклад, не читає жодного з них. Спочатку перевірте код сторінки.
Змінити структуру HTMLЗбережіть ID та класи, які використовують скрипти. Якщо скрипт перебудовує елемент під час кожного оновлення, розмістіть постійну графіку поза ним або додайте до функції відтворення.
Змінити спільний файл стилів або скриптСкопіюйте його й укажіть копію на своїй сторінці, щоб змінювався лише ваш дизайн.

Підготуйте логотип, файли шрифтів, фірмові кольори, розмір полотна й візуальний зразок. Вебсторінка зазвичай не може завантажувати шрифти чи зображення з диска іншого комп'ютера.

Підказка AI

Використовуйте промпт для потрібного типу з посібника з дизайну або почніть із цього. Передайте ШІ копію файлу й завантажувані стилі та скрипти.

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.
Не приймайте імітацію. Дизайн, що працює лише з жорстко заданими прикладами повідомлень, не завершений. Збережіть початковий файл і порівняйте обидва на однакових вхідних даних.

Не дозволяйте вхідному чату ставати кодом

Імена, повідомлення, заголовки, суми й посилання надходять від глядачів і зовнішніх сервісів. Вважайте їх текстом, ніколи кодом. Очищуйте там, де відтворення розміщує їх на сторінці.

ПолеЯк показати
chatmessage з textonly trueЗвичайний текст (textContent).
chatmessage інакшеМоже містити емоути й дозволене форматування. Використовуйте вбудований санітайзер.
Імена, суми, заголовки та інші звичайні поляЗвичайний текст (textContent).
chatimg, contentimg, посиланняURL, не HTML. Перевірте їх за наявними правилами сторінки для медіа й посилань, потім задайте властивості 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>
  • Якщо на сторінці вже є санітайзер, збережіть його. Не додавайте другий.
  • Для файлів у підтеках виправте шляхи до скриптів.
  • Не вставляйте необроблені імена в рядки атрибутів або кольори в розмітку стилів. Перевіряйте значення стилів перед установленням кожної властивості окремо.
  • Навіть очищений HTML небезпечно виконувати як JavaScript або використовувати як інструкцію для ШІ.

Докладніше: Посібник OWASP із безпечних приймачів даних та очищення HTML.

Як безпечно перевірити відтворення

Запускайте їх у приватному локальному попередньому перегляді, не в публічному чаті.

  • Використовуйте ім'я на кшталт Guest <b>One</b>. Дужки мають відобразитися як текст.
  • Надіслати chatmessage: "<b>Hello</b>" з textonly: true, потім false. В одному випадку теги мають відобразитися як текст, в іншому — як жирний текст.
  • Перевірте, що підтримуваний емоут і повідомлення лише із зображенням і далі працюють.
  • Попросіть ШІ перевірити нешкідливий тест, наприклад <img src=x onerror="window.__ssnInjectionProbe=1">. Він не має виконуватися, встановлювати маркер чи залишати атрибути подій. Також перевірте посилання зі скриптовою схемою URL.

Успішна перевірка охоплює лише перевірені шляхи. Зосередьтеся на функціях відтворення та полях, змінених вашим дизайном.

Перевіряйте по одній частині

ПеревіркаЯк
КомпонуванняВикористовуйте режим попереднього перегляду/демо сторінки, якщо він є, або вигадані локальні приклади. Перевірте довгі імена й повідомлення, відсутні аватари, порожні дані та очікувану кількість рядків.
Доставлення SSNЗалиште SSN увімкненим і використовуйте Створити тестове повідомлення із тією самою сесією. Звичайному режиму API розширення потрібен віддалене керування розширенням через API увімкненим. Використовуйте тестову конфігурацію: тестові повідомлення можуть запускати автоматизації.
Справжній тригерВиведіть повідомлення з Dock для картки, проголосуйте в опитуванні, виберіть переможця розіграшу, змініть рухомий рядок або запустіть таймер. Звичайний чат перевіряє не все.
Справжнє захопленняПеревірте, що справжнє повідомлення чи подія надходить і до оригіналу, і до копії. Штучна подія підтверджує лише роботу відображення.
OBSПеревірте підсумковий розмір, прозорість, анімації, звук, шрифти й шари. Спробуйте показ/приховування, очищення/скидання та оновлення. OBS і браузер не діляться входами й збереженими даними.
Оновлення може призвести до втрати даних. Деякі сторінки зберігають дані в пам'яті. Прочитайте посібник типу, перш ніж вмикати автооновлення чи вимкнення під час приховування. Видаліть demo або preview із посилання, перш ніж очікувати живі дані.

Файли, які потрібно передати ШІ

Передайте ШІ сам файл оверлею, завантажувані CSS/JS і ці файли. Лише довідка подій не пояснює керування опитуванням чи код компонування кожного оверлею.

ФайлДля чого це
docs/event-reference.htmlОфіційні поля, іменовані події, метадані, медіа та суми пожертв.
docs/customoverlays.mdВласні приймачі та приклади з'єднань.
Сумісність подій і сповіщеньЯкі події та поля надсилає кожне джерело.
Керівництво з тестового повідомлення і createtestmessage.htmlПриклади даних і режими доставлення.
libs/objects.js і shared/utils/chatHtml.jsВбудований санітайзер для відображення.
shared/utils/chatBadges.js і shared/utils/contentImage.jsНаявна обробка значків і зображень.
js/transport-dedupe.js, js/local-server-url.js, shared/overlay-control-transport.jsНаявна підтримка з'єднань, якщо сторінка завантажує ці файли.
currency.jsЗалиште hasDonation для відображення та використовуйте допустиме числове значення USD donoValue, включаючи нуль.
Потоки подій і Команди й APIВикористовуйте наявні елементи керування, якщо дизайну потрібен тригер.

Усунення несправностей

ПроблемаЩо спробувати
Файл не знайденоЗнову перетягніть HTML у браузер і скопіюйте адресу. Переконайтеся, що ім'я закінчується на .html, а не .html.txt.
Відсутній сценарій, шрифт або зображенняЗбережіть розпаковану теку як є, з копією поруч з оригіналом. Переконайтеся, що додані зображення та шрифти розташовані там, де сторінка їх очікує.
Порожній екран або «очікування»Перевірте сесію, пароль, повні ? і # частини, роботу SSN, увімкнення функції та надходження правильних даних. Порівняйте з початковим посиланням SSN.
В OBS виглядає інакше, ніж у браузеріПеревірте ширину/висоту, старий користувацький CSS, шрифти, кеш і сховище браузера. Оновіть після збереження.
Логотип зникає під час оновленняСкрипт може перебудовувати контейнер. Розмістіть постійні прикраси поза ним або змініть шаблон відтворення.
Дані скидаються або дії виконуються двічіПеревірте налаштування оновлення та вивантаження, дублікати оверлею чи керування, а також обробку дублікатів і стану самою сторінкою.
Особливий випадок: сторінки, які читають окремі файли даних

Карта завантажує локальні JSON-файли через fetch(), що браузери можуть блокувати під час відкриття з диска. Для простої зміни оформлення карти використовуйте розміщене посилання та власний CSS в OBS. Для зміненої копії попросіть ШІ вбудувати дані карти в сторінку, щоб вона відкривалася з диска. Хостинг — розширений варіант для сторінок, яким він справді потрібен, а не звичайний крок.

Спочатку виправте найменшу підтверджену проблему. Зміна оформлення не має вимагати змін скриптів захоплення чи нових полів подій. Публікуючи форк, додайте ресурси, але виключіть приватні запускачі.