名称: claw-me-maybe
版本: 1.2.0
描述: Clawdbot 的 Beeper 集成技能。通过 Beeper Desktop API,跨 WhatsApp、Telegram、Signal、Discord、Slack、Instagram、iMessage、LinkedIn、Facebook Messenger、Google Messages 等平台发送消息、搜索聊天记录。支持消息回复、设置提醒、附件下载、标记已读等功能。实现统一的多平台消息自动化——只需开口问。
作者: nickhamze
keywords: Beeper, 消息, WhatsApp, Telegram, Signal, Discord, Slack, Instagram, iMessage, LinkedIn, Facebook Messenger, Google Messages, Google Chat, 聊天自动化, 统一消息, Desktop API, 发送消息, 搜索消息, 消息回复, 提醒, 多平台, 跨平台消息, 聊天搜索, 消息历史, 未读消息
元数据: {"clawdbot":{"emoji":"📟","skillKey":"claw-me-maybe","requires":{"bins":["curl"]},"homepage":"https://www.beeper.com","defaultEnv":{"BEEPER_API_URL":"http://localhost:23373"}}}
user-invocable: true
你的“龙虾助手”现在接入了 Beeper。
终于,你的 Clawdbot 可以跨越所有聊天平台联系你(以及其他人)。WhatsApp?Telegram?Signal?Discord?Slack?Instagram 私信?LinkedIn?iMessage?全部搞定。一个技能。一只龙虾。
由 Beeper 驱动——这款应用能整合你所有的聊天。
🔍 全局搜索 - “Sarah 上周关于项目说了什么?”你的龙虾会立刻在所有 Beeper 聊天记录里翻找。
💬 随处发送消息 - “告诉妈妈我会晚点”——消息会发到 WhatsApp。“在 Slack 上给团队发消息”——搞定。无需切换应用。
📊 汇总收件箱 - “我错过了什么?”获取所有 Beeper 网络未读消息的摘要。
🔔 设置提醒 - “提醒我明天回复这个聊天”——你的龙虾会记住,你就不用记了。
📎 获取附件 - 从任何 Beeper 对话中下载文件、图片和媒体。
😀 回复消息 - 在任何 Beeper 网络的消息上添加表情回复。
✅ 标记为已读 - 通过标记对话为已读,保持 Beeper 收件箱整洁。
你的 Clawdbot 可以在 Beeper 支持的任何平台 上联系你:
| 平台 | 状态 |
|---|---|
| ✅ 完全支持 | |
| Telegram | ✅ 完全支持 |
| Signal | ✅ 完全支持 |
| Discord | ✅ 完全支持 |
| Slack | ✅ 完全支持 |
| Instagram 私信 | ✅ 完全支持 |
| Facebook Messenger | ✅ 完全支持 |
| LinkedIn 消息 | ✅ 完全支持 |
| X (Twitter) 私信 | ✅ 完全支持 |
| Google Messages | ✅ 完全支持 |
| Google Chat | ✅ 完全支持 |
| iMessage | ✅ 仅限 macOS |
一个技能。十二个平台。无限可能。
还没有 Beeper?免费下载——这款应用能将你所有的聊天整合在一起。
打开 Beeper Desktop → 设置 → 开发者 → 将 “Beeper Desktop API” 切换为 ON
就这样。你的龙虾现在有了直达所有聊天的线路。
为了更顺畅的自动化,获取一个访问令牌:
~/.clawdbot/clawdbot.json:{
"skills": {
"entries": {
"claw-me-maybe": {
"enabled": true,
"env": {
"BEEPER_ACCESS_TOKEN": "你的令牌放在这里"
}
}
}
}
}
注意:BEEPER_API_URL 默认为 http://localhost:23373——除非你在不同端口运行 Beeper,否则无需设置。
设置完成后,只需自然地提问:
“在 Beeper 里显示我的未读消息”
“在我的 Beeper 聊天记录里搜索关于晚餐计划的消息”
“给 John 发一条 WhatsApp 消息,说我正在路上”
“我的 Signal 群聊里最新消息是什么?”
“在 Slack 的 #general 频道发消息:5分钟后站会”
“查找上周 Lisa 的所有消息”
“给最后一条消息点个 👍 回复”
“把我的 Discord 聊天标记为已读”
你的龙虾会通过 Beeper 处理剩下的一切。
(给那些喜欢窥探壳下秘密的人)
基础 URL:http://localhost:23373 (Beeper Desktop 必须正在运行)
# 认证头(使用令牌时)
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
查看 Beeper 中所有已连接的平台:
curl -s "${BEEPER_API_URL}/v1/accounts" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
示例响应:
[
{
"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
}
]
curl -s "${BEEPER_API_URL}/v1/chats" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
示例响应:
[
{
"id": "chat-abc123",
"name": "家庭群",
"service": "whatsapp",
"unreadCount": 5,
"lastMessage": {
"text": "晚餐见!",
"timestamp": "2026-01-23T15:30:00Z"
}
},
{
"id": "chat-xyz789",
"name": "工作团队",
"service": "slack",
"unreadCount": 0,
"lastMessage": {
"text": "会议改到下午3点",
"timestamp": "2026-01-23T14:00:00Z"
}
}
]
curl -s "${BEEPER_API_URL}/v1/chats/search?q=项目+会议" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
curl -s "${BEEPER_API_URL}/v1/chats/{chatID}" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
示例响应:
{
"id": "chat-abc123",
"name": "家庭群",
"service": "whatsapp",
"unreadCount": 5,
"participants": [
{"id": "user-1", "name": "妈妈", "phone": "+15551234567"},
{"id": "user-2", "name": "爸爸", "phone": "+15559876543"},
{"id": "user-3", "name": "你", "phone": "+15555555555"}
],
"archived": false,
"muted": false
}
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"]
}'
curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/archive" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"archived": true}'
curl -s "${BEEPER_API_URL}/v1/chats/{chatID}/messages" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
示例响应:
[
{
"id": "msg-001",
"chatID": "chat-abc123",
"sender": {"id": "user-1", "name": "妈妈"},
"text": "别忘了给奶奶打电话!",
"timestamp": "2026-01-23T15:30:00Z",
"reactions": [
{"emoji": "👍", "user": {"id": "user-2", "name": "爸爸"}}
]
},
{
"id": "msg-002",
"chatID": "chat-abc123",
"sender": {"id": "user-2", "name": "爸爸"},
"text": "晚餐见!",
"timestamp": "2026-01-23T15:25:00Z",
"reactions": []
}
]
curl -s "${BEEPER_API_URL}/v1/messages/search?q=晚餐+计划" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
示例响应:
{
"results": [
{
"id": "msg-xyz",
"chatID": "chat-abc123",
"chatName": "家庭群",
"service": "whatsapp",
"text": "今晚的晚餐计划是什么?",
"sender": {"name": "妈妈"},
"timestamp": "2026-01-23T12:00:00Z"
}
],
"total": 1
}
curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/messages" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"text": "来自我的龙虾的问候! 🦞"}'
示例响应:
{
"id": "msg-new123",
"chatID": "chat-abc123",
"text": "来自我的龙虾的问候! 🦞",
"timestamp": "2026-01-23T16:00:00Z",
"status": "已发送"
}
curl -X POST "${BEEPER_API_URL}/v1/chats/{chatID}/messages" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"text": "听起来不错!",
"replyTo": "msg-001"
}'
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"}'
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": "👍"}'
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": "👍"}'
curl -s "${BEEPER_API_URL}/v1/accounts/{accountID}/contacts?q=john" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
示例响应:
[
{
"id": "contact-123",
"name": "John Smith",
"phone": "+15551234567",
"avatar": "https://..."
},
{
"id": "contact-456",
"name": "Johnny Appleseed",
"phone": "+15559876543",
"avatar": "https://..."
}
]
为聊天设置提醒:
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"}'
curl -X DELETE "${BEEPER_API_URL}/v1/chats/{chatID}/reminders" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
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
curl -s "${BEEPER_API_URL}/v1/chats?unreadOnly=true" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | \
jq '.[] | "[\(.service)] \(.name): \(.unreadCount) unread"'
示例输出:
[whatsapp] 家庭群: 5 条未读
[slack] 工作团队: 12 条未读
[signal] 最好的朋友: 2 条未读
# 从 Beeper 获取你的 WhatsApp 账户 ID
WHATSAPP=$(curl -s "${BEEPER_API_URL}/v1/accounts" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | \
jq -r '.[] | select(.service == "whatsapp") | .id')
# 搜索联系人
curl -s "${BEEPER_API_URL}/v1/chats/search?q=妈妈" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}"
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 "已将 ${chatID} 标记为已读"
done
# 从聊天中获取最后一条消息的 ID
LAST_MSG=$(curl -s "${BEEPER_API_URL}/v1/chats/{chatID}/messages?limit=1" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | jq -r '.[0].id')
# 用竖起大拇指回复
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": "👍"}'
curl -s --connect-timeout 2 "${BEEPER_API_URL:-http://localhost:23373}/health" && echo "Beeper 已就绪!"
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}"
# 仅获取 Signal 聊天
curl -s "${BEEPER_API_URL}/v1/chats" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | \
jq '[.[] | select(.service == "signal")]'
# 仅获取 Slack 聊天
curl -s "${BEEPER_API_URL}/v1/chats" \
-H "Authorization: Bearer ${BEEPER_ACCESS_TOKEN}" | \
jq '[.[] | select(.service == "slack")]'
**Beeper