google-messages-openclaw-skill
Send and receive SMS/RCS via Google Messages web interface (messages.google.com).
Installation
npx clawhub@latest install google-messages-openclaw-skillView 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
openclawor 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="" |
| 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:
browser action=open profile=openclaw targetUrl=""
browser action=screenshot profile=openclaw
- Open Google Messages app on Android
- Tap ⋮ menu → "Device pairing" → "QR code scanner"
- Scan the QR code
Important: Enable "Remember this computer" to persist the session.
Sending Messages
browser action=navigate profile=openclaw targetUrl=""
browser action=snapshot profile=openclawLook for the contact in the conversation list, note the
ref.
browser action=act profile=openclaw request={"kind": "click", "ref": "<ref>"}
browser action=act profile=openclaw request={"kind": "type", "ref": "<input_ref>", "text": "Your message"}
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
Setup
export SMS_NOTIFICATION_TARGET="telegram:YOUR_CHAT_ID"
export SMS_NOTIFICATION_CHANNEL="telegram"
node <skill>/sms-webhook-server.js
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
| 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 |
---
## 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