OBS / StreamElements Overlay Skill
Formål
Denne skill bruges når TuxCore hjælper Thomas med OBS overlays, StreamElements widgets, browser sources, chat overlays, countdowns, DJ-rotationer, billedevisning og livestream UI.
Den er relevant for:
- OBS Browser Source overlays
- StreamElements custom widgets
- DJ-navn overlays
- Countdown overlays
- Chat command integration
- Billedvisning i stream
- Moderator-godkendte billeder
- Twitch live indicators
- SommerFest overlays
- DjGulvBasS branding
- TuxiNet streamværktøjer
Standardprincipper
- Lever som udgangspunkt HTML, CSS og JavaScript samlet, hvis brugeren skriver
$obs $full. - Gør config-værdier nemme at ændre øverst i filen.
- Brug ingen unødvendige eksterne dependencies.
- Sørg for at overlayet virker i OBS Browser Source.
- Brug transparent baggrund som standard.
- Undgå scrollbars.
- Undgå console-spam.
- Brug responsive størrelser.
- Gør tekst og animationer tydelige på stream.
- Skriv kommentarer i koden hvor config ændres.
Standard HTML struktur
Et OBS overlay bør typisk bygges sådan:
<!DOCTYPE html>
<html lang="da">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OBS Overlay</title>
<style>
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
overflow: hidden;
background: transparent;
}
</style>
</head>
<body>
<div id="overlay"></div>
<script>
// Config øverst
</script>
</body>
</html>
OBS Browser Source anbefaling
Typiske OBS-indstillinger:
Width: 1920
Height: 1080
FPS: 30
Custom CSS: tom
Shutdown source when not visible: efter behov
Refresh browser when scene becomes active: efter behov
Ved overlays til sociale medier/posters kan størrelser også være:
1080x1920
1080x1350
1280x720
1920x1080
StreamElements widgets
Når der laves StreamElements custom widgets, skal TuxCore være opmærksom på:
- HTML, CSS og JS ligger i separate felter.
FIELDSbruges til bruger-konfigurerbare værdier.DATAkan bruges til events, overlays og dynamisk data.- Config bør være let at finde.
- Undgå kode der kræver lokal filadgang.
- Brug sikre fallback-værdier.
Config-standard
JavaScript bør have config øverst:
const CONFIG = {
title: "DjGulvBasS",
intervalMs: 10000,
autoRotate: true,
debug: false
};
CSS bør have CSS variables:
:root {
--main-color: #facc15;
--bg-color: rgba(0, 0, 0, 0.0);
--text-color: #ffffff;
--glow-color: rgba(250, 204, 21, 0.9);
}
Chat commands
Ved chat command overlays bør TuxCore dokumentere:
- Kommando
- Hvem må bruge den
- Hvad den gør
- Cooldown hvis relevant
- Fallback hvis kommando ikke virker
Eksempel:
!next - springer til næste DJ
!auto - slår automatisk rotation til igen
!pause - pauser rotation
DJ rotation overlay
Ved DJ-navn rotation bør overlayet understøtte:
- Liste over navne
- Automatisk rotation
- Manuel next-knap eller chat command
- Justerbart interval
- Animation ind/ud
- Fallback hvis listen er tom
Countdown overlay
Countdown overlays bør understøtte:
- Fast slutdato
- Dansk tekst
- Dage/timer/minutter/sekunder
- Eventnavn
- Når countdown er slut, vis en slutbesked
- Nem ændring af dato øverst i config
Eksempel config:
const CONFIG = {
eventTitle: "SommerFest 2026",
targetDate: "2026-09-12T09:00:00+02:00",
finishedText: "SommerFest er i gang!"
};
Billed-overlay
Ved upload/moderation/billedvisning bør TuxCore tænke i dette flow:
upload
→ database/fil
→ moderator godkender
→ overlay henter næste godkendte billede
→ OBS viser billedet
→ billede markeres som vist eller roterer videre
Overlay bør hente data via endpoint:
/next-image.php
/overlay-data.php
/api/overlay/next
Standard fetch-loop
Brug et kontrolleret fetch-loop:
async function fetchData() {
try {
const res = await fetch(CONFIG.endpoint, { cache: "no-store" });
if (!res.ok) throw new Error("HTTP " + res.status);
const data = await res.json();
updateOverlay(data);
} catch (err) {
if (CONFIG.debug) console.error(err);
}
}
setInterval(fetchData, CONFIG.refreshMs);
fetchData();
Animationer
Brug CSS animationer fremfor tunge JS-loops når muligt.
Eksempel:
.overlay-item {
animation: fadeInUp 600ms ease both;
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(24px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
Sikkerhedsregler
- Brug ikke hemmelige tokens i frontend-overlay.
- Lad ikke OBS Browser Source kalde admin endpoints.
- Public overlay endpoints bør kun returnere nødvendige data.
- Uploads skal modereres før visning.
- Billeder skal valideres på filtype og størrelse.
- Brug cache-busting eller
cache: "no-store"ved live data. - Undgå at vise brugerens IP, mail eller private data i overlay.
Når TuxCore laver $obs $full
Lever som udgangspunkt:
- Komplet HTML-fil.
- CSS inkluderet eller separat efter behov.
- JavaScript inkluderet eller separat efter behov.
- Config øverst.
- OBS Browser Source indstillinger.
- Testtrin.
- Eventuelle endpoint-eksempler.
- Noter om StreamElements, hvis relevant.
Når TuxCore laver $obs $patch
Lever kun:
- Den konkrete fejl/ændring.
- CSS/JS/HTML patch.
- Hvor patchen skal placeres.
- Kort test i OBS.
- Eventuelle cache-refresh råd.
Typiske fejl
Overlay vises ikke
Mulige årsager:
- Forkert Browser Source URL
- Filen åbnes via forkert sti
- HTML har syntax-fejl
- Elementet er uden størrelse
- Farven er samme som baggrund
- OBS cache viser gammel version
Fix:
- Reload Browser Source
- Tjek console via browser
- Test filen i Chrome
- Brug tydelig testtekst
Animation hakker
Mulige årsager:
- For mange JS animationer
- Store billeder
- For hyppig polling
- CSS filter/glow er for tung
Fix:
- Brug CSS transform/opacity
- Komprimer billeder
- Øg refresh interval
- Reducer blur/glow
Fetch virker i browser men ikke OBS
Mulige årsager:
- CORS
- HTTPS/mixed content
- Forkert lokal URL
- Endpoint returnerer HTML-fejl i stedet for JSON
Fix:
- Brug samme protokol
- Returnér korrekt JSON header
- Test endpoint direkte
- Tjek OBS log/browser console
Testtrin
Et overlay er klar når:
- Det åbner korrekt i almindelig browser.
- Det åbner korrekt i OBS Browser Source.
- Baggrunden er transparent hvis ønsket.
- Tekst/billeder skalerer korrekt.
- Animationer kører uden hak.
- Config kan ændres nemt.
- Eventuelle endpoints returnerer korrekt data.
Tags
obs, streamelements, overlay, html, css, javascript, twitch, djgulvbass, tuxcore, livestream