Skills agent-radio
Control internet radio: play streams, search stations, manage favorites, volume, stop/pause/next, and inspect current playback. Uses mpv with audio device auto-detection and ffplay fallback. Settings persist between runs.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/art-ps/agent-radio" ~/.claude/skills/clawdbot-skills-agent-radio && rm -rf "$T"
skills/art-ps/agent-radio/SKILL.mdAgent Radio Skill
Internet radio player for OpenClaw with station search, favorites, volume control, and playback management.
When to Use
Use when user wants to:
- Play an internet radio stream by URL
- Search for stations by name from the live Radio Browser directory
- Play a random built-in station when no target is provided
- Manage favorite stations (add, remove, list)
- Control volume, pause/resume, stop, skip to next
- Check what is currently playing
- Have a persistent radio experience across sessions
Tools
This skill provides the following CLI commands in
scripts/:
play <url|station_name> [volume]
play <url|station_name> [volume]Play a stream by URL or by name from favorites or the built-in list.
If no target is provided, the skill chooses a random station from
stations.json.
Optional volume is 0-100 and defaults to the saved setting.
Examples:
play https://stream.zeno.fm/0r0xa792kwzuvplay BBC Radio 1play "Jazz 24 (KNKX)" 60
stop
stopStop playback immediately.
pause
pausePause or resume the current playback process.
next
nextSkip to the next favorite station in a cycle.
volume [level]
volume [level]Show the current volume or set a new default volume from
0-100.
Examples:
volumevolume 75
now
nowShow the current station URL, volume, PID, and playback status.
favorite add <name> <url>
favorite add <name> <url>Add a station to favorites.
favorite remove <name>
favorite remove <name>Remove a station from favorites.
list
listList all favorite and built-in stations.
find <query> [number]
find <query> [number]Search the Radio Browser directory. When
number is provided, play that result immediately.
Examples:
find jazzfind "lofi hip hop" 1
Configuration
Preferences are stored in:
{baseDir}/preferences.json
{ "last_station": "", "volume": 80, "favorites": [ {"name": "BBC Radio 1", "url": "http://..."}, {"name": "Jazz 24 (KNKX)", "url": "https://..."} ], "audio_device": "auto", "current_pid": null, "paused": false }
Audio device auto-detection:
- macOS:
coreaudio/BuiltInSpeakerDevice - Linux:
alsa/default - Windows:
directsound/default
Override locations when needed:
AGENT_RADIO_BASE_DIRAGENT_RADIO_PREF_FILEAGENT_RADIO_STATIONS_FILE
Implementation Notes
- Primary player:
mpv --no-video --audio-device=<device> --volume=<vol> --cache=yes <url> - Fallback player:
ffplay -nodisp -autoexit <url> - Playback runs in the background and stores PID plus paused state in preferences.
- On
, any existing playback is stopped before starting the next stream.play - Station lookup is case-insensitive across favorites and built-in stations.
cycles favorite URLs instead of depending on station-name matching.next
Error Handling
- If both
andmpv
are missing, return install guidance.ffplay - If dependencies like
orjq
are missing, fail early with a clear message.curl - If a stored PID is stale, clear it automatically.
- If station search returns no matches, explain how to retry with another query or a direct URL.
Examples for Users
/radio play https://stream.zeno.fm/0r0xa792kwzuv /radio play "BBC Radio 1" /radio volume 70 /radio now /radio find jazz /radio find "lofi hip hop" 1 /radio favorite add "Lounge Jazz" https://jazz.stream /radio list /radio next /radio stop
Future Enhancements
- Built-in station directory with genres and countries
- Recording streams to file
- Equalizer presets
- Web interface control