随着募款增长显示不同的 GIF
使用一个同时包含目标进度条和素材的自定义覆盖层。进度条已计算进度,素材应跟随相同进度,不要另行统计捐款。此方案需要编辑覆盖层副本,并非额外的内置选项。
- 在 SSN 中设置 打赏罐和目标进度条 带有 流动目标条(Fluid Goal Bar)、标题、目标和捐款筛选器。对于固定 500 美元的金额目标,请将 热度杯计分(Hype Cup Scoring) 关闭,并禁用重复或递增目标。自定义之前,先确保原始链接能正常工作。
- 关注 下载并保存文件结构 来创建
my-goal.html。把五个 GIF 与该文件放在同一目录,使用表中的文件名。保持画布尺寸一致,避免切换时图片跳动或拉伸。 - 把复制的源码和 GIF 交给编辑器或 AI 工具。使用 下方的里程碑设置说明 ,配合 完整自定义提示词。要求在现有进度条旁显示一张图片。
- 在每个里程碑预览编辑后的副本,然后按照 会话和OBS 用原始链接设置连接。将组合覆盖层作为一个 OBS Browser Source 添加。
| 目标进度 | 以 500 美元目标为例 | 你的 GIF 文件 |
|---|---|---|
| 0% 至不足 25% | 0 美元至不足 125 美元 | goal-0.gif |
| 25% 至不足 50% | 125 美元至不足 250 美元 | goal-25.gif |
| 50% 至不足 75% | 250 美元至不足 375 美元 | goal-50.gif |
| 75% 至不足 100% | 375 美元至不足 500 美元 | goal-75.gif |
| 100% 及以上 | 500 美元及以上 | goal-100.gif |
这些文件名只是示例,请使用自己的素材。表中的美元金额适用于这个固定金额目标。对于次数、Hype、重复或递增目标,请根据进度条显示的百分比选择图片。
复制 GIF 里程碑设置说明
Add milestone artwork beside the existing Fluid Goal Bar in my-goal.html.
Use these relative GIF files:
0%: goal-0.gif; 25%: goal-25.gif; 50%: goal-50.gif;
75%: goal-75.gif; 100%: goal-100.gif.
Read the existing getProgressState().percentage from the renderAmount()
update path. Do not add a second donation counter or change goal math.
Select the highest reached threshold. If progress jumps from 20% to 80%,
show goal-75.gif directly. Clamp the artwork selection to 0–100%.
Change img.src only when its selected file changes so ordinary updates
do not restart the GIF. Keep one fixed-size image box with object-fit: contain.
Provide meaningful alternative text and handle a missing image without
hiding or breaking the goal bar.
Update the artwork on first render, donations, manual total changes,
reset, restored totals, and recurring/advancing-goal transitions.
Keep the completion image while a fixed goal remains at or above 100%.
If the configured goal resets or advances, follow its displayed percentage.
Preserve the existing filters, session, password, currency/count/Hype
semantics, persistence, completion rules, and local dependencies.
Use the existing preview mode to test 0, 124, 125, 249, 250, 374,
375, 499, 500, and 600 against a fixed goal of 500. Also test a large
jump, a manual decrease, reset, refresh, and any enabled recurring rules.
在不改变直播累计值的情况下排练
用下方的预览设置打开编辑后的副本。将 startamount 改为提示词中的数值,每次检查前都刷新。预览使用示例数据,并禁用实时连接、保存的累计值和声音。
file:///C:/SSN/social_stream-beta/my-goal.html?preview&style=bar&goal=500&startamount=125
金额为 125 美元时,第一个里程碑 GIF 应显示在填充 25% 的进度条旁。请移除 preview 以及排练用的 startamount ,再使用真实会话及其原始设置。预览不保存累计值,因此请另外在测试会话中检查恢复累计值和重置行为。
选择正确的起始页
Tip Jar / Goal Meter 可以呈现相同的不同指标和样式 tipjar.html.首先在 SSN 中配置预期指标,然后在更改设计时保留生成的 URL。此进球中的炒作得分与观众/闲聊计数器不同 hype.html.

下载并保存文件结构
- 下载源ZIP 并提取它。这些指南使用测试版源;将一次下载的文件放在一起。
- 复制
tipjar.html为my-goal.html原文旁边。如果选择不同的页面或主题,请将其副本保留在该文件的原始文件夹中。 - 在编辑器或 AI 工具中打开复制的 HTML 及其引用的 CSS/JS。将提供的图稿/字体添加到同一项目并使用相对路径。从 CSS 覆盖开始;更改生成的标记时包括渲染器。
以下文件可帮助您找到设计和行为。这是一个阅读列表,而不是完整的依赖包:保持提取的文件夹完整,包括图像、字体、脚本和任何数据文件。
| 文件 | 为什么它很重要 |
|---|---|
tipjar.html | 目标/jar 呈现、设置和金额处理。 |
currency.js | 美元估算和来源覆盖。 |
thirdparty/matter.min.js | jar 演示中使用的物理原理。 |
shared/overlay-control-transport.js | 主机设置和控制更新。 |
shared/utils/chatHtml.js | 展示消毒;需要 libs/objects.js。 |
连接您的副本并在 OBS 中打开它
启动SSN并首先使原始生成的覆盖URL起作用。的 session= 值连接到该 SSN 会话;这不是您的频道名称或此文件的名称。保持 SSN、相关功能及其数据源运行。
当您需要上游修复时的

- 将编辑后的 HTML 文件拖到 Chrome 或 Edge 中。从地址栏复制其地址;它开始于
file:///. - 复制所有内容
?继续在您的工作 SSN 覆盖链接中并将其添加到该文件地址的末尾。保留所有设置,包括会话、密码和任何#结局。 - 在浏览器中打开结果,然后设置 OBS 浏览器源的 URL 与以下地址相同 本地文件 未检查。将源尺寸与您的预期设计相匹配。
对于上面的起始文件,本地地址如下所示;您的实际链接可能包含其他必需选项:
file:///C:/SSN/social_stream-beta/my-goal.html?session=YOUR_SESSION
使用计算机上的实际文件地址。 OBS 与源码一起保存;将下载的文件夹保留在同一位置。保存设计更改后,刷新浏览器源。的 共享设置指南 包括 Mac 示例和本地文件复选框的可选启动器。
哪里需要改变设计
更改罐子图稿、填充颜色、栏轨道、目标标签、金额排版和完成动画。从中描述的现有样式和颜色控件开始 目标指南.对于自定义图稿,请将资源保留在副本旁边,并仅更新其引用路径。
目标的度量、完成/重置规则、持久性和捐赠者计数属于其行为。在更改演示文稿时保留这些内容。请勿将原始硬币、赠送订阅和美元转换为一个未标记的数字。保留一个数字 donoValue 为零。
复制此AI提示
将您复制的源文件和参考图稿提供给人工智能。替换括号内的详细信息。将输入安全说明保留在提示中。
显示完整提示
Customize my-goal.html, copied from tipjar.html.
Design: [describe the look or attach a reference].
Colors/fonts/assets: [supply hex colors and local filenames].
OBS canvas and placement: [size and position].
Style this tip jar/goal as [design] for [canvas]. Change artwork, colors, layout, labels, and motion while preserving the chosen metric, amount calculation, source filters, streak handling, persistence, and completion/reset rules. Keep hasDonation display units and donoValue USD semantics. Do not fabricate progress when the feed is empty.
Read docs/event-reference.html for incoming fields and
docs/overlay-customization-guide.html for local setup and safe rendering.
Keep the existing session/password handling, labels, server routes, query
parameters, URL fragments, and relative asset paths. Use classic scripts
compatible with Chrome 80. Keep executable dependencies packaged locally.
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, any additional assets, exact local browser/OBS
setup instructions using placeholders, and the specific tests performed.
Do not put my private session link or credentials into a public example.测试此覆盖类型
首先使用预览或测试设置。的 测试消息指南 解释了如何通过SSN发送虚构的有效负载;提交到生产会话的测试可以触发其现有的自动化。
- 首先尝试页面的预览模式(?使用您的样式选项进行预览);连接真实会话时删除预览。
- 使用与所选指标匹配的示例支持事件。检查零进度、部分进度、达到的目标以及超出目标的进度。
- 在排练之间检查重置/结转设置和源刷新。检查 OBS 中的货币标签、长标题以及任何声音或完成效果。
同时运行 输入渲染检查 针对您更改的渲染路径。保存编辑后,在排练之间刷新 OBS 浏览器源并重复可见的交互。浏览器预览不会建立实时捕获或 OBS 行为。