← 返回 Skills 市场
amzzzzzzz

Voice Memo

作者 amzzzzzzz · GitHub ↗ · v0.1.2
cross-platform ⚠ suspicious
482
总下载
0
收藏
0
当前安装
3
版本数
在 OpenClaw 中安装
/install imessage-voice-memo-skill
功能描述
Send native iMessage voice bubbles with ElevenLabs TTS via BlueBubbles. Use when: user asks to send a voice message, wants something spoken aloud, storytelli...
使用说明 (SKILL.md)

Voice Memo

Send native iMessage voice bubbles (not file attachments) using ElevenLabs TTS and BlueBubbles.

Quick Start

Run the script with text and recipient:

scripts/send-voice-memo.sh "Your message here" +14169060839

This will:

  1. Generate TTS audio via ElevenLabs (Rachel voice by default)
  2. Convert to Opus CAF @ 24kHz (iMessage native format)
  3. Send as native voice bubble via BlueBubbles

Requirements

  • BlueBubbles running locally with Private API enabled
  • ElevenLabs API key (for TTS)
  • macOS (for afconvert audio conversion)
  • Environment variables in ~/.openclaw/.env:
    ELEVENLABS_API_KEY=your-key-here
    BLUEBUBBLES_PASSWORD=your-password-here
    # Optional overrides:
    ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAM  # Rachel (default)
    ELEVENLABS_MODEL_ID=eleven_turbo_v2_5      # Turbo v2.5 (default)
    

The Working Formula

Critical parameters discovered 2026-02-19:

Parameter Value Why
chatGuid any;-;+PHONE NOT iMessage;-; (causes timeouts)
method private-api Required for native bubble
isAudioMessage true Required
Audio format Opus @ 24kHz in CAF iMessage native format
Pre-convert Yes Don't let BlueBubbles convert (wrong codec)

Voice Options

Default voice: Rachel (ElevenLabs)

  • Voice ID: 21m00Tcm4TlvDq8ikWAM
  • Model: eleven_turbo_v2_5 (fast, natural)
  • Cost: ~$0.04 per 30s message

Expressive tags:

  • [laughs] — natural laughter
  • [sighs] — expressive sigh
  • [excited] — energetic delivery

Example: "[excited] Oh my god, it worked!"

For full voice list and IDs, see VOICES.md.

Bidirectional Voice Memos

Sending (Amz → Amy): Use this skill. Native voice bubbles appear with waveform UI.

Receiving (Amy → Amz): BlueBubbles auto-converts incoming voice memos to MP3. OpenClaw transcribes via Whisper. Transcribed text flows into conversation context automatically.

Memory note: Incoming voice memo transcriptions flow into conversation context like any text message. They are NOT automatically persisted to memory or files — the agent must explicitly choose to store them, same as any conversation content. If you want to prevent transcriptions from being retained, instruct the agent not to record voice memo content in memory.

Troubleshooting

Voice bubble arrives as file attachment:

  • Check method=private-api is set
  • Verify chatGuid uses any;-; prefix (not iMessage;-;)
  • Check response has "isAudioMessage": true

API times out:

  • Use any;-;+PHONE format for chatGuid
  • Verify BlueBubbles Private API is enabled
  • Restart BlueBubbles if consistently slow

Audio is 0 seconds / unplayable:

  • Ensure pre-conversion to Opus @ 24kHz
  • Don't let BlueBubbles convert (uses wrong codec)
  • Verify with: afinfo output.caf (should show opus @ 24000 Hz)
安全使用建议
This skill appears to do what it claims: generate ElevenLabs TTS, convert to Opus CAF, and post to a BlueBubbles Private API to create native iMessage voice bubbles. Before installing: (1) verify the skill's source (homepage is a GitHub repo) and inspect ~/.openclaw/.env to ensure it only contains the expected ELEVENLABS_API_KEY and BLUEBUBBLES_PASSWORD; (2) ensure BLUEBUBBLES_URL points to a trusted local BlueBubbles instance (default is http://127.0.0.1:1234); (3) treat the ElevenLabs API key as billable/privileged — restrict its scope and rotate if shared; (4) be aware that if you set BLUEBUBBLES_URL to a remote endpoint, audio and metadata will be sent there (so only use trusted endpoints); and (5) note the metadata/registry inconsistency (registry omitted required env vars) — this is likely a packaging oversight but worth confirming with the author before granting credentials.
功能分析
Type: OpenClaw Skill Name: imessage-voice-memo-skill Version: 0.1.2 The `scripts/send-voice-memo.sh` file contains a shell injection vulnerability. The `RECIPIENT` variable, which can be controlled by user input, is directly embedded into the `CHAT_GUID` string and then passed as a `--form-string` argument to `curl` without proper shell escaping. This allows an attacker to inject arbitrary shell commands by crafting the recipient phone number, leading to potential remote code execution. There is no evidence of intentional malicious behavior such as data exfiltration or persistence mechanisms.
能力评估
Purpose & Capability
The script implements exactly what the skill describes: it calls ElevenLabs TTS, converts audio with afconvert to Opus CAF, and posts to a BlueBubbles Private API to produce native iMessage voice bubbles. Required binaries (curl, afconvert) and the two service credentials are appropriate for this functionality.
Instruction Scope
SKILL.md and the script confine actions to generating audio, converting it, and sending it to the BlueBubbles endpoint. The script sources ~/.openclaw/.env for credentials and does not attempt to read unrelated system files or exfiltrate arbitrary data. It documents how transcriptions integrate into conversation context and notes that transcriptions are not auto-persisted.
Install Mechanism
No install spec (instruction-only) and a small included shell script. No downloads, archive extraction, or third-party package installs — low install-time risk.
Credentials
The script requires ELEVENLABS_API_KEY and BLUEBUBBLES_PASSWORD (proportionate to the task). However, registry metadata at the top of the submission lists no required env vars while SKILL.md and the script do — an inconsistency. Also note the script blindly sources ~/.openclaw/.env, which may contain additional secrets; ensure that file contains only intended credentials and is protected.
Persistence & Privilege
always:false and no system-wide configuration changes. The skill can be invoked autonomously (platform default), which is expected for skills; it does not request persistent elevated privileges or modify other skills' configs.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install imessage-voice-memo-skill
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /imessage-voice-memo-skill 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.2
Version 0.1.2 of imessage-voice-memo-skill - No file changes detected in this release. - No functional, documentation, or metadata updates. - Behavior and usage remain unchanged from the previous version.
v0.1.1
Voice memo skill 0.1.1: metadata updated and memory note clarified. - Updated SKILL metadata: added platform info, refined required bins, and listed necessary credentials. - Clarified treatment of incoming voice memo transcriptions: not automatically persisted to memory; explicit agent action required to save. - No behavioral changes to scripts or user-facing commands.
v0.1.0
imessage-voice-memo-skill v0.1.0 - Initial release: Send native iMessage voice bubbles using ElevenLabs TTS via BlueBubbles. - Supports expressive voice tags and configurable voices. - Ensures proper audio format (Opus CAF @ 24kHz) for native iMessage compatibility. - Includes troubleshooting section for common issues like file attachments or playback errors. - Requires BlueBubbles with Private API and macOS audio tools.
元数据
Slug imessage-voice-memo-skill
版本 0.1.2
许可证
累计安装 0
当前安装数 0
历史版本数 3
常见问题

Voice Memo 是什么?

Send native iMessage voice bubbles with ElevenLabs TTS via BlueBubbles. Use when: user asks to send a voice message, wants something spoken aloud, storytelli... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 482 次。

如何安装 Voice Memo?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install imessage-voice-memo-skill」即可一键安装,无需额外配置。

Voice Memo 是免费的吗?

是的,Voice Memo 完全免费(开源免费),可自由下载、安装和使用。

Voice Memo 支持哪些平台?

Voice Memo 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Voice Memo?

由 amzzzzzzz(@amzzzzzzz)开发并维护,当前版本 v0.1.2。

💬 留言讨论