@amaster.ai/pi-lark 0.1.2-beta.55 → 0.1.2-beta.56
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/package.json +2 -2
- package/skills/lark-apps/SKILL.md +2 -0
- package/skills/lark-apps/references/lark-apps-db.md +130 -2
- package/skills/lark-apps/references/lark-apps-user-id-convert.md +63 -0
- package/skills/lark-base/SKILL.md +22 -34
- package/skills/lark-base/references/lark-base-cell-value.md +19 -7
- package/skills/lark-base/references/lark-base-data-analysis-cloud.md +145 -0
- package/skills/lark-base/references/lark-base-data-analysis-pandas.md +93 -0
- package/skills/lark-base/references/lark-base-data-analysis-python-stdlib.md +120 -0
- package/skills/lark-base/references/lark-base-data-analysis-sop.md +166 -155
- package/skills/lark-base/references/lark-base-data-query-guide.md +1 -3
- package/skills/lark-base/references/lark-base-data-query.md +6 -9
- package/skills/lark-base/references/lark-base-field-json.md +2 -2
- package/skills/lark-base/references/lark-base-record-upsert.md +2 -2
- package/skills/lark-calendar/SKILL.md +2 -0
- package/skills/lark-calendar/references/lark-calendar-create.md +1 -0
- package/skills/lark-doc/SKILL.md +1 -1
- package/skills/lark-drive/SKILL.md +4 -2
- package/skills/lark-drive/references/lark-drive-export.md +1 -0
- package/skills/lark-drive/references/lark-drive-member-remove.md +59 -0
- package/skills/lark-drive/references/lark-drive-push.md +5 -1
- package/skills/lark-drive/references/lark-drive-search.md +2 -0
- package/skills/lark-minutes/SKILL.md +11 -5
- package/skills/lark-minutes/references/lark-minutes-apply-permission.md +95 -0
- package/skills/lark-minutes/references/lark-minutes-detail.md +7 -6
- package/skills/lark-minutes/references/lark-minutes-download.md +4 -2
- package/skills/lark-note/SKILL.md +11 -9
- package/skills/lark-note/references/lark-note-detail.md +5 -2
- package/skills/lark-note/references/lark-note-transcript.md +2 -0
- package/skills/lark-shared/SKILL.md +36 -0
- package/skills/lark-slides/SKILL.md +14 -14
- package/skills/lark-slides/references/{xml → cli}/lark-slides-add-slide.md +1 -1
- package/skills/lark-slides/references/cli/lark-slides-create.md +5 -5
- package/skills/lark-slides/references/{xml → cli}/lark-slides-delete-slide.md +2 -2
- package/skills/lark-slides/references/cli/lark-slides-media-upload.md +4 -5
- package/skills/lark-slides/references/cli/lark-slides-replace-slide.md +10 -9
- package/skills/lark-slides/references/{lark-slides-update-slide.md → cli/lark-slides-update-slide.md} +3 -3
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-get.md +3 -3
- package/skills/lark-slides/references/cli/lark-slides-xml-presentation-slide-replace.md +2 -2
- package/skills/lark-slides/references/cli/lark-slides-xml-presentations-get.md +2 -2
- package/skills/lark-slides/references/lark-slides-add-slide.md +1 -1
- package/skills/lark-slides/references/lark-slides-delete-slide.md +1 -1
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +1 -1
- package/skills/lark-slides/references/workflow/error-handling.md +1 -1
- package/skills/lark-slides/references/workflow/{slides_editing.md → slides-editing.md} +4 -4
- package/skills/lark-slides/references/workflow/validation-xml.md +1 -1
- package/skills/lark-task/SKILL.md +12 -0
- package/skills/lark-task/references/lark-task-create.md +3 -1
- package/skills/lark-vc/SKILL.md +13 -5
- package/skills/lark-vc/references/lark-vc-detail.md +11 -6
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-events.md → lark-vc/references/lark-vc-meeting-events.md} +121 -20
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-list-active.md → lark-vc/references/lark-vc-meeting-list-active.md} +2 -2
- package/skills/{lark-vc-agent/references/lark-vc-agent-meeting-message-send.md → lark-vc/references/lark-vc-meeting-message-send.md} +3 -3
- package/skills/lark-vc/references/lark-vc-recording.md +8 -6
- package/skills/lark-vc/references/vc-domain-boundaries.md +6 -1
- package/skills/lark-vc-agent/SKILL.md +24 -9
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-join.md +2 -2
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +2 -2
- package/skills/lark-wiki/references/lark-wiki-node-create.md +18 -2
- package/skills/lark-wiki/references/lark-wiki-node-get.md +11 -0
- package/skills/lark-wiki/references/lark-wiki-node-list.md +1 -1
- package/skills/lark-slides/references/cli/lark-slides-replace-pages.md +0 -97
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# drive +member-remove(移除协作者权限)
|
|
2
|
+
|
|
3
|
+
> 这是高风险写操作。真实执行会移除权限,需要核对资源和成员后显式加 `--yes`。
|
|
4
|
+
|
|
5
|
+
## 命令
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
lark-cli drive +member-remove \
|
|
9
|
+
--token "<bare_token_or_url>" \
|
|
10
|
+
--type docx \
|
|
11
|
+
--member-id "ou_xxx" \
|
|
12
|
+
--member-type openid \
|
|
13
|
+
--yes
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 参数
|
|
17
|
+
|
|
18
|
+
| 参数 | 必填 | 说明 |
|
|
19
|
+
|------|------|------|
|
|
20
|
+
| `--token` | 是 | 裸 token 或完整 URL。路径支持 `/drive/folder/`、`/docx/`、`/doc/`、`/sheets/`、`/base/`、`/bitable/`、`/wiki/`、`/file/`、`/mindnotes/`、`/slides/`、`/minutes/`、`/page/`;URL 可从路径推断类型,裸 token 必须同时传 `--type`。 |
|
|
21
|
+
| `--type` | 条件必填 | 资源类型:`docx` / `doc` / `sheet` / `bitable` / `file` / `folder` / `wiki` / `mindnote` / `slides` / `minutes` / `apps`。完整 URL 可省略。 |
|
|
22
|
+
| `--member-id` | 是 | 要移除的单个协作者 ID。逗号分隔的多成员输入会被拒绝;批量场景应逐个调用。 |
|
|
23
|
+
| `--member-type` | 是 | ID 类型:`email` / `openid` / `openchat` / `opendepartmentid` / `userid` / `unionid` / `groupid` / `wikispaceid`。 |
|
|
24
|
+
| `--member-kind` | 条件必填 | 仅 `--member-type=wikispaceid` 使用:未启用知识库成员分组时传 `wiki_space_member`,启用后根据权限传 `wiki_space_viewer` 或 `wiki_space_editor`。 |
|
|
25
|
+
| `--perm-type` | 否 | 仅 wiki 协作者使用:`container`(默认,当前页面及子页面)或 `single_page`(仅当前页面)。 |
|
|
26
|
+
| `--dry-run` | 否 | 只预览 DELETE URL、query 和 body,不调用接口。 |
|
|
27
|
+
| `--yes` | 真实执行时是 | 确认高风险权限移除操作。 |
|
|
28
|
+
|
|
29
|
+
## 输出
|
|
30
|
+
|
|
31
|
+
以移除 `openid` 类型的用户协作者为例,成功后返回:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"ok": true,
|
|
36
|
+
"identity": "user",
|
|
37
|
+
"data": {
|
|
38
|
+
"removed": true,
|
|
39
|
+
"resource_token": "doxcnxxx",
|
|
40
|
+
"resource_type": "docx",
|
|
41
|
+
"member_id": "ou_xxx",
|
|
42
|
+
"member_type": "openid",
|
|
43
|
+
"member_kind": "user"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Wiki 普通协作者还会返回 `perm_type`;`wikispaceid` 返回所传的 `member_kind`。
|
|
49
|
+
|
|
50
|
+
`removed: true` 表示删除请求成功完成,不保证该权限此前一定存在。
|
|
51
|
+
|
|
52
|
+
## 行为说明
|
|
53
|
+
|
|
54
|
+
- **身份支持**:支持 `--as user` 和 `--as bot`。
|
|
55
|
+
- **部门协作者**:`--member-type=opendepartmentid` 只能配合 `--as user`;bot 身份会在客户端提前拒绝。
|
|
56
|
+
- **安全编码**:资源 token 和 member ID 都作为独立 path segment 编码。
|
|
57
|
+
- **Wiki 范围**:普通 wiki 协作者默认删除 `container` 权限;只删除当前页面权限时显式传 `single_page`。
|
|
58
|
+
- **Wiki 空间成员**:`--member-type=wikispaceid` 仅支持 `--type=wiki`;必须用 `--member-kind` 指明成员角色,并且不能同时传 `--perm-type`。
|
|
59
|
+
- **错误处理**:OpenAPI 返回的 typed error 原样透传,可根据错误信封中的 subtype、code、hint 和权限信息处理。
|
|
@@ -134,6 +134,8 @@ lark-cli drive +push --local-dir ./repo --folder-token fldcnxxxxxxxxx \
|
|
|
134
134
|
|
|
135
135
|
`+push` 的失败项带结构化字段,agent 必须优先读 `items[].error_class` / `phase` / `code`,不要只看自然语言 `error` 文本。`summary.aborted=true` 表示命令已经遇到终止性错误并停止后续批处理;这时**不要原样重试**,先修复根因。
|
|
136
136
|
|
|
137
|
+
`retryable=true` 只表示修复根因或等待后可以再次尝试,不表示应该立即、无限重放整个 push;重试时采用有上限的指数退避和抖动。
|
|
138
|
+
|
|
137
139
|
常见终止性错误:
|
|
138
140
|
|
|
139
141
|
| `error_class` | 常见 `code` | 含义 | Agent 应对 |
|
|
@@ -144,8 +146,10 @@ lark-cli drive +push --local-dir ./repo --folder-token fldcnxxxxxxxxx \
|
|
|
144
146
|
| `invalid_api_parameters` | `1061002` | API 参数被服务端拒绝 | 停止重试,检查 `--folder-token`、覆盖模式、`file_token`、文件名和上传参数;不要对同一参数组合批量重试 |
|
|
145
147
|
| `parent_node_missing` | `1061044` | 上传 / 建目录使用的父文件夹不存在或当前身份不可见 | 停止重试,检查 `--folder-token` 是否仍存在、是否有权限、父目录是否在 push 过程中被删除;不要继续上传同一目录树 |
|
|
146
148
|
| `parent_sibling_limit` | `1062507` | 目标父文件夹单层子节点数量超过上限 | 停止重试,清理目标目录、换一个 `--folder-token`,或把上传内容拆到多个子目录 |
|
|
149
|
+
| `quota_exceeded` | `1061101` / `1061061` | 租户或当前用户的 Drive 容量配额已满 | 停止重试,释放容量、调整目标位置或扩容后再执行 push |
|
|
147
150
|
| `rate_limited` | `99991400` | 触发频控 | 停止当前批次,退避后再重试 |
|
|
148
|
-
| `
|
|
151
|
+
| `conflict` | `1061045` | 同一目标发生资源竞争 | 停止当前批次,避免并发操作同一目标;退避后有限重试 |
|
|
152
|
+
| `server_error` | `1663` / `1061001` / `2200` / HTTP 5xx | Drive 服务端或网关异常 | 停止当前批次,稍后有限重试 |
|
|
149
153
|
|
|
150
154
|
非终止但需要解释的状态:
|
|
151
155
|
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
>
|
|
26
26
|
> **`--query` 最长 30 个字符**:按字符数(Unicode 码点)算,中文每字算 1 个,与 ASCII 同口径;超过 30 会被服务端拒绝(`99992402 field validation failed`,**是报错不是截断**)。长关键词必须先压缩成核心实体 + 主题词(如把整句问题压成「项目名 + 主题」再搜),不要把整句原问塞进 `--query`。
|
|
27
27
|
>
|
|
28
|
+
> **按完整标题定位:** 使用 `--only-title`;标题不超过 30 个字符时直接查询,超长标题使用不超过限制的稳定片段召回,再按返回标题严格匹配。使用相同 query 和过滤条件按 `page_token` 检查,最多 3 页;仅在 `has_more=false` 且跨页恰好一个严格匹配时继续写操作,否则请用户缩小范围或补充信息。`drive files list` 只用于枚举已知文件夹的直接子项。
|
|
29
|
+
>
|
|
28
30
|
> **列表型请求不要硬塞关键词**:如果用户只是要求"我这月创建的所有文档"、"最近半年我编辑过的文档"、"按类型分类统计"这类范围浏览 / 汇总请求,且没有给出标题片段或业务关键词,应使用 `--query ""` 搭配 `--created-by-me`、`--mine`、`--created-*`、`--edited-*`、`--doc-types` 等过滤条件。不要把"查找"、"所有文档"、"最近更新过"、"按类型分类统计"这类动作词或统计意图放进 `--query`,否则会把本来应靠 filter 命中的结果过度收窄。
|
|
29
31
|
>
|
|
30
32
|
> **标题词 + 正文词联合搜索**:如果用户同时给出标题关键词和正文关键词,并要求同一资源同时满足两项条件,优先执行一条普通联合搜索:`lark-cli drive +search --query "标题词 正文词"`,并在同一条命令中叠加用户指定的 `--folder-tokens`、`--doc-types` 等过滤条件。不要把这种联合搜索拆成“标题搜索 + 正文搜索”后自行拼交集;也不要把 `--only-title` 或 `intitle:` 用作主候选路径。只有用户明确只查标题时,才使用 `--only-title` 或 `intitle:`。
|
|
@@ -20,7 +20,9 @@ metadata:
|
|
|
20
20
|
|
|
21
21
|
## 身份
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
身份是跨命令工作流的状态:一旦某个 `minute_token` / `note_id` 由某个身份取得,后续消费它的命令必须显式沿用相同 `--as`,不要依赖 profile 默认身份。完整规则见 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 的「身份延续」。
|
|
24
|
+
|
|
25
|
+
所有 minutes 命令默认使用 `--as user`。`+search`、`minutes get`、`+detail`、`+download` 和 `+apply-permission` 也支持 `--as bot`(bot 只能访问 / 操作 bot 有权限的妙记)。精确身份支持以 `<command> --help` 为准。
|
|
24
26
|
|
|
25
27
|
## Shortcuts
|
|
26
28
|
|
|
@@ -31,7 +33,7 @@ metadata:
|
|
|
31
33
|
| [`+download`](references/lark-minutes-download.md) | 下载妙记音视频媒体文件 |
|
|
32
34
|
| [`+upload`](references/lark-minutes-upload.md) | 上传 file_token 生成妙记 |
|
|
33
35
|
| [`+update`](references/lark-minutes-update.md) | 更新妙记标题 |
|
|
34
|
-
| `+apply-permission` | 申请妙记查看或编辑权限 |
|
|
36
|
+
| [`+apply-permission`](references/lark-minutes-apply-permission.md) | 申请妙记查看或编辑权限 |
|
|
35
37
|
| [`+speaker-replace`](references/lark-minutes-speaker-replace.md) | 替换妙记逐字稿中的说话人(须先 `lark-cli api GET .../speakerlist` 取 `speaker_id`) |
|
|
36
38
|
| `+word-replace` | 批量替换逐字稿关键词(详见 `lark-cli minutes +word-replace --help`) |
|
|
37
39
|
| [`+summary`](references/lark-minutes-summary.md) | 替换妙记 AI 总结全文 |
|
|
@@ -79,17 +81,21 @@ metadata:
|
|
|
79
81
|
|
|
80
82
|
### 3. 申请妙记权限
|
|
81
83
|
|
|
82
|
-
遇到妙记没有查看或编辑权限时,引导用户申请对应权限;只有用户明确要申请时,才调用 `minutes +apply-permission
|
|
84
|
+
遇到妙记没有查看或编辑权限时,引导用户申请对应权限;只有用户明确要申请时,才调用 `minutes +apply-permission`。使用前必读 [`+apply-permission` reference](references/lark-minutes-apply-permission.md)(write 操作,含 user/bot 身份与权限语义)。
|
|
83
85
|
|
|
84
86
|
只有当用户明确要求"申请查看权限"、"申请编辑权限"、"帮我申请这条妙记权限"时,才调用:
|
|
85
87
|
|
|
86
88
|
```bash
|
|
87
|
-
lark-cli minutes +apply-permission --minute-token <token> --perm view|edit
|
|
89
|
+
lark-cli minutes +apply-permission --minute-token <token> --perm view|edit --as user
|
|
90
|
+
lark-cli minutes +apply-permission --minute-token <token> --perm view|edit --as bot
|
|
88
91
|
```
|
|
89
92
|
|
|
90
93
|
这是向妙记所有者发起权限申请,不代表立即获得权限。
|
|
91
94
|
|
|
92
|
-
|
|
95
|
+
**安全约束**:
|
|
96
|
+
- 遇到无权限错误时,不要自动调用 `+apply-permission`;先把无权限事实告知用户,只有用户明确要求申请权限时才发起申请。
|
|
97
|
+
- **必须沿用触发无权限错误时的来源身份**:例如 `--as bot` 读取妙记时遇到无权限,申请也要用 `--as bot`,不要切到 user 身份申请。
|
|
98
|
+
- **禁止**用切换身份的方式绕过资源权限(例如 bot 无权限时改用 user 身份重新读取)。
|
|
93
99
|
|
|
94
100
|
### 4. 上传音视频文件生成妙记(并可继续获取纪要 / 逐字稿)
|
|
95
101
|
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# minutes +apply-permission
|
|
2
|
+
|
|
3
|
+
向妙记所有者发起查看或编辑权限申请。**写操作**,只在用户明确要求申请权限时才调用;调用后不代表立即获得权限,只是提交了一条申请。
|
|
4
|
+
|
|
5
|
+
本 skill 对应 shortcut:`lark-cli minutes +apply-permission`(调用 `POST /open-apis/minutes/v1/minutes/{minute_token}/permissions/apply`)。支持 `--as user` / `--as bot`。
|
|
6
|
+
|
|
7
|
+
## 命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 以 user 身份申请查看权限
|
|
11
|
+
lark-cli minutes +apply-permission --minute-token obcnxxxxxxxxxxxxxxxxxxxx --perm view --as user
|
|
12
|
+
|
|
13
|
+
# 以 bot 身份申请编辑权限
|
|
14
|
+
lark-cli minutes +apply-permission --minute-token obcnxxxxxxxxxxxxxxxxxxxx --perm edit --as bot
|
|
15
|
+
|
|
16
|
+
# 预览 API 调用
|
|
17
|
+
lark-cli minutes +apply-permission --minute-token obcnxxxxxxxxxxxxxxxxxxxx --perm view --dry-run
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 参数
|
|
21
|
+
|
|
22
|
+
| 参数 | 必填 | 说明 |
|
|
23
|
+
|------|------|------|
|
|
24
|
+
| `--minute-token <token>` | 是 | 妙记 Token |
|
|
25
|
+
| `--perm <view\|edit>` | 是 | 申请的权限:`view`(查看)或 `edit`(编辑) |
|
|
26
|
+
| `--dry-run` | 否 | 预览 API 调用,不执行 |
|
|
27
|
+
|
|
28
|
+
## user / bot 身份与权限语义
|
|
29
|
+
|
|
30
|
+
- **user**:以当前登录用户身份向妙记所有者申请。所有者在飞书客户端收到申请通知,同意后该用户获得对应权限。
|
|
31
|
+
- **bot**:以应用身份向妙记所有者申请,代表"这个应用"而不是某个用户。同意后应用(bot)获得对应权限,不会让触发申请的用户本人获得权限。
|
|
32
|
+
- 两种身份的申请互不代表:user 身份申请通过后 bot 仍然无权限,反之亦然。
|
|
33
|
+
|
|
34
|
+
## 核心约束
|
|
35
|
+
|
|
36
|
+
### 1. 必须继承触发无权限错误的来源身份
|
|
37
|
+
|
|
38
|
+
`+apply-permission` 不是通用的"求权限"按钮:它申请的是**当前 `--as` 对应身份**的权限。如果是 `--as bot` 读取妙记时遇到无权限,就要用 `--as bot` 申请;如果是 `--as user` 遇到无权限,就用 `--as user` 申请。不要在申请时切换成另一个身份——那申请的是另一个主体的权限,解决不了原来那次调用的问题。
|
|
39
|
+
|
|
40
|
+
### 2. missing scope 与资源 ACL 是两类不同问题
|
|
41
|
+
|
|
42
|
+
- **missing scope**(当前身份完全没有 `minutes:permission:apply` / `minutes:minutes.basic:read` 等 scope):这不是"没有这条妙记的权限",`+apply-permission` 解决不了。`--as user` 用 `auth login --scope` 补权限;`--as bot` 去开发者后台开通,**禁止**对 bot 执行 `auth login`。完整规则见 [lark-shared](../../lark-shared/SKILL.md)。
|
|
43
|
+
- **资源 ACL**(scope 都有,但对**这一条具体妙记**没有查看/编辑权限):这才是 `+apply-permission` 要解决的场景。
|
|
44
|
+
|
|
45
|
+
先看错误的 `error.subtype` 是 `missing_scope` 还是资源级别的权限拒绝,再决定要不要调用本命令。
|
|
46
|
+
|
|
47
|
+
### 3. 只有用户明确要求才发起申请
|
|
48
|
+
|
|
49
|
+
遇到无权限错误时,先把"当前身份对这条妙记没有权限"的事实告知用户;只有用户明确说"帮我申请查看/编辑权限"时才调用本命令。不要在检测到无权限后自动发起申请。
|
|
50
|
+
|
|
51
|
+
### 4. 禁止通过切换身份绕过资源权限
|
|
52
|
+
|
|
53
|
+
如果 `--as bot` 对某条妙记没有权限,不要改用 `--as user` 重新读取来"绕过"这个限制(除非用户明确同意切换身份继续任务)。申请权限和切换身份是两件不同的事:前者是解决 bot 自身权限不足,后者是换一个完全不同的主体去访问资源。
|
|
54
|
+
|
|
55
|
+
## 所需权限
|
|
56
|
+
|
|
57
|
+
| 身份 | 所需权限 |
|
|
58
|
+
|------|---------|
|
|
59
|
+
| user / bot | `minutes:permission:apply` |
|
|
60
|
+
|
|
61
|
+
## 输出结果
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"minute_token": "obcnxxxxxxxxxxxxxxxxxxxx",
|
|
66
|
+
"perm": "view"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| 字段 | 说明 |
|
|
71
|
+
|------|------|
|
|
72
|
+
| `minute_token` | 妙记 Token |
|
|
73
|
+
| `perm` | 申请的权限(`view` / `edit`) |
|
|
74
|
+
|
|
75
|
+
## 如何获取 minute_token
|
|
76
|
+
|
|
77
|
+
| 来源 | 获取方式 |
|
|
78
|
+
|------|---------|
|
|
79
|
+
| 妙记 URL | 从 URL 末尾提取,如 `https://sample.feishu.cn/minutes/obcnxxxxxxxxxxxxxxxxxxxx` |
|
|
80
|
+
| 妙记搜索 | `lark-cli minutes +search --query "关键词"` |
|
|
81
|
+
| 会议产物查询 | `lark-cli vc +recording --meeting-ids <id>`,拿到 `minute_token`(沿用同一 `--as`) |
|
|
82
|
+
|
|
83
|
+
## 常见错误与排查
|
|
84
|
+
|
|
85
|
+
| 错误现象 | 根本原因 | 解决方案 |
|
|
86
|
+
|---------|---------|---------|
|
|
87
|
+
| `--perm` 不是 `view`/`edit` | 参数值不合法 | 只能传 `view` 或 `edit` |
|
|
88
|
+
| `missing required scope(s)` | 当前身份缺少 `minutes:permission:apply` | 见上方「missing scope 与资源 ACL」 |
|
|
89
|
+
| 申请后仍无权限 | 所有者尚未同意 | 这是异步申请,需等待所有者处理;不代表命令执行失败 |
|
|
90
|
+
|
|
91
|
+
## 参考
|
|
92
|
+
|
|
93
|
+
- [lark-minutes](../SKILL.md) — 妙记全部命令
|
|
94
|
+
- [minutes +detail](lark-minutes-detail.md) — 妙记内容与产物查询
|
|
95
|
+
- [lark-shared](../../lark-shared/SKILL.md) — 身份延续与权限恢复规则
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
# minutes +detail
|
|
3
3
|
|
|
4
|
-
通过 `minute_token` 查询妙记详情,按需获取 AI
|
|
4
|
+
通过 `minute_token` 查询妙记详情,按需获取 AI 产物(总结/待办/章节/逐字稿/关键词)。只读,支持 `--as user` / `--as bot`。
|
|
5
5
|
|
|
6
6
|
> `--summary` / `--todo` / `--chapter` / `--keyword` / `--transcript` 至少一个;不传任何产物 flag 时只返回基础信息(如 `title`),AI 产物字段都不会出现。一次性获取所有产物:`--summary --todo --chapter --keyword --transcript`。
|
|
7
7
|
|
|
@@ -46,17 +46,18 @@ lark-cli minutes +detail --minute-tokens obcxxx --transcript --overwrite --outpu
|
|
|
46
46
|
|
|
47
47
|
## 典型链路:从 minute_token 拿纪要文档 token
|
|
48
48
|
|
|
49
|
-
只持有 `minute_token`(如妙记 URL 入口),又想拿 AI 智能纪要 /
|
|
49
|
+
只持有 `minute_token`(如妙记 URL 入口),又想拿 AI 智能纪要 / 逐字稿文档时;每一步都要沿用同一个 `--as`(完整规则见 [lark-shared](../../lark-shared/SKILL.md) 的「身份延续」):
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
52
|
# 1. 取妙记关联的 note_id,没有关联会议纪要则为空
|
|
53
|
-
lark-cli minutes +detail --minute-tokens
|
|
53
|
+
lark-cli minutes +detail --minute-tokens obcnxxxxxxxxxxxxxxxxxxxx --as bot
|
|
54
54
|
|
|
55
55
|
# 2. 用 note_id 拿 note_doc_token / verbatim_doc_token / shared_doc_tokens
|
|
56
|
-
|
|
56
|
+
# 沿用第 1 步的身份,不要省略 --as
|
|
57
|
+
lark-cli note +detail --note-id <note_id> --as bot
|
|
57
58
|
|
|
58
|
-
# 3. 读纪要 /
|
|
59
|
-
lark-cli docs +fetch --api-version v2 --doc <note_doc_token> --doc-format markdown
|
|
59
|
+
# 3. 读纪要 / 逐字稿正文(同样沿用第 1 步的身份)
|
|
60
|
+
lark-cli docs +fetch --api-version v2 --doc <note_doc_token> --doc-format markdown --as bot
|
|
60
61
|
```
|
|
61
62
|
|
|
62
63
|
> `minute_token` 不要直接传给 `note +detail`:必须先用本命令拿到 `note_id` 再调用 `note +detail`。
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
# minutes +download
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
下载妙记的音视频媒体文件到本地,或获取有效期 1
|
|
5
|
+
下载妙记的音视频媒体文件到本地,或获取有效期 1 天的下载链接。只读操作,支持 `--as user` / `--as bot`。
|
|
6
6
|
|
|
7
7
|
本 skill 对应 shortcut:`lark-cli minutes +download`。
|
|
8
8
|
|
|
9
|
+
`minute_token` 是在某个身份下解析出来的(如 `vc +recording --as bot`):调用本命令时必须显式沿用同一个 `--as`,不要省略让身份被默认值悄悄换掉(完整规则见 [lark-shared](../../lark-shared/SKILL.md) 的「身份延续」)。
|
|
10
|
+
|
|
9
11
|
## 命令
|
|
10
12
|
|
|
11
13
|
```bash
|
|
@@ -119,7 +121,7 @@ API 限流 5 次/秒,批量下载时需注意控制频率。
|
|
|
119
121
|
| 妙记尚未准备好 | 2091003 | 转写未完成 | 等待转写完成后重试 |
|
|
120
122
|
| 资源已删除 | 2091004 | 妙记已被删除 | 确认妙记文件仍然存在 |
|
|
121
123
|
| 权限不足 | 2091005 | 无阅读权限 | 检查是否有该妙记的访问权限 |
|
|
122
|
-
| `missing required scope(s)` | — |
|
|
124
|
+
| `missing required scope(s)` | — | 当前身份缺少 scope | `--as user`:运行 `auth login --scope "minutes:minutes.media:export"`;`--as bot`:使用错误中的 `console_url` 去开发者后台开通,**禁止**对 bot 执行 `auth login`(见 [lark-shared](../../lark-shared/SKILL.md) 的权限恢复表) |
|
|
123
125
|
|
|
124
126
|
## 提示
|
|
125
127
|
|
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# note (v1)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
身份:`+detail` 支持 `--as user` / `--as bot`;`+transcript` 仅支持 `--as user`。`note_id` 若由某个身份取得(例如 `vc +detail --as bot`),`+detail` 必须显式沿用同一个 `--as`——不要依赖 profile 默认身份。完整身份延续规则见 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),使用前必读。
|
|
14
14
|
|
|
15
15
|
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-vc/references/vc-domain-boundaries.md`](../lark-vc/references/vc-domain-boundaries.md)**,不读将导致命令使用、会议产物决策、领域边界职责判断错误:
|
|
16
16
|
> 1. 了解日历 & VC、会议产物 & 文档的关联关系和职责划分
|
|
@@ -36,13 +36,15 @@ Note 域只接受显式 `note_id`:用户直接提供,或 `docs +fetch` 返
|
|
|
36
36
|
|
|
37
37
|
| `note +detail` 结果 | 用户要逐字稿 / 原始记录时 |
|
|
38
38
|
|------|---------------|
|
|
39
|
-
| `normal` + `verbatim_doc_token` 非空 | `docs +fetch --doc <verbatim_doc_token
|
|
39
|
+
| `normal` + `verbatim_doc_token` 非空 | `docs +fetch --doc <verbatim_doc_token>`(沿用 `+detail` 用的身份) |
|
|
40
40
|
| `unknown` + `verbatim_doc_token` 非空 | 先按独立文档处理;不要猜成 unified |
|
|
41
41
|
| `unknown` + 无逐字稿 token | 停止重试并说明无法确定逐字稿入口 |
|
|
42
|
-
| `unified` | `note +transcript --note-id <note_id
|
|
42
|
+
| `unified` | `note +transcript --note-id <note_id>`(仅支持 `--as user`) |
|
|
43
43
|
|
|
44
44
|
判别键是 `note_display_type`,不是 `verbatim_doc_token` 是否为空:unified 纪要也可能返回非空 `verbatim_doc_token`。
|
|
45
45
|
|
|
46
|
+
> **bot + unified 的边界**:`+transcript` 目前仅支持 `--as user`。如果 `+detail --as bot` 返回 `unified`,不要静默切到 `--as user` 继续——先停下来向用户说明"该纪要逐字稿只能以 user 身份读取",只有用户明确同意才切换身份重试。
|
|
47
|
+
|
|
46
48
|
## 关键字段
|
|
47
49
|
|
|
48
50
|
- `note_id`:Note 域唯一入口。
|
|
@@ -83,12 +85,12 @@ Note 域只接受显式 `note_id`:用户直接提供,或 `docs +fetch` 返
|
|
|
83
85
|
3. 获取到文档 Token 后,可使用 `docs +fetch` 读取文档内容,或使用 `drive metas batch_query` 获取文档元信息。
|
|
84
86
|
|
|
85
87
|
```bash
|
|
86
|
-
# 1. 从会议获取 note_id
|
|
87
|
-
lark-cli vc +detail --meeting-ids <meeting_id>
|
|
88
|
+
# 1. 从会议获取 note_id(这里以 bot 身份为例)
|
|
89
|
+
lark-cli vc +detail --meeting-ids <meeting_id> --as bot
|
|
88
90
|
|
|
89
|
-
# 2. 用 note_id 拿文档 Token
|
|
90
|
-
lark-cli note +detail --note-id <note_id>
|
|
91
|
+
# 2. 用 note_id 拿文档 Token;沿用第 1 步的身份,不要省略 --as
|
|
92
|
+
lark-cli note +detail --note-id <note_id> --as bot
|
|
91
93
|
|
|
92
|
-
# 3.
|
|
93
|
-
lark-cli docs +fetch --doc <note_doc_token> --doc-format markdown
|
|
94
|
+
# 3. 读取纪要文档内容;同样沿用第 1 步的身份
|
|
95
|
+
lark-cli docs +fetch --doc <note_doc_token> --doc-format markdown --as bot
|
|
94
96
|
```
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# note +detail
|
|
2
2
|
|
|
3
|
-
通过 `note_id` 查询会议纪要详情,获取下挂文档 Token(AI
|
|
3
|
+
通过 `note_id` 查询会议纪要详情,获取下挂文档 Token(AI 智能纪要、逐字稿、会中共享文档)。只读,支持 `--as user` / `--as bot`。bot 身份下能否读到数据取决于应用对纪要主文档是否有 view 权限。
|
|
4
4
|
|
|
5
5
|
## 命令
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
lark-cli note +detail --note-id <note_id>
|
|
9
|
+
lark-cli note +detail --note-id <note_id> --as bot
|
|
9
10
|
```
|
|
10
11
|
|
|
11
12
|
## `note_id` 来源
|
|
@@ -21,6 +22,8 @@ lark-cli note +detail --note-id <note_id>
|
|
|
21
22
|
| `note_doc_token` | 读纪要正文 / 总结 / 待办 / 章节:`docs +fetch --doc <note_doc_token>` |
|
|
22
23
|
| `note_display_type=normal` + `verbatim_doc_token` | 读逐字稿:`docs +fetch --doc <verbatim_doc_token>` |
|
|
23
24
|
| `note_display_type=unknown` + `verbatim_doc_token` | 先按普通独立逐字稿文档读取;不要猜成 unified |
|
|
24
|
-
| `note_display_type=unified` | 读逐字稿 / 原始记录:转 [`note +transcript`](lark-note-transcript.md) |
|
|
25
|
+
| `note_display_type=unified` | 读逐字稿 / 原始记录:转 [`note +transcript`](lark-note-transcript.md)(仅支持 `--as user`) |
|
|
25
26
|
|
|
26
27
|
判别键是 `note_display_type`。即使 unified 纪要返回了非空 `verbatim_doc_token`,逐字稿仍按 unified 路由。
|
|
28
|
+
|
|
29
|
+
> **bot + unified 的边界**:如果本命令用 `--as bot` 拿到 `note_display_type=unified`,`note +transcript` 只支持 `--as user`,不能直接沿用 bot 身份。停下来向用户说明这个边界,只有用户明确同意才切到 `--as user` 继续,不要静默切换身份。
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
只在 `note +detail` 已确认 `note_display_type=unified` 时使用。普通纪要逐字稿是独立 Docx 文档,应回到 [lark-doc](../../lark-doc/SKILL.md) 读取 `verbatim_doc_token`。
|
|
4
4
|
|
|
5
|
+
只支持 `--as user`,不支持 `--as bot`。如果 `note +detail --as bot` 返回 `unified`,不要在这里静默省略 `--as` 或改用 user 身份继续——先停下来向用户说明"该纪要逐字稿只能以 user 身份读取",只有用户明确同意才切换身份重试。
|
|
6
|
+
|
|
5
7
|
```bash
|
|
6
8
|
lark-cli note +transcript --note-id NOTE_ID
|
|
7
9
|
```
|
|
@@ -64,6 +64,32 @@ LARKSUITE_CLI_NO_UPDATE_NOTIFIER=1 LARKSUITE_CLI_NO_SKILLS_NOTIFIER=1 lark-cli a
|
|
|
64
64
|
- **User 权限**:后台开通 scope + 用户通过 `auth login` 授权,两层都要满足
|
|
65
65
|
|
|
66
66
|
|
|
67
|
+
### 身份延续(跨命令工作流)
|
|
68
|
+
|
|
69
|
+
身份是**整个工作流的状态**,不是单条命令的局部参数。CLI 不会在进程之间继承"上一步用的身份"——省略 `--as` 不代表"保持当前身份",而是把身份选择交回下面这条优先级链:
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
显式 --as > profile default-as > credential auto-detect
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
因此,只要用户显式选择了身份,或某个 ID / Token 是通过某个身份取得的(例如 `vc +detail --as bot` 返回的 `note_id`),**后续每一条消费该 ID/Token 的命令都必须显式带上相同的 `--as`**,跨 skill 传递也不例外:
|
|
76
|
+
|
|
77
|
+
- 禁止依赖 profile 默认身份让后续命令"自动"沿用同一身份。
|
|
78
|
+
- 禁止仅仅因为遇到权限错误就切换身份去绕过它——先如实报告,只有用户明确同意才切换。
|
|
79
|
+
- 下游命令根本不支持来源身份时(如 `--as bot` 拿到的 `note_id` 指向 `note_display_type=unified`,而 `note +transcript` 仅支持 `--as user`),停止并向用户说明这个边界,不要静默省略 `--as` 把身份交给默认值。
|
|
80
|
+
- 命令支持的精确身份以 `<command> --help` / `schema` 为准;各 skill 的身份小节只标注会影响路由决策的例外,不重复维护完整矩阵。
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# GOOD — note_id 来自 bot 链路,下一步显式沿用 bot
|
|
84
|
+
lark-cli vc +detail --meeting-ids <meeting_id> --as bot
|
|
85
|
+
lark-cli note +detail --note-id <note_id> --as bot
|
|
86
|
+
lark-cli docs +fetch --doc <note_doc_token> --as bot
|
|
87
|
+
|
|
88
|
+
# BAD — 省略 --as,身份可能被 profile 默认值悄悄换成 user
|
|
89
|
+
lark-cli vc +detail --meeting-ids <meeting_id> --as bot
|
|
90
|
+
lark-cli note +detail --note-id <note_id>
|
|
91
|
+
```
|
|
92
|
+
|
|
67
93
|
### 权限不足处理
|
|
68
94
|
|
|
69
95
|
遇到权限相关错误时,**根据当前身份类型采取不同解决方案**。
|
|
@@ -73,6 +99,16 @@ LARKSUITE_CLI_NO_UPDATE_NOTIFIER=1 LARKSUITE_CLI_NO_SKILLS_NOTIFIER=1 lark-cli a
|
|
|
73
99
|
- `console_url`:飞书开发者后台的权限配置链接
|
|
74
100
|
- `hint`:建议的修复命令
|
|
75
101
|
|
|
102
|
+
**missing_scope 与资源 ACL(无权访问某具体资源)是两类不同问题**,恢复方式也不同:
|
|
103
|
+
|
|
104
|
+
| 失败类型 | user | bot |
|
|
105
|
+
|---------|---------|---------|
|
|
106
|
+
| missing scope(应用/用户完全没有这个权限) | `auth login --scope ...` | 使用错误中的 `console_url` 去开发者后台开通,**禁止** `auth login` |
|
|
107
|
+
| 资源 ACL(有 scope,但对这一条具体资源没有访问权限) | 请求资源所有者给当前用户授权 | 请求资源所有者给当前应用/bot 授权 |
|
|
108
|
+
| 资源在当前身份下不可见 | 保持当前身份,如实报告不可见,不要切换身份重试 | 保持当前身份,如实报告不可见,不要切换身份重试 |
|
|
109
|
+
|
|
110
|
+
任何权限恢复完成后,都必须用**触发错误时的原身份**重试,不要在恢复过程中换成另一个身份。
|
|
111
|
+
|
|
76
112
|
#### Bot 身份(`--as bot`)
|
|
77
113
|
|
|
78
114
|
将错误中的 `console_url` 原样提供给用户,引导去后台开通 scope。**禁止**对 bot 执行 `auth login`。
|
|
@@ -38,7 +38,7 @@ metadata:
|
|
|
38
38
|
- `<td>` 直接子元素只有 `<fill>`(背景)、`<content>`(文字)和边框配置(一般不用),不能嵌套 `<shape>`、`<img>`、`<icon>`。
|
|
39
39
|
- `<shape type="rect">` 只是形状不是容器,`<icon>`、`<img>`、`<shape type="text">` 和其他 `<shape>` 必须与它平级靠坐标叠放。
|
|
40
40
|
- 填充渐变颜色必须用 `<fill><fillColor color="linear-gradient(135deg, rgba(R,G,B,A) 0%, rgba(R,G,B,A) 100%)"/></fill>`。
|
|
41
|
-
- 编辑页面前必须阅读 [`workflow/
|
|
41
|
+
- 编辑页面前必须阅读 [`workflow/slides-editing.md`](references/workflow/slides-editing.md)。
|
|
42
42
|
- 绘制图表前必须阅读 [`xml/slides_chart_demo.xml`](references/xml/slides_chart_demo.xml)。
|
|
43
43
|
- 当用户要求无损复述历史上下文时,必须无损复述以上权威经验、必读的技能文档(需要重新阅读)和易错元素语法(尤其是 `<table>` 和 `<chart>`)。
|
|
44
44
|
|
|
@@ -79,12 +79,12 @@ metadata:
|
|
|
79
79
|
|
|
80
80
|
| 用户需求 | 优先动作 | 关键文档 / 命令 |
|
|
81
81
|
|----------|----------|-----------------|
|
|
82
|
-
| 新建 PPT | 先规划 `slide_plan.json`,再按页数选择一步或两步创建 | `planning-layer.md`、`visual-planning.md`、`asset-planning.md`、`cli/lark-slides-create.md`、`slides +create`、`slides +add-slide`、`
|
|
82
|
+
| 新建 PPT | 先规划 `slide_plan.json`,再按页数选择一步或两步创建 | `planning-layer.md`、`visual-planning.md`、`asset-planning.md`、`cli/lark-slides-create.md`、`slides +create`、`slides +add-slide`、`cli/lark-slides-add-slide.md`(两步创建逐页添加) |
|
|
83
83
|
| 用户要求使用模板,或提供 PPTX 文件要求修改、美化 | 将模板导入为 Slides 再编辑 | `workflow/template-editing.md` |
|
|
84
84
|
| 编辑单个标题、文本块、图片或局部元素 | 块级替换/插入,**只动点名的 block,同页其他元素不受影响**;不改页序 | `slides +replace-slide`、`cli/lark-slides-replace-slide.md` |
|
|
85
85
|
| 一页改动很多(批量字体/配色)、要改页面背景、要删掉若干元素 | 整页覆盖,`slide_id` 和页序不变;带原 `id` 写回的元素保留 id,不带 `id` 的会作为新元素插入并拿到新 id;**代价是没写进 `--content` 的元素会被删除,所以改个别元素不要用它** | `slides +update-slide`、`lark-slides-update-slide.md` |
|
|
86
|
-
| 给已有 PPT 追加或插入页面 | 一次一页,`--slide` 支持 `@file` 绕开 shell 转义 | `slides +add-slide`、`
|
|
87
|
-
| 删除页面 | 按 `slide_id` 单页删除,删前先回读确认 | `slides +delete-slide`、`
|
|
86
|
+
| 给已有 PPT 追加或插入页面 | 一次一页,`--slide` 支持 `@file` 绕开 shell 转义 | `slides +add-slide`、`cli/lark-slides-add-slide.md` |
|
|
87
|
+
| 删除页面 | 按 `slide_id` 单页删除,删前先回读确认 | `slides +delete-slide`、`cli/lark-slides-delete-slide.md` |
|
|
88
88
|
| 读取或分析已有 PPT | 解析 slides/wiki token,用 shortcut 回读全文 XML 或读取单页 XML,保存 `xml_presentation_id`、`slide_id`、`revision_id` | `slides +xml-get`、`xml_presentation.slide.get`、`cli/lark-slides-xml-presentations-get.md` |
|
|
89
89
|
| 查看或回滚历史版本 | 先用 `+history-list` 找 `history_version_id`,再 `+history-revert`,必要时 `+history-revert-status` 轮询 | [`cli/lark-slides-history.md`](references/cli/lark-slides-history.md) |
|
|
90
90
|
| 获取幻灯片页面截图 | 按页码用 `--slide-number`,按 ID 用 `--slide-id`;单张用 `--output`,批量或全量用 `--output-dir`,每批最多 10 页串行执行;截图目录复用同一任务的 deck/task 标识,后续读取返回的实际路径 | `slides +screenshot`、`cli/lark-slides-screenshot.md` |
|
|
@@ -108,11 +108,11 @@ metadata:
|
|
|
108
108
|
|
|
109
109
|
**CRITICAL — 将完整 `<slide>` XML 提交给 `slides +create`、`slides +add-slide` 或 `slides +update-slide` 之前,MUST 先把待提交 XML 保存到本地文件并运行唯一版式准出入口 [`scripts/xml_lint.py`](scripts/xml_lint.py);`summary.error_count` 必须为 0 才能调用接口。**
|
|
110
110
|
|
|
111
|
-
**CRITICAL —
|
|
111
|
+
**CRITICAL — 创建、大幅改写或整页写回后,MUST 按 [workflow/validation-xml.md](references/workflow/validation-xml.md) 做显式验证:回读全文 XML、核对页数和关键元素,并使用 [`scripts/xml_lint.py`](scripts/xml_lint.py) 统一检查 XML、越界、重叠、空白页和内容稀疏风险。**
|
|
112
112
|
|
|
113
113
|
**CRITICAL — 创建前自检或失败排障时,MUST 按 [workflow/error-handling.md](references/workflow/error-handling.md) 检查 XML 转义、结构、shell 截断、图片 token、3350001 和布局风险。**
|
|
114
114
|
|
|
115
|
-
**编辑已有幻灯片页面**:单个标题、文本块、图片或局部元素优先用 [`+replace-slide`](references/cli/lark-slides-replace-slide.md)(块级替换/插入,不动页序);一页里改动很多(例如批量换字体)、要改背景、或要删掉若干元素时用 [`+update-slide`](references/lark-slides-update-slide.md) 整页覆盖(`slide_id` 和页序不变,但没写进 `--content` 的元素会被删除);**多页大改就对每一页各跑一次 `+update-slide`**。选择 action 和完整读-改-写流程见 [`workflow/
|
|
115
|
+
**编辑已有幻灯片页面**:单个标题、文本块、图片或局部元素优先用 [`+replace-slide`](references/cli/lark-slides-replace-slide.md)(块级替换/插入,不动页序);一页里改动很多(例如批量换字体)、要改背景、或要删掉若干元素时用 [`+update-slide`](references/cli/lark-slides-update-slide.md) 整页覆盖(`slide_id` 和页序不变,但没写进 `--content` 的元素会被删除);**多页大改就对每一页各跑一次 `+update-slide`**。选择 action 和完整读-改-写流程见 [`workflow/slides-editing.md`](references/workflow/slides-editing.md)。
|
|
116
116
|
|
|
117
117
|
**用户要求使用模板**:按 [workflow/template-editing.md](references/workflow/template-editing.md) 处理。
|
|
118
118
|
|
|
@@ -148,10 +148,10 @@ lark-cli auth login --domain slides
|
|
|
148
148
|
|
|
149
149
|
调用相关命令前必须读取相关的文档以了解命令的使用方式:
|
|
150
150
|
|
|
151
|
-
- 创建:[`cli/lark-slides-create.md`](references/cli/lark-slides-create.md)、[`
|
|
152
|
-
- 删除页面:[`
|
|
151
|
+
- 创建:[`cli/lark-slides-create.md`](references/cli/lark-slides-create.md)、[`cli/lark-slides-add-slide.md`](references/cli/lark-slides-add-slide.md)(逐页添加 / 给已有 PPT 追加页面)
|
|
152
|
+
- 删除页面:[`cli/lark-slides-delete-slide.md`](references/cli/lark-slides-delete-slide.md)
|
|
153
153
|
- 阅读:[`cli/lark-slides-xml-presentations-get.md`](references/cli/lark-slides-xml-presentations-get.md)
|
|
154
|
-
- 编辑:[`workflow/
|
|
154
|
+
- 编辑:[`workflow/slides-editing.md`](references/workflow/slides-editing.md)、[`cli/lark-slides-replace-slide.md`](references/cli/lark-slides-replace-slide.md)、[`lark-slides-update-slide.md`](references/cli/lark-slides-update-slide.md)
|
|
155
155
|
- 历史版本:[`cli/lark-slides-history.md`](references/cli/lark-slides-history.md)
|
|
156
156
|
- 截图:[`cli/lark-slides-screenshot.md`](references/cli/lark-slides-screenshot.md)
|
|
157
157
|
- 图片:[`cli/lark-slides-media-upload.md`](references/cli/lark-slides-media-upload.md)
|
|
@@ -212,7 +212,7 @@ Step 2: 生成大纲 → 写入 slide_plan.json
|
|
|
212
212
|
Step 3: 按 slide_plan.json 生成 XML → 创建
|
|
213
213
|
- 逐页消费 plan:key_message 定主结论,layout_type 定几何,visual_focus 定主视觉,text_density 定文本量
|
|
214
214
|
- 缺少真实素材时必须用 `fallback_if_missing` 生成替代图片,不要留空
|
|
215
|
-
- 读 cli/lark-slides-create.md 定一步创建还是两步创建,并据此构造 `slides +create`;两步创建再读
|
|
215
|
+
- 读 cli/lark-slides-create.md 定一步创建还是两步创建,并据此构造 `slides +create`;两步创建再读 cli/lark-slides-add-slide.md 用 `+add-slide` 逐页添加
|
|
216
216
|
- 图片按 cli/lark-slides-media-upload.md 处理;复杂 XML、转义和 3350001 排查按 workflow/error-handling.md 执行
|
|
217
217
|
|
|
218
218
|
Step 4: 审查 & 交付
|
|
@@ -284,13 +284,13 @@ Shortcut 是对常用操作的高级封装(`lark-cli slides +<verb> [flags]`
|
|
|
284
284
|
| Shortcut | 说明 |
|
|
285
285
|
|----------|------|
|
|
286
286
|
| [`+create`](references/cli/lark-slides-create.md) | 创建 PPT,可选一步添加页面 |
|
|
287
|
-
| [`+add-slide`](references/
|
|
288
|
-
| [`+delete-slide`](references/
|
|
287
|
+
| [`+add-slide`](references/cli/lark-slides-add-slide.md) | 向已有演示文稿追加或插入**一页**(`--before-slide-id` 控制位置),XML 支持 `@file` / stdin,`<img src="@./path">` 占位符自动上传 |
|
|
288
|
+
| [`+delete-slide`](references/cli/lark-slides-delete-slide.md) | 按 `slide_id` 删除**一页** |
|
|
289
289
|
| [`+xml-get`](references/cli/lark-slides-xml-presentations-get.md) | 读取全文 XML,用 `--presentation` 指定演示文稿的 `xml_presentation_id`,用 `--output` 把 XML 存到本地文件(必须是 CWD 内的相对路径,如 `.lark-slides/plan/<deck>/readback.xml`) |
|
|
290
290
|
| [`+screenshot`](references/cli/lark-slides-screenshot.md) | 把幻灯片页面截图保存为本地图片;用 `--slide-number` 指定页码(从 1 开始,多页重复传入)或用 `--slide-id` 指定页面;单张用 `--output .lark-slides/screenshots/<deck-or-task-id>/page-01`,批量用 `--output-dir .lark-slides/screenshots/<deck-or-task-id>`(一次最多 10 页);后续必须读取返回的 `output` / `screenshots[].path` |
|
|
291
291
|
| [`+media-upload`](references/cli/lark-slides-media-upload.md) | 上传本地图片到指定演示文稿,返回 `file_token`(用作 `<img src="...">`),最大 20 MB |
|
|
292
292
|
| [`+replace-slide`](references/cli/lark-slides-replace-slide.md) | 对已有幻灯片页面进行块级替换/插入(`block_replace` / `block_insert`),自动注入 id 和 `<content/>`,不改变页序 |
|
|
293
|
-
| [`+update-slide`](references/lark-slides-update-slide.md) | 把一整页 XML 交给已有页面,页面变成 `--content` 描述的样子;能一次改样式/插入/删除/备注/背景,`slide_id` 和页序不变。**没写进 `--content` 的元素会被删除** |
|
|
293
|
+
| [`+update-slide`](references/cli/lark-slides-update-slide.md) | 把一整页 XML 交给已有页面,页面变成 `--content` 描述的样子;能一次改样式/插入/删除/备注/背景,`slide_id` 和页序不变。**没写进 `--content` 的元素会被删除** |
|
|
294
294
|
|
|
295
295
|
没有 Shortcut 覆盖时使用原生 API。高频资源:`slides +xml-get` 读取全文;`xml_presentation.slide.create/delete/get/replace` 管理单页。
|
|
296
296
|
|
|
@@ -306,7 +306,7 @@ lark-cli slides <resource> <method> [flags] # 调用 API
|
|
|
306
306
|
1. **先规划再写 XML**:新建演示文稿或大幅改写页面时,必须先写入 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`;模板、风格和大纲只能作为规划输入,不能绕过规划层
|
|
307
307
|
2. **创建流程**:新建演示文稿用 `slides +create`,一步创建还是两步创建按 [`cli/lark-slides-create.md`](references/cli/lark-slides-create.md) 判断
|
|
308
308
|
3. **`<slide>` 直接子元素只有 `<style>`、`<data>`、`<note>`**:文本和图形必须放在 `<data>` 内
|
|
309
|
-
4. **文本通过 `<content>` 表达**:必须用 `<content><p>...</p></content>`,不能把文字直接写在 shape
|
|
309
|
+
4. **文本通过 `<content>` 表达**:必须用 `<content><p>...</p></content>`,不能把文字直接写在 shape 内;不要混淆 XML 元素 `<content>` 和 `--parts` 的 JSON 字段:编写 `--parts` 时,`block_replace` 装载 XML 使用标准字段 `replacement`,`block_insert` 使用 `insertion`
|
|
310
310
|
5. **保存关键 ID**:后续操作需要 `xml_presentation_id`、`slide_id`、`revision_id`
|
|
311
311
|
6. **删除谨慎**:删除不可逆,删前先回读确认 `slide_id`
|
|
312
312
|
7. **编辑已有页面优先原链接更新**:修改单个 shape/img 用 `+replace-slide`(`block_replace` / `block_insert`),不要整页重建;一页改动很多或要改背景用 `+update-slide` 整页覆盖(保 `slide_id` 和页序),多页整页重建就对每页各跑一次 `+update-slide`,不要用 `slides +create` 新建整份 PPT;追加/插入单页用 `+add-slide`、删除单页用 `+delete-slide`,只有这些 shortcut 未覆盖的参数才手动调 `slide.create` / `slide.delete`
|
|
@@ -62,7 +62,7 @@ lark-cli slides +add-slide --as user \
|
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
- 文件不存在、不是普通文件、超过 20 MB,都在**调用任何接口之前**报错,不会留下半成品。
|
|
65
|
-
- 去重只在**单次调用内**生效:多页共用同一张图时,逐页循环会把它每页重传一次。这种图先用 [`+media-upload`](
|
|
65
|
+
- 去重只在**单次调用内**生效:多页共用同一张图时,逐页循环会把它每页重传一次。这种图先用 [`+media-upload`](lark-slides-media-upload.md) 传一次,把 `file_token` 写进各页的 `src`。
|
|
66
66
|
|
|
67
67
|
## 成功输出
|
|
68
68
|
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
| 场景 | 推荐方式 |
|
|
13
13
|
|------|----------|
|
|
14
14
|
| 不超过 10 页 | 每页存一个 XML 文件,`slides +create --slide @page-01.xml --slide @page-02.xml ...` 一步创建 |
|
|
15
|
-
| 超过 10 页 | **两步创建**:先 `slides +create` 创建空白 PPT,再用 [`+add-slide`](
|
|
16
|
-
| 已有 PPT 继续追加或插入页面 | 使用 [`+add-slide`](
|
|
15
|
+
| 超过 10 页 | **两步创建**:先 `slides +create` 创建空白 PPT,再用 [`+add-slide`](lark-slides-add-slide.md) 逐页添加 |
|
|
16
|
+
| 已有 PPT 继续追加或插入页面 | 使用 [`+add-slide`](lark-slides-add-slide.md),必要时配合 `--before-slide-id` |
|
|
17
17
|
|
|
18
18
|
> [!IMPORTANT]
|
|
19
19
|
> `slides +create` 带页面时底层会逐页创建,不是原子操作。中途失败时先记录 `xml_presentation_id`,回读确认当前状态,再继续修复或追加。
|
|
@@ -56,7 +56,7 @@ lark-cli slides +create --title "项目汇报" --slide @./slide-01.xml --dry-run
|
|
|
56
56
|
- **`permission_grant`**(object,可选):仅 `--as bot` 时返回,说明是否已自动为当前 CLI 用户授予可管理权限
|
|
57
57
|
|
|
58
58
|
> [!IMPORTANT]
|
|
59
|
-
> 不带页面参数时,`slides +create` 只创建空白演示文稿。创建后用 [`+add-slide`](
|
|
59
|
+
> 不带页面参数时,`slides +create` 只创建空白演示文稿。创建后用 [`+add-slide`](lark-slides-add-slide.md) 逐页添加 slide 内容。
|
|
60
60
|
>
|
|
61
61
|
> 带了页面时,CLI 先创建空白演示文稿,再逐页调用 slide 创建接口添加页面。如果某一页添加失败,CLI 会停止并报错,已创建的演示文稿和已添加的页面会保留。
|
|
62
62
|
>
|
|
@@ -77,7 +77,7 @@ lark-cli slides +create --title "项目汇报" --slide @./slide-01.xml --dry-run
|
|
|
77
77
|
| `--slide` | 否 | 一页 `<slide>` XML,或 `@路径`;可重复,最多 10 次。格式见[页面输入形式](#页面输入形式) |
|
|
78
78
|
| `--slides` | 否 | 页面 XML 的 JSON 字符串数组,最多 10 个;支持 `@文件` 和 `-`(stdin)。格式见[页面输入形式](#页面输入形式) |
|
|
79
79
|
|
|
80
|
-
10 页是 CLI 的上限,服务端每次只接收一页。超过 10 页时先用 `+create` 创建空白 PPT,再用 [`+add-slide`](
|
|
80
|
+
10 页是 CLI 的上限,服务端每次只接收一页。超过 10 页时先用 `+create` 创建空白 PPT,再用 [`+add-slide`](lark-slides-add-slide.md) 逐页添加。
|
|
81
81
|
|
|
82
82
|
两种形式的每一页都会在发请求前校验成「单个完整的 `<slide>` 文档」。不合格的页在创建演示文稿之前报错并指出页序号,不会留下空壳演示文稿。
|
|
83
83
|
|
|
@@ -172,5 +172,5 @@ lark-cli slides +add-slide --as user \
|
|
|
172
172
|
|
|
173
173
|
## 相关命令
|
|
174
174
|
|
|
175
|
-
- [slides +add-slide](
|
|
175
|
+
- [slides +add-slide](lark-slides-add-slide.md) — 追加/插入单页(两步创建的第二步)
|
|
176
176
|
- [slides +xml-get](lark-slides-xml-presentations-get.md) — 读取 PPT 内容并保存到本地文件
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# slides +delete-slide(按 slide_id 删除单页)
|
|
2
2
|
|
|
3
|
-
从演示文稿删除**一页**,按 `slide_id` 指定。只改一页里的局部内容用 [`+replace-slide`](
|
|
3
|
+
从演示文稿删除**一页**,按 `slide_id` 指定。只改一页里的局部内容用 [`+replace-slide`](lark-slides-replace-slide.md),不要删了重建。
|
|
4
4
|
|
|
5
5
|
`--presentation` 接受 token / `/slides/` URL / `/wiki/` URL,ID 是普通 flag 而不是 `--params` JSON 串。
|
|
6
6
|
|
|
@@ -54,7 +54,7 @@ lark-cli slides +delete-slide --presentation "$PID" --slide-id "$SID" --dry-run
|
|
|
54
54
|
|
|
55
55
|
## 删错了怎么办
|
|
56
56
|
|
|
57
|
-
删除在原地不可撤销,但可以走历史版本回滚:`+history-list` 找 `history_version_id` → `+history-revert`(只接受 `history_version_id`,不能传 `revision_id`)→ `+history-revert-status` 轮询。命令用法见 [lark-slides-history.md](
|
|
57
|
+
删除在原地不可撤销,但可以走历史版本回滚:`+history-list` 找 `history_version_id` → `+history-revert`(只接受 `history_version_id`,不能传 `revision_id`)→ `+history-revert-status` 轮询。命令用法见 [lark-slides-history.md](lark-slides-history.md)。
|
|
58
58
|
|
|
59
59
|
## 常见错误
|
|
60
60
|
|