360 Secure SkillHub
360 安全技能中心

qywx-msg-sender

核心功能:通过Shell脚本实现企业微信消息推送,支持文本、Markdown(含表格)、图片、文件等类型,支持@成员;可注册绑定会话名称与Webhook,通过名称快速发送。适用场景:服务告警、定时任务结果、数据报告等通知场景。依赖curl和jq,输入为参数或已注册会话名,输出为消息推送至指定群/私聊。

gavinyao
gavinyao
热度 50.69
最近更新 2026-05-11 17:33:46
分类:自动化依赖:代码执行 / 第三方 API / 读写文件应用场景:自动化脚本 / 任务管理 / 报告撰写 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add qywx-msg-sender
Metadata
name
qywx-msg-sender
description
通过企业微信群机器人 Webhook 发送消息通知。支持文本、Markdown、Markdown V2(表格)、图片、文件消息。 支持发送到指定会话(chatid)或通过名称发送(需先注册 webhook URL)。 适用场景:服务告警、定时任务结果推送、数据报告发送、任何需要通知企业微信群的情况。

企业微信消息推送(群机器人 Webhook)

项目结构

qywx-msg-sender/
├── scripts/
│   ├── wecom_common.sh       # 公共函数库(参数解析、注册表、发送封装)
│   ├── send_text.sh          # 发送文本消息(支持 @成员)
│   ├── send_markdown.sh      # 发送 Markdown 消息
│   ├── send_markdown_v2.sh   # 发送 Markdown V2 消息(支持表格)
│   ├── send_image.sh         # 发送图片消息(base64 直传,≤2MB)
│   ├── send_file.sh          # 发送文件消息(先上传获取 media_id,≤20MB)
│   ├── register_chat.sh      # 注册会话(绑定名称、URL、chatid)
│   ├── list_chats.sh         # 列出所有已注册的会话
│   └── unregister_chat.sh    # 删除已注册的会话
└── SKILL.md                  # 本文档

依赖要求

  • curl(HTTP 客户端)
  • jq(JSON 处理,版本 ≥ 1.6)

配置参数

所有发送脚本支持以下可选参数:

参数 环境变量 说明
--to <name> - 通过名称发送(推荐,需先注册)
--url <url> WECOM_WEBHOOK_URL Webhook URL
--chatid <id> WECOM_CHATID 指定会话 ID

优先级:--to(从注册表读取 url + chatid)> --url/--chatid > 环境变量

Webhook URL 获取

企业微信群 → 右上角「...」→ 群机器人 → 添加 → 复制 Webhook 地址

会话 ID (chatid) 说明

  • 默认行为:不指定 chatid 时,消息发送到创建机器人的群
  • 指定会话:通过 --chatid 参数可发送到其他会话
  • 获取方式:从群机器人回调事件中提取 chatid

会话注册表

支持通过名称发送消息,注册时绑定 webhook URL、chatid 和会话类型。

注册格式

name -> { url, chatid, chat_type }
  • chat_type: group(群聊,默认)或 single(私聊)

注册会话

# 注册群聊(发送到 webhook 默认群)
bash scripts/register_chat.sh "研发群" "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"

# 注册群聊(发送到指定会话)
bash scripts/register_chat.sh "告警群" "https://...?key=yyy" "wrkSFfCgAAxxxxxx"

# 注册私聊(chat_type=single)
bash scripts/register_chat.sh "张三" "https://...?key=zzz" "wokSFfCgAAyyyyyy" "single"

查看已注册

bash scripts/list_chats.sh

输出示例:

已注册的会话 (3 个):
========================================
研发群:
  类型: group
  URL: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx
  ChatID: (默认群)

告警群:
  类型: group
  URL: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=yyy
  ChatID: wrkSFfCgAAxxxxxx

张三:
  类型: single
  URL: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=zzz
  ChatID: wokSFfCgAAyyyyyy

删除注册

bash scripts/unregister_chat.sh "研发群"

注册表位置

默认:~/.wecom/chat_registry.json

可通过环境变量自定义:

export WECOM_REGISTRY_FILE="/path/to/registry.json"

消息类型对比

类型 脚本 特点 限制
文本 send_text.sh 纯文本,支持 @成员 -
Markdown send_markdown.sh 富文本,标题/加粗/链接等 4096 字节
Markdown V2 send_markdown_v2.sh 支持表格和多行代码块 -
图片 send_image.sh base64 直传,无需上传 2MB,jpg/png
文件 send_file.sh 自动上传获取 media_id 20MB

Markdown vs Markdown V2

特性 Markdown Markdown V2
基础语法 # 标题、**加粗**、*斜体*、`代码`、[链接](url)、> 引用 同左
表格 ❌ 不支持 ✅ 支持
多行代码块 ❌ 不支持 ✅ 支持 ```
内容限制 4096 字节 较宽松
兼容性 更好(旧版客户端) 需较新版本

选择建议:

  • 简单消息 → 用 markdown(轻量、兼容性好)
  • 需要表格或代码块 → 必须用 markdown_v2

使用方式

所有脚本都支持 --to、--url、--chatid 参数。

文本消息

# 通过名称发送(推荐)
bash scripts/send_text.sh --to "研发群" "部署完成"

# 通过 URL 发送(临时使用)
bash scripts/send_text.sh --url "https://...?key=xxx" "消息内容"

# @ 指定成员(userid)
bash scripts/send_text.sh --to "研发群" "服务异常,请处理" "zhangsan"

# @ 所有人
bash scripts/send_text.sh --to "研发群" "紧急告警" "@all"

Markdown 消息

bash scripts/send_markdown.sh --to "研发群" "## 服务状态\n**API**: 正常\n**DB**: 正常"

bash scripts/send_markdown.sh --to "研发群" "$(cat report.md)"

支持:# 标题、**加粗**、*斜体*、`代码`、[链接](url)、> 引用

Markdown V2 消息(表格)

bash scripts/send_markdown_v2.sh --to "研发群" "## 每日数据

| 指标 | 数值 |
|------|------|
| 请求数 | 1,234 |
| 错误率 | 0.1% |
| P99 | 230ms |"

图片消息

bash scripts/send_image.sh --to "研发群" /path/to/screenshot.png

文件消息

bash scripts/send_file.sh --to "研发群" /path/to/report.xlsx

示例:服务每日报告

MSG=$(cat <<'EOF'
## 服务每日报告(2026-01-02)

**整体概况**
> 总请求: 68,019  |  活跃用户: 117  |  错误率: 0.02%

**资源消耗 Top 3**
1. app-gen-code — 6,137 次,$567
2. app-tools — 635 次,$168
3. zhangsan — 1,066 次,$97
EOF
)
bash scripts/send_markdown.sh --to "研发群" "$MSG"

带表格的版本(使用 markdown_v2):

MSG=$(cat <<'EOF'
## 服务每日报告(2026-01-02)

| 排名 | 名称 | 调用次数 | 消费 |
|------|------|---------|------|
| 1 | app-gen-code | 6,137 | $567 |
| 2 | app-tools | 635 | $168 |
| 3 | zhangsan | 1,066 | $97 |
EOF
)
bash scripts/send_markdown_v2.sh --to "研发群" "$MSG"

典型工作流

# 1. 首次使用:注册常用会话(绑定 webhook URL)
bash scripts/register_chat.sh "研发群" "https://...?key=xxx"
bash scripts/register_chat.sh "告警群" "https://...?key=yyy" "wrkSFfCgAAxxxxxx"

# 2. 日常使用:通过名称发送(无需记住 URL 和 chatid)
bash scripts/send_text.sh --to "研发群" "部署完成"
bash scripts/send_markdown.sh --to "告警群" "## 告警\n服务异常"

# 3. 查看已注册
bash scripts/list_chats.sh