@amaster.ai/pi-lark 0.1.2-beta.44 → 0.1.2-beta.46

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.
Files changed (130) hide show
  1. package/package.json +2 -2
  2. package/skills/lark-apps/SKILL.md +23 -12
  3. package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
  4. package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
  5. package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
  6. package/skills/lark-apps/creative-design/assets/index.html +27 -0
  7. package/skills/lark-apps/creative-design/creative-design.md +239 -0
  8. package/skills/lark-apps/creative-design/references/aily.md +39 -0
  9. package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
  10. package/skills/lark-apps/creative-design/references/charts.md +165 -0
  11. package/skills/lark-apps/creative-design/references/claude.md +36 -0
  12. package/skills/lark-apps/creative-design/references/codex.md +32 -0
  13. package/skills/lark-apps/creative-design/references/data-report.md +108 -0
  14. package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
  15. package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
  16. package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
  17. package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
  18. package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
  19. package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
  20. package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
  21. package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
  22. package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
  23. package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
  24. package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
  25. package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
  26. package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
  27. package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
  28. package/skills/lark-apps/references/lark-apps-automation.md +80 -2
  29. package/skills/lark-apps/references/lark-apps-cloud-dev.md +0 -1
  30. package/skills/lark-apps/references/lark-apps-create.md +1 -2
  31. package/skills/lark-apps/references/lark-apps-db.md +1 -1
  32. package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
  33. package/skills/lark-apps/references/lark-apps-file.md +2 -2
  34. package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
  35. package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
  36. package/skills/lark-apps/references/lark-apps-init.md +1 -1
  37. package/skills/lark-apps/references/lark-apps-list.md +1 -1
  38. package/skills/lark-apps/references/lark-apps-local-dev.md +54 -11
  39. package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
  40. package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
  41. package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
  42. package/skills/lark-base/SKILL.md +4 -6
  43. package/skills/lark-base/references/lark-base-cell-value.md +3 -3
  44. package/skills/lark-base/references/lark-base-field-create.md +4 -0
  45. package/skills/lark-base/references/lark-base-field-json.md +4 -4
  46. package/skills/lark-base/references/lark-base-field-update.md +17 -1
  47. package/skills/lark-base/references/lark-base-form-submit.md +16 -7
  48. package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
  49. package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
  50. package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
  51. package/skills/lark-calendar/references/lark-calendar-create.md +1 -0
  52. package/skills/lark-calendar/references/lark-calendar-update.md +3 -0
  53. package/skills/lark-doc/references/lark-doc-fetch.md +10 -2
  54. package/skills/lark-doc/references/lark-doc-whiteboard.md +9 -8
  55. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +41 -0
  56. package/skills/lark-doc/references/lark-doc-xml.md +4 -3
  57. package/skills/lark-drive/SKILL.md +4 -1
  58. package/skills/lark-drive/references/lark-drive-comment-location.md +2 -2
  59. package/skills/lark-drive/references/lark-drive-search.md +1 -0
  60. package/skills/lark-drive/references/lark-drive-upload.md +1 -0
  61. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
  62. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
  63. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
  64. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
  65. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
  66. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
  67. package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
  68. package/skills/lark-event/SKILL.md +1 -0
  69. package/skills/lark-event/references/lark-event-application.md +38 -0
  70. package/skills/lark-im/SKILL.md +1 -1
  71. package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
  72. package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
  73. package/skills/lark-im/references/card/resource/icons.md +14 -0
  74. package/skills/lark-im/references/lark-im-flag-list.md +8 -7
  75. package/skills/lark-okr/SKILL.md +71 -26
  76. package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
  77. package/skills/lark-okr/references/lark-okr-create.md +173 -0
  78. package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
  79. package/skills/lark-okr/references/lark-okr-entities.md +1 -0
  80. package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
  81. package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
  82. package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
  83. package/skills/lark-slides/SKILL.md +104 -47
  84. package/skills/lark-slides/references/asset-planning.md +6 -4
  85. package/skills/lark-slides/references/iconpark.md +2 -2
  86. package/skills/lark-slides/references/lark-slides-create.md +2 -3
  87. package/skills/lark-slides/references/lark-slides-history.md +132 -0
  88. package/skills/lark-slides/references/lark-slides-media-upload.md +1 -2
  89. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
  90. package/skills/lark-slides/references/lark-slides-replace-slide.md +0 -3
  91. package/skills/lark-slides/references/lark-slides-screenshot.md +4 -4
  92. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +219 -0
  93. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +6 -5
  94. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
  95. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
  96. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +65 -30
  97. package/skills/lark-slides/references/planning-layer.md +11 -10
  98. package/skills/lark-slides/references/slides_chart_demo.xml +1416 -1
  99. package/skills/lark-slides/references/slides_xml_schema_definition.xml +1 -45
  100. package/skills/lark-slides/references/troubleshooting.md +25 -7
  101. package/skills/lark-slides/references/validation-checklist.md +53 -16
  102. package/skills/lark-slides/references/visual-planning.md +25 -22
  103. package/skills/lark-slides/references/xml-schema-quick-ref.md +243 -46
  104. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1054 -78
  105. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +957 -150
  106. package/skills/lark-task/SKILL.md +7 -0
  107. package/skills/lark-task/references/lark-task-complete.md +6 -2
  108. package/skills/lark-task/references/lark-task-update.md +6 -2
  109. package/skills/lark-whiteboard/SKILL.md +13 -12
  110. package/skills/lark-whiteboard/elements/layout.md +1 -1
  111. package/skills/lark-whiteboard/elements/schema.md +2 -2
  112. package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +15 -15
  113. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +3 -3
  114. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +7 -17
  115. package/skills/lark-whiteboard/routes/dsl.md +3 -3
  116. package/skills/lark-whiteboard/routes/mermaid.md +2 -2
  117. package/skills/lark-whiteboard/routes/svg-edit.md +4 -4
  118. package/skills/lark-whiteboard/routes/svg.md +11 -6
  119. package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
  120. package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
  121. package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
  122. package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
  123. package/skills/lark-whiteboard/scenes/treemap.md +1 -1
  124. package/skills/lark-wiki/SKILL.md +1 -0
  125. package/skills/lark-slides/references/examples.md +0 -91
  126. package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
  127. package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
  128. package/skills/lark-slides/references/slide-templates.md +0 -201
  129. package/skills/lark-slides/references/slides_demo.xml +0 -226
  130. package/skills/lark-slides/references/xml-format-guide.md +0 -433
@@ -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&amp;A`,文本 `<` / `>` 写成 `&lt;` / `&gt;`,属性 URL `a=1&b=2 -> a=1&amp;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
- "ok": true,
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) - 创建 PPT / 添加幻灯片页面
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、whiteboard 等)的 `id` 属性即为 `block_id`,通常是 3 字符短码,例如 `<shape id="bUn" ...>`。用以下命令列出当前页所有 block_id:
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、whiteboard 等)会带 3 位 short element ID,用这个值填 `block_id` / `insert_before_block_id`。
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. **`<whiteboard>` 返回结构不含内部数据**:`slide.get` 返回的 whiteboard 块只有外层标签和位置属性,SVG / Mermaid 内容不会随 XML 一起返回。但 `block_replace` 仍然可以强行覆盖——直接写入完整新 whiteboard XML 即可。
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
- 1. 直接调用底层 API 前,使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
93
- 2. 返回的 XML 在 `data.xml_presentation.content` 字段中
94
- 3. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
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) - 创建 PPT / 添加幻灯片页面
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": "A reusable left accent bar and consistent card/header treatments.",
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": "Use a small text badge and abstract shape motif instead of a real logo."
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, polyline, or whiteboard approximation does not satisfy the plan.
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 or two reusable structural devices, such as a side bar, header rail, numbered node, card treatment, diagram lane, or section band. The motif should appear consistently enough that pages feel related.
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 shape-based visual, but it must not require web search, local download, or media upload.
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`: concrete XML-native visual plan using shapes, labels, tables, whiteboard diagrams, or placeholder panels.
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":"Draw a component diagram with grouped boxes, connector arrows, and short labels."}`
221
- - `{"asset_type":"logo","purpose":"Identify the customer context.","suggested_query":"customer logo","fallback_if_missing":"Use a text label in a small badge."}`
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 shape-based fallback visuals only. Missing real assets must use `fallback_if_missing`, not blank regions.
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: