ylib-wecom-openclaw-plugin 2026.4.29
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.md +596 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +99 -0
- package/dist/src/accounts.d.ts +57 -0
- package/dist/src/accounts.js +247 -0
- package/dist/src/agent/api-client.d.ts +95 -0
- package/dist/src/agent/api-client.js +425 -0
- package/dist/src/agent/handler.d.ts +64 -0
- package/dist/src/agent/handler.js +731 -0
- package/dist/src/agent/index.d.ts +5 -0
- package/dist/src/agent/index.js +21 -0
- package/dist/src/agent/webhook.d.ts +25 -0
- package/dist/src/agent/webhook.js +294 -0
- package/dist/src/agent/xml.d.ts +21 -0
- package/dist/src/agent/xml.js +43 -0
- package/dist/src/channel.d.ts +5 -0
- package/dist/src/channel.js +815 -0
- package/dist/src/chat-queue.d.ts +31 -0
- package/dist/src/chat-queue.js +53 -0
- package/dist/src/config-schema.d.ts +587 -0
- package/dist/src/config-schema.js +146 -0
- package/dist/src/const.d.ts +128 -0
- package/dist/src/const.js +168 -0
- package/dist/src/dm-policy.d.ts +29 -0
- package/dist/src/dm-policy.js +146 -0
- package/dist/src/dynamic-agent.d.ts +37 -0
- package/dist/src/dynamic-agent.js +67 -0
- package/dist/src/dynamic-routing.d.ts +65 -0
- package/dist/src/dynamic-routing.js +62 -0
- package/dist/src/endpoint-dispatch.d.ts +54 -0
- package/dist/src/endpoint-dispatch.js +967 -0
- package/dist/src/endpoint-event-adapter.d.ts +15 -0
- package/dist/src/endpoint-event-adapter.js +427 -0
- package/dist/src/group-policy.d.ts +30 -0
- package/dist/src/group-policy.js +126 -0
- package/dist/src/http.d.ts +27 -0
- package/dist/src/http.js +168 -0
- package/dist/src/im-runtime-telemetry.d.ts +25 -0
- package/dist/src/im-runtime-telemetry.js +68 -0
- package/dist/src/interface.d.ts +192 -0
- package/dist/src/interface.js +5 -0
- package/dist/src/markdown-chunk.d.ts +1 -0
- package/dist/src/markdown-chunk.js +396 -0
- package/dist/src/mcp/index.d.ts +6 -0
- package/dist/src/mcp/index.js +28 -0
- package/dist/src/mcp/interceptors/biz-error.d.ts +11 -0
- package/dist/src/mcp/interceptors/biz-error.js +73 -0
- package/dist/src/mcp/interceptors/doc-auth-error.d.ts +10 -0
- package/dist/src/mcp/interceptors/doc-auth-error.js +235 -0
- package/dist/src/mcp/interceptors/index.d.ts +35 -0
- package/dist/src/mcp/interceptors/index.js +143 -0
- package/dist/src/mcp/interceptors/msg-media.d.ts +11 -0
- package/dist/src/mcp/interceptors/msg-media.js +201 -0
- package/dist/src/mcp/interceptors/smartpage-create.d.ts +30 -0
- package/dist/src/mcp/interceptors/smartpage-create.js +252 -0
- package/dist/src/mcp/interceptors/smartpage-export.d.ts +17 -0
- package/dist/src/mcp/interceptors/smartpage-export.js +135 -0
- package/dist/src/mcp/interceptors/smartsheet-upload.d.ts +22 -0
- package/dist/src/mcp/interceptors/smartsheet-upload.js +388 -0
- package/dist/src/mcp/interceptors/types.d.ts +64 -0
- package/dist/src/mcp/interceptors/types.js +8 -0
- package/dist/src/mcp/schema.d.ts +11 -0
- package/dist/src/mcp/schema.js +115 -0
- package/dist/src/mcp/tool.d.ts +63 -0
- package/dist/src/mcp/tool.js +318 -0
- package/dist/src/mcp/transport.d.ts +94 -0
- package/dist/src/mcp/transport.js +702 -0
- package/dist/src/media-handler.d.ts +55 -0
- package/dist/src/media-handler.js +306 -0
- package/dist/src/media-uploader.d.ts +142 -0
- package/dist/src/media-uploader.js +446 -0
- package/dist/src/message-parser.d.ts +104 -0
- package/dist/src/message-parser.js +232 -0
- package/dist/src/message-sender.d.ts +54 -0
- package/dist/src/message-sender.js +210 -0
- package/dist/src/monitor.d.ts +69 -0
- package/dist/src/monitor.js +1846 -0
- package/dist/src/onboarding.d.ts +8 -0
- package/dist/src/onboarding.js +248 -0
- package/dist/src/openclaw-compat.d.ts +148 -0
- package/dist/src/openclaw-compat.js +839 -0
- package/dist/src/proactive-markdown-send.d.ts +14 -0
- package/dist/src/proactive-markdown-send.js +205 -0
- package/dist/src/reqid-store.d.ts +23 -0
- package/dist/src/reqid-store.js +136 -0
- package/dist/src/runtime.d.ts +2 -0
- package/dist/src/runtime.js +7 -0
- package/dist/src/shared/command-auth.d.ts +23 -0
- package/dist/src/shared/command-auth.js +112 -0
- package/dist/src/shared/xml-parser.d.ts +46 -0
- package/dist/src/shared/xml-parser.js +228 -0
- package/dist/src/state-dir-resolve.d.ts +2 -0
- package/dist/src/state-dir-resolve.js +33 -0
- package/dist/src/state-manager.d.ts +115 -0
- package/dist/src/state-manager.js +413 -0
- package/dist/src/target.d.ts +35 -0
- package/dist/src/target.js +71 -0
- package/dist/src/template-card-manager.d.ts +55 -0
- package/dist/src/template-card-manager.js +316 -0
- package/dist/src/template-card-parser.d.ts +37 -0
- package/dist/src/template-card-parser.js +672 -0
- package/dist/src/timeout.d.ts +20 -0
- package/dist/src/timeout.js +57 -0
- package/dist/src/types/account.d.ts +29 -0
- package/dist/src/types/account.js +5 -0
- package/dist/src/types/config.d.ts +98 -0
- package/dist/src/types/config.js +8 -0
- package/dist/src/types/constants.d.ts +42 -0
- package/dist/src/types/constants.js +45 -0
- package/dist/src/types/index.d.ts +7 -0
- package/dist/src/types/index.js +17 -0
- package/dist/src/types/message.d.ts +238 -0
- package/dist/src/types/message.js +6 -0
- package/dist/src/utils.d.ts +148 -0
- package/dist/src/utils.js +92 -0
- package/dist/src/version.d.ts +2 -0
- package/dist/src/version.js +28 -0
- package/dist/src/webhook/command-auth.d.ts +47 -0
- package/dist/src/webhook/command-auth.js +137 -0
- package/dist/src/webhook/gateway.d.ts +36 -0
- package/dist/src/webhook/gateway.js +297 -0
- package/dist/src/webhook/handler.d.ts +19 -0
- package/dist/src/webhook/handler.js +481 -0
- package/dist/src/webhook/helpers.d.ts +157 -0
- package/dist/src/webhook/helpers.js +936 -0
- package/dist/src/webhook/http.d.ts +27 -0
- package/dist/src/webhook/http.js +168 -0
- package/dist/src/webhook/index.d.ts +11 -0
- package/dist/src/webhook/index.js +43 -0
- package/dist/src/webhook/media.d.ts +30 -0
- package/dist/src/webhook/media.js +152 -0
- package/dist/src/webhook/monitor.d.ts +59 -0
- package/dist/src/webhook/monitor.js +1672 -0
- package/dist/src/webhook/state.d.ts +220 -0
- package/dist/src/webhook/state.js +568 -0
- package/dist/src/webhook/target.d.ts +41 -0
- package/dist/src/webhook/target.js +165 -0
- package/dist/src/webhook/types.d.ts +348 -0
- package/dist/src/webhook/types.js +36 -0
- package/dist/src/webhook/video-frame.d.ts +13 -0
- package/dist/src/webhook/video-frame.js +108 -0
- package/openclaw.plugin.json +19 -0
- package/package.json +96 -0
- package/schema.json +534 -0
- package/scripts/generate-schema.mjs +33 -0
- package/skills/wecom-contact/SKILL.md +162 -0
- package/skills/wecom-doc/SKILL.md +162 -0
- package/skills/wecom-doc/references/create-doc.md +56 -0
- package/skills/wecom-doc/references/edit-doc-content.md +68 -0
- package/skills/wecom-doc/references/get-doc-content.md +88 -0
- package/skills/wecom-doc/references/smartpage-create.md +125 -0
- package/skills/wecom-doc/references/smartpage-export.md +160 -0
- package/skills/wecom-meeting/SKILL.md +441 -0
- package/skills/wecom-meeting/references/example-full.md +30 -0
- package/skills/wecom-meeting/references/example-reminder.md +46 -0
- package/skills/wecom-meeting/references/example-security.md +22 -0
- package/skills/wecom-meeting/references/response-get-meeting-info.md +148 -0
- package/skills/wecom-msg/SKILL.md +157 -0
- package/skills/wecom-msg/references/api-get-messages.md +93 -0
- package/skills/wecom-msg/references/api-get-msg-chat-list.md +58 -0
- package/skills/wecom-msg/references/api-get-msg-media.md +44 -0
- package/skills/wecom-msg/references/api-send-message.md +39 -0
- package/skills/wecom-preflight/SKILL.md +141 -0
- package/skills/wecom-schedule/SKILL.md +161 -0
- package/skills/wecom-schedule/references/api-check-availability.md +56 -0
- package/skills/wecom-schedule/references/api-create-schedule.md +38 -0
- package/skills/wecom-schedule/references/api-get-schedule-detail.md +81 -0
- package/skills/wecom-schedule/references/api-update-schedule.md +32 -0
- package/skills/wecom-schedule/references/ref-reminders.md +24 -0
- package/skills/wecom-send-media/SKILL.md +68 -0
- package/skills/wecom-send-template-card/SKILL.md +157 -0
- package/skills/wecom-send-template-card/references/api-template-card-types.md +358 -0
- package/skills/wecom-smartsheet/SKILL.md +164 -0
- package/skills/wecom-smartsheet/references/smartsheet-cell-value-formats.md +163 -0
- package/skills/wecom-smartsheet/references/smartsheet-field-types.md +44 -0
- package/skills/wecom-smartsheet/references/smartsheet-get-records.md +96 -0
- package/skills/wecom-smartsheet/references/webhook-examples.md +185 -0
- package/skills/wecom-smartsheet/references/webhook-fallback.md +184 -0
- package/skills/wecom-todo/SKILL.md +392 -0
- package/skills/wecom-todo/examples/workflows.md +163 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wecom-contact
|
|
3
|
+
description: 通讯录成员查询技能,基于 MCP tool 协议封装的 `get_userlist` 接口,获取当前用户可见范围内的通讯录成员,支持按姓名/别名本地筛选匹配。返回 userid、姓名和别名。⚠️ 仅返回当前用户有权限查看的成员,非全量成员。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 通讯录成员查询技能
|
|
7
|
+
|
|
8
|
+
> `wecom_mcp` 是一个 MCP tool,所有操作通过调用该 tool 完成。
|
|
9
|
+
|
|
10
|
+
> ⚠️ **前置条件**:首次调用 `wecom_mcp` 前,必须按 `wecom-preflight` 技能执行前置条件检查,确保工具已加入白名单。
|
|
11
|
+
|
|
12
|
+
通过 MCP tool 协议封装的 `get_userlist` 接口,获取当前用户可见范围内的通讯录成员,并在本地按姓名/别名进行筛选匹配。
|
|
13
|
+
|
|
14
|
+
## 操作
|
|
15
|
+
|
|
16
|
+
### 1. 获取全量通讯录成员
|
|
17
|
+
|
|
18
|
+
获取当前用户可见范围内的所有企业成员信息:
|
|
19
|
+
|
|
20
|
+
**调用示例:**
|
|
21
|
+
|
|
22
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'`
|
|
23
|
+
|
|
24
|
+
**返回格式:**
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"errcode": 0,
|
|
29
|
+
"errmsg": "ok",
|
|
30
|
+
"userlist": [
|
|
31
|
+
{
|
|
32
|
+
"userid": "zhangsan",
|
|
33
|
+
"name": "张三",
|
|
34
|
+
"alias": "Sam"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"userid": "lisi",
|
|
38
|
+
"name": "李四",
|
|
39
|
+
"alias": ""
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**返回字段说明:**
|
|
46
|
+
|
|
47
|
+
| 字段 | 类型 | 说明 |
|
|
48
|
+
|------|------|------|
|
|
49
|
+
| `errcode` | integer | 返回码,`0` 表示成功 |
|
|
50
|
+
| `errmsg` | string | 错误信息 |
|
|
51
|
+
| `userlist` | array | 用户列表 |
|
|
52
|
+
| `userlist[].userid` | string | 用户唯一 ID |
|
|
53
|
+
| `userlist[].name` | string | 用户姓名 |
|
|
54
|
+
| `userlist[].alias` | string | 用户别名,可能为空 |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### 2. 按姓名/别名搜索人员
|
|
59
|
+
|
|
60
|
+
`get_userlist` 返回全量成员后,在本地对结果进行筛选匹配:
|
|
61
|
+
|
|
62
|
+
- **精确匹配**:`name` 或 `alias` 与关键词完全一致,直接使用
|
|
63
|
+
- **模糊匹配**:`name` 或 `alias` 包含关键词,返回所有匹配结果
|
|
64
|
+
- **无结果**:告知用户未找到对应人员
|
|
65
|
+
|
|
66
|
+
**搜索示例:**
|
|
67
|
+
|
|
68
|
+
用户问:"帮我找一下张三是谁?"
|
|
69
|
+
|
|
70
|
+
1. 调用 `get_userlist` 获取全量成员
|
|
71
|
+
2. 在 `userlist` 中筛选 `name` 或 `alias` 包含"张三"的成员
|
|
72
|
+
3. 返回匹配结果
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 注意事项
|
|
77
|
+
|
|
78
|
+
- `get_userlist` 返回的是当前用户**可见范围内**的成员,需经过可见性规则过滤,不一定是全公司所有人员;返回字段仅包含 `userid`、`name`(姓名)和 `alias`(别名)
|
|
79
|
+
- ⚠️ **超过 10 人时接口将报错**:若 `userlist` 返回成员数量超过 10 人,视为异常,应立即停止处理并向用户说明:
|
|
80
|
+
|
|
81
|
+
> 当前通讯录可见成员数量超过了本技能支持的上限(10 人)。
|
|
82
|
+
> 本技能仅适用于可见范围较小的场景,无法在大范围通讯录中使用。
|
|
83
|
+
> 建议缩小可见范围后重试,或通过其他方式查询目标人员。
|
|
84
|
+
|
|
85
|
+
- `userid` 是用户的唯一标识,在需要传递用户 ID 给其他接口时使用此字段
|
|
86
|
+
- `alias` 字段可能为空字符串,搜索时需做空值判断
|
|
87
|
+
- 若搜索结果有多个同名人员,需将所有候选人展示给用户选择,不得自行决定
|
|
88
|
+
- 若 `errcode` 不为 `0`,说明接口调用失败,需告知用户错误信息(`errmsg`)
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 典型工作流
|
|
93
|
+
|
|
94
|
+
### 工作流 1:查询人员信息
|
|
95
|
+
|
|
96
|
+
用户问:"帮我查一下 Sam 是谁?"
|
|
97
|
+
|
|
98
|
+
1. 使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'` 获取全量成员列表
|
|
99
|
+
|
|
100
|
+
2. 在结果中筛选 `alias` 为 `Sam` 或 `name` 包含 `Sam` 的成员
|
|
101
|
+
3. 若找到唯一匹配,直接展示结果:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
📇 找到成员:
|
|
105
|
+
- 姓名:张三
|
|
106
|
+
- 别名:Sam
|
|
107
|
+
- 用户ID:zhangsan
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
4. 若找到多个匹配,展示候选列表请用户确认:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
🔍 找到多个匹配成员,请确认您要查询的是哪位:
|
|
114
|
+
|
|
115
|
+
1. 张三(别名:Sam,ID:zhangsan)
|
|
116
|
+
2. 张三丰(别名:Sam2,ID:zhangsan2)
|
|
117
|
+
|
|
118
|
+
请问您要查询的是哪一位?
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### 工作流 2:为其他功能提供 userid 转换
|
|
124
|
+
|
|
125
|
+
用户问:"帮我发消息给张三"
|
|
126
|
+
|
|
127
|
+
1. 使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'` 获取全量成员
|
|
128
|
+
|
|
129
|
+
2. 筛选 `name` 为"张三"的成员,确认 `userid`
|
|
130
|
+
3. 将 `userid` 传递给消息发送接口
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### 工作流 3:批量查询多个人员
|
|
135
|
+
|
|
136
|
+
用户问:"帮我查一下张三和李四分别是谁?"
|
|
137
|
+
|
|
138
|
+
1. 使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'` 获取全量成员列表
|
|
139
|
+
|
|
140
|
+
2. 分别筛选"张三"和"李四"的匹配结果
|
|
141
|
+
3. 汇总后一并展示
|
|
142
|
+
|
|
143
|
+
> 注意:只需调用一次 `get_userlist`,在本地对结果进行多次筛选,避免重复调用接口。
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 快速参考
|
|
148
|
+
|
|
149
|
+
### 接口说明
|
|
150
|
+
|
|
151
|
+
| 接口 | 用途 | 输入 | 返回 |
|
|
152
|
+
|------|------|------|------|
|
|
153
|
+
| `get_userlist` | 获取可见范围内全量通讯录成员 | 无 | 用户列表(userid、name、alias) |
|
|
154
|
+
|
|
155
|
+
### 本地筛选策略
|
|
156
|
+
|
|
157
|
+
| 场景 | 策略 |
|
|
158
|
+
|------|------|
|
|
159
|
+
| 精确匹配(name 或 alias 完全一致) | 直接使用,无需用户确认 |
|
|
160
|
+
| 模糊匹配(name 或 alias 包含关键词),唯一结果 | 直接使用,向用户展示结果 |
|
|
161
|
+
| 模糊匹配,多个结果 | 展示候选列表,请用户选择 |
|
|
162
|
+
| 无匹配结果 | 告知用户未找到对应人员 |
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wecom-doc
|
|
3
|
+
description: 企业微信文档管理技能。支持企业微信文档、智能表格和智能文档(原名智能主页)的管理。具体能力:(1) 获取文档或智能表格的完整内容,以 Markdown 格式导出 (2) 新建文档或智能表格 (3) 用 Markdown 覆写文档内容 (4) 创建智能文档,将本地 Markdown 文件发布为智能文档 (5) 导出智能文档内容为 Markdown 文件。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 企业微信文档管理
|
|
7
|
+
|
|
8
|
+
> `wecom_mcp` 是一个 MCP tool,所有操作通过调用该 tool 完成。
|
|
9
|
+
|
|
10
|
+
> ⚠️ **前置条件**:首次调用 `wecom_mcp` 前,必须按 `wecom-preflight` 技能执行前置条件检查,确保工具已加入白名单。
|
|
11
|
+
|
|
12
|
+
管理企业微信文档和智能文档(原名智能主页)的创建、读取和编辑。文档接口支持通过 `docid` 或 `url` 二选一定位文档。
|
|
13
|
+
|
|
14
|
+
> ⚠️ **重要触发规则**:只有当用户明确提到「**智能文档**」或「**智能主页**」时,才使用智能文档相关接口(`smartpage_*` 系列)。其他所有涉及「文档」的场景(如"创建文档"、"写个文档"、"帮我建个文档"等),一律使用企微文档接口(`create_doc` / `get_doc_content` / `edit_doc_content`)。
|
|
15
|
+
|
|
16
|
+
## URL 品类识别与接口路由
|
|
17
|
+
|
|
18
|
+
企业微信文档有三种品类,**URL 格式不同,读取内容所用的接口也不同**,切勿混用:
|
|
19
|
+
|
|
20
|
+
| URL 模式 | 品类 | 读取内容接口 |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `https://doc.weixin.qq.com/doc/*` | **文档**(doc_type=3) | `get_doc_content` |
|
|
23
|
+
| `https://doc.weixin.qq.com/smartsheet/*` | **智能表格**(doc_type=10) | `get_doc_content` |
|
|
24
|
+
| `https://doc.weixin.qq.com/smartpage/*` | **智能文档**(原名智能主页) | `smartpage_export_task` → `smartpage_get_export_result` |
|
|
25
|
+
|
|
26
|
+
**判断规则**:
|
|
27
|
+
- URL 路径以 `/doc/*` 开头 → 文档 → 用 `get_doc_content`
|
|
28
|
+
- URL 路径以 `/smartsheet/*` 开头 → 智能表格 → 用 `get_doc_content`
|
|
29
|
+
- URL 路径以 `/smartpage/*` 开头 → 智能文档(原名智能主页) → 用 `smartpage_export_task`
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
## 调用方式
|
|
33
|
+
|
|
34
|
+
通过 `wecom_mcp` tool 调用,子工具名为 `doc`:
|
|
35
|
+
|
|
36
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call doc <tool_name> '<json_params>'` 调用指定技能
|
|
37
|
+
|
|
38
|
+
## 返回格式说明
|
|
39
|
+
|
|
40
|
+
所有接口返回 JSON 对象,包含以下公共字段:
|
|
41
|
+
|
|
42
|
+
| 字段 | 类型 | 说明 |
|
|
43
|
+
|------|------|------|
|
|
44
|
+
| `errcode` | integer | 返回码,`0` 表示成功,非 `0` 表示失败 |
|
|
45
|
+
| `errmsg` | string | 错误信息,成功时为 `"ok"` |
|
|
46
|
+
|
|
47
|
+
当 `errcode` 不为 `0` 时,说明接口调用失败,可重试 1 次;若仍失败,将 `errcode` 和 `errmsg` 展示给用户。
|
|
48
|
+
|
|
49
|
+
### 特殊错误码
|
|
50
|
+
|
|
51
|
+
| errcode | errmsg | 含义 | 处理方式 |
|
|
52
|
+
|---------|--------|------|----------|
|
|
53
|
+
| `851002` | `incompatible doc type` | 文档品类与所调用的接口不匹配 | 根据文档 URL 重新确认品类(参见上方「URL 品类识别与接口路由」表),然后使用该品类对应的正确接口重试 |
|
|
54
|
+
| `851003` | `no authority` | 无权限调用该接口,**智能表格写入场景**下通常是企业可见范围 > 10 人的规模限制 | 若发生在需要写入数据的场景,引导用户走 Webhook 兜底方案,详见 [webhook-fallback.md](../wecom-smartsheet/references/webhook-fallback.md);其他接口则按权限问题排查 |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 文档
|
|
59
|
+
|
|
60
|
+
适用品类:文档(doc_type=3)和智能表格(doc_type=10)
|
|
61
|
+
适用 URL:`/doc/*`、`/smartsheet/*`
|
|
62
|
+
|
|
63
|
+
适用场景:
|
|
64
|
+
1. 以 Markdown 格式导出获取文档完整内容(异步轮询)
|
|
65
|
+
2. 新建文档(doc_type=3)或智能表格(doc_type=10)
|
|
66
|
+
3. 用 Markdown 格式覆写文档内容
|
|
67
|
+
|
|
68
|
+
### get_doc_content
|
|
69
|
+
|
|
70
|
+
获取文档完整内容数据,只能以 Markdown 格式返回。采用**异步轮询机制**:首次调用无需传 `task_id`,接口返回 `task_id`;若 `task_done` 为 false,需携带该 `task_id` 再次调用,直到 `task_done` 为 true 时返回完整内容。
|
|
71
|
+
|
|
72
|
+
- 首次调用(不传 task_id):使用 `wecom_mcp` tool 调用 `wecom_mcp call doc get_doc_content '{"docid": "DOCID", "type": 2}'`
|
|
73
|
+
- 轮询(携带上次返回的 task_id):使用 `wecom_mcp` tool 调用 `wecom_mcp call doc get_doc_content '{"docid": "DOCID", "type": 2, "task_id": "xxx"}'`
|
|
74
|
+
- 或通过 URL:使用 `wecom_mcp` tool 调用 `wecom_mcp call doc get_doc_content '{"url": "https://doc.weixin.qq.com/doc/xxx", "type": 2}'`
|
|
75
|
+
|
|
76
|
+
参见 [API 详情](references/get-doc-content.md)。
|
|
77
|
+
|
|
78
|
+
### create_doc
|
|
79
|
+
|
|
80
|
+
新建文档(doc_type=3)或智能表格(doc_type=10)。创建成功返回 url 和 docid。
|
|
81
|
+
|
|
82
|
+
- 创建文档:使用 `wecom_mcp` tool 调用 `wecom_mcp call doc create_doc '{"doc_type": 3, "doc_name": "项目周报"}'`
|
|
83
|
+
- 创建智能表格:使用 `wecom_mcp` tool 调用 `wecom_mcp call doc create_doc '{"doc_type": 10, "doc_name": "任务跟踪表"}'`
|
|
84
|
+
|
|
85
|
+
**注意**:
|
|
86
|
+
- docid 仅在创建时返回,需妥善保存。创建智能表格时默认包含一个子表
|
|
87
|
+
- 智能表格(doc_type=10)的详细管理功能(子表、字段、数据记录等)已迁移到 `wecom-smartsheet` skill,请使用该 skill 进行高级操作
|
|
88
|
+
|
|
89
|
+
参见 [API 详情](references/create-doc.md)。
|
|
90
|
+
|
|
91
|
+
### edit_doc_content
|
|
92
|
+
|
|
93
|
+
用 Markdown 内容覆写文档正文。`content_type` 固定为 `1`(Markdown)。
|
|
94
|
+
|
|
95
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call doc edit_doc_content '{"docid": "DOCID", "content": "# 标题\n\n正文内容", "content_type": 1}'`
|
|
96
|
+
|
|
97
|
+
参见 [API 详情](references/edit-doc-content.md)。
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 智能文档(原名智能主页)
|
|
102
|
+
|
|
103
|
+
适用品类:智能文档(用户说「智能文档」或「智能主页」时触发)
|
|
104
|
+
适用 URL:`/smartpage/*`
|
|
105
|
+
|
|
106
|
+
> ⚠️ 只有当用户明确指定「智能文档」或「智能主页」时,才使用以下接口。其他「文档」场景请使用上方的企微文档接口。
|
|
107
|
+
|
|
108
|
+
适用场景:
|
|
109
|
+
1. 将本地 Markdown 文件创建为智能文档
|
|
110
|
+
2. 异步导出智能文档内容为 Markdown
|
|
111
|
+
|
|
112
|
+
### smartpage_create
|
|
113
|
+
|
|
114
|
+
创建智能文档(原名智能主页),支持传入标题和多个子页面。每个子页面可指定标题、内容类型和本地文件路径。响应透传 mcp 回包,返回 docid 和 url。
|
|
115
|
+
|
|
116
|
+
- 使用 `wecom_mcp` tool 调用 `wecom_mcp call doc smartpage_create '{"title": "项目概览", "pages": [{"page_title": "需求文档", "content_type": 1, "page_filepath": "/path/to/requirements.md"}]}'`
|
|
117
|
+
|
|
118
|
+
**注意**:
|
|
119
|
+
- `content_type` **必须与文件实际内容匹配**:`.md` 文件或包含 Markdown 语法的内容必须传 `1`(Markdown),仅纯文本才传 `0`。绝大多数场景应传 `1`
|
|
120
|
+
- docid 仅在创建时返回,需妥善保存
|
|
121
|
+
- 每个子页面的 Markdown 文件大小不得超过 **10MB**,超过会导致创建失败。如果文件过大,需先拆分为多个子页面再创建
|
|
122
|
+
|
|
123
|
+
参见 [API 详情](references/smartpage-create.md)。
|
|
124
|
+
|
|
125
|
+
### smartpage_export_task
|
|
126
|
+
|
|
127
|
+
发起智能文档内容导出任务(异步)。传入 docid(或 url)和 content_type,返回 task_id。这是异步导出的第一步,需配合 `smartpage_get_export_result` 轮询获取导出结果。
|
|
128
|
+
|
|
129
|
+
- 通过 docid:使用 `wecom_mcp` tool 调用 `wecom_mcp call doc smartpage_export_task '{"docid": "DOCID", "content_type": 1}'`
|
|
130
|
+
- 或通过 URL:使用 `wecom_mcp` tool 调用 `wecom_mcp call doc smartpage_export_task '{"url": "https://doc.weixin.qq.com/smartpage/xxx", "content_type": 1}'`
|
|
131
|
+
|
|
132
|
+
参见 [API 详情](references/smartpage-export.md)。
|
|
133
|
+
|
|
134
|
+
### smartpage_get_export_result
|
|
135
|
+
|
|
136
|
+
查询智能文档导出任务进度。传入 task_id 进行轮询,当 `task_done` 为 `true` 时返回 `content_filepath`(导出内容的本地文件路径)。
|
|
137
|
+
|
|
138
|
+
- 使用 `wecom_mcp` tool 调用 `wecom_mcp call doc smartpage_get_export_result '{"task_id": "TASK_ID"}'`
|
|
139
|
+
|
|
140
|
+
当 `task_done` 为 `true` 时,使用 Read 工具读取 `content_filepath` 指向的文件即可获取导出的 Markdown 内容。
|
|
141
|
+
|
|
142
|
+
参见 [API 详情](references/smartpage-export.md)。
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 典型工作流
|
|
147
|
+
|
|
148
|
+
> **关键提示**:读取内容前先看 URL 判断品类。`/doc/` 或 `/smartsheet/` → `get_doc_content`;`/smartpage/` → `smartpage_export_task`。只有用户明确提到「智能文档」或「智能主页」时才走 smartpage 流程,其他文档场景一律使用企微文档接口。
|
|
149
|
+
|
|
150
|
+
### 文档操作
|
|
151
|
+
|
|
152
|
+
1. **读取文档/智能表格内容**(URL 含 `/doc/` 或 `/smartsheet/`) → 使用 `wecom_mcp` tool 调用 `wecom_mcp call doc get_doc_content '{"docid": "DOCID", "type": 2}'`,若 `task_done` 为 false 则携带 `task_id` 继续轮询
|
|
153
|
+
2. **创建新文档** → 使用 `wecom_mcp` tool 调用 `wecom_mcp call doc create_doc '{"doc_type": 3, "doc_name": "文档名"}'`,保存返回的 docid
|
|
154
|
+
3. **编辑文档** → 先 get_doc_content 了解当前内容,再 edit_doc_content 覆写
|
|
155
|
+
|
|
156
|
+
### 智能文档操作
|
|
157
|
+
|
|
158
|
+
1. **创建智能文档**(仅当用户明确要求「智能文档」或「智能主页」时) → 使用 `wecom_mcp` tool 调用 `wecom_mcp call doc smartpage_create '{"title": "标题", "pages": [{"page_title": "子页面", "content_type": 1, "page_filepath": "/path/to/file.md"}]}'`,保存返回的 docid
|
|
159
|
+
2. **获取智能文档内容**(URL 含 `/smartpage/`,异步两步):
|
|
160
|
+
- **第一步**:发起导出任务 → 使用 `wecom_mcp` tool 调用 `wecom_mcp call doc smartpage_export_task '{"docid": "DOCID", "content_type": 1}'`,获取 `task_id`
|
|
161
|
+
- **第二步**:轮询导出结果 → 使用 `wecom_mcp` tool 调用 `wecom_mcp call doc smartpage_get_export_result '{"task_id": "TASK_ID"}'`,若 `task_done` 为 `false` 则继续轮询,直到 `task_done` 为 `true`
|
|
162
|
+
- **第三步**:使用 Read 工具读取 `content_filepath` 指向的本地文件,获取 Markdown 内容
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# create_doc API
|
|
2
|
+
|
|
3
|
+
新建文档、表格或智能表格。创建成功后返回文档访问链接和 docid。
|
|
4
|
+
|
|
5
|
+
## 技能定义
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"name": "create_doc",
|
|
10
|
+
"description": "新建文档、表格或智能表格。支持在指定空间和目录下创建,可设置文档管理员。创建成功后返回文档访问链接和 docid(docid 仅在创建时返回,需妥善保存)。注意:创建智能表格(doc_type=10)时,文档会默认包含一个子表,可通过 smartsheet_get_sheet 查询其 sheet_id,无需额外调用 smartsheet_add_sheet。",
|
|
11
|
+
"inputSchema": {
|
|
12
|
+
"properties": {
|
|
13
|
+
"doc_type": {
|
|
14
|
+
"description": "文档类型:3-文档,10-智能表格",
|
|
15
|
+
"enum": [3, 10],
|
|
16
|
+
"title": "Doc Type",
|
|
17
|
+
"type": "integer"
|
|
18
|
+
},
|
|
19
|
+
"doc_name": {
|
|
20
|
+
"description": "文档名字,最多 255 个字符,超过会被截断",
|
|
21
|
+
"title": "Doc Name",
|
|
22
|
+
"type": "string"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"required": ["doc_type", "doc_name"],
|
|
26
|
+
"title": "create_docArguments",
|
|
27
|
+
"type": "object"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 请求示例
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"doc_type": 3,
|
|
37
|
+
"doc_name": "项目周报"
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 响应示例
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"errcode": 0,
|
|
46
|
+
"errmsg": "ok",
|
|
47
|
+
"url": "https://doc.weixin.qq.com/doc/xxx",
|
|
48
|
+
"docid": "DOCID"
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 注意事项
|
|
53
|
+
|
|
54
|
+
- `doc_type=3` 创建文档
|
|
55
|
+
- `doc_type=10` 创建智能表格,默认包含一个子表
|
|
56
|
+
- docid 仅在创建时返回,后续无法再获取,务必保存
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# edit_doc_content API
|
|
2
|
+
|
|
3
|
+
编辑(覆写)文档内容。
|
|
4
|
+
|
|
5
|
+
## 技能定义
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"name": "edit_doc_content",
|
|
10
|
+
"description": "编辑文档内容",
|
|
11
|
+
"inputSchema": {
|
|
12
|
+
"properties": {
|
|
13
|
+
"docid": {
|
|
14
|
+
"description": "文档 id,与 url 二选一传入",
|
|
15
|
+
"title": "Docid",
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"url": {
|
|
19
|
+
"description": "文档的访问链接,与 docid 二选一传入",
|
|
20
|
+
"title": "URL",
|
|
21
|
+
"type": "string"
|
|
22
|
+
},
|
|
23
|
+
"content": {
|
|
24
|
+
"description": "覆写的文档内容",
|
|
25
|
+
"title": "Content",
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
"content_type": {
|
|
29
|
+
"description": "内容类型格式。1:markdown",
|
|
30
|
+
"enum": [1],
|
|
31
|
+
"title": "Content Type",
|
|
32
|
+
"type": "integer"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"oneOf": [
|
|
36
|
+
{ "required": ["docid", "content", "content_type"] },
|
|
37
|
+
{ "required": ["url", "content", "content_type"] }
|
|
38
|
+
],
|
|
39
|
+
"title": "edit_doc_contentArguments",
|
|
40
|
+
"type": "object"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 请求示例
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"docid": "DOCID",
|
|
50
|
+
"content": "# 标题\n\n正文内容",
|
|
51
|
+
"content_type": 1
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 响应示例
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"errcode": 0,
|
|
60
|
+
"errmsg": "ok"
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 注意事项
|
|
65
|
+
|
|
66
|
+
- `content_type` 当前仅支持 `1`(Markdown 格式)
|
|
67
|
+
- 此操作为**覆写**,会替换文档全部内容
|
|
68
|
+
- 建议先调用 `get_doc_content` 了解当前内容再编辑
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# get_doc_content API
|
|
2
|
+
|
|
3
|
+
获取企业微信文档的完整内容数据,以 Markdown 格式返回。该接口采用异步轮询机制:首次调用无需传 task_id,接口会返回 task_id;若 task_done 为 false,需携带该 task_id 再次调用,直到 task_done 为 true 时返回完整内容。
|
|
4
|
+
|
|
5
|
+
## 技能定义
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"name": "get_doc_content",
|
|
10
|
+
"description": "获取企业微信文档的完整内容数据,以 Markdown 格式返回。该接口采用异步轮询机制:首次调用无需传 task_id,接口会返回 task_id;若 task_done 为 false,需携带该 task_id 再次调用,直到 task_done 为 true 时返回完整内容。",
|
|
11
|
+
"inputSchema": {
|
|
12
|
+
"properties": {
|
|
13
|
+
"docid": {
|
|
14
|
+
"description": "文档的 docid,与 url 二选一传入",
|
|
15
|
+
"title": "Doc ID",
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"url": {
|
|
19
|
+
"description": "文档的访问链接,与 docid 二选一传入",
|
|
20
|
+
"title": "URL",
|
|
21
|
+
"type": "string"
|
|
22
|
+
},
|
|
23
|
+
"type": {
|
|
24
|
+
"description": "内容返回格式。2: Markdown 格式",
|
|
25
|
+
"enum": [2],
|
|
26
|
+
"title": "Type",
|
|
27
|
+
"type": "integer"
|
|
28
|
+
},
|
|
29
|
+
"task_id": {
|
|
30
|
+
"description": "任务 ID,用于异步轮询。初次调用时不填,后续轮询时填写上次返回的 task_id",
|
|
31
|
+
"title": "Task ID",
|
|
32
|
+
"type": "string"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"oneOf": [
|
|
36
|
+
{ "required": ["docid", "type"] },
|
|
37
|
+
{ "required": ["url", "type"] }
|
|
38
|
+
],
|
|
39
|
+
"title": "get_doc_contentArguments",
|
|
40
|
+
"type": "object"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 参数说明
|
|
46
|
+
|
|
47
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| docid | string | 与 url 二选一 | 文档的 docid |
|
|
50
|
+
| url | string | 与 docid 二选一 | 文档的访问链接 |
|
|
51
|
+
| type | integer | 是 | 内容返回格式,固定传 `2`(Markdown 格式) |
|
|
52
|
+
| task_id | string | 否 | 任务 ID,初次调用不填,后续轮询时填写上次返回的 task_id |
|
|
53
|
+
|
|
54
|
+
## 异步轮询机制
|
|
55
|
+
|
|
56
|
+
1. **首次调用**:传入 `docid`/`url` 和 `type: 2`,不传 `task_id`
|
|
57
|
+
2. **检查响应**:若 `task_done` 为 `false`,记录返回的 `task_id`
|
|
58
|
+
3. **轮询调用**:携带 `task_id` 再次调用,直到 `task_done` 为 `true`
|
|
59
|
+
4. **获取内容**:当 `task_done` 为 `true` 时,`content` 字段包含完整的 Markdown 内容
|
|
60
|
+
|
|
61
|
+
## 请求示例
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
// 首次调用
|
|
65
|
+
{
|
|
66
|
+
"docid": "DOCID",
|
|
67
|
+
"type": 2
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// 轮询调用
|
|
71
|
+
{
|
|
72
|
+
"docid": "DOCID",
|
|
73
|
+
"type": 2,
|
|
74
|
+
"task_id": "xxx"
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 响应示例
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"errcode": 0,
|
|
83
|
+
"errmsg": "ok",
|
|
84
|
+
"content": "# 文档标题\n\n文档正文内容...",
|
|
85
|
+
"task_id": "xxxxx",
|
|
86
|
+
"task_done": true
|
|
87
|
+
}
|
|
88
|
+
```
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# smartpage_create API
|
|
2
|
+
|
|
3
|
+
创建智能文档(原智能主页)。支持传入多个子页面,每个子页面可指定标题、内容类型和本地文件路径。创建成功后返回文档访问链接和 docid。
|
|
4
|
+
|
|
5
|
+
## 技能定义
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"name": "smartpage_create",
|
|
10
|
+
"description": "创建智能文档(原智能主页)。支持传入标题和多个子页面配置,每个子页面可指定标题、内容类型(Text/Markdown)和本地文件路径。创建成功后返回 docid 和 url(docid 仅在创建时返回,需妥善保存)。",
|
|
11
|
+
"inputSchema": {
|
|
12
|
+
"properties": {
|
|
13
|
+
"title": {
|
|
14
|
+
"description": "智能文档标题",
|
|
15
|
+
"title": "Title",
|
|
16
|
+
"type": "string"
|
|
17
|
+
},
|
|
18
|
+
"pages": {
|
|
19
|
+
"description": "子页面列表",
|
|
20
|
+
"title": "Pages",
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"properties": {
|
|
25
|
+
"page_title": {
|
|
26
|
+
"description": "子页面标题",
|
|
27
|
+
"title": "Page Title",
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"content_type": {
|
|
31
|
+
"description": "内容类型。1: Markdown(包含Markdown语法的内容),0: Text(纯文本,不含任何Markdown语法)",
|
|
32
|
+
"enum": [0, 1],
|
|
33
|
+
"default": 1,
|
|
34
|
+
"title": "Content Type",
|
|
35
|
+
"type": "integer"
|
|
36
|
+
},
|
|
37
|
+
"page_filepath": {
|
|
38
|
+
"description": "子页面内容对应的本地文件路径",
|
|
39
|
+
"title": "Page Filepath",
|
|
40
|
+
"type": "string"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"required": ["pages"],
|
|
47
|
+
"title": "smartpage_createArguments",
|
|
48
|
+
"type": "object"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 参数说明
|
|
54
|
+
|
|
55
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| title | string | 否 | 智能文档标题 |
|
|
58
|
+
| pages | array | 是 | 子页面列表 |
|
|
59
|
+
| pages[].page_title | string | 否 | 子页面标题 |
|
|
60
|
+
| pages[].content_type | integer | 否 | 内容类型:1-Markdown,0-Text(纯文本)。**默认应传 1**,仅纯文本内容才传 0 |
|
|
61
|
+
| pages[].page_filepath | string | 否 | 子页面内容对应的本地文件路径,需确保文件存在且可读 |
|
|
62
|
+
|
|
63
|
+
## ContentType 枚举
|
|
64
|
+
|
|
65
|
+
| 值 | 含义 | 适用场景 |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| 1 | Markdown | 文件内容包含 Markdown 语法(标题、列表、链接、代码块等) |
|
|
68
|
+
| 0 | Text(纯文本) | 文件内容为纯文本,不含任何 Markdown 语法 |
|
|
69
|
+
|
|
70
|
+
除了标准的 markdown 格式以外,智能文档还支持扩展语法以提升表示的丰富性,包括:
|
|
71
|
+
1. 背景块
|
|
72
|
+
```markdown
|
|
73
|
+
<card color="green">
|
|
74
|
+
## 在扩展标签里面可以任意嵌套 markdown 语法
|
|
75
|
+
- 背景块常用于展示重要信息
|
|
76
|
+
- 颜色的使用根据需要表达的语义进行选择,卡片背景由 `color` 指定;支持 `green`, `blue`, `red`, `yellow`, `gray`, `purple`, `orange`, `cyan`, `indigo`,也支持 `dark_green`, `dark_blue`, `dark_red`, `dark_yellow`, `dark_gray`, `dark_purple`, `dark_orange`, `dark_cyan`, `dark_indigo` 等深色系。
|
|
77
|
+
</card>
|
|
78
|
+
```
|
|
79
|
+
背景颜色推荐使用浅色背景,以完成区隔/高亮并且保持低饱和度确保正文内容的良好显示。
|
|
80
|
+
2. 分栏
|
|
81
|
+
使用分栏可以并列显示内容,常用于展示对比或者并列信息
|
|
82
|
+
```markdown
|
|
83
|
+
<grid>
|
|
84
|
+
<area width-ratio="0.5">占据50%的空间</area>
|
|
85
|
+
<area width-ratio="0.5">占据50%的空间</area>
|
|
86
|
+
</grid>
|
|
87
|
+
```
|
|
88
|
+
width-ratio:子容器宽度占比,范围 0.1~1.0,所有的子容器宽度占比之和为 1
|
|
89
|
+
|
|
90
|
+
## 请求示例
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"title": "项目概览",
|
|
95
|
+
"pages": [
|
|
96
|
+
{
|
|
97
|
+
"page_title": "需求文档",
|
|
98
|
+
"content_type": 1,
|
|
99
|
+
"page_filepath": "/path/to/requirements.md"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"page_title": "设计说明",
|
|
103
|
+
"content_type": 1,
|
|
104
|
+
"page_filepath": "/path/to/design.md"
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## 响应示例
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"errcode": 0,
|
|
115
|
+
"errmsg": "ok",
|
|
116
|
+
"docid": "DOCID",
|
|
117
|
+
"url": "https://doc.weixin.qq.com/smartpage/a1_xxxxxx"
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
## 注意事项
|
|
121
|
+
|
|
122
|
+
- `docid` 仅在创建时返回,后续无法再获取,务必保存
|
|
123
|
+
- `page_filepath` 指向本地文件,需确保文件存在且可读
|
|
124
|
+
- **`content_type` 必须与文件实际内容格式匹配**:`.md` 文件或包含 Markdown 语法的内容必须传 `1`,不要传 `0`
|
|
125
|
+
- 每个子页面的 Markdown 文件大小不得超过 **10MB**,超过会导致创建失败;如果文件过大,需先拆分为多个子页面
|