Kendi Sosyal Akış katmanlarınızı tasarlayın

OBS'deki yerel katman tasarımlarını, her katman ailesi için kılavuzlarla birlikte indirin, özelleştirin, bağlayın ve test edin.

5 adımda kendi katmanınızı yapın

Dosyaları indirinTasarımı değiştirinOBS'de aç
  1. Katmanı seçin değiştirmek istediğiniz.
  2. Kaynak ZIP'i indirin, ZIP'i çıkarın ve katmanın HTML dosyasını kopyalayın.
  3. Kopyayı düzenleyin kendiniz veya bir AI aracından isteyerek.
  4. Kopyanızı OBS'de açın adresine SSN oturum ayarlarını ekleyerek.
  5. Test edin katmanın gerçek tetikleyicisiyle.
Yalnızca yeni renk veya yazı tipi mi istiyorsunuz? İndirmeyi atlayın. Normal barındırılan bağlantıyı koruyup CSS'yi OBS Tarayıcı Kaynağındaki Özel CSS kutusu.

Değiştirilecek katmanı seçin

Katmanın renklerini, yazı tiplerini, yerleşimini, görsellerini ve hareketini değiştirebilirsiniz. Şu araç: HTML dosyası sayfanın kendisidir. Şu dosya: OBS URL'si ona yönlenir ve oturum ile görüntüleme ayarlarınızı ekler.

Görünümünü değiştirmeden önce çalışan bir kaplama seçin.
Zaten çalışan katmandan başlayın.

Her katman türü farklı girdileri dinler. Sohbet, öne çıkan mesaj ve anket aynı girdiyi kullanmaz. Kullandığınız türün tasarım rehberini açın:

Tasarım kılavuzuDosyalar başlatılıyorOnu yönlendiren şey nedir?
Sohbet ve Docksampleoverlay.html, dock.html, themes/*Yakalanan her sohbet mesajı
Öne çıkan mesajlarfeatured.html, samplefeatured.html, themes/featured-styles/*Seçilen mesajlar ve komutları temizle
Uyarılar ve olay akışlarımulti-alerts.html, events.html, themes/events/index.htmlEşleşen etkinlikler / ücretli sohbet satırları
Grafiksel anketlerpoll.htmlOylar artı toplantı sahibi anket ayarları
Bahşiş kavanozları ve kalelertipjar.htmlYapılandırılmış destek/sayım/Heyecan metriği
Sayaçlar ve sıralamalarhype.html, meta.html, leaderboard.html, scoreboard.htmlSayımlar, meta veriler, etkinlik veya nokta anlık görüntüleri
Bekleme listeleri ve sıra çekilişleriwaitlist.htmlToplantı sahibi kuyruğu ve kazanan durumu
Hediye vitrinlerigiveaway.html, giveaway-obs-entries.htmlYönetilen hediye durumu veya eski giriş feed'i
Zamanlayıcılartimer.htmlZamanlayıcı durumu ve kontrolleri
Ticker'larticker.htmlYapılandırılmış kayan yazı içeriği
Kelime bulutları ve haritalarwordcloud.html, map.htmlEşleşen kelimeler veya konum girişleri
Tepkiler ve medya etkilerireactions.html, emotes.html, content.html, gif.html, confetti.html, stickers.html, actions.htmlSayfaya özel medya/olay/eylem tetikleyicisi
Jenerikcredits.htmlToplanan katılımcılar ve kredi kontrolleri
Müzik ve AI ekranlarıspotify-overlay.html, cohost-overlay.html, bot.html, chatbot.htmlŞu anda oynatılan veya bot/cohost güncellemeleri
Ürünler ve panolarmonetization.html, commerce-board.html, shop_the_stream.htmlPaylaşılan ticaret durumu
Oyunlar ve ödüllergames/*, games/templates/*, games.html, battle.htmlOyuna özel sohbet, hediyeler ve komutlar
Oluşturulan yapay zeka katmanlarıaioverlay.html, aievent-overlay.htmlKaydedilen tasarımlar ve bunların yapılandırılmış olay rotası

Hazır bir şey mi istiyorsunuz? Şunu deneyin: Katman galerisi veya Şablon Galerisi. StreamElements veya Streamlabs sohbet görünümü mü taşıyorsunuz? Şu rehberi izleyin: içe aktarma kılavuzu. Bu dışa aktarımın kendi kurulum adımları vardır.

Dosyaları indirin

  1. Beta kaynak ZIP dosyasını indirin. Veya şunu açın: beta deposu ve şunu seçin: Kod → ZIP'i İndir.
  2. Saklayacağınız klasöre çıkarın; örneğin C:\SSN\social_stream-beta\. ZIP'in içinde düzenlemeyin. SSN'yi yeniden kurmanız gerekmez.
  3. Katman dosyasını yukarıdaki tablodan bulun. Orijinalin yanına kopya oluşturun; örneğin poll.html → my-poll.html. Şu tür bir tema için: themes/featured-styles/featured-modern.html, kopyayı aynı klasörde tutun.
  4. Kopyayı metin veya kod düzenleyicide açın. Şu adla kaydedin: .html, değil .html.txt.
Çıkarılan klasörün tamamını koruyun. Tek HTML dosyası yakın klasörlerden betik, stil, yazı tipi, görsel, ses veya veri yükleyebilir. Sayfayı taşımak bağlantıları bozar. GitHub dosya görünümü veya tarayıcının “Sayfayı kaydet” seçeneği her şeyi almaz.
Klasör düzeni ve yolların işleyişi
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

Şu tür bir yol: ../../shared/utils/chatHtml.js yükleyen sayfaya görelidir. Sayfayı köke taşımak yolu bozar. Kendi görsel ve yazı tiplerini de klasöre kopyalayıp göreli yollar kullanın. Düzenlediğiniz kopya gelecekteki SSN düzeltmelerini otomatik almaz.

Oturum bağlantısını koruyun

SSN'yi başlatın, kaynak bağlayın ve orijinal katmanı kontrol edin. Ardından şunu kopyalayın: tam bağlantı o katmanın SSN aracından.

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

Şundan sonraki değer: session= SSN oturumunuzdur; YouTube kanalınız, Twitch adınız, dosya adınız veya anket başlığı değildir. SSN ve sayfa aynı oturum ve parolayı kullanmalıdır. SSN açık kalmalıdır; katmanlar yalnızca veri alır, sohbet yakalamaz.

KuralNeden?
? ayarları başlatır, & kalanları birleştirirYeniden yazmayın, kopyalayın. HTML özniteliğinin içinde şunu yazın: &. Tarayıcıda veya OBS URL kutusunda düz &.
Sunucu ayarlarını koruyunserver, server2, server3, yerel uç noktalar, etiketler ve sürüm değerleri sayfaya göre değişir. Başka bir katman kullanıyor diye sunucu bayrağı eklemeyin.
Şundan sonraki her şeyi koruyun: #Önemli olabilir. Örneğin AI Event Overlay özel bir #aieventauth=... tokenı.
Paylaşırken yer tutucu kullanınGerçek oturum, parola ve özel tokenları ekran görüntülerine, depolara veya AI istemlerine koymayın.

Kopyanız boşsa önce orijinal bağlantıyı kontrol edin. Bazı sayfalar eksik ayarları sorar, bazıları gizli kalır veya yönlendirir. Bağlantıya doğru oturumu koymak tahmin etmeyi önler.

Dosyanızı OBS'de açın

Düzenlenmiş dosyayı bilgisayardan doğrudan açın. Sunucu gerekmez.

  1. HTML kopyanızı Chrome veya Edge'e sürükleyip adresi kopyalayın. Şununla başlar: file:///.
  2. Çalışan SSN katman bağlantısından şuradan itibaren her şeyi kopyalayın: ? itibaren. Dosya adresinin sonuna yapıştırın. Oturum, parola, ayarlar ve varsa # bölümü.
  3. Birleştirilmiş adresi tarayıcıda açıp test edin.
  4. OBS'de şunu ekleyin: Tarayıcı Kaynağı. Şunu bırakın: Yerel dosya işaretini kaldırın. Tam adresi şuraya yapıştırın: URL ve genişlik ile yüksekliği ayarlayın.

Örnek: bu SSN bağlantısı…

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

…Windows'a indirilen anket kopyası için şu olur:

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

macOS'ta şununla başlar: file:///Users/..., Linux'ta genellikle file:///home/.... Tarayıcıdan kopyalamak boşluk ve eğik çizgileri sizin için düzenler.

Bilmeniz gerekenlerAyrıntılar
Yalnızca bir kez kurarsınızOBS adresi kaydeder. Klasörü yerinde bırakın, SSN'yi ve sohbet kaynağını açık tutun.
Değişikliği kaydettiniz mi?Tıklayın: Geçerli sayfanın önbelleğini yenile .
Yerel dosyayı neden işaretlenmemiş olarak bırakmalısınız?URL kutusu şunu eklemenize izin verir: ?session=.... Local file ile dosya seçmek bu ayarları eklemez.
İsteğe bağlı: Başlatıcıyla Yerel dosya onay kutusunu kullanın

OBS dosya seçicisi dosyayı seçer ama ayarları ekleyemez. Küçük bir başlatıcı sayfa, düzenlenmiş sayfanızı ayarlarıyla açabilir:

  1. Aşağıdaki kodu şu adla kaydedin: launch-my-poll.html yanına my-poll.html.
  2. Yer tutucu bağlantıyı kopyaladığınız tam SSN bağlantısıyla değiştirin. Şunu değiştirin: ./my-poll.html kendi dosya adınıza. Bağlantıyı tırnak içinde tutup düz & karakterleri.
  3. Başlatıcıyı çift tıklayarak test edin. OBS'de şunu işaretleyin: Yerel dosya ve şunu seçin: başlatıcı. Ayarlar ve şu değerle katmanınıza yönlendirir: # bölümü.
<!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>

Tema alt klasördeyse başlatıcıyı tema kopyasının yanına koyun. Bağlantınızı içerdiği için başlatıcıyı gizli tutun. Ayarlarını içinde taşıyan bağımsız dışa aktarımlar kendi talimatlarını izler.

OBS dosya/URL modlarını, boyutları, Özel CSS'yi ve yenilemeyi şu belgesinde açıklar: Tarayıcı Kaynağı referansı.

Tasarımı değiştirin veya AI'dan isteyin

Şunu yapmak istiyorum…Yapılacak işlem
Yalnızca CSS değiştirinBarındırılan bağlantıyı koruyup OBS'deki Özel CSS kutusu. Yalnızca o OBS kaynağını etkiler, normal tarayıcıyı değil.
Düzenlenmiş HTML kopyamın görünümünü değiştirStillerinizi mevcut stillerin sonuna ekleyin veya yerel stil dosyasını onların ardından bağlayın.
Kullanın: &css= veya &b64css=Yalnızca bazı sayfalar destekler. poll.htmlörneğin ikisini de okumaz. Önce sayfanın kodunu kontrol edin.
HTML yerleşimini değiştirinBetiklerin kullandığı ID ve sınıfları koruyun. Betik her güncellemede öğeyi yeniden kuruyorsa kalıcı görseli dışına koyun veya çizim işlevine ekleyin.
Ortak stil dosyasını veya betiği düzenlemekKopyalayın ve sayfanızı kopyaya yönlendirin; yalnızca sizin tasarımınız değişsin.

Logonuzu, yazı tipi dosyalarını, marka renklerini, tuval boyutunu ve görsel referansı hazırlayın. Web sayfası genellikle başka bilgisayarın diskindeki yazı tipi veya görseli yükleyemez.

AI istemi

Her tasarım rehberindeki türe özel istemi kullanın veya bununla başlayın. AI'ya kopya dosyayı ve yüklediği stil ile betikleri verin.

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.
Sahte bir uygulamayla yetinmeyin. Yalnızca sabit kodlanmış örnek mesajlarla çalışan tasarım tamamlanmış değildir. Orijinali koruyun ve ikisini aynı girdilerle karşılaştırın.

Gelen sohbetin koda dönüşmesini önleyin

Adlar, mesajlar, başlıklar, tutarlar ve bağlantılar izleyicilerden ve dış hizmetlerden gelir. Bunları kod değil metin olarak ele alın. Çizim işlevinin sayfaya koyduğu yerde temizleyin.

AlanNasıl gösterilir
chatmessage şununla: textonly trueDüz metin (textContent).
chatmessage aksi haldeİfadeler ve izin verilen biçimlendirme içerebilir. Paketle gelen temizleyiciyi kullanın.
Adlar, tutarlar, başlıklar ve diğer düz alanlarDüz metin (textContent).
chatimg, contentimg, bağlantılarHTML değil URL'dir. Sayfanın mevcut medya/bağlantı kurallarıyla kontrol edip DOM özelliklerini ayarlayın.
<!-- 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>
  • Sayfada zaten bir temizleyici varsa koruyun. İkincisini eklemeyin.
  • Alt klasörlerdeki dosyalar için betik yollarını düzeltin.
  • Ham adları öznitelik dizelerine veya ham renkleri stil işaretlemesine yapıştırmayın. Stil değerlerini doğrulayın, sonra özellikleri tek tek ayarlayın.
  • Temizlenmiş HTML bile JavaScript olarak çalıştırmak veya AI talimatı olarak kullanmak için güvenli değildir.

Ek bilgi: OWASP güvenli çıktı noktaları ve HTML temizleme rehberi.

Çizim işlevi güvenle nasıl test edilir

Bunları halka açık sohbette değil özel yerel önizlemede çalıştırın.

  • Şu tür bir ad kullanın: Guest <b>One</b>. Köşeli işaretler metin olarak görünmelidir.
  • Gönder chatmessage: "<b>Hello</b>" şununla: textonly: true, sonra false. Birinde etiketler düz metin, diğerinde kalın yazı görünmelidir.
  • Desteklenen bir ifadenin ve yalnızca görsel içeren mesajın hâlâ çalıştığını kontrol edin.
  • AI'nın şu tür zararsız bir deneme yapmasını sağlayın: <img src=x onerror="window.__ssnInjectionProbe=1">. Çalışmamalı, test işaretini ayarlamamalı veya olay öznitelikleri bırakmamalıdır. Script şemalı bağlantıyı da deneyin.

Başarılı bir deneme yalnızca test edilen yolları kapsar. Tasarımınızın değiştirdiği çizim işlevlerine ve alanlara odaklanın.

Parça parça test edin

TestNasıl
YerleşimVarsa sayfanın preview/demo modunu, yoksa uydurma yerel örnekleri kullanın. Uzun adları ve mesajları, eksik avatarları, boş verileri ve beklenen satır sayısını deneyin.
SSN teslimatıSSN'yi açık tutup şunu kullanın: Test Mesajı Oluştur aynı oturumla. Normal Extension API modu şunu gerektirir: uzantının uzaktan API kontrolü açık olsun. Test ortamı kullanın; test mesajları otomasyonlarınızı tetikleyebilir.
Gerçek tetikleyiciDock'tan mesaj öne çıkarın, ankette oy verin, çekiliş kazananı seçin, kayan yazıyı değiştirin veya zamanlayıcı başlatın. Düz sohbet her şeyi test etmez.
Gerçek yakalamaGerçek mesaj veya olayın hem orijinale hem kopyanıza ulaştığını kontrol edin. Sahte olay yalnızca görüntülemenin çalıştığını gösterir.
OBSSon boyutu, şeffaflığı, animasyonları, sesi, yazı tiplerini ve katman sırasını kontrol edin. Göster/gizle, temizle/sıfırla ve yenilemeyi deneyin. OBS ile tarayıcı girişleri veya kayıtlı verileri paylaşmaz.
Yenilemek veri kaybettirebilir. Bazı sayfalar veriyi bellekte tutar. Otomatik yenilemeyi veya gizlenince kapanmayı açmadan önce tür rehberine bakın. Şunu kaldırın: demo veya preview canlı veri beklemeden önce bağlantıdan.

AI'ya verilecek dosyalar

AI'ya katmanın dosyasını, yüklediği CSS/JS'yi ve bunları verin. Olay referansı tek başına anket kontrollerini veya her katmanın yerleşim kodunu açıklamaz.

DosyaNe için
docs/event-reference.htmlResmî alanlar, adlandırılmış olaylar, metaveri, medya ve bağış değerleri.
docs/customoverlays.mdÖzel alıcılar ve bağlantı örnekleri.
Olaylar ve Uyarı UyumluluğuHer kaynağın gönderdiği olaylar ve alanlar.
Test mesajı kılavuzu ve createtestmessage.htmlÖrnek veriler ve teslimat modları.
libs/objects.js ve shared/utils/chatHtml.jsPaketle gelen görüntüleme temizleyicisi.
shared/utils/chatBadges.js ve shared/utils/contentImage.jsMevcut rozet ve görsel işleme.
js/transport-dedupe.js, js/local-server-url.js, shared/overlay-control-transport.jsSayfanız yüklediğinde mevcut bağlantı desteği.
currency.jsŞunu bırakın: hasDonation görüntüleme için, geçerli sayısal USD değeri olarak da donoValue, sıfır dahil.
Etkinlik Akışı ve Komutlar ve APITasarım tetikleyici gerektiriyorsa mevcut kontrolleri yeniden kullanın.

Sorunları giderme

SorunŞunu deneyin
Dosya bulunamadıHTML'yi tarayıcıya yeniden sürükleyip adresi kopyalayın. Adın .html ile bittiğini, .html.txt olmadığını kontrol edin.
Eksik komut dosyası, yazı tipi veya resimÇıkardığınız klasörü olduğu gibi, kopyayı orijinalin yanında tutun. Eklenen görseller ve yazı tipleri sayfanın beklediği yerde olmalıdır.
Boş veya “bekleniyor” ekranıOturumu, parolayı ve tam ? ve # bölümlerini, SSN'nin çalıştığını, özelliğin açık olduğunu ve doğru girdinin geldiğini kontrol edin. Orijinal SSN bağlantısıyla karşılaştırın.
OBS'de tarayıcıdan farklı görünüyorGenişlik/yükseklik, eski Özel CSS, yazı tipleri, önbellek ve tarayıcı depolamasını kontrol edin. Kaydettikten sonra yenileyin.
Logo güncellemede kayboluyorBetik kapsayıcıyı yeniden oluşturuyor olabilir. Kalıcı süslemeyi dışına koyun veya çizim şablonunu güncelleyin.
Veriler sıfırlanıyor veya işlemler iki kez oluyorYenileme/kapatma ayarlarını, katman veya kontrollerin yinelenen kopyalarını ve sayfanın tekrar/durum yönetimini kontrol edin.
Özel durum: ayrı veri dosyalarını okuyan sayfalar

Harita yerel JSON dosyalarını şununla yükler: fetch(); diskten açarken tarayıcı bunu engelleyebilir. Yalnızca harita stilini değiştirmek için barındırılan bağlantı ve OBS Özel CSS kullanın. Düzenlenmiş kopyada, diskten açılabilmesi için AI'dan harita verisini sayfaya gömmesini isteyin. Barındırma, gerçekten gereken sayfalar için ileri bir seçenektir; sıradan bir adım değildir.

Önce doğrulanmış en küçük sorunu düzeltin. Görünüm değişikliği yakalama betikleri veya yeni olay alanları gerektirmemelidir. Açık bir çatal paylaşırsanız varlıkları ekleyin, özel başlatıcıları dışarıda bırakın.