Progetta i tuoi overlay Social Stream

Scarica, personalizza, collega e testa i progetti di overlay locali in OBS, con guide per ciascuna famiglia di overlay.

Crea la tua sovrimpressione in 5 passaggi

Scaricare i fileCambia il designApri a OBS
  1. Scegli la sovrimpressione che vuoi modificare.
  2. Scarica lo ZIP sorgente, estrailo e copia il file HTML di quella sovrimpressione.
  3. Modifica la copia da solo oppure chiedilo a uno strumento IA.
  4. Apri la copia in OBS con le impostazioni della sessione SSN aggiunte all'indirizzo.
  5. Provalo con il trigger reale della sovrimpressione.
Vuoi solo nuovi colori o caratteri? Non serve scaricare. Mantieni il normale link ospitato e incolla il CSS nel campo CSS personalizzato della sorgente browser OBS.

Scegli la sovrimpressione da modificare

Puoi cambiare colori, caratteri, layout, grafica e animazioni di una sovrimpressione. La File HTML è la pagina. Il URL OBS punta a essa e aggiunge sessione e impostazioni di visualizzazione.

Scegli una sovrapposizione funzionante prima di modificarne l'aspetto.
Parti da una sovrimpressione che funziona già.

Ogni tipo di sovrimpressione ascolta dati diversi. Una pagina chat, una di messaggi in evidenza e un sondaggio non usano gli stessi input. Apri la guida al design di quella che usi:

Guida alla progettazioneAvvio dei fileCosa lo spinge
Chatta e Docksampleoverlay.html, dock.html, themes/*Ogni messaggio di chat catturato
Messaggi in primo pianofeatured.html, samplefeatured.html, themes/featured-styles/*Messaggi selezionati e comandi di cancellazione
Avvisi e feed di eventimulti-alerts.html, events.html, themes/events/index.htmlEventi corrispondenti/righe di chat a pagamento
Sondaggi graficipoll.htmlVoti più impostazioni del sondaggio dell'ospite
Barattoli e obiettivitipjar.htmlMetrica di supporto/conteggio/Hype configurata
Contatori e classifichehype.html, meta.html, leaderboard.html, scoreboard.htmlConteggi, metadati, attività o istantanee dei punti
Liste d'attesa e sorteggio delle codewaitlist.htmlCoda dell'host e stato del vincitore
Display omaggiogiveaway.html, giveaway-obs-entries.htmlStato giveaway gestito o feed di voci legacy
Temporizzatoritimer.htmlStato e controlli del timer
Tickerticker.htmlContenuto del ticker configurato
Nuvole di parole e mappewordcloud.html, map.htmlParole o voci di posizione corrispondenti
Reazioni ed effetti mediaticireactions.html, emotes.html, content.html, gif.html, confetti.html, stickers.html, actions.htmlIl media/evento/attivatore specifico della pagina
Ringraziamenticredits.htmlPartecipanti raccolti e controlli dei crediti
Musica e display AIspotify-overlay.html, cohost-overlay.html, bot.html, chatbot.htmlAggiornamenti in riproduzione o bot/cohost
Prodotti e tavolemonetization.html, commerce-board.html, shop_the_stream.htmlStato del commercio condiviso
Giochi e premigames/*, games/templates/*, games.html, battle.htmlChat, regali e comandi specifici del gioco
Sovrapposizioni AI generateaioverlay.html, aievent-overlay.htmlDisegni salvati e relativo percorso di eventi configurato

Vuoi qualcosa di pronto? Prova la Galleria degli overlay oppure Galleria dei template. Vuoi usare un tema chat di StreamElements o Streamlabs? Segui la guida all'importazione. Quell'esportazione include i propri passaggi di configurazione.

Scaricare i file

  1. Scarica il codice beta in ZIP. Oppure apri il archivio beta e scegli Codice → Scarica ZIP.
  2. Estrailo in una cartella che conserverai, come C:\SSN\social_stream-beta\. Non modificare dentro lo ZIP. Non devi reinstallare SSN.
  3. Trova il file della sovrimpressione (tabella sopra). Crea una copia accanto all'originale, come poll.html → my-poll.html. Per un tema come themes/featured-styles/featured-modern.html, mantieni la copia nella stessa cartella.
  4. Apri la copia in un editor di testo o codice. Salvala come .html, no .html.txt.
Mantieni l'intera cartella estratta. Un file HTML può caricare script, stili, caratteri, immagini, audio o dati da cartelle vicine. Spostare la pagina interrompe quei collegamenti. La vista di GitHub o “Salva pagina” del browser non scaricano tutto.
Struttura della cartella e funzionamento dei percorsi
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

Un percorso come ../../shared/utils/chatHtml.js è relativo alla pagina che lo carica. Spostare la pagina nella radice rompe il percorso. Copia anche grafica e caratteri nella cartella e usa percorsi relativi. La copia modificata non riceverà automaticamente le future correzioni SSN.

Mantieni il link della sessione

Avvia SSN, collega una sorgente e verifica che la sovrimpressione originale funzioni. Poi copia il link completo dallo strumento SSN di quella sovrimpressione.

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

Il valore dopo session= è la sessione SSN. Non è il canale YouTube, il nome Twitch, il nome del file o il titolo del sondaggio. SSN e la pagina devono usare la stessa sessione e password. Mantieni SSN attivo: le sovrimpressioni ricevono solo dati, non catturano la chat.

RegolaPerché
? inizia le impostazioni, & unisce il restoCopiali senza riscriverli. Dentro un attributo HTML scrivi &. Nel campo URL del browser o di OBS, usa un semplice &.
Mantieni le impostazioni del serverserver, server2, server3, gli endpoint locali, le etichette e i valori di versione variano per pagina. Non aggiungere un'opzione server solo perché un'altra sovrimpressione la usa.
Mantieni tutto dopo #Può essere importante. AI Event Overlay, per esempio, usa un token privato #aieventauth=... .
Usa segnaposto quando condividiNon includere sessione reale, password o token privati in schermate, repository o prompt IA.

Se la copia resta vuota, controlla prima il link originale. Alcune pagine chiedono le impostazioni mancanti; altre restano nascoste o reindirizzano. Inserire la sessione corretta nel link evita tentativi alla cieca.

Apri il file in OBS

Apri il file modificato direttamente dal computer. Non serve un server.

  1. Trascina la copia HTML in Chrome o Edge. Copia l'indirizzo. Inizia con file:///.
  2. Dal link funzionante della sovrimpressione SSN, copia tutto da ? in poi. Incollalo alla fine dell'indirizzo del file. Così conservi sessione, password, impostazioni e ogni frammento # .
  3. Apri l'indirizzo combinato nel browser per provarlo.
  4. In OBS, aggiungi una Sorgente browser. Lascia File locale deselezionato. Incolla l'indirizzo completo in URL e imposta larghezza e altezza.

Esempio: questo link SSN…

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

…diventa questo per una copia di sondaggio scaricata su Windows:

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

Su macOS inizia con file:///Users/..., su Linux di solito file:///home/.... Copiare dal browser gestisce spazi e barre per te.

Da sapereDettagli
Devi configurarlo solo una voltaOBS salva l'indirizzo. Non spostare la cartella e mantieni attivi SSN e la sorgente chat.
Hai salvato una modifica?Fai clic su Aggiorna cache della pagina corrente nelle proprietà della fonte.
Perché lasciare il file locale deselezionato?Il campo URL permette di aggiungere ?session=.... Scegliere il file con File locale non aggiunge queste impostazioni.
Facoltativo: utilizzare la casella di controllo File locale con un launcher

Il selettore file di OBS sceglie il file ma non aggiunge le impostazioni. Una piccola pagina di avvio può aprire la pagina modificata con le impostazioni incluse:

  1. Salva il codice seguente come launch-my-poll.html accanto a my-poll.html.
  2. Sostituisci il link segnaposto con il link SSN completo copiato. Cambia ./my-poll.html con il nome del file. Mantieni il link tra virgolette, con semplici caratteri & .
  3. Fai doppio clic sul launcher per provarlo. In OBS, seleziona File locale e scegli il lanciatore. Apre la sovrimpressione con le impostazioni e la parte # .
<!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>

Per un tema in una sottocartella, metti il launcher accanto alla copia del tema. Mantienilo privato perché contiene il link di connessione. Un'esportazione autonoma che include già le impostazioni segue le proprie istruzioni.

OBS spiega modalità file/URL, dimensioni, CSS personalizzato e aggiornamento nel suo Riferimento alla sorgente del browser.

Cambia il design o chiedilo all'IA

Voglio…Fai così
Modificare solo CSSMantieni il link ospitato e usa il campo CSS personalizzato di OBS. Influisce solo su quella sorgente OBS, non su un browser normale.
Cambiare lo stile della mia copia HTML modificataAggiungi i tuoi stili dopo quelli esistenti oppure collega dopo un foglio di stile locale.
Usa &css= oppure &b64css=Solo alcune pagine lo supportano. poll.html, per esempio, non legge nessuno dei due. Controlla prima il codice della pagina.
Modificare il layout HTMLMantieni ID e classi usati dagli script. Se uno script ricrea un elemento a ogni aggiornamento, metti la grafica permanente fuori da esso o aggiungila al renderer.
Modificare un foglio di stile o script condivisoCopialo e fai puntare la pagina alla copia, così cambia solo il tuo design.

Prepara logo, file dei caratteri, colori del marchio, dimensioni dell'area e un riferimento visivo. Una pagina web normalmente non può caricare caratteri o immagini dal disco di un altro computer.

Richiesta IA

Usa il prompt specifico di ogni guida al design o inizia con questo. Dai all'IA il file copiato e gli stili e script che carica.

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.
Non accettare una simulazione. Un design che funziona solo con messaggi di esempio fissi non è finito. Conserva l'originale e confronta entrambi con gli stessi dati di prova.

Evita che la chat in arrivo diventi codice

Nomi, messaggi, titoli, importi e link provengono da spettatori e servizi esterni. Trattali come testo, mai come codice. Ripuliscili dove il renderer li inserisce nella pagina.

CampoCome mostrarlo
chatmessage con textonly trueTesto semplice (textContent).
chatmessage altrimentiPuò contenere emote e formattazione consentita. Usa il sanitizzatore incluso.
Nomi, importi, titoli e altri campi sempliciTesto semplice (textContent).
chatimg, contentimg, linkURL, non HTML. Validali con le regole media/link esistenti della pagina, poi imposta le proprietà 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>
  • Se la pagina ha già un sanitizzatore, mantienilo. Non aggiungerne un secondo.
  • Per i file nelle sottocartelle, correggi i percorsi degli script.
  • Non incollare nomi grezzi nelle stringhe degli attributi né colori grezzi nel markup di stile. Valida i valori di stile prima di impostarli una proprietà alla volta.
  • L'HTML ripulito non è comunque sicuro da eseguire come JavaScript o da usare come istruzione per l'IA.

Altre informazioni: Guida OWASP a destinazioni sicure e sanitizzazione HTML.

Come testare il renderer in sicurezza

Esegui queste prove in un'anteprima locale privata, non in una chat pubblica.

  • Usa un nome come Guest <b>One</b>. Le parentesi angolari devono apparire come testo.
  • Invia chatmessage: "<b>Hello</b>" con textonly: true, poi false. Uno deve mostrare i tag come testo; l'altro deve mostrare testo in grassetto.
  • Verifica che un'emote supportata e un messaggio con sola immagine continuino a funzionare.
  • Chiedi all'IA di provare una sonda innocua come <img src=x onerror="window.__ssnInjectionProbe=1">. Non deve eseguire codice, impostare il marcatore né lasciare attributi di evento. Prova anche un link con schema script.

Una verifica riuscita copre solo i percorsi testati. Concentrati sui renderer e sui campi modificati dal design.

Provala una parte alla volta

ProvaCome
LayoutUsa il modo anteprima o demo della pagina, se presente, o esempi locali fittizi. Prova nomi e messaggi lunghi, avatar mancanti, dati vuoti e il numero previsto di righe.
Consegna SSNMantieni SSN attivo e usa Crea messaggio di prova con la stessa sessione. La normale modalità API dell'estensione richiede controllo API remoto dell'estensione attivo. Usa una configurazione di prova: i messaggi di test possono attivare le automazioni.
Il trigger realeMetti in evidenza un messaggio del Dock, vota in un sondaggio, scegli un vincitore, cambia il testo del ticker o avvia un timer. La chat normale non testa tutto.
Cattura realeVerifica che un messaggio o evento reale raggiunga sia l'originale sia la copia. Un evento simulato dimostra solo che la visualizzazione funziona.
OBSControlla dimensioni finali, trasparenza, animazioni, audio, caratteri e livelli. Prova mostra/nascondi, cancella/reimposta e aggiorna. OBS e il browser non condividono accessi né dati salvati.
Aggiornare può perdere dati. Alcune pagine conservano dati in memoria. Consulta la guida del tipo prima di attivare aggiornamento automatico o arresto quando nascosta. Rimuovi demo oppure preview dal link prima di attendere dati dal vivo.

File da dare all'IA

Dai all'IA il file della sovrimpressione e i CSS/JS che carica, oltre a questi. Il riferimento eventi da solo non spiega i controlli di un sondaggio né il codice di layout di ogni sovrimpressione.

FascicoloA cosa serve
docs/event-reference.htmlCampi ufficiali, eventi con nome, metadati, media e valori delle donazioni.
docs/customoverlays.mdRicevitori personalizzati ed esempi di connessione.
Compatibilità di eventi e avvisiQuali eventi e campi invia ogni sorgente.
Guida al messaggio di prova e createtestmessage.htmlDati di esempio e modalità di consegna.
libs/objects.js e shared/utils/chatHtml.jsIl sanitizzatore di visualizzazione incluso.
shared/utils/chatBadges.js e shared/utils/contentImage.jsGestione esistente di badge e immagini.
js/transport-dedupe.js, js/local-server-url.js, shared/overlay-control-transport.jsSupporto di connessione esistente quando la pagina li carica.
currency.jsMantieni hasDonation per la visualizzazione e usa un valore numerico valido in USD per donoValue, compreso zero.
Event Flow e Comandi e APIRiutilizza i controlli esistenti quando il design richiede un trigger.

Risolvere i problemi

ProblemaProva così
File non trovatoTrascina di nuovo l'HTML nel browser e copia l'indirizzo. Verifica che il nome finisca in .html, non .html.txt.
Scrittura, carattere o immagine mancantiMantieni la cartella estratta com'è, con la copia accanto all'originale. Verifica che grafica e caratteri aggiunti siano dove la pagina li cerca.
Visualizzazione vuota o “in attesa”Controlla la sessione, la password e le parti complete ? e # , che SSN sia attivo, la funzione abilitata e arrivi l'input corretto. Confronta con il link SSN originale.
L'aspetto è diverso in OBS e nel browserControlla larghezza, altezza, vecchio CSS personalizzato, caratteri, cache e memoria del browser. Aggiorna dopo aver salvato.
Il logo scompare all'aggiornamentoLo script potrebbe ricreare il contenitore. Metti la decorazione permanente fuori da esso o aggiorna il modello di rendering.
I dati si azzerano o le azioni avvengono due volteControlla le impostazioni di aggiornamento e scaricamento, le copie duplicate della sovrimpressione o dei controlli e la gestione di duplicati e stato della pagina.
Caso speciale: pagine che leggono file di dati separati

La mappa carica file JSON locali con fetch(), che i browser possono bloccare aprendo dal disco. Per un semplice cambio di stile della mappa, usa il link ospitato con CSS personalizzato di OBS. Per una copia modificata, chiedi all'IA di inserire i dati della mappa nella pagina per aprirla dal disco. L'hosting è un'opzione avanzata per pagine che ne hanno davvero bisogno, non un passaggio normale.

Correggi prima il più piccolo problema confermato. Un cambio di stile non dovrebbe richiedere modifiche agli script di cattura né nuovi campi evento. Se condividi un fork pubblico, includi le risorse ed escludi i launcher privati.