explaingit

likeyun/wxminiprosubmsgpush

11PHPAudience · developerComplexity · 3/5ActiveLicenseSetup · hard

TLDR

Self-hosted PHP system for sending bulk WeChat Mini Program subscription messages. Includes an admin panel, Redis-backed queue, and parallel workers that call the WeChat send API.

Mindmap

mindmap
  root((WxMiniProSubMsgPush))
    Inputs
      Recipient openid lists
      Message templates
      WeChat AppID and Secret
    Outputs
      WeChat push messages
      Real-time dashboard
      Failure logs
    Use Cases
      Bulk notify Mini Program users
      Run timed marketing pushes
      Retry failed sends
      Manage templates without JSON
    Tech Stack
      PHP
      Redis
      MySQL
      WeChat API

Things people build with this

USE CASE 1

Send a Mini Program notification to 50,000 saved openids on a scheduled push

USE CASE 2

Edit message templates in a web UI instead of writing the WeChat JSON by hand

USE CASE 3

Import a TXT file of openids with automatic deduplication before a campaign

USE CASE 4

Run 5 to 10 PHP workers in parallel to keep the WeChat QPS around 20 to 50

Tech stack

PHPRedisMySQLWeChat

Getting it running

Difficulty · hard Time to first run · 1h+

Needs PHP exec functions enabled, MySQL plus Redis, and a registered WeChat Mini Program with subscription permission.

MIT license, use freely in commercial and personal projects with attribution.

In plain English

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.

Copy-paste prompts

Prompt 1
Walk me through importing install.sql, filling config.php, and starting the WxMiniProSubMsgPush admin panel on a fresh PHP 8 server
Prompt 2
Configure WxMiniProSubMsgPush with my WeChat AppID and Secret, then run a test send to one openid
Prompt 3
Write a systemd unit that keeps 8 worker.php processes alive for WxMiniProSubMsgPush
Prompt 4
Show me how to enable exec, shell_exec, proc_open, and popen in BT Panel for WxMiniProSubMsgPush
Prompt 5
Add a cron job that pauses any WxMiniProSubMsgPush task running past midnight Beijing time
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.