@amaster.ai/pi-lark 0.1.2-beta.41 → 0.1.2-beta.43
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 +3 -3
- package/skills/lark-apps/SKILL.md +18 -10
- package/skills/lark-apps/references/lark-apps-access-scope-set.md +1 -1
- package/skills/lark-apps/references/lark-apps-automation.md +164 -0
- package/skills/lark-apps/references/lark-apps-db-execute.md +185 -1
- package/skills/lark-apps/references/lark-apps-db.md +1 -1
- package/skills/lark-apps/references/lark-apps-get.md +43 -0
- package/skills/lark-apps/references/lark-apps-html-publish.md +7 -2
- package/skills/lark-apps/references/lark-apps-init.md +1 -2
- package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +3 -1
- package/skills/lark-apps/references/lark-apps-role.md +133 -0
- package/skills/lark-base/SKILL.md +2 -2
- package/skills/lark-base/references/dashboard-block-data-config.md +28 -2
- package/skills/lark-base/references/lark-base-cell-value.md +9 -4
- package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +7 -7
- package/skills/lark-base/references/lark-base-dashboard.md +11 -2
- package/skills/lark-base/references/lark-base-data-query.md +9 -7
- package/skills/lark-base/references/lark-base-field-create.md +4 -2
- package/skills/lark-base/references/lark-base-field-json.md +52 -15
- package/skills/lark-base/references/lark-base-field-update.md +4 -2
- package/skills/lark-calendar/references/lark-calendar-create.md +1 -0
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +2 -1
- package/skills/lark-drive/SKILL.md +14 -6
- package/skills/lark-drive/references/lark-drive-comment-location.md +16 -4
- package/skills/lark-drive/references/lark-drive-comments-guide.md +16 -8
- package/skills/lark-drive/references/lark-drive-delete.md +23 -11
- package/skills/lark-drive/references/lark-drive-export.md +39 -10
- package/skills/lark-drive/references/lark-drive-list-comments.md +125 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +1 -1
- package/skills/lark-drive/references/lark-drive-move.md +5 -3
- package/skills/lark-drive/references/lark-drive-pull.md +3 -3
- package/skills/lark-drive/references/lark-drive-push.md +1 -1
- package/skills/lark-drive/references/lark-drive-status.md +12 -14
- package/skills/lark-drive/references/lark-drive-task-result.md +58 -5
- package/skills/lark-im/SKILL.md +5 -4
- package/skills/lark-im/references/lark-im-messages-reply.md +1 -1
- package/skills/lark-im/references/lark-im-messages-send.md +1 -1
- package/skills/lark-minutes/SKILL.md +19 -4
- package/skills/lark-minutes/references/lark-minutes-todo.md +2 -2
- package/skills/lark-shared/SKILL.md +9 -9
- package/skills/lark-sheets/SKILL.md +98 -29
- package/skills/lark-sheets/references/lark-sheets-batch-update.md +18 -9
- package/skills/lark-sheets/references/lark-sheets-changeset.md +105 -0
- package/skills/lark-sheets/references/lark-sheets-chart.md +4 -2
- package/skills/lark-sheets/references/lark-sheets-conditional-format.md +2 -0
- package/skills/lark-sheets/references/lark-sheets-filter-view.md +1 -1
- package/skills/lark-sheets/references/lark-sheets-float-image.md +6 -6
- package/skills/lark-sheets/references/lark-sheets-formula-translation.md +12 -3
- package/skills/lark-sheets/references/lark-sheets-formula-verify.md +77 -0
- package/skills/lark-sheets/references/lark-sheets-history.md +93 -0
- package/skills/lark-sheets/references/lark-sheets-pivot-table.md +7 -2
- package/skills/lark-sheets/references/lark-sheets-range-operations.md +44 -14
- package/skills/lark-sheets/references/lark-sheets-read-data.md +3 -3
- package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +4 -4
- package/skills/lark-sheets/references/lark-sheets-visual-standards.md +4 -4
- package/skills/lark-sheets/references/lark-sheets-workbook.md +29 -4
- package/skills/lark-sheets/references/lark-sheets-write-cells.md +21 -11
- package/skills/lark-slides/SKILL.md +29 -18
- package/skills/lark-slides/references/asset-planning.md +0 -1
- package/skills/lark-slides/references/examples.md +57 -227
- package/skills/lark-slides/references/iconpark.md +2 -2
- package/skills/lark-slides/references/lark-slides-create.md +21 -2
- package/skills/lark-slides/references/lark-slides-media-upload.md +0 -1
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +89 -0
- package/skills/lark-slides/references/lark-slides-replace-pages.md +1 -1
- package/skills/lark-slides/references/lark-slides-replace-slide.md +1 -1
- package/skills/lark-slides/references/lark-slides-screenshot.md +11 -8
- package/skills/lark-slides/references/lark-slides-xml-get.md +100 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +9 -7
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +4 -4
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +12 -10
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +14 -13
- package/skills/lark-slides/references/planning-layer.md +1 -1
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +7 -2
- package/skills/lark-slides/references/troubleshooting.md +7 -25
- package/skills/lark-slides/references/validation-checklist.md +18 -9
- package/skills/lark-slides/references/visual-planning.md +4 -3
- package/skills/lark-slides/references/xml-format-guide.md +20 -0
- package/skills/lark-slides/references/xml-schema-quick-ref.md +6 -2
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +647 -52
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +529 -0
- package/skills/lark-task/SKILL.md +1 -0
- package/skills/lark-vc-agent/SKILL.md +11 -4
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-events.md +1 -1
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +1 -1
- package/skills/lark-vc-agent/references/lark-vc-agent-meeting-list-active.md +2 -2
- package/skills/lark-wiki/SKILL.md +4 -2
- package/skills/lark-wiki/references/lark-wiki-move-to-drive.md +122 -0
- package/skills/lark-wiki/references/lark-wiki-move.md +5 -3
- package/skills/lark-sheets/references/lark-sheets-core-operations.md +0 -103
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +0 -220
|
@@ -10,34 +10,40 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# slides (v1)
|
|
12
12
|
|
|
13
|
+
**CRITICAL — 全局硬约束:PPT 的尺寸是 960x540,确保主体内容在页面边界内。**
|
|
14
|
+
|
|
15
|
+
**CRITICAL — 图片至关重要:必须有意识的主动多用图片!素材图使用生图工具和搜图工具,缺图时用生图工具生成配图补足;背景图必须使用生图工具,且生图指令中必须明确要求不要出现任何文字。**
|
|
16
|
+
|
|
17
|
+
**CRITICAL — 防文本溢出:所有承载突出信息和密集文字的 `<content>` 必须设置 `autoFit="normal-auto-fit"`,字号会在框内自动缩排以防溢出。**
|
|
18
|
+
|
|
13
19
|
## Quick Reference
|
|
14
20
|
|
|
15
21
|
| 用户需求 | 优先动作 | 关键文档 / 命令 |
|
|
16
22
|
|----------|----------|-----------------|
|
|
17
23
|
| 新建 PPT | 先规划 `slide_plan.json`,再按复杂度选择一步或两步创建 | `planning-layer.md`、`visual-planning.md`、`asset-planning.md`、`slides +create` |
|
|
18
|
-
|
|
|
24
|
+
| 从模板创建或编辑已有本地 PPTX | 导入 PPTX 为 Slides | `lark-slides-pptx-template-workflows.md` |
|
|
19
25
|
| 编辑单个标题、文本块、图片或局部元素 | 优先块级替换/插入,不改页序 | `slides +replace-slide`、`lark-slides-replace-slide.md` |
|
|
20
|
-
| 读取或分析已有 PPT | 解析 slides/wiki token
|
|
21
|
-
| 获取幻灯片页面截图 | 用 `slide_id`
|
|
26
|
+
| 读取或分析已有 PPT | 解析 slides/wiki token,用 shortcut 回读全文 XML 或读取单页 XML,保存 `xml_presentation_id`、`slide_id`、`revision_id` | `slides +xml-get`、`xml_presentation.slide.get` |
|
|
27
|
+
| 获取幻灯片页面截图 | 用 `slide_id` 或页号指定页面,一次不超过 10 页 | `slides +screenshot`、`lark-slides-screenshot.md` |
|
|
22
28
|
| 上传或使用图片 | 先上传为 `file_token`,禁止直接写 http(s) 外链 | `slides +media-upload`,或 `+create --slides` 的 `@./path` 占位符 |
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
29
|
+
| 绘制图表 | 原生图表用 `<chart>`,其他用 `<shape>` + `<line>`,只有复杂 Mermaid、SVG 用 `<whiteboard>` | `xml-schema-quick-ref.md`、`slides_chart_demo.xml` |
|
|
30
|
+
| 绘制表格 | 优先用 `rect` 和 `text` 模拟,其他用 `<table>` | `xml-schema-quick-ref.md` |
|
|
31
|
+
| 使用图标 | 禁止盲猜 `iconType`,必须先检索 IconPark,再写 `<icon iconType="...">`,图标必须填充颜色并和背景有足够对比,禁止使用 emoji 图标 | `iconpark_tool.py search → resolve`、`iconpark.md` |
|
|
26
32
|
| 创建失败、空白页、3350001、布局异常 | 先回读状态,再按排障清单修复,不假设原操作原子成功 | `troubleshooting.md`、`validation-checklist.md` |
|
|
27
33
|
|
|
28
34
|
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),认证、权限和全局参数均以 lark-shared 为准。**
|
|
29
35
|
|
|
30
36
|
**CRITICAL — 生成任何 XML 之前,MUST 先用 Read 工具读取 [xml-schema-quick-ref.md](references/xml-schema-quick-ref.md),禁止凭记忆猜测 XML 结构。**
|
|
31
37
|
|
|
32
|
-
**CRITICAL — PPT 生成与模板编辑硬约束:PPT 的尺寸是 960x540,确保主体内容在页面边界内。多用生图,辅助搜图,必须要图文并茂。不要为了画出一个具象物体而堆叠 3 个以上仅用于拟形的 shape。生成背景图时必须在 prompt 中明确要求不要出现任何文字。用户指定 PPT 模板时,用 lark-drive 技能导入成 lark slides,回读理解每页版式后,直接在该 slides 上编辑,可以填改文字和图片、按需增删模板页,必须严格沿用原版式和字体,只改内容不做设计,完成后回读并微调,凝练文字或缩减字号消除文字溢出,调整 shape 顺序或位置避免文字遮挡。**
|
|
33
|
-
|
|
34
38
|
**CRITICAL — 新建演示文稿或大幅改写页面时,MUST 先生成 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`,再生成 XML。先创建对应目录,规划层规则和中间产物生命周期见 [planning-layer.md](references/planning-layer.md)。仅替换一个标题、插入一个块等小型已有页编辑可豁免。**
|
|
35
39
|
|
|
36
40
|
**CRITICAL — 新建演示文稿或大幅改写页面时,生成 XML 前 MUST 读取 [visual-planning.md](references/visual-planning.md),确保 `layout_type`、`visual_focus`、`text_density` 实际改变页面几何、主视觉和文本量。**
|
|
37
41
|
|
|
38
|
-
**CRITICAL — 新建演示文稿或大幅改写页面时,规划 `asset_need` MUST 遵循 [asset-planning.md](references/asset-planning.md)
|
|
42
|
+
**CRITICAL — 新建演示文稿或大幅改写页面时,规划 `asset_need` MUST 遵循 [asset-planning.md](references/asset-planning.md)。**
|
|
43
|
+
|
|
44
|
+
**CRITICAL — 将完整 `<slide>` XML 提交给 `slides +create --slides`、`xml_presentation.slide create` 或 `slides +replace-pages` 之前,MUST 先把待提交 XML 保存到本地文件并运行 [`scripts/xml_text_overlap_lint.py`](scripts/xml_text_overlap_lint.py);`summary.error_count` 必须为 0 才能调用接口。**
|
|
39
45
|
|
|
40
|
-
**CRITICAL — 创建或大幅改写后,MUST 按 [validation-checklist.md](references/validation-checklist.md) 做显式验证:回读全文 XML
|
|
46
|
+
**CRITICAL — 创建或大幅改写后,MUST 按 [validation-checklist.md](references/validation-checklist.md) 做显式验证:回读全文 XML、核对页数和关键元素、检查空白/破损页、明显溢出、布局风险。**
|
|
41
47
|
|
|
42
48
|
**CRITICAL — 创建前自检或失败排障时,MUST 按 [troubleshooting.md](references/troubleshooting.md) 检查 XML 转义、结构、shell 截断、图片 token、3350001 和布局风险。**
|
|
43
49
|
|
|
@@ -79,14 +85,13 @@ lark-cli auth login --domain slides
|
|
|
79
85
|
- 编辑:[`lark-slides-edit-workflows.md`](references/lark-slides-edit-workflows.md)、[`lark-slides-replace-slide.md`](references/lark-slides-replace-slide.md)、[`lark-slides-replace-pages.md`](references/lark-slides-replace-pages.md)
|
|
80
86
|
- 截图:[`lark-slides-screenshot.md`](references/lark-slides-screenshot.md)
|
|
81
87
|
- 图片:[`lark-slides-media-upload.md`](references/lark-slides-media-upload.md)
|
|
82
|
-
- 流程图 / 时序图 / 架构图 / 装饰图案:[`lark-slides-whiteboard.md`](references/lark-slides-whiteboard.md)
|
|
83
88
|
- 图标:[`iconpark.md`](references/iconpark.md)、[`scripts/iconpark_tool.py`](scripts/iconpark_tool.py)
|
|
84
89
|
- 排障:[`troubleshooting.md`](references/troubleshooting.md)
|
|
85
90
|
- 完整协议:[`slides_xml_schema_definition.xml`](references/slides_xml_schema_definition.xml)
|
|
86
91
|
|
|
87
92
|
## Workflow
|
|
88
93
|
|
|
89
|
-
> **这是演示文稿,不是文档。** 每页 slide
|
|
94
|
+
> **这是演示文稿,不是文档。** 每页 slide 是独立的视觉画面,信息密度要适当,排版要留白。
|
|
90
95
|
|
|
91
96
|
### Design Ideas
|
|
92
97
|
|
|
@@ -124,7 +129,9 @@ lark-cli auth login --domain slides
|
|
|
124
129
|
- 不要用低对比文字或低对比图标,例如浅灰字压在浅色背景上。
|
|
125
130
|
- 不要让装饰线穿过文字,或让页脚、来源、编号挤压主体内容。
|
|
126
131
|
- 不要把素材缺失表现为空白图片框;必须按 `fallback_if_missing` 生成 XML-native 视觉。
|
|
127
|
-
-
|
|
132
|
+
- 不要留下模板占位文案、示例公司名、示例日期或与用户主题无关的原模板内容。
|
|
133
|
+
- 不要使用 emoji。
|
|
134
|
+
- 不要为了画出一个具象物体而堆叠 3 个以上仅用于拟形的 shape。
|
|
128
135
|
|
|
129
136
|
### 创建方式选择
|
|
130
137
|
|
|
@@ -140,9 +147,11 @@ lark-cli auth login --domain slides
|
|
|
140
147
|
> [!IMPORTANT]
|
|
141
148
|
> `slides +create --slides` 底层会逐页创建,不是原子操作。中途失败时先记录 `xml_presentation_id`,回读确认当前状态,再继续修复或追加。
|
|
142
149
|
|
|
150
|
+
### 生成流程
|
|
151
|
+
|
|
143
152
|
```text
|
|
144
153
|
Step 1: 需求澄清 & 读取知识
|
|
145
|
-
-
|
|
154
|
+
- 澄清主题、受众、页数、风格;若用户上传 PPTX 作为模板,按顶部『用户自定义模板』规则处理
|
|
146
155
|
- 读取 xml-schema-quick-ref.md;新建 / 大幅改写时还要读取 planning-layer.md、visual-planning.md、asset-planning.md
|
|
147
156
|
|
|
148
157
|
Step 2: 生成大纲 → 用户确认 → 写入 slide_plan.json
|
|
@@ -153,10 +162,11 @@ Step 2: 生成大纲 → 用户确认 → 写入 slide_plan.json
|
|
|
153
162
|
Step 3: 按 slide_plan.json 生成 XML → 创建
|
|
154
163
|
- 逐页消费 plan:key_message 定主结论,layout_type 定几何,visual_focus 定主视觉,text_density 定文本量
|
|
155
164
|
- 缺少真实素材时必须用 `fallback_if_missing` 生成 XML-native 兜底视觉;不要留空
|
|
165
|
+
- 调用创建或整页替换接口前,先保存待提交 XML 并运行 xml_text_overlap_lint.py;error_count 不为 0 必须先修
|
|
156
166
|
- 创建方式按“创建方式选择”判断;图片、复杂 XML、转义和 3350001 排查按 lark-slides-create.md、media-upload.md、troubleshooting.md 执行
|
|
157
167
|
|
|
158
168
|
Step 4: 审查 & 交付
|
|
159
|
-
- 创建完成后,必须用
|
|
169
|
+
- 创建完成后,必须用 `slides +xml-get` 读取全文 XML,并按 validation-checklist.md 做显式验证记录
|
|
160
170
|
- 失败或部分成功按 troubleshooting.md 处理;局部问题优先用 `+replace-slide` 修正
|
|
161
171
|
- 没问题 → 交付:告知用户演示文稿 ID 和访问方式
|
|
162
172
|
```
|
|
@@ -173,7 +183,7 @@ lark-cli slides xml_presentation.slide create \
|
|
|
173
183
|
--data "$(jq -n --arg content '<slide xmlns="http://www.larkoffice.com/sml/2.0">
|
|
174
184
|
<style><fill><fillColor color="BACKGROUND_COLOR"/></fill></style>
|
|
175
185
|
<data>
|
|
176
|
-
在这里放置 shape、line、table、chart
|
|
186
|
+
<!-- 在这里放置 shape、line、table、chart 等元素 -->
|
|
177
187
|
</data>
|
|
178
188
|
</slide>' '{slide:{content:$content}}')"
|
|
179
189
|
|
|
@@ -247,11 +257,12 @@ Shortcut 是对常用操作的高级封装(`lark-cli slides +<verb> [flags]`
|
|
|
247
257
|
| Shortcut | 说明 |
|
|
248
258
|
|----------|------|
|
|
249
259
|
| [`+create`](references/lark-slides-create.md) | 创建 PPT(可选 `--slides` 一步添加页面,支持 `<img src="@./local.png">` 占位符自动上传) |
|
|
260
|
+
| [`+xml-get`](references/lark-slides-xml-get.md) | 读取全文或单页 XML,并可保存到本地文件,避免终端输出被截断 |
|
|
250
261
|
| [`+media-upload`](references/lark-slides-media-upload.md) | 上传本地图片到指定演示文稿,返回 `file_token`(用作 `<img src="...">`),最大 20 MB |
|
|
251
262
|
| [`+replace-slide`](references/lark-slides-replace-slide.md) | 对已有幻灯片页面进行块级替换/插入(`block_replace` / `block_insert`),自动注入 id 和 `<content/>`,不改变页序 |
|
|
252
263
|
| [`+replace-pages`](references/lark-slides-replace-pages.md) | 在原演示文稿内批量重建多个页面:先创建新页到旧页前,再删除旧页;适合已有 Slides 的多页大改,不新建链接 |
|
|
253
264
|
|
|
254
|
-
没有 Shortcut 覆盖时使用原生 API。高频资源:`
|
|
265
|
+
没有 Shortcut 覆盖时使用原生 API。高频资源:`slides +xml-get` 读取全文;`xml_presentation.slide.create/delete/get/replace` 管理单页。
|
|
255
266
|
|
|
256
267
|
```bash
|
|
257
268
|
lark-cli schema slides.<resource>.<method> # 调用 API 前必须先查看参数结构
|
|
@@ -262,7 +273,7 @@ lark-cli slides <resource> <method> [flags] # 调用 API
|
|
|
262
273
|
|
|
263
274
|
## 核心规则
|
|
264
275
|
|
|
265
|
-
1. **先规划再写 XML**:新建演示文稿或大幅改写页面时,必须先写入 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json
|
|
276
|
+
1. **先规划再写 XML**:新建演示文稿或大幅改写页面时,必须先写入 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`;模板、风格和大纲只能作为规划输入,不能绕过规划层
|
|
266
277
|
2. **创建流程**:简单短 XML(1-3 页、结构简单、特殊字符少)可用 `slides +create --slides '[...]'` 一步创建;复杂内容、含图片/中文大段文本/嵌套引号/较多特殊字符,或超过 10 页时,默认先 `slides +create` 创建空白 PPT,再用 `xml_presentation.slide.create` 逐页添加
|
|
267
278
|
3. **`<slide>` 直接子元素只有 `<style>`、`<data>`、`<note>`**:文本和图形必须放在 `<data>` 内
|
|
268
279
|
4. **文本通过 `<content>` 表达**:必须用 `<content><p>...</p></content>`,不能把文字直接写在 shape 内
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
## Core Rules
|
|
8
8
|
|
|
9
|
-
- `asset_need` is metadata only. It can guide page design, but it must not require web search, local download, media upload, or external tools.
|
|
10
9
|
- Every planned asset must include a fallback visual plan. The fallback can use native charts, tables, whiteboard diagrams, placeholder regions, or XML shapes, text, and arrows as appropriate.
|
|
11
10
|
- Asset needs must serve the page's `key_message` and `visual_focus`. Do not add decorative assets that do not clarify the page.
|
|
12
11
|
- Prefer a few high-value asset plans over one asset on every page. For a 6-page technical or business deck, plan assets on at least 3 pages when the content allows.
|
|
@@ -2,260 +2,90 @@
|
|
|
2
2
|
|
|
3
3
|
本文档提供与 CLI schema 一致的调用示例,XML 内容均遵循 [slides_xml_schema_definition.xml](slides_xml_schema_definition.xml)。
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> **重要**:新建 PPT 请使用 `slides +create --slides`,传入由 `<slide>` XML 字符串组成的 JSON 数组;每个元素必须是一页完整的 `<slide>`。复杂内容建议先创建空白 PPT,再通过 `xml_presentation.slide.create` 逐页添加。完整 `<presentation>` XML 可用于本地 lint 或读取,但不能直接作为 `+create` 的提交参数。
|
|
6
6
|
|
|
7
7
|
## 目录
|
|
8
8
|
|
|
9
|
-
- [示例 1
|
|
10
|
-
- [示例 2: 创建后添加第一页](#示例-2-创建后添加第一页)
|
|
11
|
-
- [示例 3: 读取 XML 内容](#示例-3-读取-xml-内容)
|
|
12
|
-
- [示例 4: 在指定页面前插入新幻灯片](#示例-4-在指定页面前插入新幻灯片)
|
|
13
|
-
- [示例 5: 删除幻灯片](#示例-5-删除幻灯片)
|
|
14
|
-
- [示例 6: 从文件读取 XML 后添加页面](#示例-6-从文件读取-xml-后添加页面)
|
|
9
|
+
- [示例 1:可靠创建 6 页 PPT](#示例-1可靠创建-6-页-ppt)
|
|
15
10
|
- [示例 7: +replace-slide + block_insert 给已有页加图](#示例-7-replace-slide--block_insert-给已有页加图)
|
|
16
11
|
- [示例 8: +replace-slide + block_replace 替换一个块](#示例-8-replace-slide--block_replace-替换一个块)
|
|
17
12
|
|
|
18
|
-
## 示例 1
|
|
13
|
+
## 示例 1:可靠创建 6 页 PPT
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
lark-cli slides +create --title "项目汇报"
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
预期返回结构:
|
|
25
|
-
|
|
26
|
-
```json
|
|
27
|
-
{
|
|
28
|
-
"data": {
|
|
29
|
-
"xml_presentation_id": "slides_example_presentation_id",
|
|
30
|
-
"title": "项目汇报",
|
|
31
|
-
"revision_id": 1
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## 示例 2: 创建后添加第一页
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
PRESENTATION_ID=$(lark-cli slides +create --title "季度复盘" | jq -r '.data.xml_presentation_id')
|
|
40
|
-
|
|
41
|
-
lark-cli slides xml_presentation.slide create --as user --params "{\"xml_presentation_id\":\"$PRESENTATION_ID\"}" --data '{
|
|
42
|
-
"slide": {
|
|
43
|
-
"content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><style><fill><fillColor color=\"rgb(245, 245, 245)\"/></fill></style><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"72\" width=\"760\" height=\"90\"><content textType=\"title\"><p>2024 Q3 季度复盘</p></content></shape><shape type=\"text\" topLeftX=\"80\" topLeftY=\"190\" width=\"520\" height=\"220\"><content textType=\"body\"><p>关键结论</p><ul><li><p>收入增长 30%</p></li><li><p>重点项目全部上线</p></li><li><p>用户满意度持续提升</p></li></ul></content></shape><shape type=\"rect\" topLeftX=\"660\" topLeftY=\"180\" width=\"180\" height=\"140\"><fill><fillColor color=\"rgba(100, 149, 237, 0.25)\"/></fill><border color=\"rgb(100, 149, 237)\" width=\"2\"/></shape></data><note><content textType=\"body\"><p>讲述时先给结论,再补充数据。</p></content></note></slide>"
|
|
44
|
-
}
|
|
45
|
-
}'
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## 示例 3: 读取 XML 内容
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
lark-cli slides xml_presentations get --as user --params '{
|
|
52
|
-
"xml_presentation_id": "slides_example_presentation_id"
|
|
53
|
-
}'
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
提取 XML 内容:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
lark-cli slides xml_presentations get --as user --params '{
|
|
60
|
-
"xml_presentation_id": "slides_example_presentation_id"
|
|
61
|
-
}' | jq -r '.data.xml_presentation.content'
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
预期返回结构:
|
|
65
|
-
|
|
66
|
-
```json
|
|
67
|
-
{
|
|
68
|
-
"code": 0,
|
|
69
|
-
"data": {
|
|
70
|
-
"xml_presentation": {
|
|
71
|
-
"presentation_id": "slides_example_presentation_id",
|
|
72
|
-
"revision_id": 3,
|
|
73
|
-
"content": "<presentation xmlns=\"http://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
"msg": "success"
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## 示例 4: 在指定页面前插入新幻灯片
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
lark-cli slides xml_presentation.slide create --as user --params '{
|
|
84
|
-
"xml_presentation_id": "slides_example_presentation_id"
|
|
85
|
-
}' --data '{
|
|
86
|
-
"slide": {
|
|
87
|
-
"content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新增页面</p></content></shape><shape type=\"text\" topLeftX=\"80\" topLeftY=\"200\" width=\"800\" height=\"180\"><content textType=\"body\"><p>这是新增页面的正文。</p></content></shape></data></slide>"
|
|
88
|
-
},
|
|
89
|
-
"before_slide_id": "sld_before_target"
|
|
90
|
-
}'
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
预期返回结构:
|
|
94
|
-
|
|
95
|
-
```json
|
|
96
|
-
{
|
|
97
|
-
"code": 0,
|
|
98
|
-
"data": {
|
|
99
|
-
"slide_id": "slide_example_id",
|
|
100
|
-
"revision_id": 100
|
|
101
|
-
},
|
|
102
|
-
"msg": "success"
|
|
103
|
-
}
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## 示例 5: 删除幻灯片
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
lark-cli slides xml_presentation.slide delete --as user --params '{
|
|
110
|
-
"xml_presentation_id": "slides_example_presentation_id",
|
|
111
|
-
"slide_id": "slide_example_id"
|
|
112
|
-
}'
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
预期返回结构:
|
|
116
|
-
|
|
117
|
-
```json
|
|
118
|
-
{
|
|
119
|
-
"code": 0,
|
|
120
|
-
"data": {
|
|
121
|
-
"revision_id": 101
|
|
122
|
-
},
|
|
123
|
-
"msg": "success"
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## 示例 6: 从文件读取 XML 后添加页面
|
|
128
|
-
|
|
129
|
-
先准备 `slide.xml`:
|
|
130
|
-
|
|
131
|
-
```xml
|
|
132
|
-
<slide xmlns="http://www.larkoffice.com/sml/2.0">
|
|
133
|
-
<data>
|
|
134
|
-
<shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
|
|
135
|
-
<content textType="title">
|
|
136
|
-
<p>从文件加载</p>
|
|
137
|
-
</content>
|
|
138
|
-
</shape>
|
|
139
|
-
</data>
|
|
140
|
-
</slide>
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
先创建演示文稿:
|
|
15
|
+
### 1. 写入规划文件
|
|
144
16
|
|
|
145
17
|
```bash
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
再用 `jq` 组装请求体,从文件添加页面:
|
|
18
|
+
DECK_DIR=".lark-slides/plan/reliable-six-page-ppt"
|
|
19
|
+
mkdir -p "$DECK_DIR"
|
|
150
20
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
--params "{\"xml_presentation_id\":\"$PRESENTATION_ID\"}" \
|
|
154
|
-
--data "$(jq -n --arg content "$(cat slide.xml)" '{slide:{content:$content}}')"
|
|
21
|
+
# 按 planning-layer.md 写入 "$DECK_DIR/slide_plan.json",
|
|
22
|
+
# 至少记录 6 页的顺序和标题。
|
|
155
23
|
```
|
|
156
24
|
|
|
157
|
-
|
|
25
|
+
### 2. 为每页保存独立 XML
|
|
158
26
|
|
|
159
|
-
|
|
27
|
+
每个文件都是完整的 `<slide>`。下面的循环会生成 6 个独立 XML 文件;实际项目中可将每页主体替换为规划内容。
|
|
160
28
|
|
|
161
29
|
```bash
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
# 2. block_insert 到页面末尾(省略 insert_before_block_id)
|
|
170
|
-
# 注:<img .../> 是自闭合标签,CLI 不会展开(只有 <shape/> 会被补 <content/>)
|
|
171
|
-
lark-cli slides +replace-slide --as user \
|
|
172
|
-
--presentation "$PID" --slide-id "$SID" \
|
|
173
|
-
--parts "$(jq -n --arg token "$TOKEN" \
|
|
174
|
-
'[{action:"block_insert",insertion:("<img src=\""+$token+"\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"150\"/>")}]')"
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
预期返回:
|
|
178
|
-
|
|
179
|
-
```json
|
|
180
|
-
{
|
|
181
|
-
"ok": true,
|
|
182
|
-
"data": {
|
|
183
|
-
"xml_presentation_id": "slides_example_presentation_id",
|
|
184
|
-
"slide_id": "slide_example_id",
|
|
185
|
-
"parts_count": 1,
|
|
186
|
-
"revision_id": 102
|
|
187
|
-
}
|
|
188
|
-
}
|
|
30
|
+
titles=("主题与结论" "问题背景" "核心方法" "关键数据" "执行计划" "总结与行动")
|
|
31
|
+
for i in {1..6}; do
|
|
32
|
+
printf -v page '%02d' "$i"
|
|
33
|
+
cat > "$DECK_DIR/slide-$page.xml" <<XML
|
|
34
|
+
<slide xmlns="http://www.larkoffice.com/sml/2.0"><style><fill><fillColor color="rgb(248,250,252)"/></fill></style><data><shape type="rect" topLeftX="56" topLeftY="56" width="12" height="428"><fill><fillColor color="rgb(37,99,235)"/></fill></shape><shape type="text" topLeftX="100" topLeftY="160" width="760" height="90"><content textType="title" autoFit="normal-auto-fit"><p>${titles[$((i-1))]}</p></content></shape><shape type="text" topLeftX="100" topLeftY="290" width="700" height="70"><content textType="body" autoFit="normal-auto-fit"><p>页面主体内容。</p></content></shape></data></slide>
|
|
35
|
+
XML
|
|
36
|
+
done
|
|
189
37
|
```
|
|
190
38
|
|
|
191
|
-
|
|
39
|
+
### 3. 逐页运行 lint
|
|
192
40
|
|
|
193
|
-
|
|
41
|
+
提交前检查每个独立 XML。`summary.error_count` 必须为 `0`,否则先修复 XML 或布局问题。
|
|
194
42
|
|
|
195
43
|
```bash
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
{
|
|
201
|
-
"action": "block_replace",
|
|
202
|
-
"block_id": "bab",
|
|
203
|
-
"replacement": "<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"
|
|
204
|
-
}
|
|
205
|
-
]'
|
|
206
|
-
# CLI 实际发送的 replacement 根元素会带 id="bab",即使手写时省略了
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
失败时(3350001 错误,CLI 在 error 字段中给出 hint):
|
|
44
|
+
for slide_xml in "$DECK_DIR"/slide-0{1,2,3,4,5,6}.xml; do
|
|
45
|
+
python3 skills/lark-slides/scripts/xml_text_overlap_lint.py \
|
|
46
|
+
--input "$slide_xml" | tee "${slide_xml%.xml}.lint.json"
|
|
47
|
+
done
|
|
210
48
|
|
|
211
|
-
|
|
212
|
-
{
|
|
213
|
-
"ok": false,
|
|
214
|
-
"error": {
|
|
215
|
-
"type": "api",
|
|
216
|
-
"code": 3350001,
|
|
217
|
-
"message": "API error: [3350001] invalid param",
|
|
218
|
-
"hint": "common causes: (1) block_id not found in current slide ..."
|
|
219
|
-
}
|
|
220
|
-
}
|
|
49
|
+
test "$(jq -s 'map(.summary.error_count) | add' "$DECK_DIR"/slide-0{1,2,3,4,5,6}.lint.json)" = "0"
|
|
221
50
|
```
|
|
222
51
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
## 常见处理技巧
|
|
226
|
-
|
|
227
|
-
### 获取最新 revision_id
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
lark-cli slides xml_presentations get --as user --params '{
|
|
231
|
-
"xml_presentation_id": "slides_example_presentation_id"
|
|
232
|
-
}' | jq '.data.xml_presentation.revision_id'
|
|
233
|
-
```
|
|
52
|
+
### 4. 使用 `+create` 创建 6 页 PPT
|
|
234
53
|
|
|
235
|
-
|
|
54
|
+
`--slides` 接收由 6 个完整 `<slide>` XML 字符串组成的 JSON 数组;使用 `jq --rawfile` 避免手动处理 XML 引号和换行。
|
|
236
55
|
|
|
237
56
|
```bash
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
57
|
+
lark-cli slides +create --as user \
|
|
58
|
+
--title "可靠创建 6 页 PPT" \
|
|
59
|
+
--slides "$(jq -n \
|
|
60
|
+
--rawfile s1 "$DECK_DIR/slide-01.xml" \
|
|
61
|
+
--rawfile s2 "$DECK_DIR/slide-02.xml" \
|
|
62
|
+
--rawfile s3 "$DECK_DIR/slide-03.xml" \
|
|
63
|
+
--rawfile s4 "$DECK_DIR/slide-04.xml" \
|
|
64
|
+
--rawfile s5 "$DECK_DIR/slide-05.xml" \
|
|
65
|
+
--rawfile s6 "$DECK_DIR/slide-06.xml" \
|
|
66
|
+
'[$s1, $s2, $s3, $s4, $s5, $s6]')" \
|
|
67
|
+
> "$DECK_DIR/create.json"
|
|
68
|
+
create_status=$?
|
|
69
|
+
|
|
70
|
+
if [ "$create_status" -ne 0 ]; then
|
|
71
|
+
exit "$create_status"
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
if ! PRESENTATION_ID=$(jq -er '.data.xml_presentation_id | strings | select(length > 0)' "$DECK_DIR/create.json"); then
|
|
75
|
+
echo "missing non-empty data.xml_presentation_id in $DECK_DIR/create.json" >&2
|
|
76
|
+
exit 1
|
|
77
|
+
fi
|
|
78
|
+
echo "$PRESENTATION_ID" > "$DECK_DIR/xml_presentation_id"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
如果创建中途失败,先保存已经返回的 `xml_presentation_id`,再回读确认实际已创建页数。
|
|
82
|
+
|
|
83
|
+
### 5. 用 `+xml-get` 回读全文 XML
|
|
254
84
|
|
|
255
85
|
```bash
|
|
256
|
-
|
|
86
|
+
lark-cli slides +xml-get --as user \
|
|
87
|
+
--presentation "$PRESENTATION_ID" \
|
|
88
|
+
--output "$DECK_DIR/readback.xml" \
|
|
89
|
+
--json | tee "$DECK_DIR/readback.json"
|
|
257
90
|
```
|
|
258
91
|
|
|
259
|
-
### 真实示例
|
|
260
|
-
|
|
261
|
-
- [slides_demo.xml](slides_demo.xml) 提供了更完整的页面示例,包含 `theme`、渐变填充、图片、图标和备注内容。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# IconPark 图标
|
|
2
2
|
|
|
3
|
-
IconPark 图标通过 `<icon>` 写入 slides XML,`iconType` 必须来自本 skill
|
|
3
|
+
IconPark 图标通过 `<icon>` 写入 slides XML,`iconType` 必须来自本 skill 的离线索引,避免凭记忆拼路径。
|
|
4
4
|
|
|
5
5
|
## 机器优先流程
|
|
6
6
|
|
|
@@ -25,7 +25,7 @@ python3 skills/lark-slides/scripts/iconpark_tool.py list-categories
|
|
|
25
25
|
- 默认先检索:语义图标需求必须先用 `iconpark_tool.py search --limit 8` 或 `--limit 10`,让 agent 从候选里结合版面语义二次判断;不要阅读全文索引,也不要编造不存在的 `iconType`。
|
|
26
26
|
- 图标用于概念提示、步骤、状态、指标、角色和导航;不要用无关装饰图标填充版面。
|
|
27
27
|
- 常用尺寸:行内状态图标 16-24px,卡片标题图标 28-40px,主视觉图标 56-96px。
|
|
28
|
-
-
|
|
28
|
+
- 视觉规范要求图标设置非透明 `fillColor`,显式指定颜色并和背景有足够对比;深色背景优先放在浅色圆形/方形底上,或使用 `rgba(255, 255, 255, 1)` 作为图标填充色。
|
|
29
29
|
- 查不到合适图标时,用 shape、line、text 画 XML-native fallback,不留空图标位。
|
|
30
30
|
|
|
31
31
|
## 高频示例
|
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
创建一个新的飞书幻灯片演示文稿,可选一步添加页面内容。
|
|
7
7
|
|
|
8
|
+
- 禁止:从完整 <presentation> XML 解析/拆分/重序列化生成提交 payload。
|
|
9
|
+
- 推荐:提交源直接就是单页 <slide> XML;+create --slides 只接受已经人工/程序直接生成的 slide 数组,不接受由
|
|
10
|
+
presentation 动态拆出来的数组。
|
|
11
|
+
|
|
12
|
+
- 最稳:复杂 deck 默认空 deck + 单页 slide create,每次只提交一个 <slide>。
|
|
13
|
+
|
|
14
|
+
- 注意:复杂 XML 不适合直接塞命令行,中文、引号、特殊字符较多时,直接拼接 --slides 容易发生 shell 转义或截断。建议将每页 XML 保存为独立文件,使用 `jq --rawfile` 组装 JSON 数组,避免手动处理 XML 引号和换行。
|
|
15
|
+
|
|
8
16
|
## 命令
|
|
9
17
|
|
|
10
18
|
```bash
|
|
@@ -24,6 +32,18 @@ lark-cli slides +create --title "项目汇报" --as bot
|
|
|
24
32
|
lark-cli slides +create --title "项目汇报" --slides '[...]' --dry-run
|
|
25
33
|
```
|
|
26
34
|
|
|
35
|
+
复杂内容建议按页保存 XML,再用 `jq --rawfile` 组装 `--slides` 参数:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
lark-cli slides +create --as user --title "项目汇报" \
|
|
39
|
+
--slides "$(jq -n \
|
|
40
|
+
--rawfile s1 .lark-slides/plan/project/slide-01.xml \
|
|
41
|
+
--rawfile s2 .lark-slides/plan/project/slide-02.xml \
|
|
42
|
+
'[$s1, $s2]')"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`--rawfile` 会把文件内容作为字符串读入 JSON,自动处理 XML 中的引号和换行;不要手动拼接带大量转义符的 JSON 字符串。
|
|
46
|
+
|
|
27
47
|
## 返回值
|
|
28
48
|
|
|
29
49
|
工具成功执行后,返回一个 JSON 对象,包含以下字段:
|
|
@@ -133,5 +153,4 @@ lark-cli slides xml_presentation.slide create --as user \
|
|
|
133
153
|
|
|
134
154
|
## 相关命令
|
|
135
155
|
|
|
136
|
-
- [
|
|
137
|
-
- [xml_presentations get](lark-slides-xml-presentations-get.md) — 读取 PPT 内容
|
|
156
|
+
- [slides +xml-get](lark-slides-xml-get.md) — 读取 PPT 内容并保存到本地文件
|
|
@@ -125,4 +125,3 @@ lark-cli slides +replace-slide --as user \
|
|
|
125
125
|
|
|
126
126
|
- [+create](lark-slides-create.md) — 新建 PPT(支持 `@` 占位符自动上传图片)
|
|
127
127
|
- [+replace-slide](lark-slides-replace-slide.md) — 给已有页加图 / 换图(`block_insert` / `block_replace`)
|
|
128
|
-
- [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) — 创建 slide 页面(拿到 file_token 后塞进 XML)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# PPT Template Rewrite Principles
|
|
2
|
+
|
|
3
|
+
本页只约束“用户指定 PPT 模板、底稿、已有 PPTX/PDF/Slides,并要求基于它二次创作”的场景。核心原则:模板不是风格参考,而是必须沿用的编辑底稿。
|
|
4
|
+
|
|
5
|
+
## Import First
|
|
6
|
+
|
|
7
|
+
用户指定 PPT 模板时,先把模板导入成 Lark Slides。后续写入目标是导入后的 Slides,不是新建一个脱离模板的 deck,也不是先在本地重画 PPTX 再导入。
|
|
8
|
+
|
|
9
|
+
直接使用以下命令,不需要先加载 `lark-drive` skill:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
lark-cli drive +import --as user --file "<template.pptx>" --type slides --json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
可选参数:用 `--name "<title>"` 指定导入后的 Slides 标题;用 `--folder-token <FOLDER_TOKEN>` 指定目标文件夹。若返回 `ready=false` / `timed_out=true`,直接执行返回值里的 `next_command`;等价形式是:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
lark-cli drive +task_result --scenario import --ticket <TICKET>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
导入后必须回读 Slides 内容,理解每页的真实版式、字体、层级、图片、图表、shape、表格和文本容器。回读结果是模板二创的事实来源。
|
|
22
|
+
|
|
23
|
+
## Read Before Editing
|
|
24
|
+
|
|
25
|
+
编辑任何 PPT 页面前,必须先阅读该页面。
|
|
26
|
+
|
|
27
|
+
如果当前上下文中没有该页内容,必须重新读取页面;这里的“当前上下文”不包含 System Prompt。不能只凭记忆、文件名、缩略图印象或模板整体风格判断来编辑具体页面。
|
|
28
|
+
|
|
29
|
+
阅读页面时至少判断:
|
|
30
|
+
|
|
31
|
+
- 该页原本承担的角色,例如封面、章节页、目录、流程、对比、数据、总结。
|
|
32
|
+
- 该页的主要版式结构,例如图文关系、箭头、时间线、节点、表格、图表、左右对照、背景图或产品图。
|
|
33
|
+
- 哪些文本框、shape 标签、表格单元格或图表标签承载内容。
|
|
34
|
+
- 原页面的字体、字号、颜色、对齐、层级和留白关系。
|
|
35
|
+
|
|
36
|
+
## Edit The Imported Slides Directly
|
|
37
|
+
|
|
38
|
+
理解页面后,直接在导入后的 Slides 上编辑。允许的操作包括:
|
|
39
|
+
|
|
40
|
+
- 填写、替换、凝练或删除文字。
|
|
41
|
+
- 替换或补充图片。
|
|
42
|
+
- 更新图表、表格、数字标签或节点标签里的内容。
|
|
43
|
+
- 按需复制、删除或重排模板页。
|
|
44
|
+
- 在源页面没有合适承载位置时,做局部、小范围新增元素。
|
|
45
|
+
|
|
46
|
+
新增元素只能补足内容缺口,不能成为新的主版式。页面主体仍应由模板原有版式承载。
|
|
47
|
+
|
|
48
|
+
## Preserve Design
|
|
49
|
+
|
|
50
|
+
模板二创必须严格沿用原版式和字体,只改内容,不做设计。
|
|
51
|
+
|
|
52
|
+
默认保留:
|
|
53
|
+
|
|
54
|
+
- 页面布局、视觉层级、留白和对齐关系。
|
|
55
|
+
- 原字体、字号体系、颜色、文本框位置和 shape 顺序。
|
|
56
|
+
- 背景图、图片、logo、图表、表格、装饰形状、线条、图标和页面结构。
|
|
57
|
+
- 模板中不同页型之间的差异。
|
|
58
|
+
|
|
59
|
+
不要把模板页改造成统一的通用卡片、白板、标题栏、三栏、2x2 卡片或大面积遮罩。不要把模板当作背景图后另起一套设计系统。
|
|
60
|
+
|
|
61
|
+
## Content Only
|
|
62
|
+
|
|
63
|
+
内容必须优先进入原页面已有的文本框、shape 标签、节点、表格单元格、图表标签或注释容器。
|
|
64
|
+
|
|
65
|
+
如果原容器空间不足,优先:
|
|
66
|
+
|
|
67
|
+
- 凝练文字。
|
|
68
|
+
- 降低字号但保持原字体体系。
|
|
69
|
+
- 拆分到页面已有的邻近容器。
|
|
70
|
+
- 使用模板已有的注释、标签或补充说明区域。
|
|
71
|
+
- 复制同页或同模板中的原生容器样式做局部补充。
|
|
72
|
+
|
|
73
|
+
不要为了容纳长文案而重画页面主体结构。不要用新增大卡片遮住原图表、箭头、图片、背景或关键 shape。
|
|
74
|
+
|
|
75
|
+
## Readback And Tune
|
|
76
|
+
|
|
77
|
+
完成编辑后必须回读结果,并逐页微调。
|
|
78
|
+
|
|
79
|
+
回读时重点检查:
|
|
80
|
+
|
|
81
|
+
- 文字是否溢出、截断、压线或超出容器。
|
|
82
|
+
- 文本是否遮挡图片、图表、shape、箭头、节点或其他文字。
|
|
83
|
+
- shape 顺序是否导致内容被覆盖或遮住。
|
|
84
|
+
- 新内容是否仍然落在模板原有版式中,而不是覆盖模板结构。
|
|
85
|
+
- 字体、字号、颜色、对齐和层级是否仍贴近原页。
|
|
86
|
+
|
|
87
|
+
发现文字溢出时,优先凝练文字或缩减字号。发现遮挡时,调整 shape 顺序、局部位置或复用原有空白区域解决。只有在这些方法都不能满足内容表达时,才做局部新增或删除。
|
|
88
|
+
|
|
89
|
+
模板二创的完成标准不是“生成了一套看起来统一的新 PPT”,而是“原模板的版式、字体和视觉结构仍清晰存在,内容已经被准确替换,并且回读后没有溢出和遮挡”。
|
|
@@ -89,7 +89,7 @@ lark-cli slides +replace-pages --as user \
|
|
|
89
89
|
|
|
90
90
|
## 使用建议
|
|
91
91
|
|
|
92
|
-
1. 大幅改写前先 `
|
|
92
|
+
1. 大幅改写前先 `slides +xml-get` 保存当前 XML,并记录要替换页面的 `slide_id`。
|
|
93
93
|
2. 生成只含 `slide_id` 的 `pages.json` 后先跑 `--dry-run` 或 `--validate-only`。
|
|
94
94
|
3. 默认不要开 `--continue-on-error`,除非能接受部分页面已替换。
|
|
95
95
|
4. 替换后再回读全文 XML 并截图检查,确认页序、视觉和文本没有破损。
|
|
@@ -47,7 +47,7 @@ lark-cli slides +replace-slide --as user \
|
|
|
47
47
|
| 参数 | 必填 | 说明 |
|
|
48
48
|
|------|------|------|
|
|
49
49
|
| `--presentation` | 是 | `xml_presentation_id`、`/slides/<token>` URL,或 `/wiki/<token>` URL |
|
|
50
|
-
| `--slide-id` | 是 | 页面 ID(`xml_presentation.slide.get` / `
|
|
50
|
+
| `--slide-id` | 是 | 页面 ID(`xml_presentation.slide.get` / `slides +xml-get` 都能拿到) |
|
|
51
51
|
| `--parts` | 是 | JSON 数组(`[{...}, ...]`),单次最多 200 条。支持 `@<file>` 和 `-`(stdin)读取 |
|
|
52
52
|
| `--revision-id` | 否 | 基础版本号;默认 `-1` 表示基于最新版执行;传具体版本号时,服务端以该版本为 base 执行;**传不存在的版本号(超过当前 revision)返回 3350002** |
|
|
53
53
|
| `--tid` | 否 | 并发事务 ID;多人协作长事务才用,单次单人调用留空 |
|