[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FYKHTVKQCQWZXPN58SRCBV":3,"skill-same:01M6FYKHTVKQCQWZXPN58SRCBV":86},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":73},"01M6FYKHTVKQCQWZXPN58SRCBV","beeper-api-cli",null,"Read and send messages via Beeper CLI. Supports WhatsApp, Telegram, Signal, Instagram, Twitter\u002FX, LinkedIn, Facebook Messenger and more.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fnerveband\u002Fbeeper-api-cli\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"cli","api","beeper","beeper api cli","whatsapp","linux","messages","twitter","linkedin","instagram","read","telegram","facebook","via","messenger","2026-11-10 10:12:30",false,"---\nname: beeper-api-cli\ndescription: Read and send messages via Beeper CLI. Supports WhatsApp, Telegram, Signal, Instagram, Twitter\u002FX, LinkedIn, Facebook Messenger and more.\nmetadata: {\"clawdbot\":{\"emoji\":\"?\",\"os\":[\"darwin\",\"linux\"]}}\n---\n\n# beeper-api-cli\n\nLLM-friendly wrapper around the Beeper CLI for reading and sending messages across all connected chat networks.\n\n## ⚠️ CRITICAL: Message Sending Policy\n\n**? NEVER SEND ANY MESSAGE WITHOUT EXPLICIT USER APPROVAL ?**\n\n**MANDATORY PROTOCOL FOR ALL MESSAGING:**\n1. **ALWAYS show the complete message draft first** - display full content\n2. **WAIT for explicit verbal approval** - \"send it\", \"looks good\", \"go ahead\", etc.\n3. **NEVER assume permission to send** - even if user says \"draft a message\"\n4. **Apply to ALL platforms**: WhatsApp, Telegram, Signal, Instagram, Twitter, Facebook, LinkedIn, etc.\n5. **NO EXCEPTIONS EVER** - This applies to new messages, replies, and forwards\n\nThis rule is NON-NEGOTIABLE and applies to ALL beeper send commands.\n\n## Quick Start\n\n### Step 1: Get Your Token from Beeper Desktop\n```\n1. Open Beeper Desktop\n2. Settings → Advanced → API\n3. Enable API access\n4. Copy the Bearer token\n```\n\n### Step 2: Set Environment Variables\n```bash\n# REQUIRED: Set your token\nexport BEEPER_TOKEN=\"paste-your-token-here\"\n\n# OPTIONAL: Override default localhost URL\nexport BEEPER_API_URL=\"http:\u002F\u002F[::1]:23373\"  # Default\n```\n\n### Step 3: Use the CLI\n```bash\n# Use the skill wrapper (recommended)\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json\n\n# Or use the binary directly\n\u002FUsers\u002Fashrafali\u002Fclawd\u002Fbeeper-api-cli\u002Fbeeper chats list --output json\n```\n\n**⚠️ Important:** Without setting `BEEPER_TOKEN`, all commands will fail with \"Unauthorized\" errors.\n\n## Prerequisites\n\n### 1. Beeper Desktop Must Be Running\nThe CLI connects to Beeper Desktop's local API server.\n\n### 2. Enable API Access in Beeper Desktop\n**⚠️ REQUIRED: You must configure the API token in Beeper Desktop first!**\n\n1. Open **Beeper Desktop**\n2. Go to **Settings → Advanced → API**\n3. **Enable API access**\n4. **Generate and copy the Bearer token**\n5. (Optional) Configure allowed IP addresses\n   - Default: Only `localhost` (127.0.0.1 \u002F ::1) is allowed\n   - If running CLI from remote machine, add its IP address in Beeper settings\n\n### 3. Set Environment Variables\nYou must set the token before the CLI will work:\n\n```bash\n# REQUIRED: Set your token from Beeper Desktop\nexport BEEPER_TOKEN=\"your-token-from-beeper-settings\"\n\n# OPTIONAL: Override API URL (default: http:\u002F\u002F[::1]:23373)\nexport BEEPER_API_URL=\"http:\u002F\u002F[::1]:23373\"\n```\n\n**Where to get the token:**\n- Beeper Desktop → Settings → Advanced → API → Copy Bearer Token\n\n**Important:**\n- ❌ The CLI will **NOT work** without setting `BEEPER_TOKEN`\n- ⚠️ Default API URL is `localhost` (`http:\u002F\u002F[::1]:23373`)\n- ? If accessing from another machine, you must:\n  1. Add that machine's IP in Beeper Desktop API settings\n  2. Update `BEEPER_API_URL` to use the correct host IP\n\n## Commands\n\n### List All Chats\n\n```bash\n# JSON output (LLM-friendly)\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json\n\n# Human-readable text\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output text\n\n# Markdown format\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output markdown\n```\n\n**Example JSON output:**\n```json\n[\n  {\n    \"id\": \"!wcn4YMCOtKUEtxYXYAq1:beeper.local\",\n    \"title\": \"beeper-api-cli - Lion Bot\",\n    \"type\": \"group\",\n    \"network\": \"Telegram\",\n    \"unreadCount\": 15\n  }\n]\n```\n\n### Get Specific Chat\n\n```bash\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats get \u003Cchat-id> --output json\n```\n\n### List Messages from Chat\n\n```bash\n# Get last 50 messages (default)\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh messages list --chat-id \u003Cchat-id>\n\n# Get specific number of messages\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh messages list --chat-id \u003Cchat-id> --limit 20 --output json\n```\n\n**Example JSON output:**\n```json\n[\n  {\n    \"id\": \"42113\",\n    \"chatID\": \"!wcn4YMCOtKUEtxYXYAq1:beeper.local\",\n    \"senderName\": \"ClawdBot\",\n    \"text\": \"Hello world!\",\n    \"timestamp\": \"2026-01-19T22:17:38.000Z\",\n    \"isSender\": true\n  }\n]\n```\n\n### Send a Message\n\n```bash\n# ⚠️ REQUIRES USER APPROVAL FIRST - see Message Sending Policy above\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh send --chat-id \u003Cchat-id> --message \"Your message here\"\n```\n\n**Example output:**\n```json\n{\n  \"success\": true,\n  \"message_id\": \"msg_123\",\n  \"chat_id\": \"!wcn4YMCOtKUEtxYXYAq1:beeper.local\"\n}\n```\n\n### Search Messages\n\n```bash\n# Search across all chats\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh search --query \"keyword\" --limit 10 --output json\n```\n\n### Auto-Discover API URL\n\n```bash\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh discover\n```\n\n## LLM Workflows\n\n### Find Chat and Send Message\n\n```bash\n# 1. List chats to find the right one\nCHATS=$(~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json)\n\n# 2. Extract chat ID (using jq)\nCHAT_ID=$(echo \"$CHATS\" | jq -r '.[] | select(.title | contains(\"Project\")) | .id')\n\n# 3. Send message\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh send --chat-id \"$CHAT_ID\" --message \"Update ready!\"\n```\n\n### Get Conversation Context\n\n```bash\n# Get recent messages for context\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh messages list --chat-id \u003Cchat-id> --limit 20 --output json | jq\n```\n\n### Monitor Unread Messages\n\n```bash\n# Get all chats with unread count\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json | jq '.[] | select(.unreadCount > 0) | {title, network, unread: .unreadCount}'\n```\n\n## Output Formats\n\n### JSON (Default - LLM-Optimized)\n- Structured data ready for parsing\n- Perfect for programmatic use\n- Pipe to `jq` for filtering\n\n### Text (Human-Readable)\n```\nID: !wcn4YMCOtKUEtxYXYAq1:beeper.local\nTitle: beeper-api-cli - Lion Bot\nType: group\nNetwork: Telegram\nUnread: 15\n```\n\n### Markdown (Documentation)\n```markdown\n## beeper-api-cli - Lion Bot\n\n- **ID**: !wcn4YMCOtKUEtxYXYAq1:beeper.local\n- **Type**: group\n- **Network**: Telegram\n- **Unread**: 15\n```\n\n## Chat ID Formats\n\nDifferent networks use different ID formats:\n\n- **Telegram**: `!wcn4YMCOtKUEtxYXYAq1:beeper.local`\n- **WhatsApp**: Phone number format (e.g., `15551234567@s.whatsapp.net`)\n- **Signal**: Phone number (e.g., `+15551234567`)\n- **Instagram\u002FTwitter**: Platform-specific IDs\n\nUse `chats list` to discover the exact format for your chats.\n\n## Environment Variables\n\n### Required Configuration\n\n**You MUST set these environment variables before using the CLI:**\n\n#### BEEPER_TOKEN (Required)\n```bash\nexport BEEPER_TOKEN=\"your-bearer-token-from-beeper-desktop\"\n```\n\n**How to get your token:**\n1. Open Beeper Desktop\n2. Settings → Advanced → API\n3. Enable API access\n4. **Copy the Bearer token** shown in the settings\n5. Set it as an environment variable\n\n**Without this token, the CLI will return \"Unauthorized\" errors.**\n\n#### BEEPER_API_URL (Optional)\n```bash\nexport BEEPER_API_URL=\"http:\u002F\u002F[::1]:23373\"  # Default value\n```\n\n**Default behavior:**\n- Uses `http:\u002F\u002F[::1]:23373` (localhost on IPv6)\n- This works when running CLI on the same machine as Beeper Desktop\n\n**When to change:**\n- Running CLI from a **remote machine**\n- Beeper Desktop is on a different host\n- Using a custom port\n\n**If running remotely:**\n1. Find the IP address of the machine running Beeper Desktop\n2. In Beeper Desktop → Settings → Advanced → API → Add the remote machine's IP to allowed list\n3. Set `BEEPER_API_URL` to: `http:\u002F\u002F\u003Cbeeper-host-ip>:23373`\n\nExample for remote access:\n```bash\nexport BEEPER_API_URL=\"http:\u002F\u002F192.168.1.100:23373\"\nexport BEEPER_TOKEN=\"your-token-here\"\n```\n\n### Skill Wrapper Behavior\n\nThe skill wrapper (`beeper.sh`) will:\n- ✅ Use `$BEEPER_TOKEN` from environment (you must set this!)\n- ✅ Default `$BEEPER_API_URL` to `http:\u002F\u002F[::1]:23373` if not set\n- ❌ **Fail with error** if `BEEPER_TOKEN` is not set\n\n## Troubleshooting\n\n### \"Connection refused\"\n```bash\n# Check if Beeper Desktop is running\nps aux | grep -i beeper\n\n# Start Beeper Desktop\nopen -a \"Beeper Desktop\"  # macOS\n```\n\n### \"Unauthorized\" or \"Invalid or missing token\"\n\n**This means you haven't set BEEPER_TOKEN or it's invalid.**\n\n**Fix:**\n```bash\n# 1. Check if token is set\necho $BEEPER_TOKEN\n\n# If empty or wrong, get a new token from Beeper Desktop:\n# - Open Beeper Desktop\n# - Settings → Advanced → API\n# - Enable API if not already enabled\n# - Copy the Bearer token shown\n# - Set it in your environment:\n\nexport BEEPER_TOKEN=\"paste-the-token-here\"\n\n# Test it works:\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list\n```\n\n**Important Notes:**\n- The token is generated in **Beeper Desktop settings**, not in this CLI\n- You **must copy it exactly** from Settings → Advanced → API\n- Without a valid token, **no commands will work**\n- Tokens don't expire unless you regenerate them in Beeper settings\n\n### \"Chat not found\"\n```bash\n# List all chats to find correct ID\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output text | grep -i \"search-term\"\n```\n\n### Remote Access (CLI on different machine than Beeper Desktop)\n\n**If you want to run the CLI from a different computer:**\n\n**1. Configure Beeper Desktop to allow remote access:**\n```\n- Open Beeper Desktop (on the machine running Beeper)\n- Settings → Advanced → API\n- Find the \"Allowed IP Addresses\" section\n- Add the IP address of the machine running the CLI\n- Example: 192.168.1.50\n```\n\n**2. Set BEEPER_API_URL to point to the remote machine:**\n```bash\n# On the machine running the CLI:\nexport BEEPER_API_URL=\"http:\u002F\u002F\u003Cbeeper-desktop-ip>:23373\"\nexport BEEPER_TOKEN=\"your-token\"\n\n# Example:\nexport BEEPER_API_URL=\"http:\u002F\u002F192.168.1.100:23373\"\n```\n\n**Default behavior (localhost only):**\n- Default URL: `http:\u002F\u002F[::1]:23373` (IPv6 localhost)\n- Only works when CLI is on **same machine** as Beeper Desktop\n- **No remote access** unless you configure allowed IPs in Beeper settings\n\n## Examples\n\n### Example 1: Check Unread Messages\n```bash\n#!\u002Fbin\u002Fbash\nBEEPER=\"$HOME\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh\"\n\n# Get chats with unread messages\n$BEEPER chats list --output json | \\\n  jq -r '.[] | select(.unreadCount > 0) | \"\\(.title) (\\(.network)): \\(.unreadCount) unread\"'\n```\n\n### Example 2: Read Recent Messages\n```bash\n#!\u002Fbin\u002Fbash\nBEEPER=\"$HOME\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh\"\nCHAT_ID=\"!wcn4YMCOtKUEtxYXYAq1:beeper.local\"\n\n# Get last 10 messages in readable format\n$BEEPER messages list --chat-id \"$CHAT_ID\" --limit 10 --output text\n```\n\n### Example 3: Search and Respond\n```bash\n#!\u002Fbin\u002Fbash\nBEEPER=\"$HOME\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh\"\n\n# Search for mentions\nRESULTS=$($BEEPER search --query \"@clawdbot\" --limit 5 --output json)\n\n# Process results and respond (LLM integration point)\necho \"$RESULTS\" | jq\n```\n\n## Integration with Clawdbot\n\nWhen using from Clawdbot tools, the environment variables are already configured:\n\n```bash\n# Direct usage from exec tool\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json\n```\n\nThe skill wrapper handles:\n- ✅ Auto-configuration of `BEEPER_API_URL` and `BEEPER_TOKEN`\n- ✅ Error checking for required environment variables\n- ✅ Clean passthrough of all CLI arguments\n\n## Binary Location\n\n- **Skill wrapper**: `~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh`\n- **Beeper CLI binary**: `\u002FUsers\u002Fashrafali\u002Fclawd\u002Fbeeper-api-cli\u002Fbeeper`\n- **Source code**: https:\u002F\u002Fgithub.com\u002Fnerveband\u002Fbeeper-api-cli\n\n## Features\n\n✅ Read-only and write operations (unlike other tools)  \n✅ LLM-optimized JSON output  \n✅ Human-readable text and markdown formats  \n✅ Auto-discovery of Beeper Desktop API  \n✅ Cross-platform binaries (macOS, Linux, Windows)  \n✅ Environment variable configuration  \n✅ Comprehensive error messages  \n✅ Unix pipeline friendly  \n\n## Notes\n\n- The skill requires Beeper Desktop to be running\n- API access must be enabled in Beeper Desktop settings\n- Token is stored in Clawdbot config (already configured)\n- All networks connected to Beeper are accessible (WhatsApp, Telegram, Signal, etc.)\n- Use JSON output for LLM processing, text for human reading\n\n## Version\n\nLatest (dev build from source)\n","# beeper-api-cli\n\nLLM-friendly wrapper around the Beeper CLI for reading and sending messages across all connected chat networks.\n\n## ⚠️ CRITICAL: Message Sending Policy\n\n**? NEVER SEND ANY MESSAGE WITHOUT EXPLICIT USER APPROVAL ?**\n\n**MANDATORY PROTOCOL FOR ALL MESSAGING:**\n1. **ALWAYS show the complete message draft first** - display full content\n2. **WAIT for explicit verbal approval** - \"send it\", \"looks good\", \"go ahead\", etc.\n3. **NEVER assume permission to send** - even if user says \"draft a message\"\n4. **Apply to ALL platforms**: WhatsApp, Telegram, Signal, Instagram, Twitter, Facebook, LinkedIn, etc.\n5. **NO EXCEPTIONS EVER** - This applies to new messages, replies, and forwards\n\nThis rule is NON-NEGOTIABLE and applies to ALL beeper send commands.\n\n## Quick Start\n\n### Step 1: Get Your Token from Beeper Desktop\n```\n1. Open Beeper Desktop\n2. Settings → Advanced → API\n3. Enable API access\n4. Copy the Bearer token\n```\n\n### Step 2: Set Environment Variables\n```bash\n# REQUIRED: Set your token\nexport BEEPER_TOKEN=\"paste-your-token-here\"\n\n# OPTIONAL: Override default localhost URL\nexport BEEPER_API_URL=\"http:\u002F\u002F[::1]:23373\"  # Default\n```\n\n### Step 3: Use the CLI\n```bash\n# Use the skill wrapper (recommended)\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json\n\n# Or use the binary directly\n\u002FUsers\u002Fashrafali\u002Fclawd\u002Fbeeper-api-cli\u002Fbeeper chats list --output json\n```\n\n**⚠️ Important:** Without setting `BEEPER_TOKEN`, all commands will fail with \"Unauthorized\" errors.\n\n## Prerequisites\n\n### 1. Beeper Desktop Must Be Running\nThe CLI connects to Beeper Desktop's local API server.\n\n### 2. Enable API Access in Beeper Desktop\n**⚠️ REQUIRED: You must configure the API token in Beeper Desktop first!**\n\n1. Open **Beeper Desktop**\n2. Go to **Settings → Advanced → API**\n3. **Enable API access**\n4. **Generate and copy the Bearer token**\n5. (Optional) Configure allowed IP addresses\n   - Default: Only `localhost` (127.0.0.1 \u002F ::1) is allowed\n   - If running CLI from remote machine, add its IP address in Beeper settings\n\n### 3. Set Environment Variables\nYou must set the token before the CLI will work:\n\n```bash\n# REQUIRED: Set your token from Beeper Desktop\nexport BEEPER_TOKEN=\"your-token-from-beeper-settings\"\n\n# OPTIONAL: Override API URL (default: http:\u002F\u002F[::1]:23373)\nexport BEEPER_API_URL=\"http:\u002F\u002F[::1]:23373\"\n```\n\n**Where to get the token:**\n- Beeper Desktop → Settings → Advanced → API → Copy Bearer Token\n\n**Important:**\n- ❌ The CLI will **NOT work** without setting `BEEPER_TOKEN`\n- ⚠️ Default API URL is `localhost` (`http:\u002F\u002F[::1]:23373`)\n- ? If accessing from another machine, you must:\n  1. Add that machine's IP in Beeper Desktop API settings\n  2. Update `BEEPER_API_URL` to use the correct host IP\n\n## Commands\n\n### List All Chats\n\n```bash\n# JSON output (LLM-friendly)\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json\n\n# Human-readable text\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output text\n\n# Markdown format\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output markdown\n```\n\n**Example JSON output:**\n```json\n[\n  {\n    \"id\": \"!wcn4YMCOtKUEtxYXYAq1:beeper.local\",\n    \"title\": \"beeper-api-cli - Lion Bot\",\n    \"type\": \"group\",\n    \"network\": \"Telegram\",\n    \"unreadCount\": 15\n  }\n]\n```\n\n### Get Specific Chat\n\n```bash\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats get \u003Cchat-id> --output json\n```\n\n### List Messages from Chat\n\n```bash\n# Get last 50 messages (default)\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh messages list --chat-id \u003Cchat-id>\n\n# Get specific number of messages\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh messages list --chat-id \u003Cchat-id> --limit 20 --output json\n```\n\n**Example JSON output:**\n```json\n[\n  {\n    \"id\": \"42113\",\n    \"chatID\": \"!wcn4YMCOtKUEtxYXYAq1:beeper.local\",\n    \"senderName\": \"ClawdBot\",\n    \"text\": \"Hello world!\",\n    \"timestamp\": \"2026-01-19T22:17:38.000Z\",\n    \"isSender\": true\n  }\n]\n```\n\n### Send a Message\n\n```bash\n# ⚠️ REQUIRES USER APPROVAL FIRST - see Message Sending Policy above\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh send --chat-id \u003Cchat-id> --message \"Your message here\"\n```\n\n**Example output:**\n```json\n{\n  \"success\": true,\n  \"message_id\": \"msg_123\",\n  \"chat_id\": \"!wcn4YMCOtKUEtxYXYAq1:beeper.local\"\n}\n```\n\n### Search Messages\n\n```bash\n# Search across all chats\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh search --query \"keyword\" --limit 10 --output json\n```\n\n### Auto-Discover API URL\n\n```bash\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh discover\n```\n\n## LLM Workflows\n\n### Find Chat and Send Message\n\n```bash\n# 1. List chats to find the right one\nCHATS=$(~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json)\n\n# 2. Extract chat ID (using jq)\nCHAT_ID=$(echo \"$CHATS\" | jq -r '.[] | select(.title | contains(\"Project\")) | .id')\n\n# 3. Send message\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh send --chat-id \"$CHAT_ID\" --message \"Update ready!\"\n```\n\n### Get Conversation Context\n\n```bash\n# Get recent messages for context\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh messages list --chat-id \u003Cchat-id> --limit 20 --output json | jq\n```\n\n### Monitor Unread Messages\n\n```bash\n# Get all chats with unread count\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json | jq '.[] | select(.unreadCount > 0) | {title, network, unread: .unreadCount}'\n```\n\n## Output Formats\n\n### JSON (Default - LLM-Optimized)\n- Structured data ready for parsing\n- Perfect for programmatic use\n- Pipe to `jq` for filtering\n\n### Text (Human-Readable)\n```\nID: !wcn4YMCOtKUEtxYXYAq1:beeper.local\nTitle: beeper-api-cli - Lion Bot\nType: group\nNetwork: Telegram\nUnread: 15\n```\n\n### Markdown (Documentation)\n```markdown\n## beeper-api-cli - Lion Bot\n\n- **ID**: !wcn4YMCOtKUEtxYXYAq1:beeper.local\n- **Type**: group\n- **Network**: Telegram\n- **Unread**: 15\n```\n\n## Chat ID Formats\n\nDifferent networks use different ID formats:\n\n- **Telegram**: `!wcn4YMCOtKUEtxYXYAq1:beeper.local`\n- **WhatsApp**: Phone number format (e.g., `15551234567@s.whatsapp.net`)\n- **Signal**: Phone number (e.g., `+15551234567`)\n- **Instagram\u002FTwitter**: Platform-specific IDs\n\nUse `chats list` to discover the exact format for your chats.\n\n## Environment Variables\n\n### Required Configuration\n\n**You MUST set these environment variables before using the CLI:**\n\n#### BEEPER_TOKEN (Required)\n```bash\nexport BEEPER_TOKEN=\"your-bearer-token-from-beeper-desktop\"\n```\n\n**How to get your token:**\n1. Open Beeper Desktop\n2. Settings → Advanced → API\n3. Enable API access\n4. **Copy the Bearer token** shown in the settings\n5. Set it as an environment variable\n\n**Without this token, the CLI will return \"Unauthorized\" errors.**\n\n#### BEEPER_API_URL (Optional)\n```bash\nexport BEEPER_API_URL=\"http:\u002F\u002F[::1]:23373\"  # Default value\n```\n\n**Default behavior:**\n- Uses `http:\u002F\u002F[::1]:23373` (localhost on IPv6)\n- This works when running CLI on the same machine as Beeper Desktop\n\n**When to change:**\n- Running CLI from a **remote machine**\n- Beeper Desktop is on a different host\n- Using a custom port\n\n**If running remotely:**\n1. Find the IP address of the machine running Beeper Desktop\n2. In Beeper Desktop → Settings → Advanced → API → Add the remote machine's IP to allowed list\n3. Set `BEEPER_API_URL` to: `http:\u002F\u002F\u003Cbeeper-host-ip>:23373`\n\nExample for remote access:\n```bash\nexport BEEPER_API_URL=\"http:\u002F\u002F192.168.1.100:23373\"\nexport BEEPER_TOKEN=\"your-token-here\"\n```\n\n### Skill Wrapper Behavior\n\nThe skill wrapper (`beeper.sh`) will:\n- ✅ Use `$BEEPER_TOKEN` from environment (you must set this!)\n- ✅ Default `$BEEPER_API_URL` to `http:\u002F\u002F[::1]:23373` if not set\n- ❌ **Fail with error** if `BEEPER_TOKEN` is not set\n\n## Troubleshooting\n\n### \"Connection refused\"\n```bash\n# Check if Beeper Desktop is running\nps aux | grep -i beeper\n\n# Start Beeper Desktop\nopen -a \"Beeper Desktop\"  # macOS\n```\n\n### \"Unauthorized\" or \"Invalid or missing token\"\n\n**This means you haven't set BEEPER_TOKEN or it's invalid.**\n\n**Fix:**\n```bash\n# 1. Check if token is set\necho $BEEPER_TOKEN\n\n# If empty or wrong, get a new token from Beeper Desktop:\n# - Open Beeper Desktop\n# - Settings → Advanced → API\n# - Enable API if not already enabled\n# - Copy the Bearer token shown\n# - Set it in your environment:\n\nexport BEEPER_TOKEN=\"paste-the-token-here\"\n\n# Test it works:\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list\n```\n\n**Important Notes:**\n- The token is generated in **Beeper Desktop settings**, not in this CLI\n- You **must copy it exactly** from Settings → Advanced → API\n- Without a valid token, **no commands will work**\n- Tokens don't expire unless you regenerate them in Beeper settings\n\n### \"Chat not found\"\n```bash\n# List all chats to find correct ID\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output text | grep -i \"search-term\"\n```\n\n### Remote Access (CLI on different machine than Beeper Desktop)\n\n**If you want to run the CLI from a different computer:**\n\n**1. Configure Beeper Desktop to allow remote access:**\n```\n- Open Beeper Desktop (on the machine running Beeper)\n- Settings → Advanced → API\n- Find the \"Allowed IP Addresses\" section\n- Add the IP address of the machine running the CLI\n- Example: 192.168.1.50\n```\n\n**2. Set BEEPER_API_URL to point to the remote machine:**\n```bash\n# On the machine running the CLI:\nexport BEEPER_API_URL=\"http:\u002F\u002F\u003Cbeeper-desktop-ip>:23373\"\nexport BEEPER_TOKEN=\"your-token\"\n\n# Example:\nexport BEEPER_API_URL=\"http:\u002F\u002F192.168.1.100:23373\"\n```\n\n**Default behavior (localhost only):**\n- Default URL: `http:\u002F\u002F[::1]:23373` (IPv6 localhost)\n- Only works when CLI is on **same machine** as Beeper Desktop\n- **No remote access** unless you configure allowed IPs in Beeper settings\n\n## Examples\n\n### Example 1: Check Unread Messages\n```bash\n#!\u002Fbin\u002Fbash\nBEEPER=\"$HOME\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh\"\n\n# Get chats with unread messages\n$BEEPER chats list --output json | \\\n  jq -r '.[] | select(.unreadCount > 0) | \"\\(.title) (\\(.network)): \\(.unreadCount) unread\"'\n```\n\n### Example 2: Read Recent Messages\n```bash\n#!\u002Fbin\u002Fbash\nBEEPER=\"$HOME\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh\"\nCHAT_ID=\"!wcn4YMCOtKUEtxYXYAq1:beeper.local\"\n\n# Get last 10 messages in readable format\n$BEEPER messages list --chat-id \"$CHAT_ID\" --limit 10 --output text\n```\n\n### Example 3: Search and Respond\n```bash\n#!\u002Fbin\u002Fbash\nBEEPER=\"$HOME\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh\"\n\n# Search for mentions\nRESULTS=$($BEEPER search --query \"@clawdbot\" --limit 5 --output json)\n\n# Process results and respond (LLM integration point)\necho \"$RESULTS\" | jq\n```\n\n## Integration with Clawdbot\n\nWhen using from Clawdbot tools, the environment variables are already configured:\n\n```bash\n# Direct usage from exec tool\n~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh chats list --output json\n```\n\nThe skill wrapper handles:\n- ✅ Auto-configuration of `BEEPER_API_URL` and `BEEPER_TOKEN`\n- ✅ Error checking for required environment variables\n- ✅ Clean passthrough of all CLI arguments\n\n## Binary Location\n\n- **Skill wrapper**: `~\u002Fclawd\u002Fskills\u002Fbeeper-api-cli\u002Fbeeper.sh`\n- **Beeper CLI binary**: `\u002FUsers\u002Fashrafali\u002Fclawd\u002Fbeeper-api-cli\u002Fbeeper`\n- **Source code**: https:\u002F\u002Fgithub.com\u002Fnerveband\u002Fbeeper-api-cli\n\n## Features\n\n✅ Read-only and write operations (unlike other tools)  \n✅ LLM-optimized JSON output  \n✅ Human-readable text and markdown formats  \n✅ Auto-discovery of Beeper Desktop API  \n✅ Cross-platform binaries (macOS, Linux, Windows)  \n✅ Environment variable configuration  \n✅ Comprehensive error messages  \n✅ Unix pipeline friendly  \n\n## Notes\n\n- The skill requires Beeper Desktop to be running\n- API access must be enabled in Beeper Desktop settings\n- Token is stored in Clawdbot config (already configured)\n- All networks connected to Beeper are accessible (WhatsApp, Telegram, Signal, etc.)\n- Use JSON output for LLM processing, text for human reading\n\n## Version\n\nLatest (dev build from source)\n",{"name":5,"metadata":48,"description":7},{"clawdbot":49},{"os":50,"emoji":52},[51,33],"darwin","?","main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fnerveband\u002Fbeeper-api-cli",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add kbarbel640-del\u002Fskills --skill beeper-api-cli",{"tool":66,"command":67},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill beeper-api-cli",{"tool":69,"command":70},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill beeper-api-cli","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fnerveband\u002Fbeeper-api-cli\u002FSKILL.md",true,[74,80],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"_meta.json","REFERENCE","参考文档",283,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fnerveband\u002Fbeeper-api-cli\u002F_meta.json",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"beeper.sh","SCRIPT","脚本",2132,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fnerveband\u002Fbeeper-api-cli\u002Fbeeper.sh",[87,115,142,161,167,186],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":96,"publishedAt":43},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[93],{"categoryNo":94,"categoryName":95,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000036","内容创作者",[97,98,29,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114],"crowd prompting","prompting","with","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":124,"publishedAt":43},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[121],{"categoryNo":122,"categoryName":123,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[125,29,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,103,141],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":151,"publishedAt":43},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[148],{"categoryNo":149,"categoryName":150,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[152,153,154,155,156,157,158,99,159,139,141,38,29,160,41],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","http",{"skillNo":162,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":166,"publishedAt":43},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[165],{"categoryNo":149,"categoryName":150,"taxonomyType":20,"taxonomyTypeDesc":21},[155,154,153,152,41,157,158,99,156,139,141,159,38,29,160],{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":43},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[174,175,176,177,178,179,180,33,181,182,183,184,185],"git","summary","git summary","commits","repository","win32","status","contributors","true","quick","get","branches",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":196,"publishedAt":43},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[192,193],{"categoryNo":122,"categoryName":123,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":194,"categoryName":195,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000037","律师与法务",[197,198,199,200,99,201,202,53,203,38,204,205,206,207,208,112,209,210,211],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]