@marshulll/openclaw-wecom 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md ADDED
@@ -0,0 +1,98 @@
1
+ # OpenClaw WeCom Plugin (Dual Mode)
2
+
3
+ English | [中文](README.zh.md)
4
+
5
+ OpenClaw WeCom plugin supporting **Bot API mode** and **Internal App mode** with multi-account, media, and group chat.
6
+
7
+ > `docs/TECHNICAL.md` is the source of truth. Read it before development.
8
+
9
+ ## Features
10
+ - Dual mode: Bot API (JSON callback + stream) / App (XML callback + ACK + proactive send)
11
+ - Multi-account: `channels.wecom.accounts`
12
+ - Message types: text / image / voice / video / file (send & receive)
13
+ - Commands: `/help`, `/status`, `/clear`
14
+ - Stability: signature verification, AES decrypt, token cache, rate limit & retries
15
+ - Group chat: uses `appchat/send` when `chatId` is present
16
+
17
+ ## Install
18
+ ### npm
19
+ ```bash
20
+ openclaw plugins install @marshulll/openclaw-wecom
21
+ openclaw plugins enable openclaw-wecom
22
+ openclaw gateway restart
23
+ ```
24
+
25
+ ### Local path
26
+ ```bash
27
+ openclaw plugins install --link /path/to/openclaw-wecom
28
+ openclaw plugins enable wecom
29
+ openclaw gateway restart
30
+ ```
31
+
32
+ ## Configuration
33
+ Write config to `~/.openclaw/openclaw.json`.
34
+ Recommended: use main config only; env vars are fallback.
35
+
36
+ Minimal example: `docs/wecom.config.example.json`
37
+ Full example: `docs/wecom.config.full.example.json`
38
+ Install guide: `docs/INSTALL.md`
39
+
40
+ ### Minimal config
41
+ ```json5
42
+ {
43
+ "channels": {
44
+ "wecom": {
45
+ "enabled": true,
46
+ "mode": "both",
47
+ "webhookPath": "/wecom",
48
+ "token": "BOT_TOKEN",
49
+ "encodingAESKey": "BOT_AES",
50
+ "receiveId": "BOT_ID",
51
+ "corpId": "CORP_ID",
52
+ "corpSecret": "CORP_SECRET",
53
+ "agentId": 1000001,
54
+ "callbackToken": "CALLBACK_TOKEN",
55
+ "callbackAesKey": "CALLBACK_AES"
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ ### Key notes
62
+ - Bot mode `receiveId`: recommended to set **Bot ID (aibotid)** for strict crypto validation
63
+ - App mode decryption uses **CorpID** (`corpId`)
64
+
65
+ ## Webhook setup (WeCom Admin)
66
+ ### Bot mode
67
+ - URL: `https://your-domain/wecom`
68
+ - Token: custom string
69
+ - EncodingAESKey: generated in admin
70
+ - Bot ID (aibotid): map to `receiveId`
71
+
72
+ ### App mode
73
+ - URL: `https://your-domain/wecom`
74
+ - Token / EncodingAESKey: map to `callbackToken` / `callbackAesKey`
75
+ - CorpID / AgentID / Secret: map to `corpId` / `agentId` / `corpSecret`
76
+
77
+ > HTTPS is required. Restart OpenClaw gateway after enabling the plugin.
78
+
79
+ ## Modes
80
+ - `mode: "bot"`: Bot API only
81
+ - `mode: "app"`: App only
82
+ - `mode: "both"`: both modes (default)
83
+
84
+ ## Media handling
85
+ - App mode: downloads inbound media to local temp dir (`media.tempDir`)
86
+ - Bot mode media bridge: if reply payload includes `mediaUrl + mediaType`,
87
+ and App credentials are present, media will be uploaded and sent
88
+
89
+ ## Troubleshooting
90
+ - Callback verification failed: check Token / AESKey / URL
91
+ - No reply: ensure plugin enabled and gateway restarted
92
+ - Media too large: adjust `media.maxBytes` or send smaller files
93
+ - invalid access_token: verify `corpId/corpSecret/agentId`
94
+
95
+ ## Docs
96
+ - Dev doc: `docs/TECHNICAL.md`
97
+ - Install: `docs/INSTALL.md`
98
+ - Examples: `docs/wecom.config.example.json` / `docs/wecom.config.full.example.json`
package/README.md ADDED
@@ -0,0 +1,98 @@
1
+ # OpenClaw 企业微信插件(双模式)
2
+
3
+ 中文 | [English](README.en.md)
4
+
5
+ OpenClaw WeCom 插件,支持 **智能机器人 API 模式** 与 **自建应用模式**(双模式),并支持多账户、媒体消息与群聊。
6
+
7
+ > 以 `docs/TECHNICAL.md` 为准;开发前请先阅读。
8
+
9
+ ## 功能概览
10
+ - 双模式:Bot API(JSON 回调 + stream)/ App(XML 回调 + ACK + 主动发送)
11
+ - 多账户:`channels.wecom.accounts`
12
+ - 消息类型:文本 / 图片 / 语音 / 视频 / 文件(收发均支持)
13
+ - 机器人命令:`/help`、`/status`、`/clear`
14
+ - 稳定性:签名校验、AES 解密、token 缓存、限流与重试
15
+ - 群聊:自动识别 `chatId` 并使用 `appchat/send`
16
+
17
+ ## 安装
18
+ ### npm 安装
19
+ ```bash
20
+ openclaw plugins install @marshulll/openclaw-wecom
21
+ openclaw plugins enable openclaw-wecom
22
+ openclaw gateway restart
23
+ ```
24
+
25
+ ### 本地路径加载
26
+ ```bash
27
+ openclaw plugins install --link /path/to/openclaw-wecom
28
+ openclaw plugins enable wecom
29
+ openclaw gateway restart
30
+ ```
31
+
32
+ ## 配置
33
+ 主配置写入:`~/.openclaw/openclaw.json`
34
+ 推荐仅使用主配置;环境变量仅作为兜底。
35
+
36
+ 最小示例:`docs/wecom.config.example.json`
37
+ 全量示例:`docs/wecom.config.full.example.json`
38
+ 安装与配置说明:`docs/INSTALL.md`
39
+
40
+ ### 最小配置示例
41
+ ```json5
42
+ {
43
+ "channels": {
44
+ "wecom": {
45
+ "enabled": true,
46
+ "mode": "both",
47
+ "webhookPath": "/wecom",
48
+ "token": "BOT_TOKEN",
49
+ "encodingAESKey": "BOT_AES",
50
+ "receiveId": "BOT_ID",
51
+ "corpId": "CORP_ID",
52
+ "corpSecret": "CORP_SECRET",
53
+ "agentId": 1000001,
54
+ "callbackToken": "CALLBACK_TOKEN",
55
+ "callbackAesKey": "CALLBACK_AES"
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ ### 关键字段说明
62
+ - Bot 模式 `receiveId`:建议填写 **Bot ID(aibotid)**,用于回调加解密校验
63
+ - App 模式回调解密使用 **CorpID**(`corpId`)
64
+
65
+ ## 回调配置(企业微信后台)
66
+ ### Bot 模式
67
+ - URL:`https://你的域名/wecom`
68
+ - Token:自定义
69
+ - EncodingAESKey:后台生成
70
+ - Bot ID(aibotid):填写到 `receiveId`
71
+
72
+ ### App 模式
73
+ - URL:`https://你的域名/wecom`
74
+ - Token / EncodingAESKey:后台生成,对应 `callbackToken` / `callbackAesKey`
75
+ - CorpID / AgentID / Secret:分别对应 `corpId` / `agentId` / `corpSecret`
76
+
77
+ > 两种模式都要求公网 HTTPS;配置完成后请重启 OpenClaw gateway。
78
+
79
+ ## 模式说明
80
+ - `mode: "bot"`:只启用智能机器人 API 模式
81
+ - `mode: "app"`:只启用自建应用模式
82
+ - `mode: "both"`:同时启用两种模式(默认)
83
+
84
+ ## 媒体处理说明
85
+ - App 模式:收到媒体会下载到本地临时目录(可配置 `media.tempDir`)
86
+ - Bot 模式媒体桥接:当 reply payload 含 `mediaUrl + mediaType` 时,
87
+ 若已配置 App 凭据,会自动上传并发送媒体
88
+
89
+ ## 常见问题
90
+ - 回调验证失败:检查 Token / AESKey / URL 是否一致
91
+ - 没有回复:确认已启用插件并重启 gateway
92
+ - 媒体过大:调整 `media.maxBytes` 或发送更小文件
93
+ - invalid access_token:检查 `corpId/corpSecret/agentId`
94
+
95
+ ## 资料入口
96
+ - 开发文档:`docs/TECHNICAL.md`
97
+ - 安装配置:`docs/INSTALL.md`
98
+ - 配置示例:`docs/wecom.config.example.json` / `docs/wecom.config.full.example.json`
package/README.zh.md ADDED
@@ -0,0 +1,98 @@
1
+ # OpenClaw 企业微信插件(双模式)
2
+
3
+ 中文 | [English](README.en.md)
4
+
5
+ OpenClaw WeCom 插件,支持 **智能机器人 API 模式** 与 **自建应用模式**(双模式),并支持多账户、媒体消息与群聊。
6
+
7
+ > 以 `docs/TECHNICAL.md` 为准;开发前请先阅读。
8
+
9
+ ## 功能概览
10
+ - 双模式:Bot API(JSON 回调 + stream)/ App(XML 回调 + ACK + 主动发送)
11
+ - 多账户:`channels.wecom.accounts`
12
+ - 消息类型:文本 / 图片 / 语音 / 视频 / 文件(收发均支持)
13
+ - 机器人命令:`/help`、`/status`、`/clear`
14
+ - 稳定性:签名校验、AES 解密、token 缓存、限流与重试
15
+ - 群聊:自动识别 `chatId` 并使用 `appchat/send`
16
+
17
+ ## 安装
18
+ ### npm 安装
19
+ ```bash
20
+ openclaw plugins install @marshulll/openclaw-wecom
21
+ openclaw plugins enable openclaw-wecom
22
+ openclaw gateway restart
23
+ ```
24
+
25
+ ### 本地路径加载
26
+ ```bash
27
+ openclaw plugins install --link /path/to/openclaw-wecom
28
+ openclaw plugins enable wecom
29
+ openclaw gateway restart
30
+ ```
31
+
32
+ ## 配置
33
+ 主配置写入:`~/.openclaw/openclaw.json`
34
+ 推荐仅使用主配置;环境变量仅作为兜底。
35
+
36
+ 最小示例:`docs/wecom.config.example.json`
37
+ 全量示例:`docs/wecom.config.full.example.json`
38
+ 安装与配置说明:`docs/INSTALL.md`
39
+
40
+ ### 最小配置示例
41
+ ```json5
42
+ {
43
+ "channels": {
44
+ "wecom": {
45
+ "enabled": true,
46
+ "mode": "both",
47
+ "webhookPath": "/wecom",
48
+ "token": "BOT_TOKEN",
49
+ "encodingAESKey": "BOT_AES",
50
+ "receiveId": "BOT_ID",
51
+ "corpId": "CORP_ID",
52
+ "corpSecret": "CORP_SECRET",
53
+ "agentId": 1000001,
54
+ "callbackToken": "CALLBACK_TOKEN",
55
+ "callbackAesKey": "CALLBACK_AES"
56
+ }
57
+ }
58
+ }
59
+ ```
60
+
61
+ ### 关键字段说明
62
+ - Bot 模式 `receiveId`:建议填写 **Bot ID(aibotid)**,用于回调加解密校验
63
+ - App 模式回调解密使用 **CorpID**(`corpId`)
64
+
65
+ ## 回调配置(企业微信后台)
66
+ ### Bot 模式
67
+ - URL:`https://你的域名/wecom`
68
+ - Token:自定义
69
+ - EncodingAESKey:后台生成
70
+ - Bot ID(aibotid):填写到 `receiveId`
71
+
72
+ ### App 模式
73
+ - URL:`https://你的域名/wecom`
74
+ - Token / EncodingAESKey:后台生成,对应 `callbackToken` / `callbackAesKey`
75
+ - CorpID / AgentID / Secret:分别对应 `corpId` / `agentId` / `corpSecret`
76
+
77
+ > 两种模式都要求公网 HTTPS;配置完成后请重启 OpenClaw gateway。
78
+
79
+ ## 模式说明
80
+ - `mode: "bot"`:只启用智能机器人 API 模式
81
+ - `mode: "app"`:只启用自建应用模式
82
+ - `mode: "both"`:同时启用两种模式(默认)
83
+
84
+ ## 媒体处理说明
85
+ - App 模式:收到媒体会下载到本地临时目录(可配置 `media.tempDir`)
86
+ - Bot 模式媒体桥接:当 reply payload 含 `mediaUrl + mediaType` 时,
87
+ 若已配置 App 凭据,会自动上传并发送媒体
88
+
89
+ ## 常见问题
90
+ - 回调验证失败:检查 Token / AESKey / URL 是否一致
91
+ - 没有回复:确认已启用插件并重启 gateway
92
+ - 媒体过大:调整 `media.maxBytes` 或发送更小文件
93
+ - invalid access_token:检查 `corpId/corpSecret/agentId`
94
+
95
+ ## 资料入口
96
+ - 开发文档:`docs/TECHNICAL.md`
97
+ - 安装配置:`docs/INSTALL.md`
98
+ - 配置示例:`docs/wecom.config.example.json` / `docs/wecom.config.full.example.json`
@@ -0,0 +1,103 @@
1
+ # OpenClaw WeCom 插件安装与配置
2
+
3
+ ## 安装
4
+
5
+ ### 方式一:npm 安装
6
+ ```bash
7
+ openclaw plugins install @marshulll/openclaw-wecom
8
+ openclaw plugins enable openclaw-wecom
9
+ openclaw gateway restart
10
+ ```
11
+
12
+ ### 方式二:本地路径加载
13
+ ```bash
14
+ openclaw plugins install --link /path/to/openclaw-wecom
15
+ openclaw plugins enable wecom
16
+ openclaw gateway restart
17
+ ```
18
+
19
+ ## 配置
20
+
21
+ 将配置写入 OpenClaw 配置文件(通常在 `~/.openclaw/openclaw.json`):
22
+
23
+ - 配置模板(最小):`docs/wecom.config.example.json`
24
+ - 配置模板(全量):`docs/wecom.config.full.example.json`
25
+
26
+ > 推荐仅使用 `~/.openclaw/openclaw.json` 作为主配置来源;`env.vars` 与系统环境变量仅作为兜底。
27
+
28
+ 最小示例(单账户):
29
+ ```json5
30
+ {
31
+ "channels": {
32
+ "wecom": {
33
+ "enabled": true,
34
+ "mode": "both",
35
+ "webhookPath": "/wecom",
36
+
37
+ "token": "BOT_TOKEN",
38
+ "encodingAESKey": "BOT_AES",
39
+ "receiveId": "BOT_ID",
40
+
41
+ "corpId": "CORP_ID",
42
+ "corpSecret": "CORP_SECRET",
43
+ "agentId": 1000001,
44
+ "callbackToken": "CALLBACK_TOKEN",
45
+ "callbackAesKey": "CALLBACK_AES"
46
+ }
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## 环境变量示例(可选)
52
+
53
+ 如果你更希望用环境变量,也可以写在 `~/.openclaw/openclaw.json` 的 `env.vars` 中(优先级低于 `channels.wecom` 配置):
54
+
55
+ ```json5
56
+ {
57
+ "env": {
58
+ "vars": {
59
+ "WECOM_TOKEN": "BOT_TOKEN",
60
+ "WECOM_ENCODING_AES_KEY": "BOT_AES",
61
+ "WECOM_RECEIVE_ID": "BOT_ID",
62
+ "WECOM_CORP_ID": "CORP_ID",
63
+ "WECOM_CORP_SECRET": "CORP_SECRET",
64
+ "WECOM_AGENT_ID": "1000001",
65
+ "WECOM_CALLBACK_TOKEN": "CALLBACK_TOKEN",
66
+ "WECOM_CALLBACK_AES_KEY": "CALLBACK_AES",
67
+ "WECOM_WEBHOOK_PATH": "/wecom"
68
+ }
69
+ }
70
+ }
71
+ ```
72
+
73
+ 多账户示例(ACCOUNT 为大写):
74
+
75
+ ```json5
76
+ {
77
+ "env": {
78
+ "vars": {
79
+ "WECOM_SALES_TOKEN": "BOT_TOKEN",
80
+ "WECOM_SALES_ENCODING_AES_KEY": "BOT_AES",
81
+ "WECOM_SALES_RECEIVE_ID": "BOT_ID",
82
+ "WECOM_SALES_CORP_ID": "CORP_ID",
83
+ "WECOM_SALES_CORP_SECRET": "CORP_SECRET",
84
+ "WECOM_SALES_AGENT_ID": "1000002",
85
+ "WECOM_SALES_CALLBACK_TOKEN": "CALLBACK_TOKEN",
86
+ "WECOM_SALES_CALLBACK_AES_KEY": "CALLBACK_AES",
87
+ "WECOM_SALES_WEBHOOK_PATH": "/wecom/sales"
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ ### 字段说明
94
+ - Bot 模式 `receiveId`:建议填写 **Bot ID(aibotid)**,用于回调加解密校验;不填也可通过,但会降低校验严格性。
95
+ - App 模式回调解密使用 **CorpID**(即 `corpId`),与 Bot 模式的 `receiveId` 无关。
96
+
97
+ ## Webhook 验证
98
+ - Bot 模式与 App 模式都要求公网 HTTPS。
99
+ - 在企业微信后台配置回调 URL。
100
+
101
+ ## 常见问题
102
+ - 回调验证失败:检查 Token / AESKey / URL 是否一致
103
+ - 没有回复:检查 OpenClaw 是否已启用插件并重启 gateway
@@ -0,0 +1,19 @@
1
+ {
2
+ "channels": {
3
+ "wecom": {
4
+ "enabled": true,
5
+ "mode": "both",
6
+ "webhookPath": "/wecom",
7
+
8
+ "token": "BOT_TOKEN",
9
+ "encodingAESKey": "BOT_AES",
10
+ "receiveId": "BOT_ID",
11
+
12
+ "corpId": "CORP_ID",
13
+ "corpSecret": "CORP_SECRET",
14
+ "agentId": 1000001,
15
+ "callbackToken": "CALLBACK_TOKEN",
16
+ "callbackAesKey": "CALLBACK_AES"
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "channels": {
3
+ "wecom": {
4
+ "enabled": true,
5
+ "mode": "both",
6
+ "webhookPath": "/wecom",
7
+
8
+ "token": "BOT_TOKEN",
9
+ "encodingAESKey": "BOT_AES",
10
+ "receiveId": "BOT_ID",
11
+
12
+ "corpId": "CORP_ID",
13
+ "corpSecret": "CORP_SECRET",
14
+ "agentId": 1000001,
15
+ "callbackToken": "CALLBACK_TOKEN",
16
+ "callbackAesKey": "CALLBACK_AES",
17
+
18
+ "media": {
19
+ "tempDir": "/tmp/openclaw-wecom",
20
+ "retentionHours": 72,
21
+ "cleanupOnStart": true,
22
+ "maxBytes": 10485760
23
+ },
24
+ "botMediaBridge": true,
25
+
26
+ "dm": {
27
+ "policy": "pairing",
28
+ "allowFrom": []
29
+ },
30
+
31
+ "defaultAccount": "default",
32
+ "accounts": {
33
+ "default": {
34
+ "mode": "both",
35
+ "webhookPath": "/wecom",
36
+ "token": "BOT_TOKEN",
37
+ "encodingAESKey": "BOT_AES",
38
+ "receiveId": "BOT_ID",
39
+ "corpId": "CORP_ID",
40
+ "corpSecret": "CORP_SECRET",
41
+ "agentId": 1000001,
42
+ "callbackToken": "CALLBACK_TOKEN",
43
+ "callbackAesKey": "CALLBACK_AES",
44
+ "media": {
45
+ "tempDir": "/tmp/openclaw-wecom",
46
+ "retentionHours": 72,
47
+ "cleanupOnStart": true,
48
+ "maxBytes": 10485760
49
+ },
50
+ "botMediaBridge": true
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "openclaw-wecom",
3
+ "channels": ["wecom"],
4
+ "configSchema": {
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "properties": {}
8
+ }
9
+ }
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@marshulll/openclaw-wecom",
3
+ "version": "0.1.4",
4
+ "type": "module",
5
+ "description": "OpenClaw WeCom channel plugin (intelligent bot + internal app)",
6
+ "author": "OpenClaw",
7
+ "main": "wecom/index.ts",
8
+ "openclaw": {
9
+ "extensions": [
10
+ "./wecom/index.ts"
11
+ ],
12
+ "channel": {
13
+ "id": "wecom",
14
+ "label": "WeCom",
15
+ "selectionLabel": "WeCom (plugin)",
16
+ "detailLabel": "WeCom",
17
+ "docsPath": "/channels/wecom",
18
+ "docsLabel": "wecom",
19
+ "blurb": "Enterprise WeCom: bot API + internal app (dual mode).",
20
+ "aliases": [
21
+ "wechatwork",
22
+ "wework",
23
+ "qywx",
24
+ "企微",
25
+ "企业微信"
26
+ ],
27
+ "order": 85
28
+ },
29
+ "install": {
30
+ "npmSpec": "@marshulll/openclaw-wecom",
31
+ "localPath": ".",
32
+ "defaultChoice": "npm"
33
+ }
34
+ },
35
+ "peerDependencies": {
36
+ "openclaw": ">=2026.1.25"
37
+ },
38
+ "dependencies": {
39
+ "fast-xml-parser": "^4.3.6",
40
+ "zod": "^3.23.8"
41
+ },
42
+ "keywords": [
43
+ "openclaw",
44
+ "wecom",
45
+ "wechat-work",
46
+ "channel",
47
+ "plugin"
48
+ ],
49
+ "license": "ISC",
50
+ "files": [
51
+ "wecom/**",
52
+ "docs/INSTALL.md",
53
+ "docs/wecom.config.example.json",
54
+ "docs/wecom.config.full.example.json",
55
+ "openclaw.plugin.json",
56
+ "README.md",
57
+ "README.zh.md",
58
+ "README.en.md"
59
+ ]
60
+ }
package/wecom/index.ts ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * WeCom dual-mode plugin (bot API + internal app)
3
+ */
4
+ import type { ClawdbotPluginApi } from "openclaw/plugin-sdk";
5
+ import { emptyPluginConfigSchema } from "openclaw/plugin-sdk";
6
+
7
+ import { handleWecomWebhookRequest } from "./src/monitor.js";
8
+ import { setWecomRuntime } from "./src/runtime.js";
9
+ import { wecomPlugin } from "./src/channel.js";
10
+
11
+ const plugin = {
12
+ id: "openclaw-wecom",
13
+ name: "OpenClaw WeCom",
14
+ description: "OpenClaw WeCom channel plugin (bot API + internal app)",
15
+ configSchema: emptyPluginConfigSchema(),
16
+ register(api: ClawdbotPluginApi) {
17
+ setWecomRuntime(api.runtime);
18
+ api.registerChannel({ plugin: wecomPlugin });
19
+ api.registerHttpHandler(handleWecomWebhookRequest);
20
+ },
21
+ };
22
+
23
+ export default plugin;
@@ -0,0 +1,9 @@
1
+ {
2
+ "id": "openclaw-wecom",
3
+ "channels": ["wecom"],
4
+ "configSchema": {
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "properties": {}
8
+ }
9
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@marshulll/openclaw-wecom",
3
+ "version": "0.1.4",
4
+ "type": "module",
5
+ "description": "OpenClaw WeCom channel plugin (intelligent bot + internal app)",
6
+ "author": "OpenClaw",
7
+ "openclaw": {
8
+ "extensions": [
9
+ "./index.ts"
10
+ ],
11
+ "channel": {
12
+ "id": "wecom",
13
+ "label": "WeCom",
14
+ "selectionLabel": "WeCom (plugin)",
15
+ "detailLabel": "WeCom",
16
+ "docsPath": "/channels/wecom",
17
+ "docsLabel": "wecom",
18
+ "blurb": "Enterprise WeCom: bot API + internal app (dual mode).",
19
+ "aliases": [
20
+ "wechatwork",
21
+ "wework",
22
+ "qywx",
23
+ "企微",
24
+ "企业微信"
25
+ ],
26
+ "order": 85
27
+ },
28
+ "install": {
29
+ "npmSpec": "@marshulll/openclaw-wecom",
30
+ "localPath": ".",
31
+ "defaultChoice": "npm"
32
+ }
33
+ },
34
+ "peerDependencies": {
35
+ "openclaw": ">=2026.1.25"
36
+ },
37
+ "keywords": [
38
+ "openclaw",
39
+ "wecom",
40
+ "wechat-work",
41
+ "channel",
42
+ "plugin"
43
+ ],
44
+ "license": "ISC"
45
+ }