iterative-ppt-generation
Generate complex PowerPoint presentations slide by slide, verifying each slide after creation to ensure correctness, enable granular debugging, and facilitate recovery from errors.
SKILL.mdskills/iterative-ppt-generation/SKILL.md
GitHub迭代式PPT生成
适用场景
当需要生成复杂、内容密集或对准确性要求极高的PowerPoint演示文稿时,采用迭代式生成可以有效降低整体失败风险,提高内容质量。特别适用于以下情况:
- 演示文稿包含大量数据、图表或专业知识,需要逐步验证。
- 用户对演示文稿的风格、措辞或结构有细致要求,需要频繁反馈。
- 避免一次性生成大型文档可能导致的上下文溢出或生成内容偏离预期。
- 需要在生成过程中进行精细调试和错误恢复。
步骤
理解整体需求与规划大纲:
- 与用户充分沟通,明确演示文稿的主题、目标受众、核心信息、页数限制和预期风格。
- 使用
process工具分析需求,并生成一个详细的演示文稿大纲,包括每页幻灯片的主题、关键点和预期内容类型(例如:标题页、目录页、数据分析页、结论页等)。 - 将大纲提交给用户审核,确保方向正确。
# 示例:生成PPT大纲 process "根据用户提供的项目报告草稿,生成一个包含10页的PPT大纲。大纲应包括每页的标题和主要内容点,并考虑目标受众是高层管理者。" message "这是我为您生成的PPT大纲,请审核:\n\n[大纲内容]" sessions_yield逐页生成幻灯片内容:
- 根据已确认的大纲,选择第一页(或用户指定的页)进行生成。
- 使用
process工具结合web_search(如果需要外部数据) 生成该页幻灯片的所有内容,包括标题、正文、图表描述、图片建议等。 - 将生成的内容以结构化格式(如Markdown、JSON或纯文本)呈现给用户。
# 示例:生成第一页幻灯片内容 # 假设大纲中第一页是“项目概述” process "根据项目报告草稿和已确认的大纲,为PPT的第一页‘项目概述’生成详细内容。内容应简洁明了,突出项目目标和关键成果。输出格式为Markdown。" message "这是PPT第一页‘项目概述’的内容草稿,请审核:\n\n```markdown\n# 项目概述\n\n## 项目目标\n- 目标1\n- 目标2\n\n## 关键成果\n- 成果A\n- 成果B\n```" sessions_yield用户审核与迭代修正:
- 等待用户对当前幻灯片内容的反馈。
- 如果用户提出修改意见,使用
process工具根据反馈对内容进行修正,并再次提交审核。 - 重复此步骤直到用户满意当前幻灯片内容。
# 示例:根据用户反馈修正幻灯片内容 # 假设用户反馈:“项目目标不够具体,请补充量化指标。” process "根据用户反馈,修正PPT第一页‘项目概述’的内容。在项目目标中加入量化指标,使其更具体。原始内容:[之前生成的内容]。用户反馈:[用户反馈内容]。" message "这是修正后的PPT第一页‘项目概述’的内容,请再次审核:\n\n```markdown\n# 项目概述\n\n## 项目目标\n- 在Q3前完成市场份额增长15%\n- 降低运营成本10%\n\n## 关键成果\n- 成果A\n- 成果B\n```" sessions_yield保存并继续下一页:
- 一旦当前幻灯片内容被用户确认,使用
write工具将其保存到临时文件或结构化数据中,以便后续汇总。 - 继续选择下一页幻灯片,重复步骤2和3,直到所有幻灯片内容都已生成并确认。
# 示例:保存已确认的幻灯片内容 write "slide_1_project_overview.md" "```markdown\n# 项目概述\n\n## 项目目标\n- 在Q3前完成市场份额增长15%\n- 降低运营成本10%\n\n## 关键成果\n- 成果A\n- 成果B\n```" message "第一页内容已确认并保存。现在开始生成第二页..."- 一旦当前幻灯片内容被用户确认,使用
最终汇总与生成:
- 所有幻灯片内容确认后,将所有保存的单页内容汇总。
- 如果存在将结构化内容转换为PPT的工具(例如,通过
exec调用pandoc将Markdown转换为PPTX,或使用特定的API),则执行最终的PPT生成。 - 如果无法直接生成PPT文件,则将所有内容整理成一个可供用户手动复制粘贴到PPT的最终文档。
# 示例:汇总并生成最终PPT(假设有pandoc工具) # 首先读取所有保存的slide文件 read "slide_1_project_overview.md" read "slide_2_data_analysis.md" # ...以此类推读取所有slide文件内容,并拼接成一个大的Markdown文件 write "final_presentation.md" "[所有幻灯片内容的拼接]" exec "pandoc -s final_presentation.md -o final_presentation.pptx" message "最终演示文稿已生成为 final_presentation.pptx。请下载并审核。"
工具和命令
process: 用于分析需求、生成大纲、起草幻灯片内容和根据反馈进行修正。web_search: 在需要外部数据或信息支持幻灯片内容时使用。message: 向用户展示生成的内容和请求反馈。sessions_yield: 暂停执行,等待用户输入和反馈。write: 保存已确认的单页幻灯片内容,或最终汇总的演示文稿文件。read: 读取之前保存的幻灯片内容或原始需求文件。exec: (可选) 如果有命令行工具可以将结构化文本(如Markdown)转换为PPT文件,则用于执行该转换命令。
注意事项
- 保持上下文清晰: 在每次生成单页内容时,确保
process命令中包含足够的上下文信息(如整体大纲、已确认的前几页内容摘要),以保持内容的一致性。 - 明确反馈机制: 每次
sessions_yield后,明确告知用户需要提供何种类型的反馈(例如:“请审核此页内容,并指出需要修改的地方。”)。 - 错误恢复: 如果某页内容生成不理想,可以直接在该页进行修正,而无需重新生成整个演示文稿,这正是迭代式方法的优势。
- 内容格式标准化: 建议在生成单页内容时采用统一的结构化格式(如Markdown),便于后续汇总和可能的自动化转换。
- 避免过度细化: 虽然是迭代式,但每一步的粒度应适中。例如,一次生成一页幻灯片是合理的,但如果将一页拆分成多个小块,可能会增加交互开销。
- 及时保存: 每次确认一页内容后,立即使用
write保存,防止意外中断导致工作丢失。
示例
任务: 为一个关于“AI在医疗领域的应用”的研讨会生成一个5页的PPT。
生成大纲:
process "为主题‘AI在医疗领域的应用’生成一个5页的PPT大纲。包括:1. 标题页,2. AI在医疗的现状,3. 具体应用案例(诊断),4. 具体应用案例(药物研发),5. 挑战与展望。" message "这是我为您生成的PPT大纲,请审核:\n\n1. 标题页:AI赋能医疗新时代\n2. AI在医疗领域的现状与趋势\n3. 应用案例:AI辅助诊断与影像分析\n4. 应用案例:AI加速药物研发与个性化治疗\n5. 挑战、伦理考量与未来展望" sessions_yield(用户确认大纲)
生成第一页 (标题页):
process "根据大纲,生成PPT第一页‘AI赋能医疗新时代’的内容。内容应包含标题、副标题和演讲者信息。输出为Markdown格式。" message "这是第一页内容草稿:\n\n```markdown\n# AI赋能医疗新时代\n\n## 探索人工智能如何重塑医疗健康未来\n\n### 演讲者:[您的姓名/机构]\n### 日期:2023年10月27日\n```" sessions_yield(用户确认,并要求将日期改为“2024年春季”)
process "根据用户反馈,将第一页日期修改为‘2024年春季’。原始内容:[之前生成的内容]。" message "这是修正后的第一页内容:\n\n```markdown\n# AI赋能医疗新时代\n\n## 探索人工智能如何重塑医疗健康未来\n\n### 演讲者:[您的姓名/机构]\n### 日期:2024年春季\n```" sessions_yield(用户确认)
write "slide_1_title.md" "```markdown\n# AI赋能医疗新时代\n\n## 探索人工智能如何重塑医疗健康未来\n\n### 演讲者:[您的姓名/机构]\n### 日期:2024年春季\n```" message "第一页已保存。现在开始生成第二页..."生成第二页 (现状与趋势):
process "根据大纲,生成PPT第二页‘AI在医疗领域的现状与趋势’的内容。内容应包括当前AI在医疗中的主要应用方向和发展趋势。输出为Markdown格式。" message "这是第二页内容草稿:\n\n```markdown\n# AI在医疗领域的现状与趋势\n\n## 现状\n- 辅助诊断:影像识别、病理分析\n- 药物研发:靶点发现、化合物筛选\n- 智能管理:医院运营优化、患者管理\n\n## 趋势\n- 大模型在医疗领域的应用\n- 个性化精准医疗\n- 远程医疗与可穿戴设备集成\n```" sessions_yield(用户确认)
write "slide_2_status_trends.md" "```markdown\n# AI在医疗领域的现状与趋势\n\n## 现状\n- 辅助诊断:影像识别、病理分析\n- 药物研发:靶点发现、化合物筛选\n- 智能管理:医院运营优化、患者管理\n\n## 趋势\n- 大模型在医疗领域的应用\n- 个性化精准医疗\n- 远程医疗与可穿戴设备集成\n```" message "第二页已保存。现在开始生成第三页..."(重复此过程直到所有页面生成完毕)
汇总与最终生成:
read "slide_1_title.md" read "slide_2_status_trends.md" read "slide_3_diagnosis_cases.md" read "slide_4_drug_discovery_cases.md" read "slide_5_challenges_future.md" # 假设已读取所有内容并拼接为 final_presentation.md exec "pandoc -s final_presentation.md -o AI_in_Healthcare_Presentation.pptx" message "所有幻灯片内容已汇总并生成为AI_in_Healthcare_Presentation.pptx。请下载并审核最终文件。"