From efbb4f13e7ff7bcb363205c923620daccc94889d Mon Sep 17 00:00:00 2001 From: zhanghuanxu Date: Mon, 29 Jun 2026 11:34:01 +0800 Subject: [PATCH] docs: tighten lark slides template preservation --- skills/lark-slides/SKILL.md | 56 ++++++++------- .../lark-slides/references/asset-planning.md | 29 ++++++-- .../references/lark-slides-edit-workflows.md | 38 ++++++++-- .../references/lark-slides-replace-pages.md | 33 +++++++-- .../references/lark-slides-replace-slide.md | 4 +- .../lark-slides/references/planning-layer.md | 71 +++++++++++++++++-- .../lark-slides/references/troubleshooting.md | 2 +- .../references/validation-checklist.md | 19 ++++- 8 files changed, 202 insertions(+), 50 deletions(-) diff --git a/skills/lark-slides/SKILL.md b/skills/lark-slides/SKILL.md index 7c8c3e20..05ae47ca 100644 --- a/skills/lark-slides/SKILL.md +++ b/skills/lark-slides/SKILL.md @@ -1,7 +1,7 @@ --- name: lark-slides version: 1.0.0 -description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:本地 `.pptx` / `.pdf` 导入为 slides(走 `lark-drive` 的 `drive +import --type slides`)、云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard,注意 slide 内嵌的流程图/架构图仍属本 skill)、上传或下载普通文件(走 lark-drive)。" +description: "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用;当用户给定 PPTX/PDF 作为模板、底稿或视觉参考时,也用本 skill 统筹导入后的二次创作(导入命令本身走 `lark-drive` 的 `drive +import --type slides`)。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由依据是 URL 路径模式和 token,而不是域名。不负责:云文档内容编辑(走 lark-doc)、云文档里的独立画板对象(走 lark-whiteboard,注意 slide 内嵌的流程图/架构图仍属本 skill)、上传或下载普通文件(走 lark-drive)。" metadata: requires: bins: ["lark-cli"] @@ -14,16 +14,17 @@ metadata: | 用户需求 | 优先动作 | 关键文档 / 命令 | |----------|----------|-----------------| -| 新建 PPT | 先规划 `slide_plan.json`,再按复杂度选择一步或两步创建 | `planning-layer.md`、`visual-planning.md`、`asset-planning.md`、`slides +create` | -| 已有 PPT 大幅改写 | 多页整页重建用 `+replace-pages`,单页局部编辑用 `+replace-slide` | `xml_presentations.get`、`lark-slides-replace-pages.md`、`lark-slides-edit-workflows.md` | -| 编辑单个标题、文本块、图片或局部元素 | 优先块级替换/插入,不改页序 | `slides +replace-slide`、`lark-slides-replace-slide.md` | +| 用户提供 PDF/PPTX/slides 材料并要求生成或改写 PPT | 必须先导入/回读材料,并以导入后的 presentation 作为目标底稿二次创作;除非 PDF 明显是长文档/资料而非演示稿,不要跳过导入 | `drive +import --type slides`、`planning-layer.md`、`asset-planning.md`、`lark-slides-edit-workflows.md` | +| 新建 PPT | 仅在没有用户提供可导入材料、用户明确要求另建,或导入失败/回读失败时,先规划 `slide_plan.json`,再按复杂度创建 | `planning-layer.md`、`visual-planning.md`、`asset-planning.md`、`slides +create` | +| 已有 PPT 大幅改写 | 优先用 `+replace-pages` 做页面级重建,哪怕只替换 1 页也传 1 个 page item;在完整新页 XML 里复用旧页背景、图片、图表、表格等素材 | `xml_presentations.get`、`lark-slides-replace-pages.md`、`lark-slides-edit-workflows.md` | +| 编辑单个标题、文本块、图片或局部元素 | 只有明确是小型块级编辑且拿到了最新 block_id 时才用 `+replace-slide` | `slides +replace-slide`、`lark-slides-replace-slide.md` | | 读取或分析已有 PPT | 解析 slides/wiki token,回读全文或单页 XML,保存 `xml_presentation_id`、`slide_id`、`revision_id` | `xml_presentations.get`、`xml_presentation.slide.get` | | 获取幻灯片页面截图 | 用 `slide_id` 或页号指定页面 | `slides +screenshot`、`lark-slides-screenshot.md` | | 上传或使用图片 | 先上传为 `file_token`,禁止直接写 http(s) 外链 | `slides +media-upload`,或 `+create --slides` 的 `@./path` 占位符 | | 在 slide 中绘制柱/条/折线/面积/雷达/饼等有数据序列的图表 | 使用原生 `` 元素 | `xml-schema-quick-ref.md` | | 在 slide 中绘制流程图、时序图、架构图、散点图、漏斗图或装饰图案 | 必须先用 Read 工具读取参考文档,再生成 `` 元素 | [`lark-slides-whiteboard.md`](references/lark-slides-whiteboard.md) | | 使用语义图标 | 先检索 IconPark,再写 `` | `iconpark_tool.py search → resolve`、`iconpark.md` | -| 用户提到模板、主题、版式 | 先检索模板,再摘要,必要时裁切骨架 | `template_tool.py search → summarize → extract` | +| 用户提到模板、主题、版式但没有提供本地/在线模板材料 | 先检索内置模板,再摘要,必要时裁切骨架 | `template_tool.py search → summarize → extract` | | 创建失败、空白页、3350001、布局异常 | 先回读状态,再按排障清单修复,不假设原操作原子成功 | `troubleshooting.md`、`validation-checklist.md` | **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),认证、权限和全局参数均以 lark-shared 为准。** @@ -40,14 +41,16 @@ metadata: **CRITICAL — 创建前自检或失败排障时,MUST 按 [troubleshooting.md](references/troubleshooting.md) 检查 XML 转义、结构、shell 截断、图片 token、3350001 和布局风险。** -**CRITICAL — 如果用户提到“模板”“套用模板”“参考某种主题/风格/版式”,或用户需求明显落在已有场景模板内(如工作汇报、产品介绍、商业计划书、培训、晋升汇报等),MUST 先用 [`scripts/template_tool.py`](scripts/template_tool.py) 的 `search` 做模板检索;默认给出 2-3 个最匹配模板候选供用户选择。锁定模板后用 `summarize` 获取主题和布局摘要;只有需要布局骨架时才用 `extract` 裁切目标页型 XML。不要直接读取完整模板 XML。** +**CRITICAL — 用户提供 PPTX/PDF/slides 作为模板、底稿或视觉参考时,MUST 先导入或回读为 Slides,保存原 XML,并做素材清单:每页的 `..." + } +] +``` + +## 小型块级编辑闭环 ```bash PID="xml_presentation_id_here" diff --git a/skills/lark-slides/references/lark-slides-replace-pages.md b/skills/lark-slides/references/lark-slides-replace-pages.md index df503dcf..da52a059 100644 --- a/skills/lark-slides/references/lark-slides-replace-pages.md +++ b/skills/lark-slides/references/lark-slides-replace-pages.md @@ -1,9 +1,11 @@ -# slides +replace-pages(多页整页重建) +# slides +replace-pages(页面级重建) -批量替换已有演示文稿里的多个页面,保持原 `xml_presentation_id` 和原 Slides 链接不变。适合多页版式大改、坐标重排、整页视觉重建;单个文本框、图片或 shape 的局部编辑仍优先用 [`+replace-slide`](lark-slides-replace-slide.md)。 +批量替换已有演示文稿里的一个或多个页面,保持原 `xml_presentation_id` 和原 Slides 链接不变。适合导入 PPTX/PDF 后二次创作、保留模板素材、版式大改、坐标重排、整页视觉重建;单个文本框、图片或 shape 的小型局部编辑才考虑 [`+replace-slide`](lark-slides-replace-slide.md)。 > 重要:这是多步编排,不是后端原子事务。CLI 对每页执行“先创建新页到旧页前,再删除旧页”;创建失败时旧页会保留。删除失败时可能出现新旧页同时存在,需要按返回结果继续处理。 +> 命令名以仓库代码为准:当前 shortcut 是 `slides +replace-pages`(复数)。即使只替换一页,也传一个包含 1 个 item 的 `pages` 数组。 + ## 命令 ```bash @@ -45,6 +47,26 @@ lark-cli slides +replace-pages \ - 同一批次不能重复 `slide_id`。 - CLI 不会回读整份 presentation;如果 `slide_id` 已失效,create/delete 阶段会返回对应错误。 +## 保留导入模板素材 + +导入 PPTX/PDF 或改写已有 Slides 时,先用 `xml_presentations.get` 保存当前 XML,再为每页盘点素材。源素材默认锁定保留,不是可随意替换的装饰: + +- `