Clawdbot ToolsDocumentedScanned

google-messages-openclaw-skill

Send and receive SMS/RCS via Google Messages web interface (messages.google.com).

Share:

Installation

npx clawhub@latest install google-messages-openclaw-skill

View the full skill documentation and source below.

Documentation

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

ActionCommand
Open pairing pagebrowser action=open profile=openclaw targetUrl=""
Check sessionbrowser action=snapshot profile=openclaw — look for conversation list vs QR code
Take screenshotbrowser action=screenshot profile=openclaw

Initial Setup (QR Pairing)

First-time setup requires scanning a QR code:

  • Open Google Messages Web

  • browser action=open profile=openclaw targetUrl=""

  • Screenshot the QR code and share with user

  • browser action=screenshot profile=openclaw

  • User scans with phone:

  • - Open Google Messages app on Android
    - Tap ⋮ menu → "Device pairing" → "QR code scanner"
    - Scan the QR code

  • Verify connection — snapshot should show conversation list, not QR code
  • Important: Enable "Remember this computer" to persist the session.


    Sending Messages

  • Navigate to conversations

  • browser action=navigate profile=openclaw targetUrl=""

  • Take snapshot and find conversation

  • browser action=snapshot profile=openclaw

    Look for the contact in the conversation list, note the ref.

  • Click conversation

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

  • Type message (find textarea ref from snapshot)

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

  • Click send (find send button ref)

  • browser action=act profile=openclaw request={"kind": "click", "ref": "<send_ref>"}


    Receiving Messages (Real-time Notifications)

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

    Components

  • sms-webhook-server.js — receives notifications, forwards to OpenClaw channels

  • sms-observer.js — browser script that watches for new messages
  • Setup

  • Set environment variables:

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

  • Start webhook server:

  • node <skill>/sms-webhook-server.js

  • Inject observer into browser (see references/observer-injection.md)
  • Systemd Service (Persistent)

    cp <skill>/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

    ProblemSolution
    QR code shownSession expired, re-pair
    Elements not foundGoogle updated UI, check snapshot for new selectors
    Send button disabledMessage input empty or phone disconnected
    Observer not detectingCheck browser console for [SMS Observer] logs
    Webhook not receivingVerify server running: curl | --- ## 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

    Apache-2.0