push-server-py

Send notifications to WeCom (企业微信) users via OpenAPI push service(https://github.com/qingzhou-dev/push-server). Supports TEXT, MARKDOWN, TEXT_CARD, and NEWS message types.

Audits

Pass

Install

openclaw skills install push-server-py

Push-Server WeCom Notification

Send notifications to WeCom (企业微信) users via the Push Server OpenAPI. This skill is designed for push notifications powered by Push Server. It can also be adapted for other webhook notification services by modifying notify.py .

Supports TEXT, MARKDOWN, TEXT_CARD, and NEWS message types.

Acknowledgements

The current version was collaboratively refined with AI assistance. Special thanks to:

  • OpenClaw — the agent framework that powers this skill
  • Qwen — AI coding assistant

Configuration

Two environment variables are required. Set them in openclaw.json:

"skills": {
  "entries": {
    "push-server-py": {
      "apiKey": "your-api-key-here",
      "env": {
        "QYWX_PUSH_URL": "https://push.wechat.com"
      }
    }
  }
}
  • apiKey → automatically injected as QYWX_PUSH_API_KEY (via primaryEnv)
  • env.QYWX_PUSH_URL → the base URL of the push service

Usage

python3 {baseDir}/notify.py '<JSON>'

Environment Variables

VariableRequiredSourceDescription
QYWX_PUSH_API_KEYyesskills.entries.*.apiKeyAPI Key for authentication (X-API-Key)
QYWX_PUSH_URLyesskills.entries.*.envBase URL of the push service

Request Parameters

ParamTypeRequiredDefaultDescription
toUserstryes-Target user(s), pipe-separated, e.g. `"user1
msgTypestrnoTEXTTEXT / MARKDOWN / TEXT_CARD / NEWS
contentstryes (TEXT / MARKDOWN)-Message content
titlestrTEXT_CARD only-Card title
descriptionstrTEXT_CARD only-Card description
urlstrTEXT_CARD only-Card link URL
btnTextstrTEXT_CARD onlyView DetailsCard button text
articleslist[obj]NEWS only-List of article objects (see below)

Article Object (NEWS)

ParamTypeRequiredDescription
titlestryesArticle title
urlstryesArticle link
descriptionstrnoArticle description
picUrlstrnoArticle cover image

Examples

# Send TEXT notification
python3 {baseDir}/notify.py '{"toUser":"user1","content":"System is running normally.","msgType":"TEXT"}'

# Send MARKDOWN notification
python3 {baseDir}/notify.py '{
  "toUser": "user1|user2",
  "msgType": "MARKDOWN",
  "content": "## 🚨 Alert\n\n> CPU usage exceeds **90%**"
}'

# Send TEXT_CARD notification
python3 {baseDir}/notify.py '{
  "toUser": "user1|user2",
  "msgType": "TEXT_CARD",
  "title": "Weekly Report Ready",
  "description": "Click to view this week report.",
  "url": "https://example.com/reports/weekly",
  "btnText": "View Report"
}'

# Send NEWS notification
python3 {baseDir}/notify.py '{
  "toUser": "user1|user2",
  "msgType": "NEWS",
  "articles": [{
    "title": "March Monthly Report",
    "url": "https://example.com/reports/202503",
    "description": "March report is ready for review.",
    "picUrl": "https://example.com/reports/202503/cover.jpg"
  }]
}'

Message Type Reference

msgTypeRequired FieldsDescription
TEXTcontentPlain text message
MARKDOWNcontentMarkdown rich text
TEXT_CARDtitle, description, urlCard message with button
NEWSarticlesNews / articles

Success Response

{
  "success": true,
  "message": "ok",
  "errCode": 0
}

Error Response

{
  "success": false,
  "message": "Send failed: API error: invalid api key (errCode: 401)",
  "errCode": 401
}

Current Status

Fully functional.