6.7kā
by kesslerio
google-messages ā OpenClaw Skill
google-messages is an OpenClaw Skills integration for coding workflows. 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.
Skill Snapshot
| 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. OpenClaw Skills integration. |
| owner | kesslerio |
| repository | kesslerio/google-messages-openclaw-skill |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @kesslerio/google-messages-openclaw-skill |
| last updated | Feb 7, 2026 |
Maintainer

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
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="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:
-
Open Google Messages Web
browser action=open profile=openclaw targetUrl="https://messages.google.com/web/authentication" -
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="https://messages.google.com/web/conversations" -
Take snapshot and find conversation
browser action=snapshot profile=openclawLook 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
| 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
Google Messages Skill for OpenClaw
Send and receive SMS/RCS messages via Google Messages web interface using browser automation.
Features
- š¤ Send SMS ā Compose and send text messages
- š„ Receive notifications ā Real-time alerts when new messages arrive
- š Read conversations ā Query recent messages and conversation history
- š OpenClaw integration ā Forward incoming SMS to Telegram, WhatsApp, or other channels
Requirements
- OpenClaw with browser automation
- Android phone with Google Messages app
- Node.js 18+
Quick Start
1. Install the skill
# Clone to your skills directory
git clone https://github.com/kesslerio/google-messages-openclaw-skill.git ~/.openclaw/skills/google-messages
2. Pair with your phone
Ask your OpenClaw agent:
"Open Google Messages and show me the QR code"
Or manually:
- Go to https://messages.google.com/web
- Open Google Messages on your phone
- Tap ā® ā Device pairing ā QR code scanner
- Scan the code
3. Enable notifications (optional)
Start the webhook server to receive incoming message alerts:
# Set your notification target
export SMS_NOTIFICATION_TARGET="telegram:YOUR_CHAT_ID"
export SMS_NOTIFICATION_CHANNEL="telegram"
# Start the server
node ~/.openclaw/skills/google-messages/sms-webhook-server.js
Then inject the observer into the browser tab. See references/observer-injection.md for details.
Usage
Sending messages
Ask your OpenClaw agent:
- "Text John that I'm running late"
- "Send an SMS to 555-1234 saying hello"
- "Message Mom on Google Messages"
Checking messages
- "Check my texts"
- "Any new SMS messages?"
- "What did John text me?"
Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
SMS_WEBHOOK_PORT | Port for webhook server | 19888 |
SMS_NOTIFICATION_TARGET | OpenClaw target (e.g., telegram:123456) | (none) |
SMS_NOTIFICATION_CHANNEL | Channel type | telegram |
Systemd Service
For persistent notifications, install as a user service:
cp systemd/google-messages-webhook.service ~/.config/systemd/user/
# Edit service file: uncomment and set Environment= lines
systemctl --user daemon-reload
systemctl --user enable --now google-messages-webhook
How It Works
- Browser automation ā Uses OpenClaw's browser tool to control messages.google.com
- MutationObserver ā Injects a script that watches the DOM for new messages
- Webhook ā When new messages arrive, POSTs to a local server
- Forwarding ā Webhook server uses
openclaw message sendto forward to your preferred channel
Files
google-messages-skill/
āāā SKILL.md # OpenClaw skill definition
āāā sms-webhook-server.js # Webhook server for notifications
āāā sms-observer.js # Browser injection script (full version)
āāā references/
ā āāā snippets.md # JavaScript helper snippets
ā āāā observer-injection.md # How to inject the observer
āāā scripts/
ā āāā start-webhook.sh # Helper to start webhook
āāā systemd/
āāā google-messages-webhook.service
Limitations
- Phone must be online (messages sync through phone)
- Browser tab must stay open for notifications
- Session expires after ~14 days of inactivity
- QR re-pairing needed after session expiry
- Observer lost on page reload
Security
- Webhook server listens only on localhost
- No credentials stored (session in browser profile cookies)
- Observer script runs only on messages.google.com
License
Apache-2.0
Contributing
Issues and PRs welcome at https://github.com/kesslerio/google-messages-openclaw-skill
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
- 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 ---
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install google-messages?
Run openclaw add @kesslerio/google-messages-openclaw-skill in your terminal. This installs google-messages into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/kesslerio/google-messages-openclaw-skill. Review commits and README documentation before installing.
