@amaster.ai/pi-lark 0.1.7 → 0.1.8
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 +39 -6
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +5 -4
- package/skills/lark-apps/references/lark-apps-create.md +6 -3
- package/skills/lark-apps/references/lark-apps-get.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +1 -1
- package/skills/lark-apps/references/lark-apps-local-dev.md +27 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +1 -1
- package/skills/lark-base/SKILL.md +14 -6
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +17 -1
- package/skills/lark-base/references/lark-base-dashboard.md +17 -4
- package/skills/lark-base/references/lark-base-data-query-guide.md +8 -0
- package/skills/lark-base/references/lark-base-field-create.md +19 -8
- package/skills/lark-base/references/lark-base-field-json.md +5 -2
- package/skills/lark-calendar/SKILL.md +1 -1
- package/skills/lark-doc/SKILL.md +26 -61
- package/skills/lark-doc/references/genres/business-analysis.md +30 -0
- package/skills/lark-doc/references/genres/data-report.md +32 -0
- package/skills/lark-doc/references/genres/email.md +38 -0
- package/skills/lark-doc/references/genres/execution-plan.md +27 -0
- package/skills/lark-doc/references/genres/formal-doc.md +37 -0
- package/skills/lark-doc/references/genres/meeting-minutes.md +24 -0
- package/skills/lark-doc/references/genres/memo-brief.md +25 -0
- package/skills/lark-doc/references/genres/official-redhead.md +73 -0
- package/skills/lark-doc/references/genres/prd.md +26 -0
- package/skills/lark-doc/references/genres/proposal.md +24 -0
- package/skills/lark-doc/references/genres/research-report.md +32 -0
- package/skills/lark-doc/references/genres/retrospective.md +25 -0
- package/skills/lark-doc/references/genres/route-consumer.md +37 -0
- package/skills/lark-doc/references/genres/route-creative.md +36 -0
- package/skills/lark-doc/references/genres/route-knowledge.md +39 -0
- package/skills/lark-doc/references/genres/route-marketing.md +40 -0
- package/skills/lark-doc/references/genres/route-media.md +36 -0
- package/skills/lark-doc/references/genres/route-opinion.md +38 -0
- package/skills/lark-doc/references/genres/route-personal-brand.md +36 -0
- package/skills/lark-doc/references/genres/route-platform.md +9 -0
- package/skills/lark-doc/references/genres/route-report.md +10 -0
- package/skills/lark-doc/references/genres/route-workplace.md +17 -0
- package/skills/lark-doc/references/genres/sop-tutorial.md +41 -0
- package/skills/lark-doc/references/genres/technical-doc.md +39 -0
- package/skills/lark-doc/references/genres/wechat.md +39 -0
- package/skills/lark-doc/references/genres/weekly-report.md +24 -0
- package/skills/lark-doc/references/genres/white-paper.md +32 -0
- package/skills/lark-doc/references/genres/xiaohongshu.md +38 -0
- package/skills/lark-doc/references/lark-doc-create-workflow.md +121 -0
- package/skills/lark-doc/references/lark-doc-create.md +22 -48
- package/skills/lark-doc/references/lark-doc-fetch.md +75 -92
- package/skills/lark-doc/references/lark-doc-history.md +16 -15
- package/skills/lark-doc/references/lark-doc-md.md +5 -1
- package/skills/lark-doc/references/lark-doc-media-download.md +2 -1
- package/skills/lark-doc/references/lark-doc-script.md +76 -0
- package/skills/lark-doc/references/lark-doc-update.md +70 -222
- package/skills/lark-doc/references/lark-doc-whiteboard.md +5 -9
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +17 -12
- package/skills/lark-doc/references/lark-doc-xml.md +38 -167
- package/skills/lark-drive/SKILL.md +7 -5
- package/skills/lark-drive/references/lark-drive-apply-permission.md +1 -1
- package/skills/lark-drive/references/lark-drive-copy.md +87 -0
- package/skills/lark-drive/references/lark-drive-download.md +2 -1
- package/skills/lark-drive/references/lark-drive-export.md +3 -0
- package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
- package/skills/lark-drive/references/lark-drive-update-title.md +78 -0
- package/skills/lark-event/SKILL.md +7 -4
- package/skills/lark-event/references/lark-event-vc.md +8 -2
- package/skills/lark-im/SKILL.md +8 -8
- package/skills/lark-im/references/lark-im-chat-list.md +9 -2
- package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
- package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
- package/skills/lark-im/references/lark-im-chat-search.md +9 -2
- package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
- package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
- package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
- package/skills/lark-im/references/lark-im-flag-list.md +2 -2
- package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
- package/skills/lark-im/references/lark-im-messages-resources-download.md +19 -25
- package/skills/lark-im/references/lark-im-messages-search.md +4 -5
- package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
- package/skills/lark-mail/references/lark-mail-triage.md +19 -4
- package/skills/lark-minutes/SKILL.md +1 -1
- package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
- package/skills/lark-shared/SKILL.md +3 -3
- package/skills/lark-sheets/SKILL.md +83 -82
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +13 -58
- package/skills/lark-sheets/references/lark-sheets-chart.md +2 -1
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +5 -5
- package/skills/lark-sheets/references/lark-sheets-read-data.md +80 -6
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +21 -10
- package/skills/lark-sheets/references/lark-sheets-styles-put.md +93 -0
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +2 -2
- package/skills/lark-sheets/references/lark-sheets-workbook.md +4 -3
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -12
- package/skills/lark-sheets/scripts/lark_detect_subtables.py +593 -0
- package/skills/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
- package/skills/lark-sheets/scripts/lark_profile_table.py +614 -0
- package/skills/lark-sheets/scripts/lark_sheet_range.py +176 -0
- package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
- package/skills/lark-sheets/scripts/sheets_df.py +21 -3
- package/skills/lark-slides/SKILL.md +27 -44
- package/skills/lark-slides/references/lark-slides-add-slide.md +92 -0
- package/skills/lark-slides/references/lark-slides-create.md +77 -65
- package/skills/lark-slides/references/lark-slides-delete-slide.md +65 -0
- package/skills/lark-slides/references/lark-slides-edit-workflows.md +6 -7
- package/skills/lark-slides/references/lark-slides-media-upload.md +3 -25
- package/skills/lark-slides/references/lark-slides-replace-slide.md +22 -1
- package/skills/lark-slides/references/lark-slides-screenshot.md +31 -13
- package/skills/lark-slides/references/lark-slides-update-slide.md +146 -0
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +31 -8
- package/skills/lark-slides/references/slides_chart_demo.xml +1 -2
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +48 -4
- package/skills/lark-slides/references/troubleshooting.md +7 -8
- package/skills/lark-slides/references/validation-checklist.md +4 -4
- package/skills/lark-slides/references/xml-schema-quick-ref.md +23 -11
- package/skills/lark-slides/scripts/sxsd_validator.py +154 -10
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +360 -76
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +1138 -214
- package/skills/lark-whiteboard/SKILL.md +15 -8
- package/skills/lark-whiteboard/references/lark-whiteboard-export.md +4 -3
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +4 -4
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +19 -17
- package/skills/lark-whiteboard/routes/dsl.md +8 -2
- package/skills/lark-whiteboard/routes/mermaid.md +1 -1
- package/skills/lark-whiteboard/routes/svg-edit.md +5 -2
- package/skills/lark-whiteboard/routes/svg.md +3 -1
- package/skills/lark-whiteboard/scenes/mention.md +71 -0
- package/skills/lark-wiki/SKILL.md +5 -3
- package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
- package/skills/lark-doc/references/lark-doc-word-stat.md +0 -93
- package/skills/lark-doc/references/style/lark-doc-create-workflow.md +0 -47
- package/skills/lark-doc/references/style/lark-doc-style.md +0 -68
- package/skills/lark-doc/references/style/lark-doc-update-workflow.md +0 -48
- package/skills/lark-doc/scripts/doc_word_stat.py +0 -1243
- package/skills/lark-slides/references/lark-slides-replace-pages.md +0 -95
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -219
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -126
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
|
|
12
12
|
| 场景 | 推荐方式 |
|
|
13
13
|
|------|----------|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
| 已有 PPT 继续追加或插入页面 | 使用 [
|
|
14
|
+
| 不超过 10 页 | 每页存一个 XML 文件,`slides +create --slide @page-01.xml --slide @page-02.xml ...` 一步创建 |
|
|
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
|
-
> [!WARNING]
|
|
19
|
-
> `--slides '[...]'` 的风险点主要在 shell 参数传递,而不是单纯页数。即使只有 1 页,只要 XML 足够复杂,也建议使用两步创建法。
|
|
20
18
|
> [!IMPORTANT]
|
|
21
|
-
> `slides +create
|
|
19
|
+
> `slides +create` 带页面时底层会逐页创建,不是原子操作。中途失败时先记录 `xml_presentation_id`,回读确认当前状态,再继续修复或追加。
|
|
20
|
+
|
|
21
|
+
**CRITICAL — 提交前必须先跑版式 lint**:把待提交的 `<slide>` XML 存成本地文件,运行 [`scripts/xml_text_overlap_lint.py`](../scripts/xml_text_overlap_lint.py),`summary.error_count` 必须为 0。
|
|
22
22
|
|
|
23
23
|
## 命令
|
|
24
24
|
|
|
@@ -26,31 +26,22 @@
|
|
|
26
26
|
# 创建空白 PPT
|
|
27
27
|
lark-cli slides +create --title "项目汇报"
|
|
28
28
|
|
|
29
|
-
# 创建 PPT +
|
|
30
|
-
lark-cli slides +create --title "项目汇报"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
# 创建 PPT + 添加页面:每页一个 XML 文件,重复 --slide,顺序即页序
|
|
30
|
+
lark-cli slides +create --as user --title "项目汇报" \
|
|
31
|
+
--slide @.lark-slides/plan/project/slide-01.xml \
|
|
32
|
+
--slide @.lark-slides/plan/project/slide-02.xml
|
|
33
|
+
|
|
34
|
+
# 已有组装好的 JSON 数组:从文件或 stdin 读
|
|
35
|
+
lark-cli slides +create --as user --title "项目汇报" --slides @./deck.json
|
|
36
|
+
cat deck.json | lark-cli slides +create --as user --title "项目汇报" --slides -
|
|
34
37
|
|
|
35
38
|
# 以应用身份创建(自动授权当前用户)
|
|
36
39
|
lark-cli slides +create --title "项目汇报" --as bot
|
|
37
40
|
|
|
38
41
|
# 预览(不执行)
|
|
39
|
-
lark-cli slides +create --title "项目汇报" --
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
复杂内容建议按页保存 XML,再用 `jq --rawfile` 组装 `--slides` 参数:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
lark-cli slides +create --as user --title "项目汇报" \
|
|
46
|
-
--slides "$(jq -n \
|
|
47
|
-
--rawfile s1 .lark-slides/plan/project/slide-01.xml \
|
|
48
|
-
--rawfile s2 .lark-slides/plan/project/slide-02.xml \
|
|
49
|
-
'[$s1, $s2]')"
|
|
42
|
+
lark-cli slides +create --title "项目汇报" --slide @./slide-01.xml --dry-run
|
|
50
43
|
```
|
|
51
44
|
|
|
52
|
-
`--rawfile` 会把文件内容作为字符串读入 JSON,自动处理 XML 中的引号和换行;不要手动拼接带大量转义符的 JSON 字符串。
|
|
53
|
-
|
|
54
45
|
## 返回值
|
|
55
46
|
|
|
56
47
|
工具成功执行后,返回一个 JSON 对象,包含以下字段:
|
|
@@ -59,15 +50,15 @@ lark-cli slides +create --as user --title "项目汇报" \
|
|
|
59
50
|
- **`title`**(string):演示文稿标题
|
|
60
51
|
- **`url`**(string,可选):演示文稿的在线链接,如有返回则务必展示给用户(需要 drive 相关权限;若获取失败则不返回此字段)
|
|
61
52
|
- **`revision_id`**(integer):演示文稿版本号
|
|
62
|
-
- **`slide_ids`**(string[]
|
|
63
|
-
- **`slides_added`**(integer
|
|
64
|
-
- **`images_uploaded`**(integer
|
|
53
|
+
- **`slide_ids`**(string[],可选):带页面创建时返回,成功添加的页面 ID 列表
|
|
54
|
+
- **`slides_added`**(integer,可选):带页面创建时返回,成功添加的页面数量
|
|
55
|
+
- **`images_uploaded`**(integer,可选):页面 XML 中含 `@<本地路径>` 占位符时返回,已上传的去重后图片数量
|
|
65
56
|
- **`permission_grant`**(object,可选):仅 `--as bot` 时返回,说明是否已自动为当前 CLI 用户授予可管理权限
|
|
66
57
|
|
|
67
58
|
> [!IMPORTANT]
|
|
68
|
-
>
|
|
59
|
+
> 不带页面参数时,`slides +create` 只创建空白演示文稿。创建后用 [`+add-slide`](lark-slides-add-slide.md) 逐页添加 slide 内容。
|
|
69
60
|
>
|
|
70
|
-
>
|
|
61
|
+
> 带了页面时,CLI 先创建空白演示文稿,再逐页调用 slide 创建接口添加页面。如果某一页添加失败,CLI 会停止并报错,已创建的演示文稿和已添加的页面会保留。
|
|
71
62
|
>
|
|
72
63
|
> 如果演示文稿是**以应用身份(bot)创建**的,如 `lark-cli slides +create --as bot`,CLI 会**尝试为当前 CLI 用户自动授予该演示文稿的 `full_access`(可管理权限)**。
|
|
73
64
|
>
|
|
@@ -83,27 +74,67 @@ lark-cli slides +create --as user --title "项目汇报" \
|
|
|
83
74
|
| 参数 | 必填 | 说明 |
|
|
84
75
|
|------|------|------|
|
|
85
76
|
| `--title` | 否 | 演示文稿标题(不传则默认 "Untitled") |
|
|
86
|
-
| `--
|
|
77
|
+
| `--slide` | 否 | 一页 `<slide>` XML,或 `@路径`;可重复,最多 10 次。格式见[页面输入形式](#页面输入形式) |
|
|
78
|
+
| `--slides` | 否 | 页面 XML 的 JSON 字符串数组,最多 10 个;支持 `@文件` 和 `-`(stdin)。格式见[页面输入形式](#页面输入形式) |
|
|
79
|
+
|
|
80
|
+
10 页是 CLI 的上限,服务端每次只接收一页。超过 10 页时先用 `+create` 创建空白 PPT,再用 [`+add-slide`](lark-slides-add-slide.md) 逐页添加。
|
|
81
|
+
|
|
82
|
+
两种形式的每一页都会在发请求前校验成「单个完整的 `<slide>` 文档」。不合格的页在创建演示文稿之前报错并指出页序号,不会留下空壳演示文稿。
|
|
83
|
+
|
|
84
|
+
## 页面输入形式
|
|
85
|
+
|
|
86
|
+
页面内容有 `--slide` 和 `--slides` 两种传法,二选一,同时传会报错。
|
|
87
|
+
|
|
88
|
+
两种形式的 `@路径` 都必须是 CWD 内的相对路径(如 `./slide-01.xml`);绝对路径和 `../` 会被拒(报 `invalid file path`)。XML 写在别的目录时,先 `cd` 过去或把文件拷进 CWD 再执行。
|
|
89
|
+
|
|
90
|
+
### `--slide`:一页一个文件
|
|
91
|
+
|
|
92
|
+
可重复,重复次数即页数,出现顺序即页序。值是一页完整的 `<slide>` XML,或读取该 XML 的 `@路径`。
|
|
87
93
|
|
|
88
|
-
|
|
94
|
+
文件内容就是这一页 XML 本身,外面没有引号或方括号:
|
|
95
|
+
|
|
96
|
+
```xml
|
|
97
|
+
<slide xmlns="https://www.larkoffice.com/sml/2.0">
|
|
98
|
+
<data>…第1页…</data>
|
|
99
|
+
</slide>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
文件内容不需要转义:引号、换行、中文原样写。
|
|
103
|
+
|
|
104
|
+
### `--slides`:一个 JSON 数组
|
|
105
|
+
|
|
106
|
+
值是 JSON 字符串数组,每个元素是一整页 XML,支持 `@文件` 和 `-`(stdin)。
|
|
107
|
+
|
|
108
|
+
文件内容是一个 JSON 文档,XML 以 JSON 字符串出现,其中的 `"` 写作 `\"`,换行写作 `\n`:
|
|
89
109
|
|
|
90
110
|
```json
|
|
91
111
|
[
|
|
92
|
-
"<slide xmlns=\"
|
|
93
|
-
"<slide xmlns=\"
|
|
112
|
+
"<slide xmlns=\"https://www.larkoffice.com/sml/2.0\"><data>…第1页…</data></slide>",
|
|
113
|
+
"<slide xmlns=\"https://www.larkoffice.com/sml/2.0\"><data>…第2页…</data></slide>"
|
|
94
114
|
]
|
|
95
115
|
```
|
|
96
116
|
|
|
97
|
-
|
|
117
|
+
数组元素是页面 XML 原文。包装成 API 所需的 `{"slide": {"content": …}}` 并逐页调用由 CLI 完成。
|
|
118
|
+
|
|
119
|
+
> [!WARNING]
|
|
120
|
+
> `--slides '[...]'` 的风险点主要在 shell 参数传递,而不是单纯页数。即使只有 1 页,只要 XML 足够复杂,也建议改用 `--slide @page-01.xml` 逐页传文件。
|
|
98
121
|
|
|
99
|
-
|
|
122
|
+
## 本地图片:`@<path>` 占位符
|
|
100
123
|
|
|
101
124
|
`<img>` 元素的 `src` 属性如果以 `@` 开头,CLI 会把它当作本地文件路径,自动上传到当前演示文稿,并把占位符替换为返回的 `file_token`。
|
|
102
125
|
|
|
126
|
+
`slide-01.xml`:
|
|
127
|
+
|
|
128
|
+
```xml
|
|
129
|
+
<slide xmlns="https://www.larkoffice.com/sml/2.0">
|
|
130
|
+
<data>
|
|
131
|
+
<img src="@./assets/chart.png" topLeftX="100" topLeftY="100" width="320" height="180"/>
|
|
132
|
+
</data>
|
|
133
|
+
</slide>
|
|
134
|
+
```
|
|
135
|
+
|
|
103
136
|
```bash
|
|
104
|
-
lark-cli slides +create --as user --title "图测试" --
|
|
105
|
-
"<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><img src=\"@./assets/chart.png\" topLeftX=\"100\" topLeftY=\"100\" width=\"320\" height=\"180\"/></data></slide>"
|
|
106
|
-
]'
|
|
137
|
+
lark-cli slides +create --as user --title "图测试" --slide @./slide-01.xml
|
|
107
138
|
```
|
|
108
139
|
|
|
109
140
|
行为:
|
|
@@ -118,37 +149,18 @@ lark-cli slides +create --as user --title "图测试" --slides '[
|
|
|
118
149
|
> [!IMPORTANT]
|
|
119
150
|
> **路径必须在 CWD 内**:`@/abs/path/x.png` 或 `@../up/x.png` 这种会被 CLI 拒绝(报 `unsafe file path`)。如果素材在别的目录,先 `cd` 过去再执行。
|
|
120
151
|
|
|
121
|
-
### 给已有 PPT 加带图新页
|
|
122
|
-
|
|
123
|
-
`+create --slides` 只在新建 PPT 时使用 `@` 占位符。给已有 PPT 加带图新页要分两步(CLI 没封装这个组合):
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
# 1) 上传图片
|
|
127
|
-
TOKEN=$(lark-cli slides +media-upload --as user \
|
|
128
|
-
--file ./pic.png --presentation $PRES_ID | jq -r .data.file_token)
|
|
129
|
-
|
|
130
|
-
# 2) 用返回的 file_token 创建带图新页
|
|
131
|
-
lark-cli slides xml_presentation.slide create --as user \
|
|
132
|
-
--params "{\"xml_presentation_id\":\"$PRES_ID\"}" \
|
|
133
|
-
--data "{\"slide\":{\"content\":\"<slide xmlns=\\\"http://www.larkoffice.com/sml/2.0\\\"><data><img src=\\\"$TOKEN\\\" topLeftX=\\\"100\\\" topLeftY=\\\"100\\\" width=\\\"200\\\" height=\\\"200\\\"/></data></slide>\"}}"
|
|
134
|
-
```
|
|
135
|
-
|
|
136
152
|
## 创建后续步骤
|
|
137
153
|
|
|
138
|
-
|
|
154
|
+
创建空白 PPT 时,`slides +create` 返回的 `xml_presentation_id` 用于后续操作:
|
|
139
155
|
|
|
140
156
|
```bash
|
|
141
157
|
# 第 1 步:创建空白 PPT
|
|
142
|
-
PRES_ID=$(lark-cli slides +create --title "项目汇报"
|
|
143
|
-
|
|
144
|
-
# 第 2
|
|
145
|
-
lark-cli slides
|
|
146
|
-
--
|
|
147
|
-
--
|
|
148
|
-
"slide": {
|
|
149
|
-
"content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\">...</slide>"
|
|
150
|
-
}
|
|
151
|
-
}'
|
|
158
|
+
PRES_ID=$(lark-cli slides +create --title "项目汇报" --jq '.data.xml_presentation_id')
|
|
159
|
+
|
|
160
|
+
# 第 2 步:逐页添加(--slide 支持 @file,复杂 XML 优先走文件)
|
|
161
|
+
lark-cli slides +add-slide --as user \
|
|
162
|
+
--presentation "$PRES_ID" \
|
|
163
|
+
--slide @.lark-slides/plan/<deck>/page1.xml
|
|
152
164
|
```
|
|
153
165
|
|
|
154
166
|
## 常见错误
|
|
@@ -160,5 +172,5 @@ lark-cli slides xml_presentation.slide create --as user \
|
|
|
160
172
|
|
|
161
173
|
## 相关命令
|
|
162
174
|
|
|
163
|
-
- [
|
|
175
|
+
- [slides +add-slide](lark-slides-add-slide.md) — 追加/插入单页(两步创建的第二步)
|
|
164
176
|
- [slides +xml-get](lark-slides-xml-presentations-get.md) — 读取 PPT 内容并保存到本地文件
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# slides +delete-slide(按 slide_id 删除单页)
|
|
2
|
+
|
|
3
|
+
从演示文稿删除**一页**,按 `slide_id` 指定。只改一页里的局部内容用 [`+replace-slide`](lark-slides-replace-slide.md),不要删了重建。
|
|
4
|
+
|
|
5
|
+
`--presentation` 接受 token / `/slides/` URL / `/wiki/` URL,ID 是普通 flag 而不是 `--params` JSON 串。
|
|
6
|
+
|
|
7
|
+
> `--slide-id` 只接受单个 ID —— 不支持逗号分隔的列表(`+screenshot` 的 `--slide-id` 支持,这个不支持),也不支持按页号删。
|
|
8
|
+
|
|
9
|
+
## 命令
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# 直接传 xml_presentation_id
|
|
13
|
+
lark-cli slides +delete-slide --as user \
|
|
14
|
+
--presentation "$PID" \
|
|
15
|
+
--slide-id "$SID"
|
|
16
|
+
|
|
17
|
+
# slides URL / wiki URL 都可以(wiki 会自动解析并校验 obj_type=slides)
|
|
18
|
+
lark-cli slides +delete-slide --as user \
|
|
19
|
+
--presentation "https://xxx.feishu.cn/wiki/wikcnXXXXXX" \
|
|
20
|
+
--slide-id "$SID"
|
|
21
|
+
|
|
22
|
+
# 删之前先确认打到哪份 PPT、哪一页
|
|
23
|
+
lark-cli slides +delete-slide --presentation "$PID" --slide-id "$SID" --dry-run
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 参数
|
|
27
|
+
|
|
28
|
+
| 参数 | 必需 | 说明 |
|
|
29
|
+
|------|------|------|
|
|
30
|
+
| `--presentation` | 是 | `xml_presentation_id`、`/slides/` URL 或 `/wiki/` URL |
|
|
31
|
+
| `--slide-id` | 是 | 要删除的页面 ID |
|
|
32
|
+
| `--revision-id` | 否 | 演示文稿版本号,默认 `-1`(最新);传具体版本号做乐观锁 |
|
|
33
|
+
| `--dry-run` | 否 | 打印将要发起的请求,不删除 |
|
|
34
|
+
|
|
35
|
+
## 成功输出
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"xml_presentation_id": "slides_example_presentation_id",
|
|
40
|
+
"slide_id": "slide_example_id",
|
|
41
|
+
"deleted": true,
|
|
42
|
+
"revision_id": 43
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 怎么拿 `slide_id`
|
|
47
|
+
|
|
48
|
+
`slide_id` 是服务端短 ID,**不能从 XML 里推导**。两个来源:
|
|
49
|
+
|
|
50
|
+
1. `+create` / `+add-slide` 的返回值里存下来;
|
|
51
|
+
2. 事后回读:`slides +xml-get --presentation "$PID" --output .lark-slides/plan/<deck>/readback.xml`。
|
|
52
|
+
|
|
53
|
+
删错页的代价高于多跑一次回读 —— 不确定就先回读 + `+screenshot` 看一眼再删。
|
|
54
|
+
|
|
55
|
+
## 删错了怎么办
|
|
56
|
+
|
|
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
|
+
|
|
59
|
+
## 常见错误
|
|
60
|
+
|
|
61
|
+
| 现象 | 原因 | 解决 |
|
|
62
|
+
|------|------|------|
|
|
63
|
+
| `--slide-id cannot be empty` | 传了空串或纯空格 | 检查变量有没有取到值 |
|
|
64
|
+
| 3350001 `invalid param` | `slide_id` 写错或该页已被删 | `+xml-get` 回读确认 `slide_id` 还在 |
|
|
65
|
+
| 403 / 权限不足 | 当前身份对这份 PPT 没有编辑权限 | 检查是否拥有 `slides:presentation:update` 或 `slides:presentation:write_only` scope;wiki 链接另需 `wiki:node:read`;`--as bot` 还要求该 bot 对目标 PPT 有编辑权限 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 编辑已有 PPT:读-改-写闭环
|
|
2
2
|
|
|
3
|
-
局部编辑走 **shortcut [`+replace-slide`](lark-slides-replace-slide.md)**(块级替换 / 插入),配合 `xml_presentation.slide.get` 读原页拿 `block_id
|
|
3
|
+
局部编辑走 **shortcut [`+replace-slide`](lark-slides-replace-slide.md)**(块级替换 / 插入),配合 `xml_presentation.slide.get` 读原页拿 `block_id`。整页重建走 **[`+update-slide`](lark-slides-update-slide.md)**,多页就每页各跑一次 —— 它原地覆盖并保留 `slide_id` 和页序;只有写进 `--content` 且带原 id 的元素才会保留元素 id,遗漏的元素会被删除。
|
|
4
4
|
|
|
5
5
|
> 生成 XML 前**必读** [xml-schema-quick-ref.md](xml-schema-quick-ref.md)。
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
| 已知某块的 `block_id`,要换这块内容(改标题、换图、挪坐标) | `block_replace` | 精准替换,原子性好;`replacement` 根 `id` 由 CLI 自动注入为 `block_id` |
|
|
12
12
|
| 只加 1~N 个元素、不动现有布局 | `block_insert` | 新增不覆盖,可选 `insert_before_block_id` 指定位置 |
|
|
13
13
|
| 一次动多个元素(如:换标题 + 加图) | 单次 `--parts` 里拼多条 | 整批作为原子事务,任一失败整批不生效;`block_replace` 和 `block_insert` 可混用 |
|
|
14
|
-
|
|
|
14
|
+
| 整页版式重建、整页坐标重排、改页面背景、删若干元素 | `+update-slide`(每页一次) | 原地整页覆盖,`slide_id` 和页序不变;带原 `id` 的元素保留 id,不带 `id` 的作为新元素插入,遗漏的被删除 |
|
|
15
15
|
|
|
16
16
|
> **没有字段级 patch**:即便只想改一个 `shape` 的 `topLeftX`,也得把整个块的新 XML 写出来用 `block_replace`。这不是"微调",是块级重写。
|
|
17
17
|
|
|
@@ -33,6 +33,8 @@ lark-cli slides +replace-slide --as user \
|
|
|
33
33
|
|
|
34
34
|
`slide_id` / 页序不会变。`block_replace` 的 `replacement` 根元素 `id` 会自动注入为 `block_id`,用户手写 XML 时不需要自己加。
|
|
35
35
|
|
|
36
|
+
> **part 的字段名是 `block_id` + `replacement`(XML 字符串)**:写成 `content` / `xml` / `block` 会被 CLI 拒绝(报 `unknown field "content"; did you mean "replacement"?`)。收到这个报错时改字段名,不要改字段值。
|
|
37
|
+
|
|
36
38
|
## `revision_id` 参数
|
|
37
39
|
|
|
38
40
|
`--revision-id` 默认 `-1`,表示基于当前最新版执行。传具体版本号时,服务端以该版本为 base 应用变更:
|
|
@@ -103,10 +105,7 @@ lark-cli slides +replace-slide --as user \
|
|
|
103
105
|
```bash
|
|
104
106
|
lark-cli slides +replace-slide --as user \
|
|
105
107
|
--presentation "$PID" --slide-id "$SID" \
|
|
106
|
-
--parts '[
|
|
107
|
-
{"action":"block_replace","block_id":"bab","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"},
|
|
108
|
-
{"action":"block_insert","insertion":"<img src=\"<file_token>\" topLeftX=\"700\" topLeftY=\"400\" width=\"180\" height=\"100\"/>"}
|
|
109
|
-
]'
|
|
108
|
+
--parts '[{"action":"block_replace","block_id":"bab","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"},{"action":"block_insert","insertion":"<img src=\"<file_token>\" topLeftX=\"700\" topLeftY=\"400\" width=\"180\" height=\"100\"/>"}]'
|
|
110
109
|
```
|
|
111
110
|
|
|
112
111
|
整批作为原子事务:任一条失败整批不生效。失败时后端通常返回 3350001;若响应中带 `failed_part_index` / `failed_reason` 字段,shortcut 会原样透传。
|
|
@@ -137,7 +136,7 @@ cat parts.json | lark-cli slides +replace-slide --as user --presentation "$PID"
|
|
|
137
136
|
## 相关文档
|
|
138
137
|
|
|
139
138
|
- [lark-slides-replace-slide.md](lark-slides-replace-slide.md) — +replace-slide shortcut 参数详情
|
|
140
|
-
- [lark-slides-
|
|
139
|
+
- [lark-slides-update-slide.md](lark-slides-update-slide.md) — +update-slide shortcut 参数详情(整页覆盖)
|
|
141
140
|
- [lark-slides-xml-presentation-slide-get.md](lark-slides-xml-presentation-slide-get.md) — slide.get 参考(拿 `block_id` / `revision_id`)
|
|
142
141
|
- [lark-slides-xml-presentation-slide-replace.md](lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考(一般直接用 shortcut 即可)
|
|
143
142
|
- [lark-slides-media-upload.md](lark-slides-media-upload.md) — 上传图片拿 file_token
|
|
@@ -52,30 +52,8 @@ lark-cli slides +media-upload --file ./pic.png --presentation $PRES_ID --dry-run
|
|
|
52
52
|
|
|
53
53
|
## 使用流程
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
# 1) 上传图片
|
|
59
|
-
TOKEN=$(lark-cli slides +media-upload --as user \
|
|
60
|
-
--file ./pic.png \
|
|
61
|
-
--presentation $PRES_ID | jq -r .data.file_token)
|
|
62
|
-
|
|
63
|
-
# 2) 用 file_token 创建带图新页
|
|
64
|
-
lark-cli slides xml_presentation.slide create --as user \
|
|
65
|
-
--params "{\"xml_presentation_id\":\"$PRES_ID\"}" \
|
|
66
|
-
--data "{\"slide\":{\"content\":\"<slide xmlns=\\\"http://www.larkoffice.com/sml/2.0\\\"><data><img src=\\\"$TOKEN\\\" topLeftX=\\\"100\\\" topLeftY=\\\"100\\\" width=\\\"320\\\" height=\\\"180\\\"/></data></slide>\"}}"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### 新建带图 PPT(推荐用 `+create --slides` 的 `@` 占位符,一步到位)
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
# 不需要单独 +media-upload,写 src="@<本地路径>" 即可
|
|
73
|
-
lark-cli slides +create --as user --title "图测试" --slides '[
|
|
74
|
-
"<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><img src=\"@./pic.png\" topLeftX=\"100\" topLeftY=\"100\" width=\"320\" height=\"180\"/></data></slide>"
|
|
75
|
-
]'
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
详见 [+create 文档](lark-slides-create.md#本地图片path-占位符)。
|
|
55
|
+
> 新建 PPT([`+create --slides`](lark-slides-create.md))或给已有 PPT 加新页([`+add-slide`](lark-slides-add-slide.md))都不需要单独上传:XML 里把 `<img src>` 写成 `@<本地路径>`,CLI 会自动上传并替换成 `file_token`。
|
|
56
|
+
> 本命令用于往**已有页**里加图,或需要自己拿着 `file_token` 拼 XML 的场景。
|
|
79
57
|
|
|
80
58
|
### 给已有 PPT 的已有页加图
|
|
81
59
|
|
|
@@ -123,4 +101,4 @@ lark-cli slides +replace-slide --as user \
|
|
|
123
101
|
|
|
124
102
|
- [+create](lark-slides-create.md) — 新建 PPT(支持 `@` 占位符自动上传图片)
|
|
125
103
|
- [+replace-slide](lark-slides-replace-slide.md) — 给已有页加图 / 换图(`block_insert` / `block_replace`)
|
|
126
|
-
- [
|
|
104
|
+
- [+add-slide](lark-slides-add-slide.md) — 追加/插入单页(同样支持 `@` 占位符自动上传)
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
对指定 slide 做块级替换或插入。编辑已有 PPT 的主路径——`slide_id` 不变、页序不动、只影响被指定的块。
|
|
4
4
|
|
|
5
|
+
> **`--parts` 字段名是硬约束**:装 XML 片段的字段,`block_replace` 只认 `replacement`,`block_insert` 只认 `insertion`(都是字符串)。`content` / `xml` / `new_xml` / `block_xml` / `block` / `element` / `data` 这些写法,以及任何其他字段名,**一律被 CLI 直接拒绝**——常见的错法会直接告诉你该用哪个字段(`unknown field "content"; did you mean "replacement"?`),其余只列出该 action 的合法字段集。`<content>` 是 `<shape>` 的**子元素**,不是 part 的字段名——这是最常见的搞混点。
|
|
6
|
+
|
|
5
7
|
相比直接调 `xml_presentation.slide.replace`,这个 shortcut 的四个额外价值:
|
|
6
8
|
|
|
7
9
|
1. `--presentation` 接受 `xml_presentation_id` / `/slides/` URL / `/wiki/` URL(wiki 自动解析);
|
|
@@ -72,6 +74,23 @@ lark-cli slides +replace-slide --as user \
|
|
|
72
74
|
| `insertion` | 是 | 要插入的 XML 片段 |
|
|
73
75
|
| `insert_before_block_id` | 否 | 插到这个块之前;省略(不提供此字段)则追加到页末 |
|
|
74
76
|
|
|
77
|
+
### 错误字段名(CLI 直接拒绝)
|
|
78
|
+
|
|
79
|
+
part 里出现上表以外的字段一律报错,不会被静默忽略。报错总会点名写错的那个字段,并按情况给出下一步:能对上正确字段时直接建议它(`did you mean "replacement"?`),字段属于另一个 action 时说明归属(`it belongs to block_insert`),都对不上时列出该 action 的合法字段集。无论哪种,**要改的是字段名,不是字段值**。
|
|
80
|
+
|
|
81
|
+
```jsonc
|
|
82
|
+
// ❌ 全部被拒
|
|
83
|
+
[{"action":"block_replace","block_id":"bUn","content":"<p>...</p>"}] // unknown field "content"; did you mean "replacement"?
|
|
84
|
+
[{"action":"block_replace","block_id":"bUn","xml":"<shape.../>"}] // 同上(new_xml / block_xml / element / data 一样)
|
|
85
|
+
[{"action":"block_replace","block_id":"bUn","block":{"content":"..."}}] // 不能把内容嵌一层 block
|
|
86
|
+
[{"action":"block_replace","block_id":"bUn","insertion":"<shape/>"}] // insertion 属于 block_insert
|
|
87
|
+
[{"action":"block_replace","block_id":"bUn","replacement":{"type":"..."}}] // replacement 必须是字符串,报 .replacement must be a string
|
|
88
|
+
|
|
89
|
+
// ✅ 正确
|
|
90
|
+
[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\"><content><p>新内容</p></content></shape>"}]
|
|
91
|
+
[{"action":"block_insert","insertion":"<shape type=\"rect\" width=\"100\" height=\"100\"/>"}]
|
|
92
|
+
```
|
|
93
|
+
|
|
75
94
|
## 合法根元素速查
|
|
76
95
|
|
|
77
96
|
`block_replace.replacement` 和 `block_insert.insertion` 必须以 SML 2.0 定义的合法元素为根。完整权威定义看 [`slides_xml_schema_definition.xml`](slides_xml_schema_definition.xml);这里只列能作为**根**的类型 + 每种类型的最小可工作片段。
|
|
@@ -224,7 +243,9 @@ lark-cli slides +replace-slide --as user \
|
|
|
224
243
|
| 3350002 not found | `--revision-id` 传了不存在的版本号(超过当前 revision) | 用 `-1` 或用 `slide.get` 拿到的有效 `revision_id` |
|
|
225
244
|
| `--parts[i] action "str_replace" is not supported` | CLI 不暴露 `str_replace` | 把替换需求改写成 `block_replace` / `block_insert` |
|
|
226
245
|
| `--parts contains N items, exceeds maximum of 200` | 一次提交 parts 太多 | 拆多次调用 |
|
|
227
|
-
| `--parts[i]
|
|
246
|
+
| `--parts[i] unknown field "content"; did you mean "replacement"?` | XML 塞进了不存在的字段名(`content` / `xml` / `block` / `data` 等) | 只改字段名:`block_replace` 用 `replacement`,`block_insert` 用 `insertion`;报错自带一行正确写法的 hint |
|
|
247
|
+
| `--parts[i] unknown field "insertion"; it belongs to block_insert` | 字段和 `action` 不配对 | 按 action 取字段:`block_replace` = `block_id` + `replacement`;`block_insert` = `insertion` (+ `insert_before_block_id`) |
|
|
248
|
+
| `--parts[i] (block_replace) requires non-empty block_id` / `replacement` | 字段名对,但值缺失或是空串 | 按 parts 元素结构补齐值 |
|
|
228
249
|
| `<img>` 不显示 / 显示破图 | `src` 写了外链 URL | 换成通过 [`+media-upload`](lark-slides-media-upload.md) 拿到的 `file_token` |
|
|
229
250
|
| 3350001 | `replacement` 不是合法单根 XML 片段,或 `block_id` 不存在 | CLI 已自动注入 `id` 和 `<content/>`;如果仍报错,重新 `slide.get` 拿最新 XML 确认 `block_id` 存在;检查 XML 结构是否合法;坐标是否超出 960×540 |
|
|
230
251
|
| 403 | 权限不足 | 需要 `slides:presentation:update` 或 `slides:presentation:write_only`;wiki URL 还需要 `wiki:node:read` |
|
|
@@ -21,25 +21,40 @@ lark-cli slides +screenshot --as user \
|
|
|
21
21
|
--content @slide.xml
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
+
## 截图全部页面
|
|
25
|
+
|
|
26
|
+
枚举全部页面的 `slide_id` 或页码,按每批最多 10 页分组并串行调用 `slides +screenshot`,复用同一个 `--output-dir`;记录失败批次,已完成批次不重复执行。
|
|
27
|
+
|
|
24
28
|
## 参数
|
|
25
29
|
|
|
26
30
|
| 参数 | 必需 | 说明 |
|
|
27
31
|
|------|------|------|
|
|
28
32
|
| `--presentation` | list 模式必需 | `xml_presentation_id`、`/slides/` URL,或解析后为 slides 的 `/wiki/` URL。传 `--content` 时不能使用 |
|
|
29
|
-
| `--slide-id` | list
|
|
30
|
-
| `--slide-number` | list
|
|
33
|
+
| `--slide-id` | list 模式与 `--slide-number` 二选一 | 页面 short ID;不能与 `--slide-number` 同时使用;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-id slide_1,slide_2`);一次最多 10 个 ID |
|
|
34
|
+
| `--slide-number` | list 模式与 `--slide-id` 二选一 | 页面页号;不能与 `--slide-id` 同时使用;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-number 1,2,3`);一次最多 10 个页码 |
|
|
31
35
|
| `--content` | render 模式必需 | 要直接渲染的 `<slide>` XML 片段;支持直接传值、`@file`、`-` stdin。传入后不能同时传 `--slide-id` / `--slide-number` |
|
|
36
|
+
| `--output` | 否 | 单张截图的期望相对输出路径,可不写扩展名,显式扩展名只支持 `.png`、`.jpg`、`.jpeg`。只能选择一页,不能与 `--output-dir` / `--output-name` 同时使用;最终路径以返回的 `output` 为准 |
|
|
32
37
|
| `--output-dir` | 否 | 输出目录,默认 `.lark-slides/screenshots`;必须是当前目录内的相对路径 |
|
|
33
|
-
| `--output-name` | 否 | render
|
|
38
|
+
| `--output-name` | 否 | 仅用于 `--content` render 模式设置输出文件名 stem。普通页面截图传入该参数会返回 `validation/invalid_argument`(`param: --output-name`)并提示改用 `--output` |
|
|
34
39
|
|
|
35
40
|
## 示例
|
|
36
41
|
|
|
37
|
-
###
|
|
42
|
+
### 单页截图并固定路径
|
|
38
43
|
|
|
39
44
|
```bash
|
|
40
45
|
lark-cli slides +screenshot --as user \
|
|
41
46
|
--presentation slides_example_presentation_id \
|
|
42
|
-
--slide-number 1
|
|
47
|
+
--slide-number 1 \
|
|
48
|
+
--output .lark-slides/screenshots/example-deck-task/page-01
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
按 `slide_id` 选择单页时同样使用 `--output`:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
lark-cli slides +screenshot --as user \
|
|
55
|
+
--presentation slides_example_presentation_id \
|
|
56
|
+
--slide-id slide_example_id \
|
|
57
|
+
--output .lark-slides/screenshots/example-deck-task/page-01
|
|
43
58
|
```
|
|
44
59
|
|
|
45
60
|
### 多页截图
|
|
@@ -51,7 +66,7 @@ lark-cli slides +screenshot --as user \
|
|
|
51
66
|
--presentation slides_example_presentation_id \
|
|
52
67
|
--slide-number 1 \
|
|
53
68
|
--slide-number 2 \
|
|
54
|
-
--output-dir .lark-slides/screenshots/
|
|
69
|
+
--output-dir .lark-slides/screenshots/example-deck-task
|
|
55
70
|
```
|
|
56
71
|
|
|
57
72
|
### 渲染 XML 预览
|
|
@@ -59,7 +74,7 @@ lark-cli slides +screenshot --as user \
|
|
|
59
74
|
```bash
|
|
60
75
|
lark-cli slides +screenshot --as user \
|
|
61
76
|
--content @.lark-slides/out/demo/slide.xml \
|
|
62
|
-
--output-
|
|
77
|
+
--output .lark-slides/screenshots/example-deck-task/preview
|
|
63
78
|
```
|
|
64
79
|
|
|
65
80
|
## 返回值
|
|
@@ -72,13 +87,13 @@ lark-cli slides +screenshot --as user \
|
|
|
72
87
|
"identity": "user",
|
|
73
88
|
"data": {
|
|
74
89
|
"xml_presentation_id": "slides_example_presentation_id",
|
|
75
|
-
"
|
|
90
|
+
"output": "/abs/path/.lark-slides/screenshots/example-deck-task/page-01.jpg",
|
|
76
91
|
"screenshots": [
|
|
77
92
|
{
|
|
78
93
|
"slide_id": "slide_example_id",
|
|
79
94
|
"slide_number": 1,
|
|
80
|
-
"format": "
|
|
81
|
-
"path": "/abs/path/.lark-slides/screenshots/
|
|
95
|
+
"format": "jpeg",
|
|
96
|
+
"path": "/abs/path/.lark-slides/screenshots/example-deck-task/page-01.jpg",
|
|
82
97
|
"size": 12345
|
|
83
98
|
}
|
|
84
99
|
]
|
|
@@ -92,6 +107,9 @@ lark-cli slides +screenshot --as user \
|
|
|
92
107
|
2. 已存在 PPT 页面截图时,不传 `--content`,用 `--presentation` + `--slide-id` 或 `--slide-number`。
|
|
93
108
|
3. 本地 XML 预览时,传 `--content @file` 或 `--content -`,内容应为单个 `<slide>` XML 片段;此时不要传 `--presentation` / `--slide-id` / `--slide-number`。
|
|
94
109
|
4. `slide_id` 是页面 short ID,页码请用 `--slide-number`。
|
|
95
|
-
5. list
|
|
96
|
-
6.
|
|
97
|
-
7.
|
|
110
|
+
5. list 模式下 `--slide-id` 与 `--slide-number` 必须二选一;同一类型 selector 一次最多传 10 个,更多页面请分批截图。
|
|
111
|
+
6. 单张使用 `--output`,多张使用 `--output-dir`,由 CLI 按页面信息生成文件名。新建或大幅改写 Deck 时,截图目录复用 planning 阶段的 `<deck-or-task-id>`;已有 Deck 没有 task ID 时,使用 presentation ID 作为目录名。
|
|
112
|
+
7. CLI 不转换图片格式,也不要求模型预判服务端格式。未写扩展名时自动追加真实扩展名;请求扩展名与真实格式不一致时保留目录和名称、修正扩展名,例如请求 `slide3.png` 而服务端返回 JPEG 时实际保存为 `slide3.jpg`。
|
|
113
|
+
8. 发生扩展名修正或同名避让时会返回原始 `requested_output`、实际绝对路径 `output` 和 `output_adjusted: true`;后续必须使用 `output` / `screenshots[].path`,不要继续猜测请求路径。
|
|
114
|
+
9. list 模式默认文件名包含 presentation ID、页码和/或 slide ID。
|
|
115
|
+
10. 截图来自服务端渲染结果,适合创建/替换后验证页面是否为空白、破图或布局明显异常。
|