ClawSkills logoClawSkills

Claw Me Maybe - Beeper Desktop API & Multi-Platform Messaging

Clawdbot 的 Beeper 集成。跨 WhatsApp、Telegram、Signal、Discord、Slack、Instagram、iMessage、LinkedIn、Facebook Messenger 发送消息和搜索聊天。

介绍

# Claw Me Maybe - Beeper Desktop API & Multi-Platform Messaging 📟

**你的龙虾刚刚配备了 Beeper。**

现在,你的 Clawdbot 终于可以跨越*所有*聊天平台联系到你(以及其他所有人)了。WhatsApp?Telegram?Signal?Discord?Slack?Instagram 私信?LinkedIn?iMessage?**全部支持。一项技能。一只爪子。**

由 [Beeper](https://www.beeper.com) 提供支持 —— 这是一款将你所有聊天汇总到一起的应用。

## 你的龙虾可以用 Beeper 做什么?

🔍 **搜索一切** —— “Sarah 上周关于那个项目说了什么?”你的龙虾会立即翻遍你所有的 Beeper 聊天记录。

💬 **随处发送消息** —— “告诉妈妈我会晚点” —— 消息就会发到 WhatsApp 上。“在 Slack 上给团队发个消息” —— 搞定。无需切换应用。

📊 **总结收件箱** —— “我错过了什么?”获取所有 Beeper 网络中未读消息的摘要。

🔔 **设置提醒** —— “提醒我明天回复这条聊天” —— 你的龙虾会帮你记着,不用你操心。

📎 **获取附件** —— 从任何 Beeper 对话中下载文件、图片和媒体。

😀 **对消息做出反应** —— 给任何 Beeper 网络中的任何消息添加表情符号反应。

✅ **标记为已读** —— 通过将对话标记为已读,保持 Beeper 收件箱整洁。

## 支持的 Beeper 网络

你的 Clawdbot 可以在 **Beeper 支持的任何平台** 上联系到你:

| 平台 | 状态 | |----------|--------| | WhatsApp | ✅ 完全支持 | | Telegram | ✅ 完全支持 | | Signal | ✅ 完全支持 | | Discord | ✅ 完全支持 | | Slack | ✅ 完全支持 | | Instagram 私信 | ✅ 完全支持 | | Facebook Messenger | ✅ 完全支持 | | LinkedIn 消息 | ✅ 完全支持 | | X (Twitter) 私信 | ✅ 完全支持 | | Google Messages | ✅ 完全支持 | | Google Chat | ✅ 完全支持 | | iMessage | ✅ 仅限 macOS |

**一项技能。十二个平台。无限可能。**

## 快速开始

### 1. 获取 Beeper

还没有 Beeper?[免费下载](https://www.beeper.com/download) —— 这款应用能将你所有的聊天汇总到一起。

### 2. 启用 Beeper 桌面版 API

打开 Beeper 桌面版 → **设置 (Settings)** → **开发者** → 打开 **“Beeper Desktop API”** 开关

就是这样。你的龙虾现在拥有了你所有聊天的直连通道。

### 3. (可选)添加你的 Beeper Token

为了更流畅的自动化体验,获取一个访问令牌:

1. Beeper 桌面版 → 设置 → 开发者 2. 点击 “Create Access Token” 3. 添加到 `~/.clawdbot/clawdbot.json`:

```json { "skills": { "entries": { "claw-me-maybe": { "enabled": true, "env": { "BEEPER_ACCESS_TOKEN": "your-token-here" } } } } } ```

注意:`BEEPER_API_URL` 默认为 `http://localhost:23373` —— 除非你在不同的端口上运行 Beeper,否则无需设置。

## 与你的龙虾对话

设置完成后,只需自然地提问:

> “Show me my unread messages in Beeper” (在 Beeper 中显示我的未读消息)

> “Search my Beeper chats for messages about dinner plans” (在我的 Beeper 聊天中搜索关于晚餐计划的消息)

> “Send a WhatsApp message to John saying I'm on my way” (给 John 发一条 WhatsApp 消息,说我正在路上)

> “What's the latest in my Signal group chat?” (我的 Signal 群聊里有什么最新消息?)

> “Message the #general channel on Slack: standup in 5 minutes” (给 Slack 上的 #general 频道发消息:5 分钟后开站会)

> “Find all messages from Lisa in the last week” (查找上周 Lisa 发来的所有消息)

> “React with 👍 to that last message” (给最后一条消息加个 👍 反应)

> “Mark my Discord chats as read” (把我的 Discord 聊天标记为已读)

你的龙虾会通过 Beeper 处理剩下的事情。

## 技术细节

*(写给那些喜欢探究内部构造的人)*

### Beeper API 基础

基础 URL:`http://localhost:23373`(Beeper 桌面版必须处于运行状态)

```bash # Auth header (when using a token) -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

### 账户

#### 列出你的 Beeper 账户

查看 Beeper 中所有已连接的平台:

```bash curl -s "${BEEPER_API_URL}/v1/accounts" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

**示例响应:** ```json [ { "id": "whatsapp-abc123", "service": "whatsapp", "displayName": "+1 555-123-4567", "connected": true }, { "id": "telegram-xyz789", "service": "telegram", "displayName": "@myusername", "connected": true }, { "id": "signal-def456", "service": "signal", "displayName": "+1 555-987-6543", "connected": true } ] ```

### 聊天

#### 列出所有 Beeper 聊天

```bash curl -s "${BEEPER_API_URL}/v1/chats" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

**示例响应:** ```json [ { "id": "chat-abc123", "name": "Family Group", "service": "whatsapp", "unreadCount": 5, "lastMessage": { "text": "See you at dinner!", "timestamp": "2026-01-23T15:30:00Z" } }, { "id": "chat-xyz789", "name": "Work Team", "service": "slack", "unreadCount": 0, "lastMessage": { "text": "Meeting moved to 3pm", "timestamp": "2026-01-23T14:00:00Z" } } ] ```

#### 搜索 Beeper 聊天

```bash curl -s "${BEEPER_API_URL}/v1/chats/search?q=project+meeting" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

#### 获取聊天详情

```bash curl -s "${BEEPER_API_URL}/v1/chats/{chatID}" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

**示例响应:** ```json { "id": "chat-abc123", "name": "Family Group", "service": "whatsapp", "unreadCount": 5, "participants": [ {"id": "user-1", "name": "Mom", "phone": "+15551234567"}, {"id": "user-2", "name": "Dad", "phone": "+15559876543"}, {"id": "user-3", "name": "You", "phone": "+15555555555"} ], "archived": false, "muted": false } ```

#### 创建新的 Beeper 聊天

```bash curl -X POST "${BEEPER_API_URL}/v1/chats" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "accountID": "whatsapp-abc123", "participants": ["+1234567890"] }' ```

#### 归档/取消归档聊天

```bash curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/archive" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"archived": true}' ```

### 消息

#### 列出聊天中的消息

```bash curl -s "${BEEPER_API_URL}/v1/chats/{chatID}/messages" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

**示例响应:** ```json [ { "id": "msg-001", "chatID": "chat-abc123", "sender": {"id": "user-1", "name": "Mom"}, "text": "Don't forget to call grandma!", "timestamp": "2026-01-23T15:30:00Z", "reactions": [ {"emoji": "👍", "user": {"id": "user-2", "name": "Dad"}} ] }, { "id": "msg-002", "chatID": "chat-abc123", "sender": {"id": "user-2", "name": "Dad"}, "text": "See you at dinner!", "timestamp": "2026-01-23T15:25:00Z", "reactions": [] } ] ```

#### 搜索所有 Beeper 网络中的消息

```bash curl -s "${BEEPER_API_URL}/v1/messages/search?q=dinner+plans" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

**示例响应:** ```json { "results": [ { "id": "msg-xyz", "chatID": "chat-abc123", "chatName": "Family Group", "service": "whatsapp", "text": "What are the dinner plans for tonight?", "sender": {"name": "Mom"}, "timestamp": "2026-01-23T12:00:00Z" } ], "total": 1 } ```

#### 通过 Beeper 发送消息

```bash curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/messages" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"text": "Hello from my lobster! 🦞"}' ```

**示例响应:** ```json { "id": "msg-new123", "chatID": "chat-abc123", "text": "Hello from my lobster! 🦞", "timestamp": "2026-01-23T16:00:00Z", "status": "sent" } ```

#### 回复消息

```bash curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/messages" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "text": "Sounds good!", "replyTo": "msg-001" }' ```

#### 将消息标记为已读

```bash curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/read" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"upToMessageID": "msg-001"}' ```

### 反应

#### 给消息添加反应

```bash curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/messages/{messageID}/reactions" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"emoji": "👍"}' ```

#### 移除反应

```bash curl -X DELETE "${BEEPER_API_URL}/v1/chats/{chatID}/messages/{messageID}/reactions" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"emoji": "👍"}' ```

### 联系人

#### 在账户上搜索联系人

```bash curl -s "${BEEPER_API_URL}/v1/accounts/{accountID}/contacts?q=john" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

**示例响应:** ```json [ { "id": "contact-123", "name": "John Smith", "phone": "+15551234567", "avatar": "https://..." }, { "id": "contact-456", "name": "Johnny Appleseed", "phone": "+15559876543", "avatar": "https://..." } ] ```

### 提醒

#### 创建聊天提醒

为聊天设置提醒:

```bash curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/reminders" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"remindAt": "2026-01-25T10:00:00Z"}' ```

#### 删除聊天提醒

```bash curl -X DELETE "${BEEPER_API_URL}/v1/chats/{chatID}/reminders" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

### 资源

#### 下载消息附件

```bash curl -X POST "${BEEPER_API_URL}/v1/assets/download" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"assetID": "asset-id-here"}' \ --output attachment.file ```

## 专业技巧 🦞

### 从 Beeper 获取未读摘要

```bash curl -s "${BEEPER_API_URL}/v1/chats?unreadOnly=true" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | \ jq '.[] | "[\(.service)] \(.name): \(.unreadCount) unread"' ```

**示例输出:** ``` [whatsapp] Family Group: 5 unread [slack] Work Team: 12 unread [signal] Best Friend: 2 unread ```

### 在 Beeper 中查找 WhatsApp 聊天

```bash # Get your WhatsApp account ID from Beeper WHATSAPP=$(curl -s "${BEEPER_API_URL}/v1/accounts" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | \ jq -r '.[] | select(.service == "whatsapp") | .id') # Search for a contact curl -s "${BEEPER_API_URL}/v1/chats/search?q=Mom" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

### 将所有聊天标记为已读

```bash for chatID in $(curl -s "${BEEPER_API_URL}/v1/chats?unreadOnly=true" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | jq -r '.[].id'); do curl -X POST "${BEEPER_API_URL}/v1/chats/${chatID}/read" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" echo "Marked ${chatID} as read" done ```

### 快速对最后一条消息做出反应

```bash # Get the last message ID from a chat LAST_MSG=$(curl -s "${BEEPER_API_URL}/v1/chats/{chatID}/messages?limit=1" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | jq -r '.[0].id') # React with thumbs up curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/messages/${LAST_MSG}/reactions" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"emoji": "👍"}' ```

### 检查 Beeper 是否就绪

```bash curl -s --connect-timeout 2 "${BEEPER_API_URL:-http://localhost:23373}/health" && echo "Beeper is ready!" ```

### 获取过去 24 小时的消息

```bash YESTERDAY=$(date -u -v-1d +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date -u -d "1 day ago" +"%Y-%m-%dT%H:%M:%SZ") curl -s "${BEEPER_API_URL}/v1/messages/search?after=${YESTERDAY}" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" ```

### 按服务筛选聊天

```bash # Get only Signal chats curl -s "${BEEPER_API_URL}/v1/chats" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | \ jq '[.[] | select(.service == "signal")]' # Get only Slack chats curl -s "${BEEPER_API_URL}/v1/chats" \ -H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | \ jq '[.[] | select(.service == "slack")]' ```

## 注意事项

**Beeper 桌面版必须正在运行** —— API 位于 Beeper 桌面版内部。没有 Beeper 就没有连接。

**它是本地且私密的** —— Beeper API 完全在你的机器上运行。通过此技能,你的消息永远不会触碰外部服务器。

**尊重网络规则** —— 仅供个人使用。发送过多消息可能会触发 WhatsApp 等平台的速率限制。

**iMessage 需要 macOS** —— Apple 还是那个 Apple。

**反应因网络而异** —— 并非所有平台都支持所有表情符号。Beeper 会处理转换。

## 故障排除

### “无法连接到 Beeper”

1. Beeper 桌面版是否正在运行?在菜单栏中查找。 2. API 是否已启用?Beeper → 设置 → 开发者 → Beeper Desktop API 3. 检查端口:`curl http://localhost:23373/health`

### “身份验证失败”

1. 在 Beeper → 设置 → 开发者中生成一个新的 token 2. 确保它已添加到你的配置中(不要有多余的空格!) 3. 或者直接移除 token —— Beeper 会提示进行 OAuth

### “未找到聊天”

1. 确保该聊天存在于你的 Beeper 应用中 2. 尝试不同的搜索词 3. 检查该账户(WhatsApp、Telegram 等)是否已在 Beeper 中连接

### “不支持该反应”

某些网络对表情符号的支持有限。尝试使用更通用的表情符号,如 👍 ❤️ 😂 😮 😢 😡

## 链接

- [获取 Beeper](https://www.beeper.com/download) - 免费下载 - [Beeper 开发者文档](https://developers.beeper.com) - 完整 API 参考 - [Beeper MCP](https://www.beeper.com/mcp) - 适用于 Claude Desktop 和 Cursor 用户 - [Beeper 桌面版 API 参考](https://developers.beeper.com/desktop-api-reference/) - 完整的端点文档

## 致谢

由 @nickhamze 和 Clawdbot 社区用 🦞 打造。

由 [Beeper](https://www.beeper.com) 提供支持 —— 一款搞定你所有聊天的应用。

*Claw Me Maybe —— 因为你的龙虾应该能够随时随地联系到你。*

更多产品