skills$openclaw/webchat-audio-notifications
brokemac795.1kโ˜…

by brokemac79

webchat-audio-notifications โ€“ OpenClaw Skill

webchat-audio-notifications is an OpenClaw Skills integration for coding workflows. Add browser audio notifications to Moltbot/Clawdbot webchat with 5 intensity levels - from whisper to impossible-to-miss (only when tab is backgrounded).

5.1k stars9.7k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namewebchat-audio-notifications
descriptionAdd browser audio notifications to Moltbot/Clawdbot webchat with 5 intensity levels - from whisper to impossible-to-miss (only when tab is backgrounded). OpenClaw Skills integration.
ownerbrokemac79
repositorybrokemac79/webchat-audio-notifications
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @brokemac79/webchat-audio-notifications
last updatedFeb 7, 2026

Maintainer

brokemac79

brokemac79

Maintains webchat-audio-notifications in the OpenClaw Skills directory.

View GitHub profile
File Explorer
36 files
.
client
sounds
SOUNDS.md
3.3 KB
config-loader.js
1.6 KB
config.example.json
965 B
howler.min.js
35.3 KB
notification.js
13.2 KB
settings-panel.html
12.1 KB
docs
EASY_SETUP.md
8.3 KB
integration.md
9.3 KB
examples
sounds
SOUNDS.md
3.3 KB
audio-test.html
1.4 KB
config-loader.js
1.6 KB
custom-sound-test-inline.html
3.8 KB
custom-sound-test.html
3.8 KB
debug-custom.html
1.8 KB
debug-test.html
2.2 KB
easy-setup.html
4.9 KB
howler-test.html
1.9 KB
howler.min.js
35.3 KB
notification-config.json
965 B
notification.js
13.2 KB
settings-panel.html
12.1 KB
simple-test.html
2.3 KB
test.html
13.9 KB
_meta.json
664 B
BUILD_SUMMARY.md
9.0 KB
CLAWDHUB_PUBLISHING.md
4.6 KB
DISCORD_ANNOUNCEMENT.md
2.5 KB
README.md
14.9 KB
SKILL.md
8.0 KB
STATUS.md
1.5 KB
TESTING_REPORT.md
4.1 KB
SKILL.md

name: webchat-audio-notifications description: Add browser audio notifications to Moltbot/Clawdbot webchat with 5 intensity levels - from whisper to impossible-to-miss (only when tab is backgrounded). version: 1.1.0 author: brokemac79 repository: https://github.com/brokemac79/webchat-audio-notifications homepage: https://github.com/brokemac79/webchat-audio-notifications tags:

  • webchat
  • notifications
  • audio
  • ux
  • browser
  • howler metadata: clawdbot: emoji: ๐Ÿ”” compatibility: minVersion: "2026.1.0" browsers: - Chrome 92+ - Firefox 90+ - Safari 15+ - Edge 92+ dependencies:
    • howler.js (included) files:

    • client/howler.min.js

    • client/notification.js

    • client/sounds/notification.mp3

    • client/sounds/alert.mp3 install:

    • kind: manual label: Install webchat audio notifications instructions: |

      1. Copy files to your webchat directory:

        • client/howler.min.js โ†’ /webchat/js/
        • client/notification.js โ†’ /webchat/js/
        • client/sounds/ โ†’ /webchat/sounds/
      2. Add to your webchat HTML before closing </body>:

      <script src="/js/howler.min.js"></script>
      <script src="/js/notification.js"></script>
      <script>
        const notifier = new WebchatNotifications({
          soundPath: '/sounds/notification'
        });
        notifier.init();
      </script>
      
      1. Hook into message events:
      socket.on('message', () => {
        if (notifier) notifier.notify();
      });
      
      1. Test by switching tabs and triggering a message

      See docs/integration.md for full guide.


๐Ÿ”” Webchat Audio Notifications

Browser audio notifications for Moltbot/Clawdbot webchat. Plays a notification sound when new messages arrive - but only when the tab is in the background.

Features

  • ๐Ÿ”” Smart notifications - Only plays when tab is hidden
  • ๐ŸŽš๏ธ Volume control - Adjustable 0-100%
  • ๐ŸŽต 5 intensity levels - Whisper (1) to impossible-to-miss (5)
  • ๐Ÿ“ Custom sounds - Upload your own (MP3, WAV, OGG, WebM)
  • ๐Ÿ”• Easy toggle - Enable/disable with one click
  • ๐Ÿ’พ Persistent settings - Preferences saved in localStorage
  • ๐Ÿ“ฑ Mobile-friendly - Graceful degradation on mobile
  • ๐Ÿšซ Autoplay handling - Respects browser policies
  • โฑ๏ธ Cooldown - Prevents spam (3s between alerts)
  • ๐Ÿž Debug mode - Optional logging

Quick Start

Test the POC

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

Test steps:

  1. Switch to another tab
  2. Click "Trigger Notification"
  3. Hear the sound! ๐Ÿ”Š

Basic Integration

// Initialize
const notifier = new WebchatNotifications({
  soundPath: './sounds',
  soundName: 'level3',  // Medium intensity (default)
  defaultVolume: 0.7
});

await notifier.init();

// Trigger on new message
socket.on('message', () => notifier.notify());

// Use different levels for different events
socket.on('mention', () => {
  notifier.setSound('level5');  // Loudest for mentions
  notifier.notify();
});

API

Constructor Options

new WebchatNotifications({
  soundPath: './sounds',               // Path to sounds directory
  soundName: 'level3',                 // level1 (whisper) to level5 (very loud)
  defaultVolume: 0.7,                  // 0.0 to 1.0
  cooldownMs: 3000,                    // Min time between alerts
  enableButton: true,                  // Show enable prompt
  debug: false                         // Console logging
});

Intensity Levels:

  • level1 - Whisper (9.5KB) - Most subtle
  • level2 - Soft (12KB) - Gentle
  • level3 - Medium (13KB) - Default
  • level4 - Loud (43KB) - Attention-getting
  • level5 - Very Loud (63KB) - Impossible to miss

Methods

  • init() - Initialize (call after Howler loads)
  • notify(eventType?) - Trigger notification (only if tab hidden)
  • test() - Play sound immediately (ignore tab state)
  • setEnabled(bool) - Enable/disable notifications
  • setVolume(0-1) - Set volume
  • setSound(level) - Change intensity ('level1' through 'level5')
  • getSettings() - Get current settings

Browser Compatibility

BrowserVersionSupport
Chrome92+โœ… Full
Firefox90+โœ… Full
Safari15+โœ… Full
MobileLatestโš ๏ธ Limited

Overall: 92% of users (Web Audio API support)

File Structure

webchat-audio-notifications/
โ”œโ”€โ”€ client/
โ”‚   โ”œโ”€โ”€ notification.js       # Main class (10KB)
โ”‚   โ”œโ”€โ”€ howler.min.js         # Audio library (36KB)
โ”‚   โ””โ”€โ”€ sounds/
โ”‚       โ”œโ”€โ”€ level1.mp3        # Whisper (9.5KB)
โ”‚       โ”œโ”€โ”€ level2.mp3        # Soft (12KB)
โ”‚       โ”œโ”€โ”€ level3.mp3        # Medium (13KB, default)
โ”‚       โ”œโ”€โ”€ level4.mp3        # Loud (43KB)
โ”‚       โ””โ”€โ”€ level5.mp3        # Very Loud (63KB)
โ”œโ”€โ”€ examples/
โ”‚   โ””โ”€โ”€ test.html            # Standalone test with all levels
โ”œโ”€โ”€ docs/
โ”‚   โ””โ”€โ”€ integration.md       # Integration guide
โ””โ”€โ”€ README.md                # Full documentation

Integration Guide

See docs/integration.md for:

  • Step-by-step setup
  • Moltbot-specific hooks
  • React/Vue examples
  • Common patterns (@mentions, DND, badges)
  • Testing checklist

Configuration Examples

Simple

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

Advanced

const notifier = new WebchatNotifications({
  soundPath: '/assets/sounds',
  soundName: 'level2',  // Start with soft
  defaultVolume: 0.8,
  cooldownMs: 5000,
  debug: true
});

await notifier.init();

// Regular messages = soft
socket.on('message', () => {
  notifier.setSound('level2');
  notifier.notify();
});

// Mentions = very loud
socket.on('mention', () => {
  notifier.setSound('level5');
  notifier.notify();
});

// DMs = loud
socket.on('dm', () => {
  notifier.setSound('level4');
  notifier.notify();
});

With UI Controls

<input type="range" min="0" max="100" 
       onchange="notifier.setVolume(this.value / 100)">
<button onclick="notifier.test()">Test ๐Ÿ”Š</button>

Troubleshooting

No sound?

  • Click page first (autoplay restriction)
  • Check tab is actually hidden
  • Verify volume > 0
  • Check console for errors

Sound plays when tab active?

  • Enable debug mode
  • Check for "Tab is visible, skipping" message
  • Report as bug if missing

Mobile not working?

  • iOS requires user gesture per play
  • Consider visual fallback (flashing favicon)

Performance

  • Bundle: ~122KB total (minified)
  • Memory: ~2MB during playback
  • CPU: Negligible (browser-native)
  • Network: One-time download, cached

Security

  • โœ… No external requests
  • โœ… localStorage only
  • โœ… No tracking
  • โœ… No special permissions

License

MIT License

Credits

Contributing

  1. Test with examples/test.html
  2. Enable debug mode
  3. Report issues with browser + console output

Roadmap

  • WebM format (smaller files)
  • Per-event sounds (mention, DM, etc.)
  • Visual fallback (favicon flash)
  • System notifications API
  • Settings UI component
  • Do Not Disturb mode

Status: โœ… v1.1.0 Complete - 5 Intensity Levels
Tested: Chrome, Firefox, Safari
Ready for: Production use & ClawdHub publishing

README.md

๐Ÿ”” Webchat Audio Notifications

Browser audio notifications for Moltbot/Clawdbot webchat. Get notified when new messages arrive - but only when the tab is in the background.

๐Ÿงช Try the live demo - Download and open in your browser!

Status: โœ… v1.2.0 - Production ready, looking for testers!


๐Ÿš€ Quick Test (2 minutes)

Want to try it right now?

  1. Clone or download this repo
  2. Open examples/test.html in your browser
  3. Click the green "๐Ÿ”Š Test Sound" button (unlocks audio)
  4. Hear the notification sound!
  5. Try different intensity levels (Level 1-5 dropdown)

That's it! If you hear sounds, it works. ๐ŸŽ‰

โš ๏ธ Important: Browser Autoplay Policy

Why you must click "Test Sound" first:

All modern browsers (Chrome, Firefox, Safari, Edge) block audio autoplay by default as a security feature. This prevents websites from playing sounds without your permission.

This is NORMAL and EXPECTED behavior, not a bug!

What happens:

  1. Page loads โ†’ Audio is blocked ๐Ÿ”‡
  2. You click "Test Sound" (or any button) โ†’ Audio unlocks ๐Ÿ”Š
  3. From now on, notifications work automatically โœ…

You only need to click once per session. After that, all sounds play normally. This is how all web audio works - YouTube, Spotify, etc. all require a click first.

If you don't click first and don't hear sounds, that's why! Just click the Test Sound button.


โœจ Features

  • ๐Ÿ”” Smart notifications - Only plays sound when tab is hidden
  • ๐ŸŽš๏ธ Volume control - Adjustable notification volume (0-100%)
  • ๐Ÿ”• Easy toggle - Enable/disable with one click
  • ๐ŸŽต 5 intensity levels - From whisper (level 1) to impossible-to-miss (level 5)
  • ๐Ÿ“ Custom sounds - Upload your own notification sounds (MP3, WAV, OGG, WebM)
  • ๐Ÿ’พ Persistent preferences - Settings saved in localStorage
  • ๐Ÿ“ฑ Mobile-friendly - Graceful handling of mobile restrictions
  • ๐Ÿšซ Autoplay handling - Respects browser autoplay policies
  • โฑ๏ธ Cooldown - Prevents notification spam (3s between alerts)
  • ๐Ÿž Debug mode - Optional logging for troubleshooting

๐ŸŽฏ Quick Start

Three Easy Setup Options

Want easy configuration? โ†’ Easy Setup Guide

  1. Drop-in Settings Panel - Ready-made UI (recommended)
  2. JSON Configuration - Config file approach
  3. Programmatic - Full control via code

1. Test the POC

Open examples/test.html or examples/easy-setup.html in your browser:

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

Test steps:

  1. Click "Enable Notifications" if prompted
  2. Switch to another tab
  3. Click "Trigger Notification" (or have someone trigger it)
  4. You should hear a sound! ๐Ÿ”Š

2. Basic Integration

Simplest (with settings UI):

<!-- Load libraries -->
<script src="./howler.min.js"></script>
<script src="./notification.js"></script>

<script>
  let notifier = null;
  window.addEventListener('DOMContentLoaded', async () => {
    notifier = new WebchatNotifications({
      soundPath: './sounds',
      soundName: 'level3'
    });
    await notifier.init();
  });
</script>

<!-- Add settings panel (users can configure themselves) -->
<div id="notification-settings"></div>
<script>
  fetch('./settings-panel.html')
    .then(r => r.text())
    .then(html => {
      document.getElementById('notification-settings').innerHTML = html;
    });
</script>

Programmatic (full control):

<script src="./howler.min.js"></script>
<script src="./notification.js"></script>

<script>
  const notifier = new WebchatNotifications({
    soundPath: './sounds',
    soundName: 'level3',
    defaultVolume: 0.7
  });
  
  await notifier.init();
  
  // Trigger notification when new message arrives
  socket.on('message', (msg) => {
    notifier.notify();
  });
</script>

๐Ÿ‘‰ Full Easy Setup Guide - Settings panel, JSON config, and more!

๐Ÿ“š API Documentation

Constructor

const notifier = new WebchatNotifications(options);

Options:

{
  soundPath: './sounds',               // Path to sounds directory
  soundName: 'level3',                 // Intensity: 'level1' through 'level5'
  defaultVolume: 0.7,                  // Volume level (0.0 to 1.0)
  cooldownMs: 3000,                    // Min time between notifications (ms)
  enableButton: true,                  // Show enable prompt if autoplay blocked
  debug: false                         // Enable console logging
}

Sound Intensity Levels:

  • level1 - Whisper (9.5KB) - Most subtle
  • level2 - Soft (12KB) - Gentle chime
  • level3 - Medium (13KB) - Default, balanced
  • level4 - Loud (43KB) - Attention-getting
  • level5 - Very Loud (63KB) - Impossible to miss

Methods

init()

Initialize the notification system. Must be called after Howler.js loads.

await notifier.init();
notify(eventType?)

Trigger a notification (only plays if tab is hidden).

notifier.notify();           // Default notification
notifier.notify('message');  // Message notification (future: different sounds)
test()

Play notification sound immediately (ignores tab state, useful for testing).

notifier.test();
setEnabled(enabled)

Enable or disable notifications.

notifier.setEnabled(true);   // Enable
notifier.setEnabled(false);  // Disable
setVolume(volume)

Set notification volume (0.0 to 1.0).

notifier.setVolume(0.5);  // 50% volume
notifier.setVolume(1.0);  // 100% volume
setSound(soundName)

Change notification intensity level.

notifier.setSound('level1');  // Whisper (most subtle)
notifier.setSound('level2');  // Soft
notifier.setSound('level3');  // Medium (default)
notifier.setSound('level4');  // Loud
notifier.setSound('level5');  // Very loud (impossible to miss)
notifier.setSound('custom');   // Use uploaded custom sound
uploadCustomSound(file)

Upload a custom notification sound.

const fileInput = document.getElementById('file-input');
const file = fileInput.files[0];

const success = await notifier.uploadCustomSound(file);
if (success) {
  notifier.setSound('custom');  // Switch to custom sound
}

Supported formats: MP3, WAV, OGG, WebM
Max file size: 500KB
Storage: Browser localStorage (no server upload)

removeCustomSound()

Remove the uploaded custom sound.

notifier.removeCustomSound();
getCustomSound()

Get info about the uploaded custom sound.

const custom = notifier.getCustomSound();
if (custom) {
  console.log('Custom sound:', custom.name);
}
// Returns: { name, dataUrl } or null
getSettings()

Get current settings.

const settings = notifier.getSettings();
// Returns: { enabled, volume, soundName, isMobile, initialized }

๐ŸŒ Browser Compatibility

BrowserVersionSupportNotes
Chrome92+โœ… FullStrictest autoplay policy
Firefox90+โœ… FullSlightly more permissive
Safari15+โœ… FullRequires WebKit prefixes (handled)
Edge92+โœ… FullChromium-based
Mobile ChromeLatestโš ๏ธ LimitedRequires user gesture per play
Mobile SafariLatestโš ๏ธ LimitediOS restrictions apply

Overall compatibility: 92% of users (based on Web Audio API support)

Simple Setup

const notifier = new WebchatNotifications({
  soundPath: './sounds',
  soundName: 'level3'  // Medium intensity (default)
});
await notifier.init();
notifier.notify();  // That's it!

Advanced Setup

const notifier = new WebchatNotifications({
  soundPath: '/assets/sounds',
  soundName: 'level3',  // Start with medium
  defaultVolume: 0.8,
  cooldownMs: 5000,     // 5 second cooldown
  debug: true           // Enable logging
});

await notifier.init();

// Hook into your message system
chatClient.on('newMessage', () => notifier.notify());
chatClient.on('mention', () => {
  notifier.setSound('level5');  // Use loudest for mentions
  notifier.notify();
});

With User Controls

<!-- Volume slider -->
<input type="range" min="0" max="100" value="70" 
       onchange="notifier.setVolume(this.value / 100)">

<!-- Sound intensity selector -->
<select onchange="notifier.setSound(this.value)">
  <option value="level1">๐Ÿ”• Level 1 - Whisper</option>
  <option value="level2">๐Ÿ”” Level 2 - Soft</option>
  <option value="level3" selected>๐Ÿ”” Level 3 - Medium</option>
  <option value="level4">๐Ÿ”Š Level 4 - Loud</option>
  <option value="level5">๐Ÿ“ข Level 5 - Very Loud</option>
</select>

<!-- Enable/disable toggle -->
<button onclick="notifier.setEnabled(true)">Enable ๐Ÿ””</button>
<button onclick="notifier.setEnabled(false)">Disable ๐Ÿ”•</button>

<!-- Test button -->
<button onclick="notifier.test()">Test Sound ๐Ÿ”Š</button>

<!-- Custom sound upload -->
<input type="file" id="custom-sound" accept="audio/*" onchange="uploadCustom(this)">
<script>
  async function uploadCustom(input) {
    const file = input.files[0];
    if (await notifier.uploadCustomSound(file)) {
      notifier.setSound('custom');
      alert('Custom sound uploaded!');
    }
  }
</script>

Custom Sound Upload Example

Users can upload their own notification sounds:

<input type="file" id="sound-upload" accept="audio/mpeg,audio/wav,audio/ogg,audio/webm">

<script>
  document.getElementById('sound-upload').addEventListener('change', async (e) => {
    const file = e.target.files[0];
    if (!file) return;
    
    // Upload the sound
    const success = await notifier.uploadCustomSound(file);
    
    if (success) {
      // Automatically switch to custom sound
      notifier.setSound('custom');
      console.log('Custom sound uploaded:', file.name);
      
      // Test it
      notifier.test();
    } else {
      console.error('Upload failed - check file type and size');
    }
  });
  
  // Check if custom sound exists
  const customSound = notifier.getCustomSound();
  if (customSound) {
    console.log('Custom sound available:', customSound.name);
  }
</script>

Limitations:

  • Max file size: 500KB
  • Supported formats: MP3, WAV, OGG, WebM
  • Stored in browser localStorage (no server upload)
  • Clearing browser data removes custom sound

๐Ÿšจ Troubleshooting

No sound playing?

1. Check browser autoplay policy:

  • Click anywhere on the page first (browser may require user interaction)
  • Look for the enable notification prompt
  • Check browser console for errors

2. Verify tab is hidden:

  • Notifications only play when tab is in background
  • Use notifier.test() to test regardless of tab state

3. Check volume:

console.log(notifier.getSettings().volume);  // Should be > 0
notifier.setVolume(1.0);  // Try max volume

4. Verify files are accessible:

  • Open browser console
  • Check Network tab for 404 errors on sound files
  • Ensure sound files are in the correct path

Sound plays when tab is active?

This shouldn't happen - it's a bug! The document.hidden check should prevent this.

Debug steps:

  1. Enable debug mode: new WebchatNotifications({ debug: true })
  2. Check console for "Tab is visible, skipping notification" message
  3. If not appearing, there may be a Page Visibility API issue

Mobile not working?

iOS Safari and mobile browsers have strict audio restrictions:

  • Requires user gesture for EACH audio play (not just once)
  • Background tab audio may be blocked entirely
  • Consider using visual notifications (flashing favicon) on mobile

Detect mobile:

const settings = notifier.getSettings();
if (settings.isMobile) {
  console.log('Mobile detected - audio may be limited');
}

๐Ÿ“ฆ File Structure

webchat-audio-notifications/
โ”œโ”€โ”€ client/
โ”‚   โ”œโ”€โ”€ notification.js       # Main notification class (10KB)
โ”‚   โ”œโ”€โ”€ howler.min.js         # Howler.js library (36KB)
โ”‚   โ”œโ”€โ”€ settings-panel.html   # Drop-in settings UI (8KB)
โ”‚   โ”œโ”€โ”€ config-loader.js      # JSON config helper (2KB)
โ”‚   โ”œโ”€โ”€ config.example.json   # Example configuration
โ”‚   โ””โ”€โ”€ sounds/
โ”‚       โ”œโ”€โ”€ level1.mp3        # Level 1 - Whisper (9.5KB)
โ”‚       โ”œโ”€โ”€ level2.mp3        # Level 2 - Soft (12KB)
โ”‚       โ”œโ”€โ”€ level3.mp3        # Level 3 - Medium (13KB, default)
โ”‚       โ”œโ”€โ”€ level4.mp3        # Level 4 - Loud (43KB)
โ”‚       โ”œโ”€โ”€ level5.mp3        # Level 5 - Very Loud (63KB)
โ”‚       โ”œโ”€โ”€ notification.mp3  # Legacy (same as level3)
โ”‚       โ”œโ”€โ”€ alert.mp3         # Legacy (same as level5)
โ”‚       โ””โ”€โ”€ SOUNDS.md         # Sound attribution & guide
โ”œโ”€โ”€ examples/
โ”‚   โ”œโ”€โ”€ test.html            # Full test page with all features
โ”‚   โ””โ”€โ”€ easy-setup.html      # Simple demo with settings panel
โ”œโ”€โ”€ docs/
โ”‚   โ”œโ”€โ”€ EASY_SETUP.md        # Easy setup guide (settings panel, JSON, etc.)
โ”‚   โ””โ”€โ”€ integration.md       # Advanced integration guide
โ”œโ”€โ”€ README.md                # This file
โ””โ”€โ”€ SKILL.md                 # ClawdHub metadata

๐Ÿ” Privacy & Security

  • No external requests - All assets loaded locally
  • localStorage only - Preferences stored in user's browser
  • No tracking - Zero analytics or telemetry
  • No permissions required - Works with standard Web Audio API

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿ™ Credits

๐Ÿค Contributing

Found a bug? Have a feature request?

  1. Test with examples/test.html first
  2. Enable debug mode to see console logs
  3. Open an issue with browser version and console output

๐Ÿš€ Next Steps

  • Multiple intensity levels (5 levels implemented)
  • WebM sound format support (smaller files)
  • Visual notification fallback (flashing favicon)
  • System notifications API integration
  • Settings UI component
  • Do Not Disturb mode (time-based)
  • Custom sound upload support

๐Ÿ’ก Usage Tips

Choosing Your Level:

  • Open office? Use level 1-2 (subtle, won't disturb neighbors)
  • Home office? Use level 3 (balanced default)
  • Noisy environment? Use level 4-5 (cuts through background noise)
  • Critical alerts only? Use level 5 for important notifications

Dynamic Switching:

// Soft for regular messages
notifier.setSound('level2');

// Loud for mentions
socket.on('mention', () => {
  notifier.setSound('level5');
  notifier.notify();
  setTimeout(() => notifier.setSound('level2'), 1000);
});

Status: โœ… POC v1.1.0 - 5 intensity levels
Last updated: 2026-01-28
Maintained by: @brokemac79

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

- โœ… No external requests - โœ… localStorage only - โœ… No tracking - โœ… No special permissions

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

Configuration

### Simple ```javascript const notifier = new WebchatNotifications(); await notifier.init(); notifier.notify(); ``` ### Advanced ```javascript const notifier = new WebchatNotifications({ soundPath: '/assets/sounds', soundName: 'level2', // Start with soft defaultVolume: 0.8, cooldownMs: 5000, debug: true }); await notifier.init(); // Regular messages = soft socket.on('message', () => { notifier.setSound('level2'); notifier.notify(); }); // Mentions = very loud socket.on('mention', () => { notifier.setSound('level5'); notifier.notify(); }); // DMs = loud socket.on('dm', () => { notifier.setSound('level4'); notifier.notify(); }); ``` ### With UI Controls ```html <input type="range" min="0" max="100" onchange="notifier.setVolume(this.value / 100)"> <button onclick="notifier.test()">Test ๐Ÿ”Š</button> ```

FAQ

How do I install webchat-audio-notifications?

Run openclaw add @brokemac79/webchat-audio-notifications in your terminal. This installs webchat-audio-notifications into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/brokemac79/webchat-audio-notifications. Review commits and README documentation before installing.