📦 Webchat Audio Notifications — 浏览器音频通知

v1.2.0

为 Moltbot/Clawdbot 网页聊天添加浏览器音频通知,提供 5 种强度级别(从轻声到难以忽视),仅在标签页后台时触发。

1· 2.4k·3 当前·4 累计
brokemac79 头像by @brokemac79·MIT-0
下载技能包
License
MIT-0
最后更新
2026/2/26
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能的代码、安装步骤和运行指令与其声明的目的(客户端浏览器音频通知)一致,不请求无关的凭据或高级系统访问权限。
评估建议
["主机客户端文件(howler.min.js、notification.js、sounds)在自己的 Web 服务器上,不引用远程/第三方 URL。","审查 client/notification.js 以查找任何意外的网络请求(默认使用 fetch 获取可配置的本地配置文件)。","注意自定义声音上传存储在 localStorage 中(以 base64 编码,大小有限,按浏览器存储)。","在预发布环境中测试以确认自动播放处理 UX 和无意外网络流量。","验证许可(MIT)和 howler.js 版本以确保兼容性。"]...
详细分析 ▾
用途与能力
名称/描述、SKILL.md 安装步骤和包含的文件都与客户端 Web 聊天音频通知器功能匹配,无不相关二进制文件、环境变量或云凭据请求。
指令范围
运行指令仅限于将客户端文件复制到 Web 聊天、加载脚本、初始化通知器和挂接消息事件,注意配置路径应为本地可信路径。
安装机制
无自动安装器,需手动复制静态客户端文件,所有代码已包含,无从未知 URL 下载或存档提取。
凭证需求
技能不需要环境变量、凭据或配置路径,使用浏览器 API 和 localStorage 持久化设置和自定义声音。
持久化与权限
技能不是始终启用的,不请求系统范围持久权限,不修改其他技能配置,设置和自定义声音数据存储在浏览器的 localStorage 中。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.2.02026/1/29

5 个强度级别、自定义声音上传、下拉式设置 UI、智能标签检测

无害

安装命令

点击复制
官方npx clawhub@latest install webchat-audio-notifications
镜像加速npx clawhub@latest install webchat-audio-notifications --registry https://cn.longxiaskill.com

技能文档

Moltbot/Clawdbot webchat 的浏览器音频通知。当新消息到达时播放通知声音——但仅在标签页处于后台时播放。

功能特点

  • 🔔 智能通知 - 仅在标签页隐藏时播放
  • 🎚️ 音量控制 - 可调节 0-100%
  • 🎵 5 种强度级别 - 耳语 (1) 到 无法忽视 (5)
  • 📁 自定义声音 - 上传您自己的音频 (MP3, WAV, OGG, WebM)
  • 🔕 轻松切换 - 一键启用/禁用
  • 💾 设置持久化 - 首选项保存在 localStorage 中
  • 📱 移动端友好 - 在移动端优雅降级
  • 🚫 自动播放处理 - 遵守浏览器策略
  • ⏱️ 冷却时间 - 防止刷屏(每次提醒间隔 3 秒)
  • 🐞 调试模式 - 可选日志记录

快速开始

测试 POC

cd examples
python3 -m http.server 8080
# Open http://localhost:8080/test.html

测试步骤:

  • 切换到另一个标签页
  • 点击"触发通知"
  • 听到声音了!🔊

基础集成

// 初始化
const notifier = new WebchatNotifications({
  soundPath: './sounds',
  soundName: 'level3', // 中等强度(默认)
  defaultVolume: 0.7
});
await notifier.init();

// 新消息时触发 socket.on('message', () => notifier.notify());

// 不同事件使用不同级别 socket.on('mention', () => { notifier.setSound('level5'); // 提及时使用最大音量 notifier.notify(); });

API

构造函数选项

new WebchatNotifications({
  soundPath: './sounds', // 声音文件目录路径
  soundName: 'level3', // level1(耳语)到 level5(非常响)
  defaultVolume: 0.7, // 0.0 到 1.0
  cooldownMs: 3000, // 两次提醒之间的最小时间
  enableButton: true, // 显示启用提示
  debug: false // 控制台日志
});

强度级别:

  • level1 - 耳语 (9.5KB) - 最低调
  • level2 - 轻柔 (12KB) - 温和
  • level3 - 中等 (13KB) - 默认
  • level4 - 响亮 (43KB) - 引人注意
  • level5 - 非常响 (63KB) - 无法忽视

方法

  • init() - 初始化(在 Howler 加载后调用)
  • notify(eventType?) - 触发通知(仅在标签页隐藏时有效)
  • test() - 立即播放声音(忽略标签页状态)
  • setEnabled(bool) - 启用/禁用通知
  • setVolume(0-1) - 设置音量
  • setSound(level) - 更改强度('level1' 到 'level5')
  • getSettings() - 获取当前设置

浏览器兼容性

浏览器版本支持情况
Chrome92+✅ 完整支持
Firefox90+✅ 完整支持
Safari15+✅ 完整支持
移动端最新版⚠️ 有限支持
总体: 92% 的用户(Web Audio API 支持)

文件结构

webchat-audio-notifications/
├── client/
│   ├── notification.js # 主类 (10KB)
│   ├── howler.min.js # 音频库 (36KB)
│   └── sounds/
│       ├── level1.mp3 # 耳语 (9.5KB)
│       ├── level2.mp3 # 轻柔 (12KB)
│       ├── level3.mp3 # 中等 (13KB, 默认)
│       ├── level4.mp3 # 响亮 (43KB)
│       └── level5.mp3 # 非常响 (63KB)
├── examples/
│   └── test.html # 独立测试页面,包含所有级别
├── docs/
│   └── integration.md # 集成指南
└── README.md # 完整文档

集成指南

详见 docs/integration.md

  • 分步设置
  • Moltbot 特定钩子
  • React/Vue 示例
  • 常见模式(@提及、勿扰模式、徽章)
  • 测试清单

配置示例

简单配置

const notifier = new WebchatNotifications();
await notifier.init();
notifier.notify();

高级配置

const notifier = new WebchatNotifications({
  soundPath: '/assets/sounds',
  soundName: 'level2', // 从轻柔开始
  defaultVolume: 0.8,
  cooldownMs: 5000,
  debug: true
});
await notifier.init();

// 普通消息 = 轻柔 socket.on('message', () => { notifier.setSound('level2'); notifier.notify(); });

// 提及 = 非常响 socket.on('mention', () => { notifier.setSound('level5'); notifier.notify(); });

// 私信 = 响亮 socket.on('dm', () => { notifier.setSound('level4'); notifier.notify(); });

带 UI 控件


测试 🔊

故障排除

没有声音?

  • 先点击页面(自动播放限制)
  • 检查标签页是否确实隐藏
  • 验证音量 > 0
  • 检查控制台是否有错误

标签页激活时也播放声音?

  • 启用调试模式
  • 检查"Tab is visible, skipping"消息
  • 如果缺失则报告 bug

移动端不工作?

  • iOS 每次播放都需要用户手势
  • 考虑视觉回退方案(闪烁 favicon)

性能

  • 打包大小: 约 122KB(压缩后)
  • 内存: 播放期间约 2MB
  • CPU: 可忽略(浏览器原生)
  • 网络: 一次性下载,缓存

安全性

  • ✅ 无外部请求
  • ✅ 仅使用 localStorage
  • ✅ 无追踪
  • ✅ 无特殊权限

许可证

MIT 许可证

致谢

贡献指南

  • 使用 examples/test.html 测试
  • 启用调试模式
  • 报告问题时附上浏览器和控制台输出

路线图

  • [ ] WebM 格式(更小的文件)
  • [ ] 每事件独立声音(提及、私信等)
  • [ ] 视觉回退(favicon 闪烁)
  • [ ] 系统通知 API
  • [ ] 设置 UI 组件
  • [ ] 勿扰模式

状态: ✅ v1.1.0 完成 - 5 种强度级别

已测试: Chrome、Firefox、Safari

可用于: 生产环境使用和 ClawdHub 发布

相关链接

数据来源ClawHub ↗ · 中文优化:龙虾技能库