← Back to Skills Marketplace
odrobnik

Announcer

by Oliver Drobnik · GitHub ↗ · v1.2.3
cross-platform ✓ Security Clean
2211
Downloads
1
Stars
2
Active Installs
8
Versions
Install in OpenClaw
/install announcer
Description
Announce text throughout the house via AirPlay speakers using Airfoil + ElevenLabs TTS.
README (SKILL.md)

Announcer

Play TTS announcements through AirPlay speakers via Airfoil and ElevenLabs.

How It Works

  1. Generate speech via ElevenLabs (high-quality opus → stereo MP3)
  2. Connect to AirPlay speakers via Airfoil
  3. Play an optional chime (gong) followed by the announcement
  4. Disconnect speakers after playback

Setup

See SETUP.md for prerequisites and setup instructions.

Usage

# Announce to all configured speakers
python3 skills/announcer/scripts/announce.py "Dinner is ready!"

# Announce to specific speakers only
python3 skills/announcer/scripts/announce.py "Wake up!" --speakers "Kids Room"

# Skip the chime
python3 skills/announcer/scripts/announce.py "Quick note" --no-gong

File Structure

announcer/
├── SKILL.md
├── assets/
│   └── gong_stereo.mp3      # Announcement chime
└── scripts/
    └── announce.py           # Main announcement script

User config (not part of skill):

~/clawd/announcer/
└── config.json               # Speaker list, voice, audio settings
Usage Guidance
This skill appears to do what it says: generate TTS with ElevenLabs, convert it for AirPlay with ffmpeg, and control Airfoil via AppleScript. Before installing, confirm the following: (1) you trust the sibling elevenlabs skill and review its speech.py since announcer invokes it; (2) store ELEVENLABS_API_KEY securely (the skill will send text to ElevenLabs); (3) place and secure ~/clawd/announcer/config.json as it contains your speaker names and voice_id; (4) Airfoil must be installed and running on macOS and the skill will control it via osascript/afplay (local automation); (5) if you share this machine, be aware the script runs subprocesses with the provided text and will execute the elevenlabs script — review that code to ensure it only contacts the ElevenLabs API you expect. No remote downloads or unexpected credentials were found in the package.
Capability Analysis
Type: OpenClaw Skill Name: announcer Version: 1.2.3 The skill bundle is benign. The `scripts/announce.py` script demonstrates good security practices by explicitly sanitizing user-provided speaker names before embedding them into AppleScript commands, preventing AppleScript injection. All `subprocess.run` calls use argument lists rather than shell strings, and inputs to commands like `ffmpeg` and `afplay` are either static asset paths or securely generated temporary file paths. There is no evidence of data exfiltration, persistence mechanisms, or prompt injection attempts in `SKILL.md` or `SETUP.md`. The skill's functionality aligns with its stated purpose of playing TTS announcements via AirPlay.
Capability Assessment
Purpose & Capability
Name/description (AirPlay announcements using Airfoil + ElevenLabs) match what the files and SKILL.md ask for: python3, ffmpeg, Airfoil, and an ElevenLabs API key. The script calls a sibling elevenlabs speech tool (declared as a required skill in metadata), uses ffmpeg to produce stereo MP3 for AirPlay, and controls Airfoil via AppleScript as expected for macOS.
Instruction Scope
Runtime instructions and announce.py are focused on generating TTS (via the ElevenLabs speech script), converting audio with ffmpeg, and controlling Airfoil via osascript/afplay. This is within scope. Note: announce.py executes the sibling elevenlabs script and runs system commands (osascript, afplay, ffmpeg). These behaviors are expected, but you should only install if you trust the elevenlabs skill and the host will run Airfoil/afplay.
Install Mechanism
No install spec — instruction-only plus a local script file. Nothing is downloaded or extracted during install, so there is no remote-install risk from this package itself.
Credentials
Only ELEVENLABS_API_KEY is required (plus optional ANNOUNCER_WORKSPACE to override discovery). That single credential is proportional to the declared need to call ElevenLabs. No unrelated credentials or config paths are requested. The script reads a local config.json for speakers and audio settings (declared in SETUP.md).
Persistence & Privilege
The skill does not request permanent/always-on privileges and does not modify other skills or global agent configuration. It runs only when invoked and controls only local apps (Airfoil/afplay) via AppleScript.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install announcer
  3. After installation, invoke the skill by name or use /announcer
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.2.3
fix: use $PWD for workspace root
v1.2.2
fix: use $PWD for workspace root
v1.2.1
Rename .clawdhubignore to .clawhubignore
v1.2.0
Refactor: move setup/prerequisites to SETUP.md, keep SKILL.md lean
v1.1.3
Fix AppleScript injection: sanitize speaker names before embedding in osascript. Add platform: macos metadata.
v1.1.2
Fix SKILL.md version sync
v1.1.1
Add ELEVENLABS_API_KEY and elevenlabs skill to requirements
v1.1.0
Initial release
Metadata
Slug announcer
Version 1.2.3
License
All-time Installs 2
Active Installs 2
Total Versions 8
Frequently Asked Questions

What is Announcer?

Announce text throughout the house via AirPlay speakers using Airfoil + ElevenLabs TTS. It is an AI Agent Skill for Claude Code / OpenClaw, with 2211 downloads so far.

How do I install Announcer?

Run "/install announcer" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Announcer free?

Yes, Announcer is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Announcer support?

Announcer is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Announcer?

It is built and maintained by Oliver Drobnik (@odrobnik); the current version is v1.2.3.

💬 Comments