🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Google Messages

by @kesslerio

Send and receive SMS/RCS via Google Messages web interface (messages.google.com). Use when asked to "send a text", "check texts", "SMS", "text message", "Google Messages", or forward incoming texts to other channels.

Versionv0.1.0
Downloads3,073
TERMINAL
clawhub install google-messages-openclaw-skill

📖 About This Skill


name: google-messages description: Send and receive SMS/RCS via Google Messages web interface (messages.google.com). Use when asked to "send a text", "check texts", "SMS", "text message", "Google Messages", or forward incoming texts to other channels. metadata: {"openclaw": {"emoji": "💬", "requires": {"tools": ["browser"], "bins": ["node"], "env": ["SMS_NOTIFICATION_TARGET", "SMS_NOTIFICATION_CHANNEL"]}}}

Google Messages Browser Skill

Automate SMS/RCS messaging via messages.google.com using the browser tool.

Overview

Google Messages for Web allows you to send/receive texts from your Android phone via browser. This skill automates that interface.

Requirements:

  • Android phone with Google Messages app
  • Phone and computer on same network (for initial QR pairing)
  • Browser profile with persistent session (use openclaw or your preferred profile)
  • Note: Replace profile=openclaw in examples with your preferred browser profile if different.


    Quick Reference

    | Action | Command | |--------|---------| | Open pairing page | browser action=open profile=openclaw targetUrl="https://messages.google.com/web/authentication" | | Check session | browser action=snapshot profile=openclaw — look for conversation list vs QR code | | Take screenshot | browser action=screenshot profile=openclaw |


    Initial Setup (QR Pairing)

    First-time setup requires scanning a QR code:

    1. Open Google Messages Web

       browser action=open profile=openclaw targetUrl="https://messages.google.com/web/authentication"
       

    2. Screenshot the QR code and share with user

       browser action=screenshot profile=openclaw
       

    3. User scans with phone: - Open Google Messages app on Android - Tap ⋮ menu → "Device pairing" → "QR code scanner" - Scan the QR code

    4. Verify connection — snapshot should show conversation list, not QR code

    Important: Enable "Remember this computer" to persist the session.


    Sending Messages

    1. Navigate to conversations

       browser action=navigate profile=openclaw targetUrl="https://messages.google.com/web/conversations"
       

    2. Take snapshot and find conversation

       browser action=snapshot profile=openclaw
       
    Look for the contact in the conversation list, note the ref.

    3. Click conversation

       browser action=act profile=openclaw request={"kind": "click", "ref": ""}
       

    4. Type message (find textarea ref from snapshot)

       browser action=act profile=openclaw request={"kind": "type", "ref": "", "text": "Your message"}
       

    5. Click send (find send button ref)

       browser action=act profile=openclaw request={"kind": "click", "ref": ""}
       


    Receiving Messages (Real-time Notifications)

    This skill includes a webhook system for real-time incoming SMS notifications.

    Components

    1. sms-webhook-server.js — receives notifications, forwards to OpenClaw channels 2. sms-observer.js — browser script that watches for new messages

    Setup

    1. Set environment variables:

       export SMS_NOTIFICATION_TARGET="telegram:YOUR_CHAT_ID"
       export SMS_NOTIFICATION_CHANNEL="telegram"
       

    2. Start webhook server:

       node /sms-webhook-server.js
       

    3. Inject observer into browser (see references/observer-injection.md)

    Systemd Service (Persistent)

    cp /systemd/google-messages-webhook.service ~/.config/systemd/user/
    

    Edit service file: set SMS_NOTIFICATION_TARGET in Environment=

    systemctl --user daemon-reload systemctl --user enable --now google-messages-webhook


    Reading Messages

    See references/snippets.md for JavaScript snippets to:

  • Get recent conversations
  • Get messages in current conversation
  • Check session status

  • Troubleshooting

    | Problem | Solution | |---------|----------| | QR code shown | Session expired, re-pair | | Elements not found | Google updated UI, check snapshot for new selectors | | Send button disabled | Message input empty or phone disconnected | | Observer not detecting | Check browser console for [SMS Observer] logs | | Webhook not receiving | Verify server running: curl http://127.0.0.1:19888/health |


    Selectors Reference

    Google Messages uses Angular components. These may change with updates.

    | Element | Selector | |---------|----------| | Conversation list | mws-conversations-list | | Conversation item | mws-conversation-list-item | | Message input | textarea[aria-label*="message"] | | Send button | button[aria-label*="Send"] | | QR code | mw-qr-code |


    Limitations

  • Phone must be online (messages sync through phone)
  • Browser tab must stay open for notifications
  • Session expires after ~14 days of inactivity
  • Observer lost on page reload (re-inject needed)

  • Security

  • Webhook listens on localhost only (127.0.0.1)
  • No credentials stored (session in browser cookies)
  • QR pairing links to your phone — treat as sensitive

  • License

    Apache-2.0

    ⚙️ Configuration

    1. Set environment variables:

       export SMS_NOTIFICATION_TARGET="telegram:YOUR_CHAT_ID"
       export SMS_NOTIFICATION_CHANNEL="telegram"
       

    2. Start webhook server:

       node /sms-webhook-server.js
       

    3. Inject observer into browser (see references/observer-injection.md)

    Systemd Service (Persistent)

    cp /systemd/google-messages-webhook.service ~/.config/systemd/user/
    

    Edit service file: set SMS_NOTIFICATION_TARGET in Environment=

    systemctl --user daemon-reload systemctl --user enable --now google-messages-webhook


    📋 Tips & Best Practices

    | Problem | Solution | |---------|----------| | QR code shown | Session expired, re-pair | | Elements not found | Google updated UI, check snapshot for new selectors | | Send button disabled | Message input empty or phone disconnected | | Observer not detecting | Check browser console for [SMS Observer] logs | | Webhook not receiving | Verify server running: curl http://127.0.0.1:19888/health |