إنشاء تراكبك في 5 خطوات
- اختر التراكب الذي تريد تغييره.
- قم بتنزيل المصدر المضغوط، وفك الضغط وانسخ ملف HTML الخاص بالتراكب.
- تعديل النسخة بنفسك أو اطلب من أداة ذكاء اصطناعي ذلك.
- افتح نسختك في OBS مع إضافة إعدادات جلسة SSN إلى عنوانه.
- اختبره باستخدام المشغّل الحقيقي للتراكب.
اختر التراكب المطلوب تغييره
يمكنك تغيير ألوان التراكب وخطوطه وتخطيطه ورسومه وحركته. يتيح ملف HTML هو الصفحة. أما رابط 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.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 | الدردشة والهدايا والأوامر الخاصة باللعبة |
| تراكبات الذكاء الاصطناعي التي تم إنشاؤها | aioverlay.html, aievent-overlay.html | التصاميم المحفوظة ومسار الأحداث الذي تم تكوينه |
تريد تصميماً جاهزاً؟ جرّب معرض التراكبات أو معرض القوالب. تريد استخدام مظهر دردشة من StreamElements أو Streamlabs؟ اتبع دليل الاستيراد. يأتي هذا التصدير بخطوات إعداده الخاصة.
تنزيل الملفات
- تنزيل ملف ZIP لمصدر beta. أو افتح مستودع بيتا واختر الكود → تنزيل ZIP.
- فك الضغط في مجلد ستحتفظ به، مثل
C:\SSN\social_stream-beta\. لا تعدّل داخل ZIP. لا تحتاج إلى إعادة تثبيت SSN. - ابحث عن ملف التراكب (انظر الجدول أعلاه). أنشئ نسخة بجوار الأصل، مثل
poll.html→my-poll.html. لقالب مثلthemes/featured-styles/featured-modern.html، أبقِ النسخة في المجلد نفسه. - افتح النسخة في محرر نصوص أو كود واحفظها باسم
.html، لا.html.txt.
شكل المجلد وكيف تعمل المسارات
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
افتح الملف المعدل مباشرةً من حاسوبك. لا تحتاج إلى خادم.
- اسحب نسخة HTML إلى Chrome أو Edge وانسخ عنوانها. يبدأ بـ
file:///. - من رابط تراكب SSN العامل، انسخ كل شيء بدءاً من
?فصاعداً. الصقه في نهاية عنوان الملف للحفاظ على الجلسة وكلمة المرور والإعدادات وأي#. - افتح العنوان المجمّع في متصفحك لاختباره.
- في OBS، أضف مصدر المتصفح. اترك ملف محلي غير محدد. الصق العنوان الكامل في 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=.... اختيار الملف عبر Local file لا يضيف هذه الإعدادات. |
اختياري: استخدم مربع اختيار الملف المحلي مع المشغل
يختار منتقي الملفات في OBS ملفاً لكنه لا يضيف إعداداتك. تستطيع صفحة تشغيل صغيرة فتح الصفحة المعدلة مع إرفاق الإعدادات:
- احفظ الكود أدناه باسم
launch-my-poll.htmlبجوارmy-poll.html. - استبدل الرابط النموذجي برابط SSN الكامل المنسوخ. غيّر
./my-poll.htmlإلى اسم ملفك. احتفظ بالرابط بين علامتي اقتباس، باستخدام&. - انقر ملف التشغيل مرتين لاختباره. في 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 وضعي الملف والرابط والأحجام وCustom CSS والتحديث في مرجع مصدر المتصفح.
غيّر التصميم بنفسك أو اطلب من الذكاء الاصطناعي ذلك
| أريد أن… | افعل هذا |
|---|---|
| تغيير CSS فقط | احتفظ بالرابط المستضاف واستخدم خيار OBS CSS مخصص . يؤثر فقط في مصدر OBS هذا، وليس في المتصفح العادي. |
| إعادة تنسيق نسخة HTML المعدلة | أضف أنماطك بعد الموجودة، أو اربط ملف أنماط محلياً بعدها. |
استخدم &css= أو &b64css= | تدعمه بعض الصفحات فقط. poll.html، مثلاً، لا يقرأ أياً منهما. افحص كود الصفحة أولاً. |
| تغيير تخطيط HTML | احتفظ بالمعرّفات والفئات التي تستخدمها السكربتات. إذا أعاد سكربت بناء عنصر مع كل تحديث، ضع الرسوم الدائمة خارجه أو أضفها إلى دالة العرض. |
| تعديل ملف أنماط أو سكربت مشترك | انسخه ووجّه صفحتك إلى النسخة حتى يتغير تصميمك وحده. |
جهّز شعارك وملفات الخطوط وألوان العلامة وحجم اللوحة ومرجعاً بصرياً. عموماً لا تستطيع صفحة ويب تحميل خطوط أو صور من قرص حاسوب آخر.
موجه الذكاء الاصطناعي
استخدم المطالبة الخاصة بالنوع في دليل التصميم المناسب، أو ابدأ بهذه. أعطِ الذكاء الاصطناعي ملفك المنسوخ والأنماط والسكربتات التي يحمّلها.
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">. يجب ألا يُنفَّذ أو يضبط علامة الاختبار أو يترك سمات أحداث. اختبر أيضاً رابطاً يستخدم مخطط script.
نجاح الاختبار يغطي المسارات التي اختبرتها فقط. ركز على دوال العرض والحقول التي تغيرت بتصميمك.
اختبره، جزءاً جزءاً
| اختبار | الكيفية |
|---|---|
| التخطيط | استخدم وضع المعاينة أو العرض التجريبي إن وجد، أو عينات محلية وهمية. جرّب أسماء ورسائل طويلة وصوراً رمزية مفقودة وبيانات فارغة وعدد الصفوف المتوقع. |
| تسليم SSN | أبقِ SSN مفعلاً واستخدم إنشاء رسالة اختبار مع الجلسة نفسها. يحتاج وضع Extension 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 للعرض، واستخدم قيمة رقمية صالحة بالدولار الأمريكي لـ donoValueومنها الصفر. |
| Event Flow و الأوامر وAPI | أعد استخدام أدوات التحكم الموجودة عندما يحتاج التصميم إلى مشغّل. |
حل المشكلات
| المشكلة | جرّب هذا |
|---|---|
| الملف غير موجود | اسحب HTML إلى متصفحك مجدداً وانسخ عنوانه. تحقق من أن الاسم ينتهي بـ .html وليس .html.txt. |
| النص أو الخط أو الصورة مفقود | أبقِ المجلد المفكوك كما هو، مع نسختك بجوار الأصل. تحقق من وجود الصور والخطوط المضافة حيث تتوقعها الصفحة. |
| عرض فارغ أو «قيد الانتظار» | تحقق من الجلسة وكلمة المرور وكامل ? و # بالكامل، وأن SSN يعمل والميزة مفعلة والمدخل الصحيح يصل. قارن بالرابط الأصلي من SSN. |
| المظهر في OBS يختلف عن المتصفح | تحقق من العرض والارتفاع وCustom CSS القديم والخطوط والذاكرة المؤقتة وتخزين المتصفح. حدّث بعد الحفظ. |
| الشعار يختفي عند التحديث | ربما يعيد السكربت بناء الحاوية. ضع الزخارف الدائمة خارجها أو حدّث قالب العرض. |
| تُصفّر البيانات أو تُنفذ الإجراءات مرتين | تحقق من إعدادات التحديث/الإغلاق والنسخ المكررة من التراكب أو أدوات التحكم، ومن معالجة الصفحة للتكرار والحالة. |
حالة خاصة: الصفحات التي تقرأ ملفات بيانات منفصلة
تُحمّل الخريطة ملفات JSON محلية باستخدام fetch()، وهو ما قد يمنعه المتصفح عند الفتح من القرص. لتغيير مظهر الخريطة فقط، استخدم رابطها المستضاف مع Custom CSS في OBS. للنسخة المعدلة، اطلب من الذكاء الاصطناعي تضمين بيانات الخريطة داخل الصفحة حتى تعمل من القرص. الاستضافة خيار متقدم للصفحات التي تحتاجها فعلاً وليست خطوة عادية.
أصلح أصغر مشكلة مؤكدة أولاً. تغيير المظهر لا ينبغي أن يحتاج تعديلات على سكربتات الالتقاط أو حقول أحداث جديدة. إذا شاركت نسخة عامة، أرفق ملفاتها واترك ملفات التشغيل الخاصة خارجها.