用途
BUAA Classroom Summarizer 用于从北京航空航天大学课堂平台(classroom.msa.buaa.edu.cn)提取课堂回放资料,并辅助生成结构化的课程笔记。它主要面向两类输入:单个 livingroom 回放链接,以及 coursedetail 课程页面。该技能通过复用本地 Chromium 登录会话完成认证,适合需要批量整理课程回放、生成学习笔记的使用场景。
主要能力
该技能将工作划分为脚本层和智能体层。脚本负责认证、提取、回放诊断、缓存和产物写入;智能体负责课程对齐、概念确认、术语修正和最终文稿重建。
核心命令包括:
- 单次回放提取:
python scripts\extract_buaa_classroom.py "<livingroom-url>" --output-dir "<output-dir>" - 整门课程回放枚举或提取:
python scripts\collect_buaa_course_replays.py "<coursedetail-url>" --output-dir "<output-dir>"python scripts\collect_buaa_course_replays.py "<coursedetail-url>" --output-dir "<output-dir>" --extract-existing --skip-existing - 当本地 cookie 复用不可靠时,使用运行时浏览器认证:
python scripts\extract_buaa_classroom.py "<livingroom-url>" --output-dir "<output-dir>" --browser-runtime-auth --browser-channel "auto"
该技能要求脚本在生成任何笔记前,必须产出一个 replay_diagnosis,并将回放归入以下三类之一:waiting_transcript、partial_transcript、transcript_only。下游笔记逻辑必须消费该诊断结果,而不是在其他地方重新计算路由决策。
使用方式
独立 Markdown 笔记工作流
准备语义重建包:
python scripts\extract_buaa_classroom.py "<livingroom-url>" --output-dir "<output-dir>" --export-markdown-note
面向用户的模式:
python scripts\extract_buaa_classroom.py "<livingroom-url>" --output-dir "<output-dir>" --export-markdown-note --markdown-note-mode "final-lite"
python scripts\extract_buaa_classroom.py "<livingroom-url>" --output-dir "<output-dir>" --export-markdown-note --markdown-note-mode "final-explained"
这些模式只写入 semantic_rebuild/semantic_rebuild_input.json 和 semantic_rebuild/semantic_rebuild_prompt.md。所有面向最终产出的模式都只写入语义包,默认不输出 lesson_note.md。
在接受智能体撰写的笔记为最终版本前,需运行:
python scripts\validate_final_note.py "<final-note.md>"
然后创建评审包:
python scripts\review_final_note.py --note "<final-note.md>" --semantic-input "<semantic_rebuild_input.json>" --output-dir "<review-dir>"
课程身份规则
对于 coursedetail URL,需先解析课程身份再选择课程文件夹或复用 vault 上下文。优先从课堂/SPoC 元数据、已保存的课程详情文件、回放元数据或稳定的回放标题中提取最强可用的课程标题。将规范化后的课程标题视为规范课程身份。如果标题匹配现有课程,即使 course_id、讲师、上课时间、教室或 sub_id 范围不同,也视为同一课程。如果没有可靠标题,仅将 course_id 作为临时身份(如 course-136278),不要按教师、日程、课程日期、旧提取目录或附近 vault 内容合并到已有标题的课程中。
最终笔记质量门
面向用户的最终笔记必须是语义重建,而不是装饰过的转录片段列表。如果笔记包含以下模式,应拒绝:将原始 ASR/OCR 片段作为“代表性表达”呈现;出现“课堂讲解与主题推进 1”之类的标题;出现“整理时建议不要把这一段只当作...”之类的模板化内容;各节重复通用建议而非课程特定的数学内容;未修正的转录噪声;将低质量诊断标记为“正式笔记”的课程概览。
评审门
最终化需要当前 Markdown 字节同时通过两个门:scripts\validate_final_note.py 通过;独立评审返回 decision=pass、finalization_allowed=true,且 reviewed_note_sha256 等于 final_note_review_input.json 中的 note.sha256。如果笔记在任一评审后发生变化,两个评审结果均失效,必须重新运行。
语义重建规则
在接受重写为最终版本前,执行课程对齐检查。当课程上下文使预期术语明确时,修正明显的 ASR/OCR 术语错误。保持课程时间轴可见,每个最终章节应保留包时间范围或粗略的 MM:SS-MM:SS 标记。数学公式仅使用 $...$ 或 $$...$$,不要用反引号包裹公式。将课程转录视为章节边界、课程主线和完成度检查的唯一主要来源。仅当课程转录覆盖率和摘要覆盖率均通过时,才将课程标记为最终版本。
转录专用规则
当 replay_diagnosis=transcript_only 时:不要输出“课程定位 / 基础概念 / 方法流程”之类的虚假内容模板;让脚本仅提供课程转录的时间段、代表性转录行和 transcript_overview;让智能体从课程转录加课程上下文推断真实课程结构;不要要求脚本从仅转录材料中预先确认概念。
PPT 规则
默认优先教师流。即使存在 PPT 流,也将 PPT 视为辅助。PPT 可帮助术语拼写、页面或书籍标题、公式符号和后勤截图。PPT 不得决定章节边界、课程主线、概念生成或完成状态。
仅后勤教师审查
如果用户只想跟进作业、考试、通知或安排:
python scripts\extract_buaa_classroom.py "<livingroom-url>" --output-dir "<output-dir>" --export-markdown-note --lightweight-teacher-review
此模式准备简短的教师流审查片段和 teacher_review.json。在后续确认步骤将其标记为已确认之前,不应静默地将结论重写进笔记。
失败规则
如果课程转录缺失,保留提取产物但不编造正式课程笔记。如果课程转录为空或接近为空,按缺失转录处理:保持在等待/积压状态,不写最终笔记。如果课程转录覆盖率明显不完整,仅保留诊断草稿而非最终笔记。如果课程转录存在但当前摘要仅覆盖课程早期片段或留下大量未覆盖空白,将笔记标记为 needs_review 而非最终版本。如果会话复用失败,使用 --browser-runtime-auth 重新运行。在 Windows 上,验证生成文件时优先使用 UTF-8 shell。
适用场景
适用于需要从 BUAA 课堂平台提取回放资料并整理为结构化学习笔记的场景,包括单次回放提取、整门课程回放枚举、语义重建包导出、最终笔记校验和评审等。也适用于仅需跟进作业、考试、通知或安排的后勤审查场景。
限制
该技能依赖本地 Chromium 登录会话,会话复用失败时需使用运行时浏览器认证。最终笔记的生成需要课程转录存在且非空,转录缺失或接近为空时无法生成正式笔记。PPT 仅作为辅助,不能决定章节边界或课程主线。最终笔记必须通过校验和评审门才能被标记为最终版本。