Skip to content
Back to skills

Imsg Media

ASecurity

Fetch iMessage/Messages.app attachments (voice memos and images) and process them — transcribe audio via Silicon Flow ASR (SenseVoiceSmall), and analyze images via the agent's vision model. Handles the full pipeline from locating the attachment to delivering results. Use when a user sends a voice message or image and you see the placeholder character "", or when they say "语音转文字", "看图", "识别图片", "transcribe this".

  • 7 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added June 7, 2026
toolspythonbashapisecurity

Works with

  • terminal
  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned June 7, 2026

npx -y skills add modbender/skill-library-mcp --skill imsg-media --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Imsg Media?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Imsg Media
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modbender-imsg-media/badge)](https://www.skillsdirectory.com/skills/modbender-imsg-media)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: imsg-media
description: Fetch iMessage/Messages.app attachments (voice memos and images) and process them — transcribe audio via Silicon Flow ASR (SenseVoiceSmall), and analyze images via the agent's vision model. Handles the full pipeline from locating the attachment to delivering results. Use when a user sends a voice message or image and you see the placeholder character "", or when they say "语音转文字", "看图", "识别图片", "transcribe this".
version: 1.0.1
metadata:
  openclaw:
    emoji: "🎙️"
    requires:
      bins:
        - imsg
      env:
        - SILICON_FLOW_KEY
      platform:
        - darwin
---

# imsg-media

Full iMessage multimedia pipeline:
- 🎙️ **Voice memo → text** via Silicon Flow ASR (SenseVoiceSmall, cloud, no local model)
- 🖼️ **Image → description/OCR** via agent's built-in vision model

## Requirements

### macOS permissions
- **Full Disk Access** must be granted to the process running OpenClaw
- Settings → Privacy & Security → Full Disk Access → add your terminal/app
- Without this, `imsg` cannot read `~/Library/Messages/chat.db` and will return `permissionDenied`

### API key (audio only)
- **Silicon Flow API key** — sign up free at https://siliconflow.cn
- **Long-term use:** add to `~/.openclaw/.env`: `SILICON_FLOW_KEY=sk-...`
- **Quick test / override:** pass `--api-key sk-...` directly to the script
- Image analysis does **not** require this key

### CLI dependency
- `imsg` CLI: `npm install -g imsg`

## Trigger conditions

Activate this skill when:
- Incoming message text contains the attachment placeholder ``
- User says "语音转文字", "转写", "识别语音", "transcribe"
- User says "看图", "识别图片", "读图", "OCR", "截图里写的什么"
- User references a photo/audio/file they just sent via iMessage

## Decision flow

```
Attachment detected?
├── Audio (.m4a / .caf / .wav / .mp3)  → transcribe via Silicon Flow ASR
├── Image (.jpg / .png / .heic / .gif) → read with vision model
└── Unknown / not downloaded            → increase --limit or ask user to resend
```

## Workflow

### Step 1 — Get the sender identifier
Always read from the message envelope:
- `[iMessage sender@example.com ...]` → use `sender@example.com`
- `[SMS +1234567890 ...]` → use `+1234567890`
- **Never hardcode an address**

### Step 2 — Fetch the attachment

```bash
# Run from the skill directory
cd ~/.openclaw/skills/imsg-voice-transcribe

python3 scripts/imsg_voice_transcribe.py fetch \
  --identifier "sender@example.com" \
  --limit 50
```

Returns JSON with `file`, `type` (`audio` or `image`), and metadata.

If nothing found, try `--limit 100`.

### Step 3a — Audio: transcribe

```bash
# One-liner (fetch + transcribe)
python3 scripts/imsg_voice_transcribe.py auto \
  --identifier "sender@example.com" \
  --limit 50 --raw

# Or transcribe a specific file
python3 scripts/imsg_voice_transcribe.py transcribe \
  --file /path/to/audio.m4a --raw

# Quick test with explicit API key (no env setup needed)
python3 scripts/imsg_voice_transcribe.py transcribe \
  --file /path/to/audio.m4a --api-key sk-... --raw
```

### Step 3b — Image: analyze

After `fetch` returns an image path (e.g. `{"file": "/path/to/photo.jpg", "type": "image"}`):

```bash
# Example: fetch image from a sender
python3 scripts/imsg_voice_transcribe.py fetch \
  --identifier "sender@example.com" --type image --limit 50
# → {"file": "/Users/.../Messages/Attachments/photo.jpg", "type": "image", ...}
```

Then in the agent:
1. If HEIC/HEIF: convert first → `sips -s format png "input.heic" --out "output.png"`
2. Open with the `read` tool → agent vision model processes it
3. Respond with: what it is, main subject, any text/OCR, notable details

Default image response format:
- **What it is:** photo / screenshot / document
- **Main subject:** 1–2 sentences
- **Text (OCR):** quote key text, or "无明显文字"
- **Details:** 3–5 bullets
- **Follow-up:** ask if they want OCR / table extraction / comparison / etc.

## Supported formats

| Format | Type | Notes |
|--------|------|-------|
| `.m4a` | Audio | Standard iMessage voice memo |
| `.caf` | Audio | Older iOS voice memo (AAC in CAF) |
| `.wav` `.mp3` | Audio | Other sources |
| `.jpg` `.jpeg` `.png` | Image | Standard photos |
| `.heic` `.heif` | Image | iPhone default — convert to PNG first |
| `.gif` | Image | Animated or static |

## Troubleshooting

| Error | Cause | Fix |
|-------|-------|-----|
| `permissionDenied` | No Full Disk Access | Grant FDA in System Settings |
| `SILICON_FLOW_KEY not set` | Missing API key | Add to `~/.openclaw/.env` |
| `No attachments found` | Low limit or iCloud not synced | Increase `--limit`; ask user to resend |
| Request timed out | Network or large file | Retry; check file < 25MB |
| HEIC not displaying | Format not supported by `read` | Convert with `sips` first |

Files in this skill

  • SKILL.md5 KB
  • scripts/imsg_voice_transcribe.py10.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…