Skip to content
cccskills
FreePublished on GitHub

claw-me-maybe

Search chats and manage messages through the Beeper Desktop API across connected services such as WhatsApp, Telegram, Signal, Discord, Slack, and iMessage. It can send messages, summarize unread chats, set reminders, download attachments, add reactions, and mark conversations as read.

OriginalShow the original description

Beeper integration for Clawdbot. Send messages and search chats across WhatsApp, Telegram, Signal, Discord, Slack, Instagram, iMessage, LinkedIn, Facebook Messenger, Google Messages via Beeper Desktop API. Reactions, reminders, attachments, mark as read. Unified multi-platform messaging automation—just ask.

sundial-org/awesome-openclaw-skills671 stars(GitHub 671 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Searching messages across connected chat services
  • Sending a message through a selected platform
  • Reviewing unread chats across Beeper
  • Setting a reminder to reply to a conversation
  • Downloading an attachment or reacting to a message

Files included (1)

  • SKILL.md15.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

Your lobster just got a Beeper.

Finally, your Clawdbot can reach you (and everyone else) across every chat platform. WhatsApp? Telegram? Signal? Discord? Slack? Instagram DMs? LinkedIn? iMessage? All of them. One skill. One claw.

Powered by Beeper - the app that unifies all your chats.

What Can Your Lobster Do With Beeper?

🔍 Search Everything - "What did Sarah say about the project last week?" Your lobster will dig through all your Beeper chats instantly.

💬 Send Messages Anywhere - "Tell Mom I'll be late" - and it goes to WhatsApp. "Message the team on Slack" - done. No app switching.

📊 Summarize Your Inbox - "What did I miss?" Get a digest of unread messages across all your Beeper networks.

🔔 Set Reminders - "Remind me to reply to this chat tomorrow" - your lobster remembers so you don't have to.

📎 Grab Attachments - Download files, images, and media from any Beeper conversation.

😀 React to Messages - Add emoji reactions to any message across any Beeper network.

✅ Mark as Read - Keep your Beeper inbox tidy by marking conversations as read.

Supported Beeper Networks

Your Clawdbot can reach you on any platform Beeper supports:

PlatformStatus
WhatsApp✅ Full Support
Telegram✅ Full Support
Signal✅ Full Support
Discord✅ Full Support
Slack✅ Full Support
Instagram DMs✅ Full Support
Facebook Messenger✅ Full Support
LinkedIn Messages✅ Full Support
X (Twitter) DMs✅ Full Support
Google Messages✅ Full Support
Google Chat✅ Full Support
iMessage✅ macOS only

One skill. Twelve platforms. Infinite possibilities.

Quick Start

1. Get Beeper

Don't have Beeper yet? Download it free - it's the app that brings all your chats together.

2. Enable the Beeper Desktop API

Open Beeper Desktop → Settings → Developers → Toggle "Beeper Desktop API" ON

That's it. Your lobster now has a direct line to all your chats.

3. (Optional) Add Your Beeper Token

For smoother automation, grab an access token:

  1. Beeper Desktop → Settings → Developers
  2. Click "Create Access Token"
  3. Add to ~/.clawdbot/clawdbot.json:
{
  "skills": {
    "entries": {
      "claw-me-maybe": {
        "enabled": true,
        "env": {
          "BEEPER_ACCESS_TOKEN": "your-token-here"
        }
      }
    }
  }
}

Note: BEEPER_API_URL defaults to http://localhost:23373 - no need to set it unless you're running Beeper on a different port.

Talk to Your Lobster

Once set up, just ask naturally:

"Show me my unread messages in Beeper"

"Search my Beeper chats for messages about dinner plans"

"Send a WhatsApp message to John saying I'm on my way"

"What's the latest in my Signal group chat?"

"Message the #general channel on Slack: standup in 5 minutes"

"Find all messages from Lisa in the last week"

"React with 👍 to that last message"

"Mark my Discord chats as read"

Your lobster handles the rest through Beeper.

The Technical Stuff

(For those who like to peek under the shell)

Beeper API Basics

Base URL: http://localhost:23373 (Beeper Desktop must be running)

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

Accounts

List Your Beeper Accounts

See all connected platforms in your Beeper:

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

Example Response:

[
  {
    "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
  }
]

Chats

List All Beeper Chats

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

Example Response:

[
  {
    "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"
    }
  }
]

Search Beeper Chats

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

Get Chat Details

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

Example Response:

{
  "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
}

Create a New Beeper Chat

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"]
  }'

Archive/Unarchive Chat

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

Messages

List Messages in a Chat

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

Example Response:

[
  {
    "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": []
  }
]

Search Messages Across All Beeper Networks

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

Example Response:

{
  "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
}

Send a Message via Beeper

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! 🦞"}'

Example Response:

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

Reply to a Message

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"
  }'

Mark Messages as Read

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"}'

Reactions

Add a Reaction to a Message

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": "👍"}'

Remove a Reaction

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": "👍"}'

Contacts

Search Contacts on an Account

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

Example Response:

[
  {
    "id": "contact-123",
    "name": "John Smith",
    "phone": "+15551234567",
    "avatar": "https://..."
  },
  {
    "id": "contact-456",
    "name": "Johnny Appleseed",
    "phone": "+15559876543",
    "avatar": "https://..."
  }
]

Reminders

Create Chat Reminder

Set a reminder for a chat:

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"}'

Delete Chat Reminder

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

Assets

Download Message Attachment

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

Pro Tips 🦞

Get Unread Summary from Beeper

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

Example Output:

[whatsapp] Family Group: 5 unread
[slack] Work Team: 12 unread
[signal] Best Friend: 2 unread

Find a WhatsApp Chat in Beeper

# 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}"

Mark All Chats as Read

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

Quick React to Last Message

# 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": "👍"}'

Check if Beeper is Ready

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

Get Messages from Last 24 Hours

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}"

Filter Chats by Service

# 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")]'

Good to Know

Beeper Desktop must be running - The API lives inside Beeper Desktop. No Beeper = no connection.

It's local & private - The Beeper API runs entirely on your machine. Your messages never touch external servers through this skill.

Respect the networks - This is for personal use. Sending too many messages might trigger rate limits on WhatsApp, etc.

iMessage needs macOS - Apple gonna Apple.

Reactions vary by network - Not all platforms support all emoji. Beeper handles the translation.

Troubleshooting

"Can't connect to Beeper"

  1. Is Beeper Desktop running? Look for it in your menu bar.
  2. Is the API enabled? Beeper → Settings → Developers → Beeper Desktop API
  3. Check the port: curl http://localhost:23373/health

"Authentication failed"

  1. Generate a fresh token in Beeper → Settings → Developers
  2. Make sure it's in your config (no extra spaces!)
  3. Or just remove the token - Beeper will prompt for OAuth

"Chat not found"

  1. Make sure the chat exists in your Beeper app
  2. Try different search terms
  3. Check that the account (WhatsApp, Telegram, etc.) is connected in Beeper

"Reaction not supported"

Some networks have limited emoji support. Try a more common emoji like 👍 ❤️ 😂 😮 😢 😡

Links

Credits

Built with 🦞 by @nickhamze and the Clawdbot community.

Powered by Beeper - One app for all your chats.

Claw Me Maybe - because your lobster should be able to reach you anywhere.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

1password

FreeSummary

Set up and use the 1Password command-line tool `op` to sign in, verify account access, and work with vault data. The skill covers single or multiple accounts and shows how to run commands or fill templates with secrets while limiting exposure in logs and files.

  • Set up the `op` command-line tool
  • Sign in and verify access to an account
  • Run a command with vault secrets
sundial-org/awesome-openclaw-skills671Updated Mar 7, 2026

a-stock-analysis

FreeSummary

Check live prices, price changes, and trading volume for Shanghai, Shenzhen, and Beijing stocks. Review intraday volume patterns and possible large-investor activity, and manage holdings with cost, quantity, and profit or loss summaries.

  • Checking current prices for A-share stocks
  • Reviewing intraday volume and large-investor signals
  • Managing a stock portfolio and checking profit or loss
sundial-org/awesome-openclaw-skills671Updated Mar 7, 2026

a11y-checker

FreeSummary

Scan HTML or JSX files and directories for accessibility issues such as missing image descriptions, form labels, and keyboard access problems. The skill identifies WCAG guideline failures and provides suggested code fixes alongside its findings.

  • Checking a new component before release
  • Auditing an inherited codebase
  • Preparing for an accessibility compliance review
sundial-org/awesome-openclaw-skills671Updated Mar 7, 2026

ab-test-setup

FreeSummary

Plan A/B tests that compare page or product changes, with clear hypotheses, sample sizes, success metrics, and traffic allocation. Get a structured test plan and guidance for interpreting results and deciding what to try next.

  • Comparing signup button copy
  • Planning a pricing page experiment
  • Estimating sample size and test duration
sundial-org/awesome-openclaw-skills671Updated Mar 7, 2026

abm-outbound

FreeSummary

Turn LinkedIn profile URLs into coordinated account-based outreach. The workflow gathers profile details, enriches contacts with email and phone data, looks up mailing addresses, and prepares email, LinkedIn, and handwritten-letter touches with the specified services.

  • Building a multichannel campaign from LinkedIn prospect URLs
  • Enriching prospect records with work contact details
  • Coordinating email, LinkedIn, and handwritten mail outreach
sundial-org/awesome-openclaw-skills671Updated Mar 7, 2026

accli

FreeSummary

Work with Apple Calendar on macOS to list calendars, find and view events, and check busy time slots across calendars. Create, update, or delete events with details such as dates, locations, and descriptions.

  • Reviewing events on a work or personal calendar
  • Checking availability before scheduling a meeting
  • Creating or updating a calendar event
sundial-org/awesome-openclaw-skills671Updated Mar 7, 2026

See all skills by sundial-org

Report a problem with this skill