
最近帮一位老师朋友处理课程资料她手头有七八个版本的教学课件、课程设计文档、历年考卷、甚至还有几张手机拍的白板照片。这些资料都很全但彼此之间完全没有统一结构标准的“散装”状态。她想把这些东西整理成一份能直接用的教案再配一套教学PPT时间只有三天。我把这活儿扔给了 WorkBuddy最后两天半搞定中间还包括我摸索和返工的时间。这篇文章就是把全过程拆开揉碎了讲一遍重点说清楚我这套处理链路是怎么设计的以及哪些坑是真实存在的。如果你也要用 AI 工具整理教学资料、技术文档或者任何“材料很多但结构混乱”的东西这篇应该能帮你省不少时间。1. 项目整体思路为什么选 WorkBuddy 来整理教学资料1.1 先盘一盘“散装资料”到底乱在哪很多人以为把一堆文件拖进 AI 对话窗口说一句“帮我整理成教案”就能成事。实际操作过就知道结果往往惨不忍睹。原因很简单大模型擅长处理“语义理解”但面对十几份格式各异、内容互相覆盖甚至互相矛盾的资料时它需要的是“任务拆解能力 结构化输出能力 跨文件引用能力”这三件事任何一个对话式 AI 不经过专门配置都做不好。以这堂课的资料为例实际拿到手的有这么几类资料类型格式数量状态历年课件PPTX6 份版本新旧不一部分内容过期课程设计文档Word / PDF3 份章节结构混乱缺少统一规范课堂练习题Excel / PDF4 份题号错乱重复较多白板照片JPG5 张需要 OCR字迹潦草教学大纲PDF1 份最权威是整理基准乱在哪不是文件多而是文件之间的关系不明确。同一知识点在课件 A 里是第三章在课程设计文档里是 2.4 节在练习题里又换了一种表述。AI 如果同时接收这些材料它不知道以谁为准。所以我做项目的第一个思路就是不直接让 AI 读原始文件而是先建一个“整理基准”。这个基准就是教学大纲所有散装资料都围绕大纲重新对齐。1.2 WorkBuddy 处理这类任务的三个底牌选 WorkBuddy 而不是直接开个网页版聊天窗口是因为它有几个针对这类任务的硬能力。我不打算做工具对比只说它在这场实战里真正起作用的三个点。第一是本地文件系统操作能力。WorkBuddy 可以直接读取指定目录下的文件做批量重命名、格式转换、Markdown 文件生成这些操作全程不用我手动拖拽上传。对于“十几个文件来回处理”的场景效率差距非常大。第二是Skill 机制。它允许我把一套“教学资料整理流程”封装成可复用的技能包括角色设定、步骤规定、输出格式模板。后续处理任何一门新课程只需要改资料目录Skill 内部逻辑不用重写。这个特性对于批量处理多个课程材料是刚需。第三是跨对话记忆 Skill。整理资料是个多轮任务经常干到一半发现需要回溯几轮之前的一个决定。WorkBuddy 能让我把关键约定比如“以大纲版本 V3 为准”、“术语统一用‘数据校验’而不是‘数据验证’”写进持久化的规则文件新对话里依然生效。这个后面专门讲。1.3 我的整体处理链路整个项目我分成了五个大阶段每个阶段都是独立的交接节点。这样做的好处是每一步都能复查不会让 AI 在错误的前置条件下继续往下生成。资料归一化处理把 PPTX、PDF、照片统一转录成结构化 Markdown并建立资料清单。定义规则与 Skill给 WorkBuddy 设定“教学设计师”角色、术语表、输出规范。生成教案基于资料清单和规则先产出教案初稿再逐节打磨。衍生 PPT以教案为唯一输入源生成 PPT 大纲再逐页渲染成 PPTX。人工复核与修正检查知识点准确性、层级关系和视觉呈现。这条链路核心思想是“逐级收敛”散装资料 → 结构化资料 → 教案 → PPT。每一步的输出都只依赖上一步交付的结果避免 AI 在生成 PPT 时又去翻原始 PPTX那会再次引入混乱。2. 散装材料的预处理让 AI 拿到“干净 input”2.1 资料收集与格式转换我做预处理的原则是AI 能读的格式越统一后面的生成质量越稳定。所有原始资料我先转成 Markdown 格式因为 Markdown 的标题层级、列表、表格语义比 PDF 的“视觉排版”更容易被模型理解。对于 PPTX 文件我直接在 WorkBuddy 里调用 python-pptx 库做文本提取并且连同“哪一页”的信息一起保留。代码并不复杂但有个关键点不能只提取文本还要保留页码和页面标题这样后面校对时能快速溯源。from pptx import Presentation def extract_pptx_text(path): prs Presentation(path) pages [] for i, slide in enumerate(prs.slides, start1): texts [] for shape in slide.shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: t .join(run.text for run in para.runs) if t.strip(): texts.append(t.strip()) pages.append({page: i, texts: texts}) return pages提取出来的原始文本其实还很“脏”同一个知识点可能在一页里被拆成多个文本框也可能同一个内容在连续三页里重复出现。所以我还会让 WorkBuddy 按照语义把这些页面文本合并成“知识片段”这一步我称之为“粗聚合”。粗聚合的指令不复杂核心是给出明确的判断标准同一知识点在不同页面出现只保留表述最完整的一版明显是目录页、过渡页的内容直接丢弃。2.2 手写照片的 OCR 处理白板照片是这次处理里最特殊的一类。手机拍的白板照片普遍存在透视变形、反光、字迹潦草的问题。WorkBuddy 自带的支持还不够我先用本机的 OCR 工具过了一遍识别率大约只有六成。OCR 完之后我没有直接使用而是把识别文本和原图一起丢给 WorkBuddy让它结合图片上下文把明显识别错误的部分人工修正。这一步很关键因为白板上的内容往往是老师临时补充的例题和备注恰恰是散装资料里最有价值的部分。等到后面生成教案时这些“课堂上才讲的东西”就会被吸收进“教学提示”和“易错点提醒”小节。OCR 处理的核心经验是别指望一次到位。先粗识别再让 AI 结合语义和图片信息修正最后人工快速通读一遍即可。三者配合白板的可用率能提到九成以上。2.3 建立资料总清单预处理完成后我建了一份资料清单文件作为后续所有生成操作的“地图”。格式是 Markdown 表格每一行记录一个知识点来源。字段包括知识点编号、所属章节、原始文件、页码/位置、状态可用/待确认/已废弃。这份清单的用途非常明确当 AI 生成教案时遇到“这个知识点在多个来源里表述不一致”的情况它能根据清单快速找出所有出处并把冲突作为问题提出来而不是自作主张选一个。这是防止引言里说的“AI 幻觉式整合”最有效的操作。我通常把这份清单命名为source_map.md放在项目根目录下所有 Skill 指令里都会引用它。提示如果原始资料里有不同版本的同一份文件比如“课件_最终版.pptx”和“课件_最终版_改2.pptx”不要直接删掉那份改过的。先在清单里标注“基于改2版”让 AI 明确知道哪个是基准。3. 用规则和 Skill 给 WorkBuddy 定“人设”与操作规范3.1 自定义指令全局规则的落地方式WorkBuddy 支持在项目目录下放置自定义指令文件这类文件的作用是定义“无论进行什么对话都必须遵守的底层约定”。我的文件命名为.workbuddy/rules.md内容结构如下# 项目基础规则 - 所有输出使用中文术语遵循 source_map.md 中的术语表 - 以教学大纲 V3 为唯一结构基准其他资料内容冲突时以大纲为准并向用户报告冲突 - 教案中的知识点必须标注来源格式为【来源文件名-页码】 - 禁止编造数据、案例或习题资料中没有的内容标注“待补充” - 每一轮交付必须附带“变更摘要”说明本轮改了什么、为什么改这些规则看起来是给 AI 的限制其实也是给自己的保护。因为有了“冲突时报备”机制AI 不会悄悄把错误信息混进成品里而是会主动暴露问题。实际跑下来规则里最有价值的是这一条来源标注。它让整个教案里每一个知识点都能追溯到原始资料后期老师复核时省了大力气。3.2 教学设计师 Skill封装完整工作流规则是对对话的约束Skill 才是真正干活的工具。我在 WorkBuddy 里建了一个名为lesson_designer的 Skill它的核心逻辑是三步走读取项目目录下的source_map.md确认资料状态。按大纲章节顺序逐章生成教案内容。每完成一章输出一份“章节教案 待确认问题列表”。Skill 的目录结构长这样skill_lesson_designer/ ├── SKILL.md ├── workflows/ │ ├── analyze_materials.md │ ├── generate_lesson_plan.md │ └── generate_ppt_outline.md └── templates/ ├── lesson_plan_template.md └── ppt_story_template.md其中SKILL.md是入口文件里面写了触发条件和处理流程描述。generate_lesson_plan.md是最核心的工作流文件规定了生成教案时的具体步骤先列章节结构 → 再提取每节知识点 → 标注来源 → 设计教学环节 → 输出完整教案。这里我的经验是Skill 里的步骤描述不要写抽象要求要写可检验的具体动作。比如“标注来源”就要写明“来源格式为【来源文件名-页码】”而不是“请确保引用正确”。AI 对抽象要求的执行结果方差很大对具体规范则稳定得多。3.3 跨对话记忆把偏好固化下来在做这门课的过程中我因为要试验不同的督办方式开了很多个对话窗口。如果没有跨对话记忆每个新对话都得重新解释一遍“资料在哪、大纲版本是哪个、输出格式是什么”烦不胜烦。WorkBuddy 的跨对话记忆 Skill 让我能把“与项目相关的持久化信息”写进一个记忆文件新对话启动时会自动加载。我的记忆文件内容节选如下# 项目记忆 - 课程名称数据库系统原理 - 基准大纲/data/course/outline_v3.pdf已转为 outline_v3.md - 参考资料的预处理输出目录/data/course/preprocessed/ - 术语偏好“数据完整性约束” 不写 “完整性规则” - 用户偏好教案每节末尾必须有一个“常见误区”小节这些信息一旦固定新对话就直接进入状态。我甚至把这个习惯延伸到其他项目里不管是整理技术文档还是写方案都在开工前花五分钟建立记忆文件。长期看省下的时间远超这五分钟。注意跨对话记忆适合记录“项目级事实”但不适合记录“临时任务状态”。比如“我已经处理完了第二章”这种事不要写进记忆否则容易在后续对话中被错误延续。临时进展写进度文件项目事实才写记忆。4. 教案生成实战从散装内容到结构化教案4.1 教案模板的设计思路教案生成不是让 AI 自由发挥写一篇长文而是按固定模板逐节填充。模板的作用是保证结构统一同时把“教学法”层面的设计要求前置固化。我用的教案模板包含八个字段章节名称教学目标分“知识目标、能力目标、素养目标”三层教学重难点教学准备工具、素材、前置知识教学环节导入 → 新课讲授 → 课堂互动 → 小结 → 作业布置含时间分配板书设计或 PPT 页面逻辑概述易错点与常见误区来源于白板照片和练习题错题统计教学反思留空给老师后续填写这个模板最大的特点是“教学环节”细化到分钟级时间分配。AI 生成的教案最容易犯的毛病就是泛泛而谈“通过案例引导学生理解”。加上时间分配后它就被迫思考每一个环节到底要做什么事、做多久内容自然就具体了。4.2 第一版教案的生成 Prompt我用的核心 Prompt 长这样已精简实际运行时还带上了source_map.md的内容请按照 lesson_designer Skill 的流程处理以下任务 1. 通读 source_map.md 和 preprocessed/ 目录下各章节资料。 2. 以大纲 outline_v3.md 的章节结构为基准先输出“章节结构确认表”。 3. 结构确认无误后逐一生成教案内容存入 lesson_plans/ch0X.md。 4. 每个知识点后标注来源格式【来源文件名-页码】。 5. 凡遇到资料间内容冲突写入 pending_issues.md不要自行选边。重点在第 2 步先输出结构确认表再开始生成。这一步相当于逼着 AI 在做正事之前先展示它对资料结构的理解。如果结构都理错了后面内容再丰富也没用结构对了内容生成就有约束。第一版生成的教案大概用了四十分钟覆盖六个章节。质量评估下来前面两章还不错后面几章逐渐出现“知识点遗漏”和“深度不足”的问题。原因也很典型前面章节资料多、内容全AI 有足够素材生成后面章节资料稀疏AI 就开始“凑内容”了。这个问题的解法在第 4.3 节细说。4.3 教案质量的逐节校验与迭代反馈生成初稿不等于完事真正的打磨在之后的迭代。我建立了一个简单的评分表对每一节教案打分维度评分标准权重结构完整八个字段是否齐全20%知识点覆盖大纲中的知识点是否全部出现30%来源可溯知识点是否有明确出处20%教学法质量教学环节是否具体可操作20%差异处理资料冲突是否被报备而非掩盖10%我把课程的全部教案发给 WorkBuddy让它按这个表逐节评分并给出改进建议。重点看两类问题一是“知识点缺失”二是“编造内容”。WorkBuddy 在对比大纲和教案时会主动标出“大纲中有但教案里没有”的知识点这个能力帮了大忙。迭代了整整两轮之后教案质量才达到可用标准。说实话第一版只能算草稿两轮迭代后的版本才具备“给老师审阅”的资格。AI 生成内容要用于教学必须有这个“逐节校验 → 反馈 → 修改”的循环少一步都会在后面翻车。5. 教学 PPT 生成实录分页逻辑与模板设计5.1 从教案到 PPT 的逻辑拆解教案完成后PPT 的生成就相当于“把教案翻译成课件语言”。这个翻译过程不能一步到位需要拆成两层叙事大纲 → 逐页内容。叙事大纲是 PPT 的“故事线”规定每一页要承担什么功能。我让 WorkBuddy 先把教案的“教学环节”拆解为页面流例如“导入部分用 1 页 案例情境”“新课讲授分 8 页”“课堂互动用 1 页情境 1 页思考题”。这一步的输出是一个树状大纲只写页面标题和页面目的不写具体内容。叙事大纲确认后再逐页填充内容。每一页内容我会限制信息量一页不超过 5 个信息点超过则拆分。因为教学 PPT 是用来辅助讲的不是用来当文档读的。这里有一个特别值得说的经验AI 生成 PPT 时特别喜欢在每一页塞满大段文字。这不是 AI 的问题是模型在模仿“做汇报”的坏习惯。所以要明确告诉它“页面文字必须控制在 60 字以内超出部分使用备注页存放演讲词”。加了这条约束后PPT 的可读性立刻提升了。5.2 用 python-pptx 模板工程渲染内容生成完毕PPTX 文件我用 python-pptx 渲染。我没有让 WorkBuddy 直接生成 PPT 文件因为 AI 直接操作 PPTX 的版式控制能力太弱很容易产出文本框重叠、字体乱飞的灾难现场。我的做法是先用 PowerPoint或 WPS手动搭一套干净的模板页包含标题页、目录页、章节页、内容页、互动页、小结页六种版式。每种版式设计好固定的文本框位置和占位符导出为模板文件。然后用 python-pptx 打开模板按内容文件的页类型找到对应版式填充文本。from pptx import Presentation def fill_slide(prs, slide_layout_index, title, bullets, notes): slide prs.slides.add_slide(prs.slide_layouts[slide_layout_index]) slide.shapes.title.text title body slide.placeholders[1] tf body.text_frame tf.text bullets[0] for line in bullets[1:]: p tf.add_paragraph() p.text line slide.notes_slide.notes_text_frame.text notes return slide这套流程跑通之后渲染一门课几十页的 PPT 只需要几十秒。关键是所有页面的版式、字体、配色都是模板统一的成品观感非常整齐。页面内容文件slides.yaml由 WorkBuddy 在上一步生成格式简洁- type: section title: 第三章 数据完整性约束 - type: content title: 主键约束 bullets: - 主键唯一标识一行记录 - 特点非空且唯一 - 示例学生表学号 notes: 强调主键在物理存储层面会建立唯一索引5.3 版式与信息量控制经验PPT 生成过程中最容易翻车的不是内容而是视觉逻辑。AI 生成的页面文字少了、精炼了但如果每页视觉形态完全一样观众照样抓不住重点。我的经验是根据“页面功能”匹配版式章节页只用大标题 小节列表不使用简报案例页用“情境描述 问题 提示”三段式练习题页则只放题面和留白区域方便课堂现场演算。模板里预留了这些版式的变体而不是只做一种内容页。另一个要点是备注页的利用。教案里很多“讲的时候要强调的话”不应该堆在 PPT 页面上而应该放进备注区。课堂上老师根据备注展开讲PPT 保持简洁。WorkBuddy 在生成slides.yaml时会同步生成对应的备注文本这一步对最终成品的实用价值非常大。注意如果你用 WPS 打开生成的 PPTX个别模板占位符的字体设置可能会被覆盖。建议生成后快速检查一遍标题字体和正文字号或者干脆让 python-pptx 在渲染后统一设置字体属性不依赖模板默认。6. 常见问题与排查技巧实录6.1 章节层级错乱AI 把三级标题当成二级用实战中第一个遇到的大问题是 WorkBuddy 在整理资料时把章节层级搞混了。尤其当资料里原本就有“1. 2. 3.”和“1.1, 2.1, 3.1”两种编号混用的情况时AI 经常把“2.1.3 小节”识别成“2 级标题”。排查思路是强制它在预处理阶段输出“目录结构树”并人工确认。具体做法是在 Skill 工作流中加入一个节点生成structure_tree.md里面明确列出大纲层级。只有当结构树与基准大纲一致时才允许进入下一步。这会打断“一步到位”的流程增加一次确认交互的时间成本但相比后续返工这个代价非常划算。6.2 教案内容“假大空”AI 学会了写废话这是我最警惕的问题主要出现在教学目标和教学环节两个字段。AI 生成的目标往往长这样“通过本课学习使学生掌握数据完整性的基本概念提升对数据库设计的理解培养良好的数据管理习惯。”听起来没错但放进真实课堂完全没法衡量。我的解决方法分两步。第一步是在 Prompt 里明确要求“教学目标必须包含可检验的行为动词”例如“能说出主键约束与非空约束的区别”“能在建表语句中正确添加 CHECK 约束”。第二步是引入“反例约束”直接把上面那种废话目标作为反例写进 Skill 的规则里“禁止输出不可衡量的目标描述。”加了这两条后再生成的教案明显“落地”了。老师看完初稿后反馈“至少知道这节课要考什么了。”6.3 知识点来源追溯失效Markdown 里找不到页码“来源标注”有时会失效原因是预处理后的 Markdown 文件本身不带页码概念AI 标注的来源可能是错误的文件或页码。这会导致复核时按图索骥找不到原文比不标注更让人抓狂。排查思路在预处理阶段生成文本时每 300 字左右插入一个“文档内锚点”。例如[Page 12]标记这样 AI 在标注来源时引用的就是一个可搜索的锚点而非“第 12 页”。Markdown 文件里的锚点可以直接被搜索校验是否准确也方便。6.4 长文档上下文丢失后面章节质量断崖式下跌处理三个章节以上资料时WorkBuddy 的上下文窗口还是能撑住的但生成质量会显著下降——后面章节的知识点覆盖明显变差。我一开始以为模型偷懒排查后才发现是上下文占用过高导致注意力被分散。对策是分批处理。不再让一个对话一口气生成六个章节的教案而是按“章节批次”分三次执行。每次只加载两个章节的资料和对应大纲生成质量立刻回升。现象可能原因解决手段章节层级混乱原始资料编号不一致生成结构树并人工确认教学目标空洞缺少行为动词约束引入可检验写法反例约束来源追溯找不到无锚点标记预处理时插入[Page N]锚点长文档生成质量下降上下文占用过高按章节分批生成不贪多6.5 生成速度异常慢的任务中断处理中途有一次生成任务跑了很久也没结束我以为是卡死了。排查后发现问题出在 WorkBuddy 尝试写一个超大 Markdown 文件时被合并了几次输出导致任务逻辑死循环。解决方式是把输出拆成多个小文件每个章节一个文件既利于备份也避免了单次写入过大文件的问题。7. 一套可复用的执行路线图与最终心得7.1 完整执行顺序速查整套流程跑下来我把可复用的执行顺序整理成清单后续换一门课照这个顺序走就可以建项目目录放入全部原始资料或软链接。提取文本统一转 Markdown插入页码锚点。建立source_map.md确认资料状态和基准大纲。编写.workbuddy/rules.md写入术语表、冲突处理规则、输出格式。配置跨对话记忆固化项目级事实。定义或复用lesson_designerSkill。生成结构确认树人工确认。生成教案初稿逐节评分迭代两轮。教案定稿后拆解叙事大纲确认页面流。逐页生成slides.yaml渲染 PPTX。打开 PPTX 快速检查版式有问题则在模板层修正。这套顺序里最容易被跳过的是第 4 步和第 7 步。跳过了后面大概率返工按顺序走整个过程基本是线性推进的。7.2 关键决策复盘复盘整件事几个关键决策值得单列出来为什么先做资料归一化而不是直接开聊因为 AI 对话窗口的临时上下文并不稳定十几个文件的内容不可能一次性完全吃透。归一化之后形成的source_map.md是一个持久、可复查的中间层这比任何 memory 功能都可靠。为什么教案和 PPT 分开两阶段因为两者的信息密度完全不同。教案要详细PPT 要精炼。如果直接“从散装资料生成 PPT”AI 会分不清哪些内容该进页面、哪些该进备注。多了教案这道中间层PPT 的生成逻辑就变得极其简单它只是教案的“视觉化翻译”。为什么用模板渲染而不是让 AI 直接画 PPT客观地说现在的大模型直接操作 PPTX 的版式控制能力还很弱。与其让它逐个微调文本框不如把视觉框架固化在模板里。内容由 AI 生成视觉由模板保证各管一段这是当前最稳的配合方式。7.3 用这套方法还能做什么这次实践本质上不是“教学资料整理”这一个场景的胜利而是“把非结构化信息加工为结构化交付物”的通用流程。换个输入输出它还能用在很多地方技术团队把散落的接口文档、会议纪要整理成统一的设计方案文档。运营人员把多轮直播素材、用户反馈、竞品分析汇总成一份运营复盘报告。个人知识管理场景下把笔记、截图、书摘整合成结构化文章或演示文稿。核心方法论只有一个不要指望 AI 从混乱直接生成成品先用规则和结构把“混乱”整理成“有序”再让 AI 在有序的基准上做内容生成。想明白这一点WorkBuddy 这类工具能发挥的空间会大很多。最后分享一个小的实操习惯处理完一个项目后我把提炼出来的规则、Prompt 模板、Skill 逻辑都归档到自己的知识库下次遇到类似项目直接复用。这次的教学资料整理从开始到成品用了两天半其中第一天基本是在搭流程和试错。等流程固化下来我估摸着后续同类项目能压缩到半天以内。