Wechat File Helper

v1.1.0

WeChat 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...

1· 467·3 current·3 all-time
bychristo@qidu
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & 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.

latestvk971a91npxekvf0be58nexj5nd82mstb
467downloads
1stars
3versions
Updated 1w ago
v1.1.0
MIT-0

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 status shows enabled: 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 PatternStatusAction
filehelper.weixin.qq.com/_/✅ Logged InProceed to Step 3b
filehelper.weixin.qq.com/❌ Logged OutProceed 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

ElementSelectorRef
Message inputtextarea or div[contenteditable]input-area
Send buttonbutton[type="button"] or .send-btnsend-btn
QR code container.qr-container or [class*="qr"]qr-code
Success indicatorText containing "已发送" or "sent"-
User avatar[class*="avatar"] or [class*="user"]-

Page States

StateURLDescription
Logged Outhttps://filehelper.weixin.qq.com/Shows QR code for WeChat scan
Logged Inhttps://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

IssueSolution
Can't find inputRun snapshot to refresh refs
Send button not workingTry pressing Enter instead
Session expiredQR code shown, re-scan to login
Wrong refs after reloadPage reload resets refs
QR not sendingCheck configured channels
Messages not arrivingVerify recipient is correct
Cron not workingCheck crontab -e entry
Browser not startingRun openclaw browser status

Scripts

ScriptPurpose
scripts/monitor.shMain monitoring script
scripts/capture_qrcode.shCapture QR code only
scripts/cron-wechat.shCron wrapper for monitoring

Environment Variables

VariableDescriptionDefault
OWNER_PHONEPhone for QR delivery+1234567890

See Also

  • openclaw browser status - Check browser extension
  • openclaw config channels - List messaging channels
  • chat-deepseek - Similar automation for DeepSeek
  • imsg - Send results to iMessage
  • whatsapp-login - WhatsApp QR login

Comments

Loading comments...