2.5 KiB
2.5 KiB
Memory · 2026-04-24
WeChat Image Sending — Root Cause Findings
1. Gateway sendMedia is QQBot-only (Platform Bug)
- Gateway imports
sendMediafromoutbound-CkazH4Wl.jswhich is QQBot-exclusive - WeChat plugin's
sendMediainchannel.ts:205is never called by the gateway - All outbound messages log
mediaUrl=none— images are NOT sent via this path - Workaround: Using
MEDIA:./assets/<filename>directive in reply works — Tyrone received images this way - The
image_generatetool output IS sent correctly via MEDIA: path
2. Browserless Screenshot Blank Issue (mp.weixin.qq.com)
- Browserless returns 2685-byte solid-color PNG for mp.weixin.qq.com (anti-bot protection)
- GitHub and taobao.com/login also return blank/placeholder
- Normal pages (e.g., baidu.com) CAN be screenshot successfully (48071 bytes real PNG)
- The
browsertool has intermittent "timed out" / "No connected browser-capable nodes" failures - Browserless CDP is reachable at ws://browserless:3000
3. QR Code Generation — AI refuses scannable QR codes
image_generatetool cannot produce scannable QR codes (MiniMax has anti-fraud training that blocks QR code generation)api.qrserver.comreturns wrong content ("Happy Halloween!") for all URLs- My hand-written QR encoder (gen-qr-png.cjs) produces technically valid QR but the resulting PNG from ImageMagick conversion has precision loss and won't scan
- Solution options: (a) install qrencode on群晖, (b) use browserless to screenshot a real login QR from a site that works (taobao login worked), (c) Tyrone logs in manually at mp.weixin.qq.com
4. WeChat QR Login URL
- URL:
https://mp.weixin.qq.com/cgi-bin/scanloginqrcode?action=getqrcode&random=<epoch>&login_appid=— session-based, expires - Cannot be fetched via curl (requires browser session cookies)
- Must use browser with WeChat logged-in session to access
5. Valid Reference Images
wechat-open-qr.png(105378 bytes) — valid QR from earlier session, stored at workspace/assets/screenshot-test/- Test circle PNG sent successfully — confirmed WeChat CAN receive images via MEDIA: directive
6. Successful Screenshot Targets
- baidu.com → 48071 bytes real PNG via browserless
- taobao.com/login → real login QR code screenshot works
Key Decisions This Session
- Using
MEDIA:./assets/<filename>for image delivery (not gateway sendMedia) - WeChat channel
sendTextworks fine; only images have routing issues - Browserless HTTP API (POST /screenshot) more reliable than browser tool for some targets