Send a Mini Program notification to 50,000 saved openids on a scheduled push
Edit message templates in a web UI instead of writing the WeChat JSON by hand
Import a TXT file of openids with automatic deduplication before a campaign
Run 5 to 10 PHP workers in parallel to keep the WeChat QPS around 20 to 50
Needs PHP exec functions enabled, MySQL plus Redis, and a registered WeChat Mini Program with subscription permission.
This repository is a self-hosted system for sending WeChat Mini Program subscription messages in bulk. A WeChat Mini Program is a small app that runs inside the WeChat super-app on phones in China, and a subscription message is a one-time or long-term push notification a Mini Program can send to a user who has agreed to receive it. The project gives the operator a web admin panel and a background worker that calls WeChat's subscribeMessage.send API for each recipient. The stack is PHP 8 with Redis as a message queue and MySQL for storage. When the operator starts a push job, the admin panel writes the work into a Redis list keyed like wepush:task:{task_id}:queue. Multiple PHP worker processes pull from the queue in parallel, talk to the WeChat API, and update success and failure counters in Redis. The access token from WeChat is cached in Redis so it is not refetched on every call. Admins log in at /login.php with a default admin account that the README tells them to change. From the panel they can edit message templates without writing JSON by hand, do a test send to a specific openid, import a TXT file of recipient openids with automatic deduplication and counting, watch a real-time dashboard, and pause, resume, or stop a running task. Failed sends are logged, and a few specific WeChat error codes trigger up to two automatic retries. Installation walks through importing install.sql into MySQL, editing config.php with database and Redis credentials, setting the WeChat AppID and Secret, and enabling the PHP exec, shell_exec, proc_open, and popen functions, which BT Panel disables by default. The README suggests keeping QPS between 20 and 50 and running 5 to 10 worker processes. Long-term subscriptions are only open to certain industries on the WeChat side. The directory is small, with api.php, config.php, worker.php, login.php, logout.php, index.php, and the install.sql schema. The project is MIT licensed. The roadmap lists WebSocket live logs, CSV import, multi-Mini-Program support, Redis Streams, Docker deployment, a proxy pool, charts, multi-admin support, API tokens, and a template marketplace as future work.
Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.