Wechat File Helper
v1.1.0WeChat File Helper automation. Use when: - Check if filehelper.weixin.qq.com is open in browser - Open the page if not already open - Capture QR code and sen...
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name/description match the contents: the SKILL.md and scripts implement browser automation for filehelper.weixin.qq.com, QR capture, and sending messages. Required capabilities (browser control and a messaging channel) are what you'd expect for this functionality.
Instruction Scope
Instructions operate only on browser tabs, take screenshots to /tmp/wechat-qr.png, and call the agent's message-sending actions to deliver QR images — all consistent with the goal. Note: the instructions explicitly send QR screenshots to external channels (WhatsApp/Telegram/Slack/etc.), which is necessary for login but is a privacy-sensitive operation and should only target trusted recipients.
Install Mechanism
No install spec and no external downloads; this is instruction-plus-script only. Scripts are small, readable shell scripts — nothing is fetched from remote URLs or extracted to disk during install.
Credentials
The skill declares no environment variables or credentials and does not request unrelated secrets. It relies on the agent/platform-provided 'browser' and 'message' actions (implicit capabilities) rather than asking for API keys, which is proportionate. Users should ensure the platform has the required messaging channels configured.
Persistence & Privilege
always is false and the skill doesn't attempt to modify other skills or system-wide settings. It can be run on a cron (scripts provided) but doesn't request permanent elevated privileges.
Assessment
This skill appears to do what it claims: it automates a browser tab for filehelper.weixin.qq.com, captures the QR when logged out, and sends it to a configured channel so a user can scan it. Before installing: (1) confirm your platform has the messaging channels (WhatsApp/Telegram/Slack/iMessage) configured and that messages will go only to trusted recipients — QR images grant login access and are sensitive; (2) avoid using this with personal WeChat accounts if it violates terms of service; (3) review/modify the scripts if you want different temporary file paths or logging behavior; (4) be cautious about running the monitor/cron scripts unattended — they will capture and transmit QR images automatically. If the skill later adds network calls to unknown endpoints, requires API keys, or includes obfuscated code, re-evaluate (that would change this assessment).Like a lobster shell, security has layers — review code before you run it.
latest
WeChat File Helper Automation Skill
Automate WeChat File Helper (filehelper.weixin.qq.com) to send text messages. Handles login QR code automatically.
Key Features:
- Pure browser automation (no API keys needed)
- Automatic QR code detection and delivery
- Support for multiple messaging channels
- Cron-ready monitoring scripts
When to Use
✅ USE this skill when:
- Send text messages to WeChat File Helper
- Need automatic QR code handling when logged out
- Want to use existing WeChat account (not personal)
- Integrate with cron for periodic messages
❌ DON'T use this skill when:
- Sending to personal WeChat accounts (ToS violation)
- Need real-time messaging (use API directly)
- Uploading files (not supported)
- Need message history/read receipts
Requirements
- Browser extension enabled (
openclaw browser statusshowsenabled: true) - WeChat File Helper account (not personal WeChat)
- At least one messaging channel configured (for QR delivery)
Workflow Overview (5 Steps)
┌─────────────────────────────────────────────────────────────────┐
│ 1. Open filehelper.weixin.qq.com or reuse existing tab │
└─────────────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 2. Check login status - QR code needed? │
│ - URL ends with `/_/` → Logged in │
│ - Base URL → QR code displayed (logged out) │
└─────────────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 3a. If logged out: Capture QR and send to user │
│ - Screenshot QR code │
│ - Send via available channel (WhatsApp/iMessage/Slack) │
│ - Wait for user to scan │
└─────────────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 3b. If logged in: Type message in textarea │
└─────────────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 4. Click send button or press Enter │
└─────────────────────────────────┬───────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 5. Confirm message sent (check for success indicator) │
└─────────────────────────────────────────────────────────────────┘
Step 1: Open or Reuse Tab
# Check if tab already exists
browser action=tabs targetUrl="https://filehelper.weixin.qq.com/"
# Open new tab if needed
browser action=open targetUrl="https://filehelper.weixin.qq.com/"
targetId="<new-target-id>"
Step 2: Check Login Status
# Check URL to determine state
browser action=evaluate fn="window.location.href" targetId="<targetId>"
Login Status Indicators
| URL Pattern | Status | Action |
|---|---|---|
filehelper.weixin.qq.com/_/ | ✅ Logged In | Proceed to Step 3b |
filehelper.weixin.qq.com/ | ❌ Logged Out | Proceed to Step 3a |
Step 3a: Capture and Send QR Code (When Logged Out)
# Capture QR code screenshot
browser action=screenshot path="/tmp/wechat-qr.png" targetId="<targetId>"
# Send via first available channel
message action=send to="<owner-phone>" media="/tmp/wechat-qr.png"
# Or specify channel explicitly
message action=send channel="whatsapp" to="+1234567890" media="/tmp/wechat-qr.png"
message action=send channel="telegram" to="@username" media="/tmp/wechat-qr.png"
message action=send channel="slack" to="#channel" media="/tmp/wechat-qr.png"
echo "📱 QR code sent. Waiting for scan..."
# Poll for login success (every 5 seconds, max 60 attempts)
attempts=0
while [ $attempts -lt 60 ]; do
sleep 5
url=$(browser action=evaluate fn="window.location.href" targetId="<targetId>")
if echo "$url" | grep -q "_/"; then
echo "✅ Login successful!"
break
fi
attempts=$((attempts + 1))
done
Step 3b: Type Message (When Logged In)
# Take snapshot to get refs
browser action=snapshot targetId="<targetId>"
# Type message
browser action=act kind="type" ref="input-area" text="Hello from OpenClaw! 🦞" targetId="<targetId>"
Step 4: Send Message
# Option 1: Click send button
browser action=act kind="click" ref="send-btn" targetId="<targetId>"
# Option 2: Press Enter
browser action=act kind="press" key="Enter" targetId="<targetId>"
Step 5: Confirm Success
# Check for success indicator
browser action=evaluate fn="{
const sent = document.body.innerText.includes('已发送') ||
document.body.innerText.includes('sent') ||
document.querySelector('.success, [class*=\"success\"]');
!!sent;
}" targetId="<targetId>"
Complete Scripts
Quick Send (Single Command)
# Send a message - handles login automatically
wechat "Hello from OpenClaw!"
Full Workflow Script
#!/bin/bash
# wechat-send.sh - Complete WeChat File Helper automation
MESSAGE="$1"
QR_FILE="/tmp/wechat-qr.png"
WEBSITE="https://filehelper.weixin.qq.com/"
TARGET_ID=""
echo "🔍 Checking WeChat File Helper status..."
# Step 1: Open or get existing tab
tabs=$(browser action=tabs targetUrl="$WEBSITE")
if echo "$tabs" | grep -q "targetId"; then
TARGET_ID=$(echo "$tabs" | grep -o 'targetId="[^"]*"' | head -1 | cut -d'"' -f2)
echo "✅ Using existing tab: $TARGET_ID"
else
result=$(browser action=open targetUrl="$WEBSITE")
TARGET_ID=$(echo "$result" | grep -o 'targetId="[^"]*"' | cut -d'"' -f2)
echo "✅ Opened new tab: $TARGET_ID"
sleep 2
fi
# Step 2: Check login status
url=$(browser action=evaluate fn="window.location.href" targetId="$TARGET_ID")
if echo "$url" | grep -q "_/"; then
echo "✅ Already logged in"
else
echo "❌ Not logged in - capturing QR..."
# Capture QR code
browser action=screenshot path="$QR_FILE" targetId="$TARGET_ID"
# Send QR via owner's channel (set OWNER_PHONE env var)
OWNER_PHONE="${OWNER_PHONE:-+1234567890}"
message action=send to="$OWNER_PHONE" media="$QR_FILE" \
-m "WeChat File Helper login required. Please scan QR code."
echo "📱 QR code sent to $OWNER_PHONE"
echo "⏳ Waiting for scan... (run again after scanning)"
exit 0
fi
# Step 3: Type message
browser action=snapshot targetId="$TARGET_ID"
browser action=act kind="type" ref="input-area" text="$MESSAGE" targetId="$TARGET_ID"
echo "✅ Message typed"
# Step 4: Send
browser action=act kind="click" ref="send-btn" targetId="$TARGET_ID"
echo "✅ Send button clicked"
# Step 5: Confirm
sleep 1
result=$(browser action=evaluate fn="{
document.body.innerText.includes('sent') ||
document.body.innerText.includes('已发送')
}" targetId="$TARGET_ID")
if [ "$result" = "true" ]; then
echo "✅ Message sent successfully!"
else
echo "⚠️ Message may not have sent - check manually"
fi
Cron Monitoring Script
#!/bin/bash
# cron-wechat.sh - Run every minute via cron
# Set owner phone for QR delivery
OWNER_PHONE="${OWNER_PHONE:-+1234567890}"
# Source main script
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
source "$SCRIPT_DIR/monitor.sh"
# Log
echo "$(date): WeChat File Helper check"
Common Selectors
| Element | Selector | Ref |
|---|---|---|
| Message input | textarea or div[contenteditable] | input-area |
| Send button | button[type="button"] or .send-btn | send-btn |
| QR code container | .qr-container or [class*="qr"] | qr-code |
| Success indicator | Text containing "已发送" or "sent" | - |
| User avatar | [class*="avatar"] or [class*="user"] | - |
Page States
| State | URL | Description |
|---|---|---|
| Logged Out | https://filehelper.weixin.qq.com/ | Shows QR code for WeChat scan |
| Logged In | https://filehelper.weixin.qq.com/_/ | Chat interface ready |
Auto QR Delivery via Channels
The skill detects configured channels and sends QR to the first available:
# Check configured channels
openclaw config channels
# Priority order: WhatsApp → Telegram → Slack → First available
message action=send to="+1234567890" media="/tmp/wechat-qr.png"
Limitations
- No File Uploads: File button clicks may fail or trigger unwanted dialogs
- No Message History: Cannot read past messages
- Session Expiry: May need re-login after inactivity (~1-2 hours)
- QR Expiry: QR refreshes every ~2 minutes if not scanned
- ToS Warning: Using personal WeChat accounts violates WeChat ToS
- No Group Support: File Helper is 1-on-1 only
- Rate Limiting: May be throttled on rapid message sending
Troubleshooting
| Issue | Solution |
|---|---|
| Can't find input | Run snapshot to refresh refs |
| Send button not working | Try pressing Enter instead |
| Session expired | QR code shown, re-scan to login |
| Wrong refs after reload | Page reload resets refs |
| QR not sending | Check configured channels |
| Messages not arriving | Verify recipient is correct |
| Cron not working | Check crontab -e entry |
| Browser not starting | Run openclaw browser status |
Scripts
| Script | Purpose |
|---|---|
scripts/monitor.sh | Main monitoring script |
scripts/capture_qrcode.sh | Capture QR code only |
scripts/cron-wechat.sh | Cron wrapper for monitoring |
Environment Variables
| Variable | Description | Default |
|---|---|---|
OWNER_PHONE | Phone for QR delivery | +1234567890 |
See Also
openclaw browser status- Check browser extensionopenclaw config channels- List messaging channelschat-deepseek- Similar automation for DeepSeekimsg- Send results to iMessagewhatsapp-login- WhatsApp QR login
Comments
Loading comments...
