CyberHorn (赛博小喇叭)
Let OpenClaw speak in Feishu: turn any text into a native voice message (not a file link) in a Feishu chat.
When to use
- The user asks to "say something in Feishu" or "send a voice message to the group".
- The agent should announce or alert via voice in a Feishu room.
- You want replies as playable voice notes instead of text bubbles.
How it works
- TTS — Text is synthesized with Edge TTS (default, no API key) or ElevenLabs (custom voices). Set
TTS_PROVIDER=EDGEorELEVENin.env. - Encode — Audio is converted to Opus (mono 16 kHz) via FFmpeg for Feishu’s voice message format.
- Send — The file is uploaded to Feishu and sent as a voice message to the given chat.
Setup
- Required (all modes):
FEISHU_APP_ID,FEISHU_APP_SECRETin.envor OpenClaw config. FFmpeg must be onPATHor setFFMPEG_PATH. - Optional default target chat:
FEISHU_DEFAULT_CHAT_IDcan be set in.envso you don't have to pass a chat ID every time. - Edge TTS (default): No extra keys. Optional
EDGE_VOICE(e.g.zh-CN-XiaoxiaoNeural). - ElevenLabs: Set
TTS_PROVIDER=ELEVEN, and addELEVEN_API_KEY,VOICE_ID.
Invocation
From the skill directory (or with PYTHONPATH set):
python main.py "<text to speak>" "[feishu_chat_id]" [receive_id_type]
- Arg 1: Text to speak.
- Arg 2 (optional): Feishu chat ID (or other
receive_id). If omitted, the skill will useFEISHU_DEFAULT_CHAT_IDfrom.envwhen available. - Arg 3 (optional):
receive_id_type, defaultchat_id(can beopen_idetc. per Feishu API).
OpenClaw can call this with env vars injected and the same two (or three) arguments.