@amaster.ai/pi-lark 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/skills/lark-apps/SKILL.md +24 -12
- package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
- package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
- package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
- package/skills/lark-apps/creative-design/assets/index.html +27 -0
- package/skills/lark-apps/creative-design/creative-design.md +239 -0
- package/skills/lark-apps/creative-design/references/aily.md +39 -0
- package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
- package/skills/lark-apps/creative-design/references/charts.md +165 -0
- package/skills/lark-apps/creative-design/references/claude.md +36 -0
- package/skills/lark-apps/creative-design/references/codex.md +32 -0
- package/skills/lark-apps/creative-design/references/data-report.md +108 -0
- package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
- package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
- package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
- package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
- package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
- package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
- package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
- package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
- package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
- package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
- package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
- package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
- package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
- package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
- package/skills/lark-apps/references/lark-apps-automation.md +80 -2
- package/skills/lark-apps/references/lark-apps-cache.md +61 -0
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +0 -1
- package/skills/lark-apps/references/lark-apps-create.md +1 -2
- package/skills/lark-apps/references/lark-apps-db.md +1 -1
- package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
- package/skills/lark-apps/references/lark-apps-file.md +2 -2
- package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
- package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
- package/skills/lark-apps/references/lark-apps-init.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +1 -1
- package/skills/lark-apps/references/lark-apps-local-dev.md +54 -11
- package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
- package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
- package/skills/lark-base/SKILL.md +20 -13
- package/skills/lark-base/references/lark-base-cell-value.md +3 -3
- package/skills/lark-base/references/lark-base-data-query.md +11 -4
- package/skills/lark-base/references/lark-base-field-create.md +4 -0
- package/skills/lark-base/references/lark-base-field-json.md +4 -4
- package/skills/lark-base/references/lark-base-field-update.md +17 -1
- package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
- package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
- package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
- package/skills/lark-base/references/lark-base-form-submit.md +16 -7
- package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
- package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
- package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
- package/skills/lark-base/references/lark-base-role-guide.md +11 -0
- package/skills/lark-base/references/lark-base-view-set-filter.md +11 -137
- package/skills/lark-base/references/role-config.md +31 -5
- package/skills/lark-calendar/SKILL.md +14 -8
- package/skills/lark-calendar/references/lark-calendar-create.md +6 -5
- package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-room-find.md +2 -1
- package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -1
- package/skills/lark-calendar/references/lark-calendar-update.md +10 -4
- package/skills/lark-contact/SKILL.md +19 -3
- package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +10 -2
- package/skills/lark-doc/references/lark-doc-whiteboard.md +9 -8
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +41 -0
- package/skills/lark-doc/references/lark-doc-xml.md +4 -3
- package/skills/lark-drive/SKILL.md +25 -45
- package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
- package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
- package/skills/lark-drive/references/lark-drive-apply-permission.md +2 -2
- package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
- package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
- package/skills/lark-drive/references/lark-drive-comment-location.md +9 -15
- package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
- package/skills/lark-drive/references/lark-drive-download.md +5 -1
- package/skills/lark-drive/references/lark-drive-list-comments.md +25 -68
- package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +2 -2
- package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
- package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
- package/skills/lark-drive/references/lark-drive-preview.md +11 -1
- package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
- package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
- package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
- package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
- package/skills/lark-drive/references/lark-drive-search.md +7 -1
- package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
- package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
- package/skills/lark-drive/references/lark-drive-upload.md +1 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
- package/skills/lark-event/SKILL.md +1 -0
- package/skills/lark-event/references/lark-event-application.md +38 -0
- package/skills/lark-im/SKILL.md +1 -1
- package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
- package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
- package/skills/lark-im/references/card/resource/icons.md +14 -0
- package/skills/lark-im/references/lark-im-flag-list.md +8 -7
- package/skills/lark-okr/SKILL.md +71 -26
- package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
- package/skills/lark-okr/references/lark-okr-create.md +173 -0
- package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
- package/skills/lark-okr/references/lark-okr-entities.md +1 -0
- package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
- package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
- package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
- package/skills/lark-slides/SKILL.md +115 -68
- package/skills/lark-slides/references/asset-planning.md +6 -4
- package/skills/lark-slides/references/iconpark.md +2 -2
- package/skills/lark-slides/references/lark-slides-create.md +16 -8
- package/skills/lark-slides/references/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +2 -3
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
- package/skills/lark-slides/references/lark-slides-replace-slide.md +0 -3
- package/skills/lark-slides/references/lark-slides-screenshot.md +4 -4
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +219 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +6 -5
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +65 -30
- package/skills/lark-slides/references/planning-layer.md +11 -10
- package/skills/lark-slides/references/slides_chart_demo.xml +1416 -1
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +492 -76
- package/skills/lark-slides/references/troubleshooting.md +25 -7
- package/skills/lark-slides/references/validation-checklist.md +53 -16
- package/skills/lark-slides/references/visual-planning.md +25 -22
- package/skills/lark-slides/references/xml-schema-quick-ref.md +281 -45
- package/skills/lark-slides/scripts/sxsd_validator.py +908 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1650 -165
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +3139 -513
- package/skills/lark-task/SKILL.md +7 -0
- package/skills/lark-task/references/lark-task-complete.md +6 -2
- package/skills/lark-task/references/lark-task-create.md +9 -0
- package/skills/lark-task/references/lark-task-update.md +6 -2
- package/skills/lark-whiteboard/SKILL.md +13 -12
- package/skills/lark-whiteboard/elements/layout.md +1 -1
- package/skills/lark-whiteboard/elements/schema.md +2 -2
- package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +15 -15
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +3 -3
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +7 -17
- package/skills/lark-whiteboard/routes/dsl.md +3 -3
- package/skills/lark-whiteboard/routes/mermaid.md +2 -2
- package/skills/lark-whiteboard/routes/svg-edit.md +4 -4
- package/skills/lark-whiteboard/routes/svg.md +11 -6
- package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
- package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
- package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/treemap.md +1 -1
- package/skills/lark-wiki/SKILL.md +1 -0
- package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -80
- package/skills/lark-slides/references/examples.md +0 -91
- package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
- package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
- package/skills/lark-slides/references/slide-templates.md +0 -201
- package/skills/lark-slides/references/slides_demo.xml +0 -226
- package/skills/lark-slides/references/xml-format-guide.md +0 -433
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# PPT Template Rewrite Principles
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
核心原则:模板不是风格参考,而是必须沿用的编辑底稿。
|
|
4
4
|
|
|
5
5
|
## Import First
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
如果用户提供的模板是 PPTX 格式,先把模板导入成 Lark Slides。后续写入目标是导入后的 Slides,不是新建一个脱离模板的 deck,也不是先在本地重画 PPTX 再导入。
|
|
8
8
|
|
|
9
|
-
直接使用以下命令,不需要先加载 `lark-drive`
|
|
9
|
+
直接使用以下命令,不需要先加载 `lark-drive` Skill:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
lark-cli drive +import --as user --file "<template.pptx>" --type slides --json
|
|
@@ -18,13 +18,9 @@ lark-cli drive +import --as user --file "<template.pptx>" --type slides --json
|
|
|
18
18
|
lark-cli drive +task_result --scenario import --ticket <TICKET>
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
导入后必须回读 Slides 内容,理解每页的真实版式、字体、层级、图片、图表、shape、表格和文本容器。回读结果是模板二创的事实来源。
|
|
22
|
-
|
|
23
21
|
## Read Before Editing
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
如果当前上下文中没有该页内容,必须重新读取页面;这里的“当前上下文”不包含 System Prompt。不能只凭记忆、文件名、缩略图印象或模板整体风格判断来编辑具体页面。
|
|
23
|
+
导入后必须阅读 Slides 内容,理解每页的真实版式、字体、层级、图片、图表、shape、表格和文本容器。阅读结果是后续编辑的事实来源。
|
|
28
24
|
|
|
29
25
|
阅读页面时至少判断:
|
|
30
26
|
|
|
@@ -47,7 +43,7 @@ lark-cli drive +task_result --scenario import --ticket <TICKET>
|
|
|
47
43
|
|
|
48
44
|
## Preserve Design
|
|
49
45
|
|
|
50
|
-
|
|
46
|
+
编辑必须严格沿用原版式和字体,只改内容,不做设计。
|
|
51
47
|
|
|
52
48
|
默认保留:
|
|
53
49
|
|
|
@@ -56,7 +52,7 @@ lark-cli drive +task_result --scenario import --ticket <TICKET>
|
|
|
56
52
|
- 背景图、图片、logo、图表、表格、装饰形状、线条、图标和页面结构。
|
|
57
53
|
- 模板中不同页型之间的差异。
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
不要把模板页改造成统一的通用卡片、空白板式布局、标题栏、三栏、2x2 卡片或大面积遮罩。不要把模板当作背景图后另起一套设计系统。
|
|
60
56
|
|
|
61
57
|
## Content Only
|
|
62
58
|
|
|
@@ -86,4 +82,4 @@ lark-cli drive +task_result --scenario import --ticket <TICKET>
|
|
|
86
82
|
|
|
87
83
|
发现文字溢出时,优先凝练文字或缩减字号。发现遮挡时,调整 shape 顺序、局部位置或复用原有空白区域解决。只有在这些方法都不能满足内容表达时,才做局部新增或删除。
|
|
88
84
|
|
|
89
|
-
|
|
85
|
+
完成标准是“原模板的版式、字体和视觉结构仍清晰存在,内容已经被准确替换,并且回读后没有溢出和遮挡”。
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# slides +replace-slide(块级替换 / 插入)
|
|
2
2
|
|
|
3
|
-
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
4
|
-
|
|
5
3
|
对指定 slide 做块级替换或插入。编辑已有 PPT 的主路径——`slide_id` 不变、页序不动、只影响被指定的块。
|
|
6
4
|
|
|
7
5
|
相比直接调 `xml_presentation.slide.replace`,这个 shortcut 的四个额外价值:
|
|
@@ -88,7 +86,6 @@ lark-cli slides +replace-slide --as user \
|
|
|
88
86
|
| `<table>` | 表格 | 整表替换会**重建内部 td id**,旧 td block_id 立即失效 |
|
|
89
87
|
| `<td>` | 单元格局部替换 | 只能 `block_replace`,不能 `block_insert`;`block_id` 必须是最新 `slide.get` 拿到的 td id |
|
|
90
88
|
| `<chart>` | 图表(line/bar/column/pie/area/radar/combo) | 必须嵌 `<chartPlotArea>` + `<chartData>` + `<dim1>/<dim2>/<chartField>` |
|
|
91
|
-
| `<whiteboard>` | 画板(SVG 或 Mermaid) | 内嵌 `<svg>` 或 `<mermaid>`;`slide.get` 返回结构不含内部数据,但可直接写完整新 XML 做 `block_replace` 覆盖;详见 [`lark-slides-whiteboard.md`](lark-slides-whiteboard.md) |
|
|
92
89
|
|
|
93
90
|
**不可作为根元素**:
|
|
94
91
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
获取幻灯片页面截图并保存为本地图片文件。默认用于已存在 PPT 页面截图;传入 `--content` 时用于直接渲染单个 `<slide>` XML 片段预览。本 shortcut 会在 CLI 进程内解码并写入文件,stdout 只返回文件路径、大小、页面 ID 等元信息,避免把图片 Base64 输出给模型。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
截图失败则降级到 XML 读回、结构 lint等非截图检查路径。
|
|
8
8
|
|
|
9
9
|
## 命令
|
|
10
10
|
|
|
@@ -26,8 +26,8 @@ lark-cli slides +screenshot --as user \
|
|
|
26
26
|
| 参数 | 必需 | 说明 |
|
|
27
27
|
|------|------|------|
|
|
28
28
|
| `--presentation` | list 模式必需 | `xml_presentation_id`、`/slides/` URL,或解析后为 slides 的 `/wiki/` URL。传 `--content` 时不能使用 |
|
|
29
|
-
| `--slide-id` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面 short ID
|
|
30
|
-
| `--slide-number` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 |
|
|
29
|
+
| `--slide-id` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面 short ID;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-id slide_1,slide_2`);一次最多 10 页(`--slide-id` + `--slide-number` 合计小于等于 10) |
|
|
30
|
+
| `--slide-number` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面页号;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-number 1,2,3`);一次最多 10 页(`--slide-id` + `--slide-number` 合计小于等于 10) |
|
|
31
31
|
| `--content` | render 模式必需 | 要直接渲染的 `<slide>` XML 片段;支持直接传值、`@file`、`-` stdin。传入后不能同时传 `--slide-id` / `--slide-number` |
|
|
32
32
|
| `--output-dir` | 否 | 输出目录,默认 `.lark-slides/screenshots`;必须是当前目录内的相对路径 |
|
|
33
33
|
| `--output-name` | 否 | render 模式的输出文件名 stem;未指定时优先用返回的 `slide_id`,否则用 `rendered-slide`。若目标文件已存在,会自动追加递增后缀避免覆盖 |
|
|
@@ -44,7 +44,7 @@ lark-cli slides +screenshot --as user \
|
|
|
44
44
|
|
|
45
45
|
### 多页截图
|
|
46
46
|
|
|
47
|
-
一次不要超过 10
|
|
47
|
+
一次不要超过 10 页;如需更多页面,分批调用。可以重复传参,也可以用逗号分隔一次传多个:
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
lark-cli slides +screenshot --as user \
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# lark-slides xml_presentation.slide create
|
|
2
|
+
|
|
3
|
+
## 用途
|
|
4
|
+
|
|
5
|
+
在指定的 XML 演示文稿中创建新的幻灯片页面,通常用于给 `slides +create` 创建出的空白 PPT 逐页补充内容。
|
|
6
|
+
|
|
7
|
+
## 命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
lark-cli slides xml_presentation.slide create --as user --params '<json_params>' --data '<json_data>'
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 参数说明
|
|
14
|
+
|
|
15
|
+
| 参数 | 类型 | 必需 | 说明 |
|
|
16
|
+
|------|------|------|------|
|
|
17
|
+
| `--params` | JSON string | 是 | 路径参数与查询参数 |
|
|
18
|
+
| `--data` | JSON string | 是 | 请求体,包含新页面内容 |
|
|
19
|
+
|
|
20
|
+
### params JSON 结构
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"xml_presentation_id": "slides_example_presentation_id",
|
|
25
|
+
"revision_id": -1,
|
|
26
|
+
"tid": "idMock"
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
| 字段 | 类型 | 必需 | 说明 |
|
|
31
|
+
|------|------|------|------|
|
|
32
|
+
| `xml_presentation_id` | string | 是 | 目标演示文稿的唯一标识符 |
|
|
33
|
+
| `revision_id` | integer | 否 | 演示文稿版本号,`-1` 表示最新版本 |
|
|
34
|
+
| `tid` | string | 否 | 锁的事务 ID |
|
|
35
|
+
|
|
36
|
+
### data JSON 结构
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"slide": {
|
|
41
|
+
"slide_id": "slide_example_id",
|
|
42
|
+
"content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\">...</slide>"
|
|
43
|
+
},
|
|
44
|
+
"before_slide_id": "slide_before_target"
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
| 字段 | 类型 | 必需 | 说明 |
|
|
49
|
+
|------|------|------|------|
|
|
50
|
+
| `slide.slide_id` | string | 否 | 幻灯片页面 short ID |
|
|
51
|
+
| `slide.content` | string | 否 | 新幻灯片的 XML 内容 |
|
|
52
|
+
| `before_slide_id` | string | 否 | 插入到指定页面之前 |
|
|
53
|
+
|
|
54
|
+
## slide XML 结构
|
|
55
|
+
|
|
56
|
+
`slide.content` 是一个完整的 `<slide>` 元素,遵循 SML 2.0 Schema:
|
|
57
|
+
|
|
58
|
+
```xml
|
|
59
|
+
<slide xmlns="http://www.larkoffice.com/sml/2.0">
|
|
60
|
+
<data>
|
|
61
|
+
<shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
|
|
62
|
+
<content textType="title">
|
|
63
|
+
<p>标题</p>
|
|
64
|
+
</content>
|
|
65
|
+
</shape>
|
|
66
|
+
</data>
|
|
67
|
+
</slide>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
详细格式请参考 [xml-schema-quick-ref.md](xml-schema-quick-ref.md)。
|
|
71
|
+
|
|
72
|
+
## 使用示例
|
|
73
|
+
|
|
74
|
+
### 在末尾添加幻灯片
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
lark-cli slides xml_presentation.slide create --as user --params '{
|
|
78
|
+
"xml_presentation_id": "slides_example_presentation_id"
|
|
79
|
+
}' --data '{
|
|
80
|
+
"slide": {
|
|
81
|
+
"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>"
|
|
82
|
+
}
|
|
83
|
+
}'
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 在指定页面前插入幻灯片
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
lark-cli slides xml_presentation.slide create --as user --params '{
|
|
90
|
+
"xml_presentation_id": "slides_example_presentation_id"
|
|
91
|
+
}' --data '{
|
|
92
|
+
"slide": {
|
|
93
|
+
"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></data></slide>"
|
|
94
|
+
},
|
|
95
|
+
"before_slide_id": "slide_before_target"
|
|
96
|
+
}'
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 带图形元素的幻灯片
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
lark-cli slides xml_presentation.slide create --as user --params '{
|
|
103
|
+
"xml_presentation_id": "slides_example_presentation_id"
|
|
104
|
+
}' --data '{
|
|
105
|
+
"slide": {
|
|
106
|
+
"content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"520\" height=\"120\"><content textType=\"title\"><p>数据展示</p></content></shape><shape type=\"rect\" topLeftX=\"700\" topLeftY=\"100\" width=\"200\" height=\"150\"><fill><fillColor color=\"rgb(100, 149, 237)\"/></fill></shape></data></slide>"
|
|
107
|
+
}
|
|
108
|
+
}'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 从文件读取 XML
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 先创建 slide.xml 文件
|
|
115
|
+
cat > slide.xml << 'EOF'
|
|
116
|
+
<slide xmlns="http://www.larkoffice.com/sml/2.0">
|
|
117
|
+
<data>
|
|
118
|
+
<shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
|
|
119
|
+
<content textType="title">
|
|
120
|
+
<p>从文件加载</p>
|
|
121
|
+
</content>
|
|
122
|
+
</shape>
|
|
123
|
+
<shape type="text" topLeftX="80" topLeftY="200" width="800" height="180">
|
|
124
|
+
<content textType="body">
|
|
125
|
+
<p>这是从文件读取的幻灯片内容</p>
|
|
126
|
+
</content>
|
|
127
|
+
</shape>
|
|
128
|
+
</data>
|
|
129
|
+
</slide>
|
|
130
|
+
EOF
|
|
131
|
+
|
|
132
|
+
# 然后创建幻灯片
|
|
133
|
+
lark-cli slides xml_presentation.slide create --as user \
|
|
134
|
+
--params '{"xml_presentation_id":"slides_example_presentation_id"}' \
|
|
135
|
+
--data "$(jq -n --arg content "$(cat slide.xml)" '{slide:{content:$content}}')"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 返回值
|
|
139
|
+
|
|
140
|
+
成功时返回创建的幻灯片信息:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"code": 0,
|
|
145
|
+
"data": {
|
|
146
|
+
"slide_id": "slide_example_id",
|
|
147
|
+
"revision_id": 100
|
|
148
|
+
},
|
|
149
|
+
"msg": "success"
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 返回字段说明
|
|
154
|
+
|
|
155
|
+
| 字段 | 类型 | 说明 |
|
|
156
|
+
|------|------|------|
|
|
157
|
+
| `data.slide_id` | string | 新幻灯片的唯一标识 |
|
|
158
|
+
| `data.revision_id` | integer | 演示文稿最新版本号 |
|
|
159
|
+
|
|
160
|
+
## slide 元素可用子元素
|
|
161
|
+
|
|
162
|
+
| 元素 | 说明 |
|
|
163
|
+
|------|------|
|
|
164
|
+
| `<style>` | 页面样式(背景填充) |
|
|
165
|
+
| `<data>` | 图形元素容器(shape、img、table、chart 等) |
|
|
166
|
+
| `<note>` | 演讲者备注 |
|
|
167
|
+
|
|
168
|
+
> [!IMPORTANT]
|
|
169
|
+
> **本地图片必须先上传**:`xml_presentation.slide.create` 不识别 `@./local.png` 占位符(那是 `+create --slides` 的语法糖)。直接调本接口添加带图新页时,必须先用 [`slides +media-upload`](lark-slides-media-upload.md) 拿到 `file_token`,再写进 `<img src="<file_token>">`。
|
|
170
|
+
>
|
|
171
|
+
> 如果是从零开始建带图 PPT,**强烈建议改用 [`slides +create --slides '[...]'`](lark-slides-create.md#本地图片path-占位符)** 一步搞定(自动上传 + 替换 token)。
|
|
172
|
+
|
|
173
|
+
## 常见错误
|
|
174
|
+
|
|
175
|
+
| 错误码 | 含义 | 解决方案 |
|
|
176
|
+
|--------|------|----------|
|
|
177
|
+
| 404 | 演示文稿不存在 | 检查 `xml_presentation_id` 是否正确 |
|
|
178
|
+
| 400 | XML 格式错误 | 检查 `slide.content` 是否是完整 `<slide>` 元素 |
|
|
179
|
+
| 400 | 请求体结构错误 | 检查是否按 `slide.content` 和 `before_slide_id` 包装 |
|
|
180
|
+
| 403 | 权限不足 | 检查是否拥有 `slides:presentation:update` 或 `slides:presentation:write_only` scope |
|
|
181
|
+
| 3350001 | XML 非 well-formed 或服务端参数校验失败 | 优先检查未转义字符:文本 `Q&A -> Q&A`,文本 `<` / `>` 写成 `<` / `>`,属性 URL `a=1&b=2 -> a=1&b=2` |
|
|
182
|
+
|
|
183
|
+
## 注意事项
|
|
184
|
+
|
|
185
|
+
1. **执行前必做**: 使用 `lark-cli schema slides.xml_presentation.slide.create` 查看最新的参数结构
|
|
186
|
+
2. **slide.content 格式**: 必须是完整的 `<slide>` 元素,不是整个 presentation
|
|
187
|
+
3. **命名空间建议**: 协议标准写法应带 `xmlns`,例如 `<slide xmlns="http://www.larkoffice.com/sml/2.0">`;当前服务端实现可能兼容不带 `xmlns` 的输入,但不作为协议保证
|
|
188
|
+
4. **fill / border 写法**: 颜色填充使用 `<fill><fillColor color="..."/></fill>`,边框常用 `<border color="..." width="2"/>`
|
|
189
|
+
5. **插入位置**: 通过 `before_slide_id` 指定插入目标,而不是用 `position`
|
|
190
|
+
6. **JSON 转义**: 如果直接内联 XML,需要正确转义双引号
|
|
191
|
+
7. **建议**: 先使用 `slides +xml-get` 获取现有结构,再添加新页面
|
|
192
|
+
|
|
193
|
+
## 批量添加建议
|
|
194
|
+
|
|
195
|
+
如果需要添加多张幻灯片,建议先明确每一页的 `before_slide_id`,或直接按最终顺序逐页追加:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
#!/bin/bash
|
|
199
|
+
|
|
200
|
+
PRESENTATION_ID="slides_example_presentation_id"
|
|
201
|
+
|
|
202
|
+
declare -a slides=(
|
|
203
|
+
'<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>页面 1</p></content></shape></data></slide>'
|
|
204
|
+
'<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>页面 2</p></content></shape></data></slide>'
|
|
205
|
+
'<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>页面 3</p></content></shape></data></slide>'
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
for slide_xml in "${slides[@]}"; do
|
|
209
|
+
payload=$(jq -n --arg content "$slide_xml" '{slide:{content:$content}}')
|
|
210
|
+
lark-cli slides xml_presentation.slide create --as user --params "{\"xml_presentation_id\":\"$PRESENTATION_ID\"}" --data "$payload"
|
|
211
|
+
done
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## 相关命令
|
|
215
|
+
|
|
216
|
+
- [slides +create](lark-slides-create.md) - 创建空白 PPT
|
|
217
|
+
- [slides +xml-get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容并保存到本地文件
|
|
218
|
+
- [xml_presentation.slide delete](lark-slides-xml-presentation-slide-delete.md) - 删除幻灯片页面
|
|
219
|
+
- [xml-schema-quick-ref.md](xml-schema-quick-ref.md) - XML Schema 快速参考
|
|
@@ -64,11 +64,11 @@ lark-cli slides xml_presentation.slide delete --as user --params '{"xml_presenta
|
|
|
64
64
|
|
|
65
65
|
```json
|
|
66
66
|
{
|
|
67
|
-
"
|
|
68
|
-
"identity": "user",
|
|
67
|
+
"code": 0,
|
|
69
68
|
"data": {
|
|
70
69
|
"revision_id": 100
|
|
71
|
-
}
|
|
70
|
+
},
|
|
71
|
+
"msg": "success"
|
|
72
72
|
}
|
|
73
73
|
```
|
|
74
74
|
|
|
@@ -121,5 +121,6 @@ done
|
|
|
121
121
|
|
|
122
122
|
## 相关命令
|
|
123
123
|
|
|
124
|
-
- [slides +create](lark-slides-create.md) -
|
|
125
|
-
- [slides +xml-get](lark-slides-xml-get.md) - 读取 PPT 内容并保存到本地文件
|
|
124
|
+
- [slides +create](lark-slides-create.md) - 创建空白 PPT
|
|
125
|
+
- [slides +xml-get](lark-slides-xml-presentations-get.md) - 读取 PPT 内容并保存到本地文件
|
|
126
|
+
- [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) - 添加幻灯片页面
|
|
@@ -94,7 +94,7 @@ lark-cli slides xml_presentation.slide get --as user --params '{
|
|
|
94
94
|
## 注意事项
|
|
95
95
|
|
|
96
96
|
1. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.get` 查看最新参数结构
|
|
97
|
-
2. **block_id 提取**:返回 XML 里每个顶层块(shape、img、table、chart
|
|
97
|
+
2. **block_id 提取**:返回 XML 里每个顶层块(shape、img、table、chart 等)的 `id` 属性即为 `block_id`,通常是 3 字符短码,例如 `<shape id="bUn" ...>`。用以下命令列出当前页所有 block_id:
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
100
|
lark-cli slides xml_presentation.slide get --as user \
|
|
@@ -106,5 +106,5 @@ lark-cli slides xml_presentation.slide get --as user --params '{
|
|
|
106
106
|
|
|
107
107
|
- [slides +replace-slide](lark-slides-replace-slide.md) — 块级替换 shortcut(推荐)
|
|
108
108
|
- [xml_presentation.slide replace](lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考
|
|
109
|
-
- [slides +xml-get](lark-slides-xml-get.md) — 读整个 PPT 并保存到本地文件
|
|
109
|
+
- [slides +xml-get](lark-slides-xml-presentations-get.md) — 读整个 PPT 并保存到本地文件
|
|
110
110
|
- [lark-slides-edit-workflows.md](lark-slides-edit-workflows.md) — 读-改-写闭环
|
|
@@ -173,13 +173,12 @@ lark-cli slides xml_presentation.slide replace --as user --params '{
|
|
|
173
173
|
## 注意事项
|
|
174
174
|
|
|
175
175
|
1. **parts 原子事务**:任一条失败整批回滚,不会出现"前几条成功、后几条失败"的中间态。
|
|
176
|
-
2. **block_id 的获取**:`slide.get` 返回的 XML 里每个块(shape、img、table、chart
|
|
176
|
+
2. **block_id 的获取**:`slide.get` 返回的 XML 里每个块(shape、img、table、chart 等)会带 3 位 short element ID,用这个值填 `block_id` / `insert_before_block_id`。
|
|
177
177
|
3. **`<img>` 必须用 file_token**:不能用外链 URL——先 [`slides +media-upload`](lark-slides-media-upload.md) 拿 token。
|
|
178
178
|
4. **不能字段级 patch**:要改一个块的某个属性(比如只改 `topLeftX`),得写整块新 XML 走 `block_replace`;API 不支持"只改一个字段"。
|
|
179
179
|
5. **`block_replace` 要求 `replacement` 根元素带 `id="<block_id>"`**:底层 API 的硬约束,缺失会返回 3350001。推荐走 shortcut [`+replace-slide`](lark-slides-replace-slide.md)——它会自动把 `id` 注入到 `replacement` 根元素上,用户写 XML 时不用自己加。
|
|
180
180
|
6. **`<shape>` 必须有 `<content/>` 子元素**:SML 2.0 schema 要求,缺失同样触发 3350001。shortcut [`+replace-slide`](lark-slides-replace-slide.md) 会自动注入 `<content/>`,直接调底层 API 需要自己加。
|
|
181
|
-
7.
|
|
182
|
-
8. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.replace` 查看最新参数结构。
|
|
181
|
+
7. **执行前必做**:`lark-cli schema slides.xml_presentation.slide.replace` 查看最新参数结构。
|
|
183
182
|
|
|
184
183
|
## 相关命令
|
|
185
184
|
|
|
@@ -4,13 +4,66 @@
|
|
|
4
4
|
|
|
5
5
|
读取飞书幻灯片(PPT)演示文稿的完整 XML 内容信息。
|
|
6
6
|
|
|
7
|
+
## Shortcut
|
|
8
|
+
|
|
9
|
+
使用 `slides +xml-get` shortcut,可以把 XML 保存到本地文件,避免终端输出被截断。
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
lark-cli slides +xml-get --as user \
|
|
14
|
+
--presentation "slides_example_presentation_id" \
|
|
15
|
+
--output .lark-slides/plan/slides_example_presentation_id/readback.xml \
|
|
16
|
+
--json
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 参数说明
|
|
20
|
+
|
|
21
|
+
| 参数 | 类型 | 必需 | 说明 |
|
|
22
|
+
|------|------|------|------|
|
|
23
|
+
| `--presentation` | string | 是 | 演示文稿的唯一标识符 |
|
|
24
|
+
| `--revision-id` | integer | 否 | 版本号,`-1` 表示最新版本 |
|
|
25
|
+
| `--output` | string | 是 | 本地文件,必须使用相对路径 |
|
|
26
|
+
| `--remove-attr-id` | flag | 否 | 移除 XML id 属性后读取 |
|
|
27
|
+
| `--json` | flag | 是 | 必须按照 json 格式输出 |
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### 基础示例
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
lark-cli slides +xml-get --as user \
|
|
34
|
+
--presentation "slides_example_presentation_id" \
|
|
35
|
+
--output .lark-slides/plan/slides_example_presentation_id/readback.xml \
|
|
36
|
+
--json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 指定版本读取
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
lark-cli slides +xml-get --as user \
|
|
43
|
+
--presentation "slides_example_presentation_id" \
|
|
44
|
+
--revision-id 10 \
|
|
45
|
+
--output .lark-slides/plan/slides_example_presentation_id/readback-r10.xml \
|
|
46
|
+
--json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 移除 XML id 属性后读取
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
lark-cli slides +xml-get --as user \
|
|
53
|
+
--presentation "slides_example_presentation_id" \
|
|
54
|
+
--remove-attr-id \
|
|
55
|
+
--output .lark-slides/plan/slides_example_presentation_id/readback-no-id.xml \
|
|
56
|
+
--json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
|
|
7
60
|
## 底层原生命令形态
|
|
8
61
|
|
|
9
62
|
```bash
|
|
10
63
|
lark-cli slides xml_presentations get --as user --params '<json_params>'
|
|
11
64
|
```
|
|
12
65
|
|
|
13
|
-
|
|
66
|
+
### 参数说明
|
|
14
67
|
|
|
15
68
|
| 参数 | 类型 | 必需 | 说明 |
|
|
16
69
|
|------|------|------|------|
|
|
@@ -30,30 +83,8 @@ lark-cli slides xml_presentations get --as user --params '<json_params>'
|
|
|
30
83
|
| `xml_presentation_id` | string | 是 | 演示文稿的唯一标识符 |
|
|
31
84
|
| `revision_id` | integer | 否 | 版本号,`-1` 表示最新版本 |
|
|
32
85
|
|
|
33
|
-
## 使用示例
|
|
34
86
|
|
|
35
|
-
###
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
lark-cli slides xml_presentations get --as user \
|
|
39
|
-
--params '{"xml_presentation_id":"slides_example_presentation_id","revision_id":-1}'
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 指定版本读取
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
lark-cli slides xml_presentations get --as user \
|
|
46
|
-
--params '{"xml_presentation_id":"slides_example_presentation_id","revision_id":10}'
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### 移除 XML id 属性后读取
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
lark-cli slides xml_presentations get --as user \
|
|
53
|
-
--params '{"xml_presentation_id":"slides_example_presentation_id","revision_id":-1,"remove_attr_id":true}'
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## 返回值
|
|
87
|
+
### 返回值
|
|
57
88
|
|
|
58
89
|
成功时返回演示文稿的完整信息:
|
|
59
90
|
|
|
@@ -79,7 +110,7 @@ lark-cli slides xml_presentations get --as user \
|
|
|
79
110
|
| `data.xml_presentation.revision_id` | integer | 版本号 |
|
|
80
111
|
| `data.xml_presentation.content` | string | XML 格式的完整内容 |
|
|
81
112
|
|
|
82
|
-
|
|
113
|
+
### 常见错误
|
|
83
114
|
|
|
84
115
|
| 错误码 | 含义 | 解决方案 |
|
|
85
116
|
|--------|------|----------|
|
|
@@ -87,13 +118,17 @@ lark-cli slides xml_presentations get --as user \
|
|
|
87
118
|
| 403 | 权限不足 | 检查是否拥有 `slides:presentation:read` scope,或是否有访问权限 |
|
|
88
119
|
| 400 | 参数格式错误 | 确保 `--params` 是合法的 JSON 字符串 |
|
|
89
120
|
|
|
90
|
-
## 注意事项
|
|
91
121
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
122
|
+
### 注意事项
|
|
123
|
+
|
|
124
|
+
1. lark-slides 工作流默认使用 `slides +xml-get`;只有必须直接调底层 API 时,才使用
|
|
125
|
+
2. 直接调用底层 API 前,使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
|
|
126
|
+
3. 返回的 XML 在 `data.xml_presentation.content` 字段中
|
|
127
|
+
4. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
|
|
128
|
+
5. 不要在普通工作流中把完整 XML 打到终端;用 `slides +xml-get --output` 保存文件
|
|
95
129
|
|
|
96
130
|
## 相关命令
|
|
97
131
|
|
|
98
|
-
- [slides +create](lark-slides-create.md) -
|
|
132
|
+
- [slides +create](lark-slides-create.md) - 创建空白 PPT
|
|
133
|
+
- [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) - 添加幻灯片页面
|
|
99
134
|
- [xml_presentation.slide delete](lark-slides-xml-presentation-slide-delete.md) - 删除幻灯片页面
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
4. 写入 `.lark-slides/plan/<deck-or-task-id>/slide_plan.json`。
|
|
13
13
|
5. 读取 `xml-schema-quick-ref.md`、`visual-planning.md` 和 `asset-planning.md`。
|
|
14
14
|
6. 按 plan、visual planning 和 asset planning 规则逐页生成 XML,把 `layout_type`、`visual_focus`、`text_density` 转成具体页面几何和文本量约束,并把缺失素材转成可执行兜底视觉。
|
|
15
|
-
7. 创建 PPT 后用 `slides +xml-get` 回读,核对页面数量、关键元素和 plan 到 XML
|
|
15
|
+
7. 创建 PPT 后用 `slides +xml-get` 回读,核对页面数量、关键元素和 plan 到 XML 的对应关系,空白 PPT 中没有 slide 元素。
|
|
16
|
+
|
|
16
17
|
|
|
17
18
|
## Plan Path
|
|
18
19
|
|
|
@@ -57,7 +58,7 @@ Exception:
|
|
|
57
58
|
"theme_style": "Clean business style, light background, restrained blue accent, strong visual hierarchy.",
|
|
58
59
|
"visual_system": {
|
|
59
60
|
"background_strategy": "Content pages use one light base; cover and closing may use a related dark treatment with the same accent system.",
|
|
60
|
-
"motif": "
|
|
61
|
+
"motif": "Consistent card style and numbered anchors.",
|
|
61
62
|
"color_roles": {
|
|
62
63
|
"primary": "Used for the dominant structural motif and about 60-70% of visual weight.",
|
|
63
64
|
"secondary": "Used for grouped regions, comparison panels, or supporting categories.",
|
|
@@ -87,7 +88,7 @@ Exception:
|
|
|
87
88
|
"asset_type": "logo",
|
|
88
89
|
"purpose": "Signal product or team identity on the opening page.",
|
|
89
90
|
"suggested_query": "product logo",
|
|
90
|
-
"fallback_if_missing": "
|
|
91
|
+
"fallback_if_missing": "Create a close-enough image with the image generation tool instead of a real logo."
|
|
91
92
|
},
|
|
92
93
|
"text_density": "low",
|
|
93
94
|
"speaker_intent": "Frame the decision and establish the deck's point of view."
|
|
@@ -137,7 +138,7 @@ Optional slide fields:
|
|
|
137
138
|
}
|
|
138
139
|
```
|
|
139
140
|
|
|
140
|
-
When `chart_contract.required == true`, XML generation must produce a `<chart>` element on that slide. A shape, line,
|
|
141
|
+
When `chart_contract.required == true`, XML generation must produce a `<chart>` element on that slide. A shape, line, or polyline approximation does not satisfy the plan.
|
|
141
142
|
|
|
142
143
|
`data_source` must be one of:
|
|
143
144
|
|
|
@@ -181,7 +182,7 @@ Text density must be realistic for the planned geometry. If a page needs long ti
|
|
|
181
182
|
Before generating XML, define a visual system that can survive the whole deck:
|
|
182
183
|
|
|
183
184
|
- `background_strategy`: specify the default background for normal content pages, and which page roles may intentionally differ. Do not let pages drift through near-identical but inconsistent background colors.
|
|
184
|
-
- `motif`: choose one
|
|
185
|
+
- `motif`: choose one reusable structural device, such as numbered node, card treatment, half-bleed image zone, headline, or footer. The motif should appear consistently enough that pages feel related.
|
|
185
186
|
- `color_roles`: assign primary, secondary, and accent roles. The same color must not mean unrelated things across pages.
|
|
186
187
|
- `cover_content_relationship`: if the cover uses a different dark or image-led treatment, state how it connects to content pages through shared colors, motifs, or geometry.
|
|
187
188
|
- `closing_relationship`: if the closing page mirrors the cover, state that explicitly so it looks intentional rather than like a new theme.
|
|
@@ -203,22 +204,22 @@ Do not hard-code a page number just because a previous deck used that pattern. P
|
|
|
203
204
|
|
|
204
205
|
## Asset Planning
|
|
205
206
|
|
|
206
|
-
`asset_need` is metadata. It can describe a desired figure, diagram, chart, icon, logo, screenshot, or fallback
|
|
207
|
+
`asset_need` is metadata. It can describe a desired figure, diagram, chart, icon, logo, screenshot, or fallback visual.
|
|
207
208
|
|
|
208
209
|
Use an object for one planned asset, an array for multiple real needs, or `asset_type: "none"` when no asset is useful. Each planned asset must include:
|
|
209
210
|
|
|
210
211
|
- `asset_type`: one of `paper_figure`, `architecture_diagram`, `icon`, `logo`, `chart`, `infographic`, `screenshot`, `flow_diagram`, or `none`.
|
|
211
212
|
- `purpose`: why this asset helps the page's key message.
|
|
212
213
|
- `suggested_query`: short future lookup hint only; do not execute it unless separately requested.
|
|
213
|
-
- `fallback_if_missing`:
|
|
214
|
+
- `fallback_if_missing`: a plan to create a close-enough image with the image generation tool, or a native `<chart>` for data.
|
|
214
215
|
- `chart_contract`: when `asset_type` is `chart` and the visual is a supported standard data chart, set this optional slide-level field so generation is locked to native `<chart>`.
|
|
215
216
|
|
|
216
217
|
For detailed rules and examples, read `asset-planning.md`.
|
|
217
218
|
|
|
218
219
|
Good examples:
|
|
219
220
|
|
|
220
|
-
- `{"asset_type":"architecture_diagram","purpose":"Explain component relationships.","suggested_query":"service architecture diagram","fallback_if_missing":"
|
|
221
|
-
- `{"asset_type":"logo","purpose":"Identify the customer context.","suggested_query":"customer logo","fallback_if_missing":"
|
|
221
|
+
- `{"asset_type":"architecture_diagram","purpose":"Explain component relationships.","suggested_query":"service architecture diagram","fallback_if_missing":"Render the component diagram with <shape> + <line>."}`
|
|
222
|
+
- `{"asset_type":"logo","purpose":"Identify the customer context.","suggested_query":"customer logo","fallback_if_missing":"Create a close-enough image with the image generation tool instead of a real logo."}`
|
|
222
223
|
- `{"asset_type":"chart","purpose":"Show adoption trend.","suggested_query":"monthly adoption trend chart","fallback_if_missing":"Render a native `<chart>` using the provided series when available; otherwise render a native `<chart>` with mock placeholder values and label it as 模拟数据,仅占位,待替换真实数据."}`
|
|
223
224
|
|
|
224
225
|
## XML Generation Contract
|
|
@@ -229,7 +230,7 @@ Before writing each slide XML, map the plan fields to concrete decisions:
|
|
|
229
230
|
- `layout_type` determines the coordinate structure and element types. Use `visual-planning.md` for concrete layout rules.
|
|
230
231
|
- `visual_focus` determines the largest visual region or emphasized object.
|
|
231
232
|
- `text_density` caps visible text volume.
|
|
232
|
-
- `asset_need` informs placeholder diagrams, icons, charts, screenshots, or
|
|
233
|
+
- `asset_need` informs placeholder diagrams, icons, charts, screenshots, or fallback visuals only. Missing real assets must use `fallback_if_missing`, not blank regions.
|
|
233
234
|
- `chart_contract` locks supported standard data charts to native `<chart>` output. Manual approximations are allowed only when the planned chart type is unsupported by `<chart>` or when the visual is explicitly non-data/decorative.
|
|
234
235
|
|
|
235
236
|
After creating the PPT, fetch the presentation and verify:
|