@amaster.ai/pi-lark 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +5 -1
  2. package/dist/config.d.ts +1 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +2 -2
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/package.json +3 -3
  10. package/skills/lark-apps/SKILL.md +59 -14
  11. package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
  12. package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
  13. package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
  14. package/skills/lark-apps/creative-design/assets/index.html +27 -0
  15. package/skills/lark-apps/creative-design/creative-design.md +239 -0
  16. package/skills/lark-apps/creative-design/references/aily.md +39 -0
  17. package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
  18. package/skills/lark-apps/creative-design/references/charts.md +165 -0
  19. package/skills/lark-apps/creative-design/references/claude.md +36 -0
  20. package/skills/lark-apps/creative-design/references/codex.md +32 -0
  21. package/skills/lark-apps/creative-design/references/data-report.md +108 -0
  22. package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
  23. package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
  24. package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
  25. package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
  26. package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
  27. package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
  28. package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
  29. package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
  30. package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
  31. package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
  32. package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
  33. package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
  34. package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
  35. package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
  36. package/skills/lark-apps/references/lark-apps-automation.md +80 -2
  37. package/skills/lark-apps/references/lark-apps-cache.md +61 -0
  38. package/skills/lark-apps/references/lark-apps-cloud-dev.md +5 -5
  39. package/skills/lark-apps/references/lark-apps-create.md +6 -4
  40. package/skills/lark-apps/references/lark-apps-db.md +1 -1
  41. package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
  42. package/skills/lark-apps/references/lark-apps-file.md +2 -2
  43. package/skills/lark-apps/references/lark-apps-get.md +1 -1
  44. package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
  45. package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
  46. package/skills/lark-apps/references/lark-apps-init.md +1 -1
  47. package/skills/lark-apps/references/lark-apps-list.md +2 -2
  48. package/skills/lark-apps/references/lark-apps-local-dev.md +80 -11
  49. package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
  50. package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
  51. package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
  52. package/skills/lark-base/SKILL.md +34 -19
  53. package/skills/lark-base/references/lark-base-cell-value.md +3 -3
  54. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +17 -1
  55. package/skills/lark-base/references/lark-base-dashboard.md +17 -4
  56. package/skills/lark-base/references/lark-base-data-query-guide.md +8 -0
  57. package/skills/lark-base/references/lark-base-data-query.md +11 -4
  58. package/skills/lark-base/references/lark-base-field-create.md +21 -6
  59. package/skills/lark-base/references/lark-base-field-json.md +9 -6
  60. package/skills/lark-base/references/lark-base-field-update.md +17 -1
  61. package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
  62. package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
  63. package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
  64. package/skills/lark-base/references/lark-base-form-submit.md +16 -7
  65. package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
  66. package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
  67. package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
  68. package/skills/lark-base/references/lark-base-role-guide.md +11 -0
  69. package/skills/lark-base/references/lark-base-view-set-filter.md +11 -137
  70. package/skills/lark-base/references/role-config.md +31 -5
  71. package/skills/lark-calendar/SKILL.md +14 -8
  72. package/skills/lark-calendar/references/lark-calendar-create.md +6 -5
  73. package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
  74. package/skills/lark-calendar/references/lark-calendar-room-find.md +2 -1
  75. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +1 -0
  76. package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -1
  77. package/skills/lark-calendar/references/lark-calendar-update.md +10 -4
  78. package/skills/lark-contact/SKILL.md +19 -3
  79. package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
  80. package/skills/lark-doc/SKILL.md +26 -61
  81. package/skills/lark-doc/references/genres/business-analysis.md +30 -0
  82. package/skills/lark-doc/references/genres/data-report.md +32 -0
  83. package/skills/lark-doc/references/genres/email.md +38 -0
  84. package/skills/lark-doc/references/genres/execution-plan.md +27 -0
  85. package/skills/lark-doc/references/genres/formal-doc.md +37 -0
  86. package/skills/lark-doc/references/genres/meeting-minutes.md +24 -0
  87. package/skills/lark-doc/references/genres/memo-brief.md +25 -0
  88. package/skills/lark-doc/references/genres/official-redhead.md +73 -0
  89. package/skills/lark-doc/references/genres/prd.md +26 -0
  90. package/skills/lark-doc/references/genres/proposal.md +24 -0
  91. package/skills/lark-doc/references/genres/research-report.md +32 -0
  92. package/skills/lark-doc/references/genres/retrospective.md +25 -0
  93. package/skills/lark-doc/references/genres/route-consumer.md +37 -0
  94. package/skills/lark-doc/references/genres/route-creative.md +36 -0
  95. package/skills/lark-doc/references/genres/route-knowledge.md +39 -0
  96. package/skills/lark-doc/references/genres/route-marketing.md +40 -0
  97. package/skills/lark-doc/references/genres/route-media.md +36 -0
  98. package/skills/lark-doc/references/genres/route-opinion.md +38 -0
  99. package/skills/lark-doc/references/genres/route-personal-brand.md +36 -0
  100. package/skills/lark-doc/references/genres/route-platform.md +9 -0
  101. package/skills/lark-doc/references/genres/route-report.md +10 -0
  102. package/skills/lark-doc/references/genres/route-workplace.md +17 -0
  103. package/skills/lark-doc/references/genres/sop-tutorial.md +41 -0
  104. package/skills/lark-doc/references/genres/technical-doc.md +39 -0
  105. package/skills/lark-doc/references/genres/wechat.md +39 -0
  106. package/skills/lark-doc/references/genres/weekly-report.md +24 -0
  107. package/skills/lark-doc/references/genres/white-paper.md +32 -0
  108. package/skills/lark-doc/references/genres/xiaohongshu.md +38 -0
  109. package/skills/lark-doc/references/lark-doc-create-workflow.md +121 -0
  110. package/skills/lark-doc/references/lark-doc-create.md +22 -48
  111. package/skills/lark-doc/references/lark-doc-fetch.md +84 -93
  112. package/skills/lark-doc/references/lark-doc-history.md +16 -15
  113. package/skills/lark-doc/references/lark-doc-md.md +5 -1
  114. package/skills/lark-doc/references/lark-doc-media-download.md +2 -1
  115. package/skills/lark-doc/references/lark-doc-script.md +76 -0
  116. package/skills/lark-doc/references/lark-doc-update.md +70 -222
  117. package/skills/lark-doc/references/lark-doc-whiteboard.md +14 -17
  118. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +46 -0
  119. package/skills/lark-doc/references/lark-doc-xml.md +38 -166
  120. package/skills/lark-drive/SKILL.md +32 -50
  121. package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
  122. package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
  123. package/skills/lark-drive/references/lark-drive-apply-permission.md +3 -3
  124. package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
  125. package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
  126. package/skills/lark-drive/references/lark-drive-comment-location.md +9 -15
  127. package/skills/lark-drive/references/lark-drive-copy.md +87 -0
  128. package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
  129. package/skills/lark-drive/references/lark-drive-download.md +6 -1
  130. package/skills/lark-drive/references/lark-drive-export.md +3 -0
  131. package/skills/lark-drive/references/lark-drive-list-comments.md +25 -68
  132. package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
  133. package/skills/lark-drive/references/lark-drive-member-add.md +2 -2
  134. package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
  135. package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
  136. package/skills/lark-drive/references/lark-drive-preview.md +11 -1
  137. package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
  138. package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
  139. package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
  140. package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
  141. package/skills/lark-drive/references/lark-drive-search.md +7 -1
  142. package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
  143. package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
  144. package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
  145. package/skills/lark-drive/references/lark-drive-update-title.md +78 -0
  146. package/skills/lark-drive/references/lark-drive-upload.md +1 -0
  147. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
  148. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
  149. package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
  150. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
  151. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
  152. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
  153. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
  154. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
  155. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
  156. package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
  157. package/skills/lark-event/SKILL.md +8 -4
  158. package/skills/lark-event/references/lark-event-application.md +38 -0
  159. package/skills/lark-event/references/lark-event-vc.md +8 -2
  160. package/skills/lark-im/SKILL.md +9 -9
  161. package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
  162. package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
  163. package/skills/lark-im/references/card/resource/icons.md +14 -0
  164. package/skills/lark-im/references/lark-im-chat-list.md +9 -2
  165. package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
  166. package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
  167. package/skills/lark-im/references/lark-im-chat-search.md +9 -2
  168. package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
  169. package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
  170. package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
  171. package/skills/lark-im/references/lark-im-flag-list.md +9 -8
  172. package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
  173. package/skills/lark-im/references/lark-im-messages-resources-download.md +19 -25
  174. package/skills/lark-im/references/lark-im-messages-search.md +4 -5
  175. package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
  176. package/skills/lark-mail/references/lark-mail-triage.md +19 -4
  177. package/skills/lark-minutes/SKILL.md +1 -1
  178. package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
  179. package/skills/lark-okr/SKILL.md +71 -26
  180. package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
  181. package/skills/lark-okr/references/lark-okr-create.md +173 -0
  182. package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
  183. package/skills/lark-okr/references/lark-okr-entities.md +1 -0
  184. package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
  185. package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
  186. package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
  187. package/skills/lark-shared/SKILL.md +3 -3
  188. package/skills/lark-sheets/SKILL.md +83 -82
  189. package/skills/lark-sheets/references/lark-sheets-batch-update.md +13 -58
  190. package/skills/lark-sheets/references/lark-sheets-chart.md +2 -1
  191. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +1 -1
  192. package/skills/lark-sheets/references/lark-sheets-range-operations.md +5 -5
  193. package/skills/lark-sheets/references/lark-sheets-read-data.md +80 -6
  194. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +21 -10
  195. package/skills/lark-sheets/references/lark-sheets-styles-put.md +93 -0
  196. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +2 -2
  197. package/skills/lark-sheets/references/lark-sheets-workbook.md +4 -3
  198. package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -12
  199. package/skills/lark-sheets/scripts/lark_detect_subtables.py +593 -0
  200. package/skills/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
  201. package/skills/lark-sheets/scripts/lark_profile_table.py +614 -0
  202. package/skills/lark-sheets/scripts/lark_sheet_range.py +176 -0
  203. package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
  204. package/skills/lark-sheets/scripts/sheets_df.py +21 -3
  205. package/skills/lark-slides/SKILL.md +134 -104
  206. package/skills/lark-slides/references/asset-planning.md +6 -4
  207. package/skills/lark-slides/references/iconpark.md +2 -2
  208. package/skills/lark-slides/references/lark-slides-add-slide.md +92 -0
  209. package/skills/lark-slides/references/lark-slides-create.md +86 -66
  210. package/skills/lark-slides/references/lark-slides-delete-slide.md +65 -0
  211. package/skills/lark-slides/references/lark-slides-edit-workflows.md +6 -7
  212. package/skills/lark-slides/references/lark-slides-history.md +132 -0
  213. package/skills/lark-slides/references/lark-slides-media-upload.md +4 -27
  214. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
  215. package/skills/lark-slides/references/lark-slides-replace-slide.md +22 -4
  216. package/skills/lark-slides/references/lark-slides-screenshot.md +33 -15
  217. package/skills/lark-slides/references/lark-slides-update-slide.md +146 -0
  218. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
  219. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
  220. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +90 -32
  221. package/skills/lark-slides/references/planning-layer.md +11 -10
  222. package/skills/lark-slides/references/slides_chart_demo.xml +1415 -1
  223. package/skills/lark-slides/references/slides_xml_schema_definition.xml +539 -79
  224. package/skills/lark-slides/references/troubleshooting.md +26 -9
  225. package/skills/lark-slides/references/validation-checklist.md +55 -18
  226. package/skills/lark-slides/references/visual-planning.md +25 -22
  227. package/skills/lark-slides/references/xml-schema-quick-ref.md +299 -51
  228. package/skills/lark-slides/scripts/sxsd_validator.py +1052 -0
  229. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1964 -195
  230. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +4051 -501
  231. package/skills/lark-task/SKILL.md +7 -0
  232. package/skills/lark-task/references/lark-task-complete.md +6 -2
  233. package/skills/lark-task/references/lark-task-create.md +9 -0
  234. package/skills/lark-task/references/lark-task-update.md +6 -2
  235. package/skills/lark-whiteboard/SKILL.md +21 -13
  236. package/skills/lark-whiteboard/elements/layout.md +1 -1
  237. package/skills/lark-whiteboard/elements/schema.md +2 -2
  238. package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +17 -16
  239. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +7 -7
  240. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +23 -31
  241. package/skills/lark-whiteboard/routes/dsl.md +11 -5
  242. package/skills/lark-whiteboard/routes/mermaid.md +3 -3
  243. package/skills/lark-whiteboard/routes/svg-edit.md +9 -6
  244. package/skills/lark-whiteboard/routes/svg.md +14 -7
  245. package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
  246. package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
  247. package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
  248. package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
  249. package/skills/lark-whiteboard/scenes/mention.md +71 -0
  250. package/skills/lark-whiteboard/scenes/treemap.md +1 -1
  251. package/skills/lark-wiki/SKILL.md +6 -3
  252. package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
  253. package/skills/lark-doc/references/lark-doc-word-stat.md +0 -93
  254. package/skills/lark-doc/references/style/lark-doc-create-workflow.md +0 -47
  255. package/skills/lark-doc/references/style/lark-doc-style.md +0 -68
  256. package/skills/lark-doc/references/style/lark-doc-update-workflow.md +0 -48
  257. package/skills/lark-doc/scripts/doc_word_stat.py +0 -1243
  258. package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -80
  259. package/skills/lark-slides/references/examples.md +0 -91
  260. package/skills/lark-slides/references/lark-slides-replace-pages.md +0 -95
  261. package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
  262. package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
  263. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -125
  264. package/skills/lark-slides/references/slide-templates.md +0 -201
  265. package/skills/lark-slides/references/slides_demo.xml +0 -226
  266. package/skills/lark-slides/references/xml-format-guide.md +0 -433
@@ -4,7 +4,7 @@
4
4
 
5
5
  获取幻灯片页面截图并保存为本地图片文件。默认用于已存在 PPT 页面截图;传入 `--content` 时用于直接渲染单个 `<slide>` XML 片段预览。本 shortcut 会在 CLI 进程内解码并写入文件,stdout 只返回文件路径、大小、页面 ID 等元信息,避免把图片 Base64 输出给模型。
6
6
 
7
- 注意:该截图能力受应用白名单限制,绝大多数应用不可用。若截图失败,记录错误即可;不要引导用户申请 `slides:presentation:screenshot` 权限。后续按 `validation-checklist.md` 走非截图验证,不要声称已完成截图验收。
7
+ 截图失败则降级到 XML 读回、结构 lint等非截图检查路径。
8
8
 
9
9
  ## 命令
10
10
 
@@ -21,37 +21,52 @@ lark-cli slides +screenshot --as user \
21
21
  --content @slide.xml
22
22
  ```
23
23
 
24
+ ## 截图全部页面
25
+
26
+ 枚举全部页面的 `slide_id` 或页码,按每批最多 10 页分组并串行调用 `slides +screenshot`,复用同一个 `--output-dir`;记录失败批次,已完成批次不重复执行。
27
+
24
28
  ## 参数
25
29
 
26
30
  | 参数 | 必需 | 说明 |
27
31
  |------|------|------|
28
32
  | `--presentation` | list 模式必需 | `xml_presentation_id`、`/slides/` URL,或解析后为 slides 的 `/wiki/` URL。传 `--content` 时不能使用 |
29
- | `--slide-id` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面 short ID;多页截图时重复传入;一次最多 10 页(`--slide-id` + `--slide-number` 合计小于等于 10) |
30
- | `--slide-number` | list 模式至少提供 `--slide-id` / `--slide-number` 之一 | 页面页号;多页截图时重复传入;一次最多 10 页(`--slide-id` + `--slide-number` 合计小于等于 10) |
33
+ | `--slide-id` | list 模式与 `--slide-number` 二选一 | 页面 short ID;不能与 `--slide-number` 同时使用;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-id slide_1,slide_2`);一次最多 10 个 ID |
34
+ | `--slide-number` | list 模式与 `--slide-id` 二选一 | 页面页号;不能与 `--slide-id` 同时使用;多页截图时重复传入,或用逗号分隔一次传多个(如 `--slide-number 1,2,3`);一次最多 10 个页码 |
31
35
  | `--content` | render 模式必需 | 要直接渲染的 `<slide>` XML 片段;支持直接传值、`@file`、`-` stdin。传入后不能同时传 `--slide-id` / `--slide-number` |
36
+ | `--output` | 否 | 单张截图的期望相对输出路径,可不写扩展名,显式扩展名只支持 `.png`、`.jpg`、`.jpeg`。只能选择一页,不能与 `--output-dir` / `--output-name` 同时使用;最终路径以返回的 `output` 为准 |
32
37
  | `--output-dir` | 否 | 输出目录,默认 `.lark-slides/screenshots`;必须是当前目录内的相对路径 |
33
- | `--output-name` | 否 | render 模式的输出文件名 stem;未指定时优先用返回的 `slide_id`,否则用 `rendered-slide`。若目标文件已存在,会自动追加递增后缀避免覆盖 |
38
+ | `--output-name` | 否 | 仅用于 `--content` render 模式设置输出文件名 stem。普通页面截图传入该参数会返回 `validation/invalid_argument`(`param: --output-name`)并提示改用 `--output` |
34
39
 
35
40
  ## 示例
36
41
 
37
- ### 单页截图
42
+ ### 单页截图并固定路径
38
43
 
39
44
  ```bash
40
45
  lark-cli slides +screenshot --as user \
41
46
  --presentation slides_example_presentation_id \
42
- --slide-number 1
47
+ --slide-number 1 \
48
+ --output .lark-slides/screenshots/example-deck-task/page-01
49
+ ```
50
+
51
+ 按 `slide_id` 选择单页时同样使用 `--output`:
52
+
53
+ ```bash
54
+ lark-cli slides +screenshot --as user \
55
+ --presentation slides_example_presentation_id \
56
+ --slide-id slide_example_id \
57
+ --output .lark-slides/screenshots/example-deck-task/page-01
43
58
  ```
44
59
 
45
60
  ### 多页截图
46
61
 
47
- 一次不要超过 10 页;如需更多页面,分批调用。
62
+ 一次不要超过 10 页;如需更多页面,分批调用。可以重复传参,也可以用逗号分隔一次传多个:
48
63
 
49
64
  ```bash
50
65
  lark-cli slides +screenshot --as user \
51
66
  --presentation slides_example_presentation_id \
52
67
  --slide-number 1 \
53
68
  --slide-number 2 \
54
- --output-dir .lark-slides/screenshots/demo
69
+ --output-dir .lark-slides/screenshots/example-deck-task
55
70
  ```
56
71
 
57
72
  ### 渲染 XML 预览
@@ -59,7 +74,7 @@ lark-cli slides +screenshot --as user \
59
74
  ```bash
60
75
  lark-cli slides +screenshot --as user \
61
76
  --content @.lark-slides/out/demo/slide.xml \
62
- --output-name preview
77
+ --output .lark-slides/screenshots/example-deck-task/preview
63
78
  ```
64
79
 
65
80
  ## 返回值
@@ -72,13 +87,13 @@ lark-cli slides +screenshot --as user \
72
87
  "identity": "user",
73
88
  "data": {
74
89
  "xml_presentation_id": "slides_example_presentation_id",
75
- "output_dir": ".lark-slides/screenshots",
90
+ "output": "/abs/path/.lark-slides/screenshots/example-deck-task/page-01.jpg",
76
91
  "screenshots": [
77
92
  {
78
93
  "slide_id": "slide_example_id",
79
94
  "slide_number": 1,
80
- "format": "png",
81
- "path": "/abs/path/.lark-slides/screenshots/slides_example_presentation_id_p001_slide_example_id.png",
95
+ "format": "jpeg",
96
+ "path": "/abs/path/.lark-slides/screenshots/example-deck-task/page-01.jpg",
82
97
  "size": 12345
83
98
  }
84
99
  ]
@@ -92,6 +107,9 @@ lark-cli slides +screenshot --as user \
92
107
  2. 已存在 PPT 页面截图时,不传 `--content`,用 `--presentation` + `--slide-id` 或 `--slide-number`。
93
108
  3. 本地 XML 预览时,传 `--content @file` 或 `--content -`,内容应为单个 `<slide>` XML 片段;此时不要传 `--presentation` / `--slide-id` / `--slide-number`。
94
109
  4. `slide_id` 是页面 short ID,页码请用 `--slide-number`。
95
- 5. list 模式一次最多传 10 页(`--slide-id` + `--slide-number` 合计小于等于 10);更多页面请分批截图。
96
- 6. list 模式默认文件名包含 presentation ID、页码和/或 slide ID;文件已存在时自动追加 `_2`、`_3` 等后缀,避免覆盖旧截图。
97
- 7. 截图来自服务端渲染结果,适合创建/替换后验证页面是否为空白、破图或布局明显异常。
110
+ 5. list 模式下 `--slide-id` 与 `--slide-number` 必须二选一;同一类型 selector 一次最多传 10 个,更多页面请分批截图。
111
+ 6. 单张使用 `--output`,多张使用 `--output-dir`,由 CLI 按页面信息生成文件名。新建或大幅改写 Deck 时,截图目录复用 planning 阶段的 `<deck-or-task-id>`;已有 Deck 没有 task ID 时,使用 presentation ID 作为目录名。
112
+ 7. CLI 不转换图片格式,也不要求模型预判服务端格式。未写扩展名时自动追加真实扩展名;请求扩展名与真实格式不一致时保留目录和名称、修正扩展名,例如请求 `slide3.png` 而服务端返回 JPEG 时实际保存为 `slide3.jpg`。
113
+ 8. 发生扩展名修正或同名避让时会返回原始 `requested_output`、实际绝对路径 `output` 和 `output_adjusted: true`;后续必须使用 `output` / `screenshots[].path`,不要继续猜测请求路径。
114
+ 9. list 模式默认文件名包含 presentation ID、页码和/或 slide ID。
115
+ 10. 截图来自服务端渲染结果,适合创建/替换后验证页面是否为空白、破图或布局明显异常。
@@ -0,0 +1,146 @@
1
+ # slides +update-slide(整页更新已有页面)
2
+
3
+ 把一整页 XML 交给某个已有页面,页面变成 `--content` 描述的样子。`slide_id` 和页序都不变。
4
+
5
+ ## 命令
6
+
7
+ ```bash
8
+ # 标准用法:整页 XML 从文件读(推荐:避免 shell 转义和长参数截断)
9
+ lark-cli slides +update-slide --as user \
10
+ --presentation "https://xxx.larkoffice.com/slides/SCtZ...ynae" \
11
+ --slide-id "piy" \
12
+ --content @page.xml
13
+
14
+ # XML 从 stdin 读
15
+ cat page.xml | lark-cli slides +update-slide --as user \
16
+ --presentation "$PRES" --slide-id "$SLIDE" --content -
17
+
18
+ # wiki 链接直接传(CLI 自动解析并校验 obj_type=slides)
19
+ lark-cli slides +update-slide --as user \
20
+ --presentation "https://xxx.larkoffice.com/wiki/wikcn..." \
21
+ --slide-id "piy" --content @page.xml
22
+
23
+ # 预览请求,不实际写入
24
+ lark-cli slides +update-slide --as user \
25
+ --presentation "$PRES" --slide-id "$SLIDE" --content @page.xml --dry-run
26
+ ```
27
+
28
+ ## 参数
29
+
30
+ | 参数 | 必需 | 说明 |
31
+ |------|------|------|
32
+ | `--presentation` | 是 | `xml_presentation_id`、`/slides/` URL 或 `/wiki/` URL |
33
+ | `--slide-id` | 是 | 要整页替换的页面 `slide_id` |
34
+ | `--content` | 是 | 这一页的完整目标 XML,单一 `<slide>` 根;支持字面量、`@file`、stdin `-`。别名:`--xml` / `--slide-xml` / `--slide-content` / `--content-xml` |
35
+ | `--revision-id` | 否 | 默认 `-1`(最新)。它只选择服务端执行所基于的快照,不是“页面有新编辑就拒绝”的乐观锁;传旧版本号会以旧快照重建页面并丢弃其后的编辑 |
36
+ | `--tid` | 否 | 调用方提供的任务/事务标识,CLI 原样透传;用于关联同一编辑任务或重试,不等同于版本前置条件,不能单独保证并发冲突时拒绝写入。一般留空 |
37
+
38
+ `@file` 和 `+xml-get --output` 一样**只接受当前目录下的相对路径**,绝对路径会被拒。
39
+ 命令别名:`slides +update`(隐藏);服务别名:`lark-cli slide …` 等价于 `lark-cli slides …`。
40
+
41
+ 如果要求“从读取之后页面一旦变化就不再写入”,不能只传 `--revision-id` 或 `--tid`。写入前必须再次用 `+xml-get` 回读最新版,比较读取期间是否发生变化;有变化时先基于最新版重新合并本次修改,再执行整页写回。当前 shortcut 不提供严格的 compare-and-swap 保证。
42
+
43
+ ## 语义:`--content` 就是这一页的最终状态
44
+
45
+ **没写进 `--content` 的东西会从页面上消失。** 这不是补丁,是整页覆盖。
46
+
47
+ | 你在 `--content` 里怎么写 | 页面上的结果 |
48
+ |---|---|
49
+ | 元素带原来的 `id` | 按新 XML 更新这个元素 |
50
+ | 元素不带 `id` | 作为新元素插入到它所在的位置 |
51
+ | 原来有、`--content` 里没有的元素 | **删除** |
52
+ | `<style>` 改了 | 背景等页面样式跟着改 |
53
+ | 没写 `<note>` | 讲者备注被清空 |
54
+
55
+ 一次请求就能同时做完改样式、插入、删除、换备注、换背景——这是 `+replace-slide` 逐元素 part 做不到的(它没法寻址背景,也没有 move 操作)。
56
+
57
+ ## 标准读-改-写流程
58
+
59
+ ```bash
60
+ # 1. 读回当前页(拿到带 id 的完整 XML)
61
+ lark-cli slides +xml-get --as user \
62
+ --presentation "$PRES" --slide-id "$SLIDE" --output page.xml
63
+
64
+ # 2. 编辑 page.xml —— 保留想留下的元素的 id,删掉不要的整段,新元素不写 id
65
+
66
+ # 3. 整页写回
67
+ lark-cli slides +update-slide --as user \
68
+ --presentation "$PRES" --slide-id "$SLIDE" --content @page.xml
69
+ ```
70
+
71
+ 先 `--dry-run` 看请求,确认无误再执行。
72
+
73
+ > ⚠️ **第 1 步不要加 `--remove-attr-id`。** 那个参数会把所有元素的 `id` 去掉,再交给 `+update-slide` 的话,每个元素都会被当成新元素插入、原来的全部被删除——页面看起来一样,但所有元素换了新 id,锚在旧 id 上的评论和 block 直达链接全部失效,而且**不会有任何报错**。`--remove-attr-id` 只用于只读查看。
74
+
75
+ ## 命令校验与空页限制
76
+
77
+ | 情况 | 报错 |
78
+ |---|---|
79
+ | 根元素不是 `<slide>`(例如直接给了 `<shape>`) | `--content root must be <slide>` → 改单个元素请用 `+replace-slide` |
80
+ | 根 `id` 和 `--slide-id` 不一致 | 拒绝。这通常是 A 页的 XML 要写到 B 页 —— 会毁掉 B 页 |
81
+ | 根 `id` 缺失 | 自动补上 `--slide-id`,不报错 |
82
+ | 根标签带命名空间前缀(`<sml:slide>`) | 拒绝。页面 id 没法贴到带前缀的标签上;写成 `<slide>`,需要命名空间就用默认 `xmlns` |
83
+ | `<slide>` 之后还有第二个根元素或多余文本 | 拒绝。服务端解析会静默丢掉它们 |
84
+ | XML 不合法 | 拒绝,带上出错位置 |
85
+ | `<slide/>`(自闭合,空页) | 命令本身可以解析,但提交前的强制版式 lint 会报 `blank_slide`;按本 Skill 不得调用接口提交空页 |
86
+
87
+ 标为“拒绝”的情况由命令校验拦截,**不会发出任何请求**;空页则必须在调用命令前由强制版式 lint 拦截。
88
+
89
+ ## 什么时候不要用它
90
+
91
+ - **只改一个元素** → 用 [`+replace-slide`](lark-slides-replace-slide.md),一条 `block_replace` part 更省,也不用带上整页
92
+ - **要改多个页面** → 对每一页各跑一次本命令
93
+ - **要新建页面** → `slides +create` 或 `xml_presentation.slide create`
94
+
95
+ ## 提交前与写入后验证
96
+
97
+ 和其他整页写入一样,把 `--content` 存成本地文件后先跑版式 lint。先取得当前已加载 `lark-slides/SKILL.md` 的父目录,记为 `<lark-slides-skill-dir>`;不要猜测全局安装路径:
98
+
99
+ ```bash
100
+ python3 "<lark-slides-skill-dir>/scripts/xml_text_overlap_lint.py" --input page.xml
101
+ ```
102
+
103
+ `summary.error_count` 必须为 0 才调接口;`warning_count > 0` 时写完要截图复核。
104
+
105
+ 写入成功后,必须回读整份演示文稿的最新 XML,而不是只相信写接口的成功响应:
106
+
107
+ ```bash
108
+ lark-cli slides +xml-get --as user \
109
+ --presentation "$PRES" --output readback.xml
110
+ ```
111
+
112
+ 按当前已加载 `lark-slides/SKILL.md` 指向的 [validation-checklist.md](validation-checklist.md) 完成验证:核对总页数、目标页和关键元素(包括需要保留的 ID、文本、背景与备注),并对回读 XML 运行同一版式 lint;发现差异时先停止后续写入并重新基于最新版处理。
113
+
114
+ ## 成功输出
115
+
116
+ ```json
117
+ {
118
+ "ok": true,
119
+ "identity": "user",
120
+ "data": {
121
+ "xml_presentation_id": "slides_example_presentation_id",
122
+ "slide_id": "piy",
123
+ "revision_id": 43
124
+ }
125
+ }
126
+ ```
127
+
128
+ | `data` 下的字段 | 说明 |
129
+ |------|------|
130
+ | `xml_presentation_id` | 实际写入的演示文稿 ID |
131
+ | `slide_id` | 与传入相同——整页覆盖不换页 id |
132
+ | `revision_id` | 写入后的新版本号 |
133
+
134
+ 服务端拒绝这次写入时(`failed_reason` 非空)**不会**返回成功输出,而是报错并带上原因——单个 part 承载整页,任何失败都意味着页面没被写入。
135
+
136
+ - 原因包含 `not found`:先检查 `--presentation` 和 `--slide-id`,再用 `slides +xml-get` 回读当前页面 ID。页面可能已删除,或 ID 来自另一份演示文稿。
137
+ - 其他 invalid-parameter 错误:检查 `--content` 中不支持的元素、缺少 `<content/>` 的 `<shape>`,以及超出 960×540 的坐标。
138
+
139
+ ## 常见错误
140
+
141
+ | 现象 | 原因 | 解决 |
142
+ |------|------|------|
143
+ | 3350001,原因包含 `not found` | `--presentation` 不匹配,或 `--slide-id` 对应的页面已被删除 | 检查 `--presentation` 和 `--slide-id`,再用 `slides +xml-get` 回读当前页面 ID |
144
+ | 3350001,其他 invalid param | `--content` 的 XML 结构有问题(如 `<shape>` 缺 `<content/>`、包含服务端不支持的元素) | 按 [troubleshooting.md](troubleshooting.md) 检查 `--content` 的 XML 结构 |
145
+ | 3350002 not found | `--revision-id` 传了不存在的版本号 | 用 `-1` 或真实存在的 `revision_id` |
146
+ | 1061004 / 403 | 当前身份对这份 PPT 没有编辑权限 | 检查是否拥有 `slides:presentation:update` 或 `slides:presentation:write_only` scope;wiki 链接另需 `wiki:node:read`;`--as bot` 还要求该 bot 对目标 PPT 有编辑权限 |
@@ -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
 
@@ -2,58 +2,112 @@
2
2
 
3
3
  ## 用途
4
4
 
5
- 读取飞书幻灯片(PPT)演示文稿的完整 XML 内容信息。
5
+ 读取飞书幻灯片(PPT)的完整演示文稿 XML,或通过 `--slide-id` / `--slide-number` 读取指定单页 XML。
6
6
 
7
- ## 底层原生命令形态
7
+ ## Shortcut
8
+
9
+ 使用 `slides +xml-get` shortcut,可以把 XML 保存到本地文件,避免终端输出被截断。
8
10
 
9
11
  ```bash
10
- lark-cli slides xml_presentations get --as user --params '<json_params>'
12
+ lark-cli slides +xml-get --as user \
13
+ --presentation "slides_example_presentation_id" \
14
+ --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
15
+ --json
11
16
  ```
12
17
 
13
- ## 参数说明
18
+ ### 参数说明
14
19
 
15
20
  | 参数 | 类型 | 必需 | 说明 |
16
21
  |------|------|------|------|
17
- | `--params` | JSON string | 是 | 路径参数与查询参数,结构以 schema 为准 |
22
+ | `--presentation` | string | 是 | 演示文稿的唯一标识符 |
23
+ | `--revision-id` | integer | 否 | 版本号,`-1` 表示最新版本 |
24
+ | `--output` | string | 否 | XML 保存路径,必须使用相对路径;省略时 XML 在 stdout 的 JSON envelope 中返回 |
25
+ | `--raw` | flag | 否 | 直接把 XML 输出到 stdout,不包 JSON envelope;不能与 `--output`、`--jq` 或非 JSON `--format` 同时使用 |
26
+ | `--slide-id` | string | 否 | 只读取指定 `slide_id` 的单页 XML;不能与 `--slide-number` 或 `--remove-attr-id` 同时使用 |
27
+ | `--slide-number` | integer | 否 | 只读取指定的 1-based 页码;不能与 `--slide-id` 或 `--remove-attr-id` 同时使用 |
28
+ | `--remove-attr-id` | flag | 否 | 仅全文读取可用;移除 XML id 属性后读取,不适合后续精确块编辑 |
29
+ | `--json` | flag | 否 | `--format json` 的简写,json 为默认输出格式 |
18
30
 
19
- ### params JSON 结构
20
31
 
21
- ```json
22
- {
23
- "xml_presentation_id": "slides_example_presentation_id",
24
- "revision_id": -1
25
- }
32
+ ### 基础示例
33
+
34
+ ```bash
35
+ lark-cli slides +xml-get --as user \
36
+ --presentation "slides_example_presentation_id" \
37
+ --output .lark-slides/plan/slides_example_presentation_id/readback.xml \
38
+ --json
26
39
  ```
27
40
 
28
- | 字段 | 类型 | 必需 | 说明 |
29
- |------|------|------|------|
30
- | `xml_presentation_id` | string | 是 | 演示文稿的唯一标识符 |
31
- | `revision_id` | integer | 否 | 版本号,`-1` 表示最新版本 |
41
+ ### 读取单页并保存
32
42
 
33
- ## 使用示例
43
+ 按页面 ID 和按页码二选一:
34
44
 
35
- ### 基础示例
45
+ ```bash
46
+ lark-cli slides +xml-get --as user \
47
+ --presentation "slides_example_presentation_id" \
48
+ --slide-id "slide_example_id" \
49
+ --output .lark-slides/plan/slides_example_presentation_id/slide.xml \
50
+ --json
51
+ ```
52
+
53
+ ### 直接输出 XML 到管道
36
54
 
37
55
  ```bash
38
- lark-cli slides xml_presentations get --as user \
39
- --params '{"xml_presentation_id":"slides_example_presentation_id","revision_id":-1}'
56
+ lark-cli slides +xml-get --as user \
57
+ --presentation "slides_example_presentation_id" \
58
+ --slide-number 1 \
59
+ --raw
40
60
  ```
41
61
 
42
62
  ### 指定版本读取
43
63
 
44
64
  ```bash
45
- lark-cli slides xml_presentations get --as user \
46
- --params '{"xml_presentation_id":"slides_example_presentation_id","revision_id":10}'
65
+ lark-cli slides +xml-get --as user \
66
+ --presentation "slides_example_presentation_id" \
67
+ --revision-id 10 \
68
+ --output .lark-slides/plan/slides_example_presentation_id/readback-r10.xml \
69
+ --json
47
70
  ```
48
71
 
49
72
  ### 移除 XML id 属性后读取
50
73
 
51
74
  ```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}'
75
+ lark-cli slides +xml-get --as user \
76
+ --presentation "slides_example_presentation_id" \
77
+ --remove-attr-id \
78
+ --output .lark-slides/plan/slides_example_presentation_id/readback-no-id.xml \
79
+ --json
54
80
  ```
55
81
 
56
- ## 返回值
82
+
83
+ ## 底层原生命令形态
84
+
85
+ ```bash
86
+ lark-cli slides xml_presentations get --as user --params '<json_params>'
87
+ ```
88
+
89
+ ### 参数说明
90
+
91
+ | 参数 | 类型 | 必需 | 说明 |
92
+ |------|------|------|------|
93
+ | `--params` | JSON string | 是 | 路径参数与查询参数,结构以 schema 为准 |
94
+
95
+ ### params JSON 结构
96
+
97
+ ```json
98
+ {
99
+ "xml_presentation_id": "slides_example_presentation_id",
100
+ "revision_id": -1
101
+ }
102
+ ```
103
+
104
+ | 字段 | 类型 | 必需 | 说明 |
105
+ |------|------|------|------|
106
+ | `xml_presentation_id` | string | 是 | 演示文稿的唯一标识符 |
107
+ | `revision_id` | integer | 否 | 版本号,`-1` 表示最新版本 |
108
+
109
+
110
+ ### 返回值
57
111
 
58
112
  成功时返回演示文稿的完整信息:
59
113
 
@@ -65,7 +119,7 @@ lark-cli slides xml_presentations get --as user \
65
119
  "xml_presentation": {
66
120
  "presentation_id": "slides_example_presentation_id",
67
121
  "revision_id": 1,
68
- "content": "<presentation xmlns=\"http://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
122
+ "content": "<presentation xmlns=\"https://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
69
123
  }
70
124
  }
71
125
  }
@@ -79,7 +133,7 @@ lark-cli slides xml_presentations get --as user \
79
133
  | `data.xml_presentation.revision_id` | integer | 版本号 |
80
134
  | `data.xml_presentation.content` | string | XML 格式的完整内容 |
81
135
 
82
- ## 常见错误
136
+ ### 常见错误
83
137
 
84
138
  | 错误码 | 含义 | 解决方案 |
85
139
  |--------|------|----------|
@@ -87,13 +141,17 @@ lark-cli slides xml_presentations get --as user \
87
141
  | 403 | 权限不足 | 检查是否拥有 `slides:presentation:read` scope,或是否有访问权限 |
88
142
  | 400 | 参数格式错误 | 确保 `--params` 是合法的 JSON 字符串 |
89
143
 
90
- ## 注意事项
91
144
 
92
- 1. 直接调用底层 API 前,使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
93
- 2. 返回的 XML 在 `data.xml_presentation.content` 字段中
94
- 3. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
145
+ ### 注意事项
146
+
147
+ 1. lark-slides 工作流默认使用 `slides +xml-get`;只有必须直接调底层 API 时,才使用
148
+ 2. 直接调用底层 API 前,使用 `lark-cli schema slides.xml_presentations.get` 查看最新的参数结构
149
+ 3. 返回的 XML 在 `data.xml_presentation.content` 字段中
150
+ 4. 如果只需要部分信息,可以使用 `jq` 等工具过滤返回结果
151
+ 5. 不要在普通工作流中把完整 XML 打到终端;用 `slides +xml-get --output` 保存文件
95
152
 
96
153
  ## 相关命令
97
154
 
98
- - [slides +create](lark-slides-create.md) - 创建 PPT / 添加幻灯片页面
99
- - [xml_presentation.slide delete](lark-slides-xml-presentation-slide-delete.md) - 删除幻灯片页面
155
+ - [slides +create](lark-slides-create.md) - 创建空白 PPT
156
+ - [slides +add-slide](lark-slides-add-slide.md) - 添加幻灯片页面
157
+ - [slides +delete-slide](lark-slides-delete-slide.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: