video-courseware-extractor
Skill1 starsChanged 38 days agoMITView on GitHub
从会议录像、网课视频中按讲者和时间点提取课件,生成每位讲者独立 PPTX,合并页内动画/视频状态并核对回翻重复页;清理截图课件中的正在共享、计时器、鼠标、黑边和会议界面,必要时重建可编辑文字、重排为16:9或给图片课件更换底板。用于“视频提取PPT”“按讲者截课件”“去掉视频截图痕迹”“截图课件宽屏重排”“图片PPT换底板”,不用于一般视频剪辑或已有PPT的普通格式转换。
In this repository28 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- audience-report-formattingSkill
- baidu-netdiskSkill
- baidu-netdisk-syncspace-recoverySkill
- china-proxySkill
- chrome-devtoolsSkill
- claude-maintenanceSkill
- cloudcli-device-onboardingSkill
- codex-dream-skin-fixSkill
- content-research-writerSkill
- git-history-cleanupSkill
- github-aliyun-deploySkill
- github-kbSkill
- google-flow-story-videoSkill
- mac-windows-lanSkill
- meeting-materials-uploadSkill
- meeting-reimbursement-auditSkill
- openmaicSkill
- opus-code-videoSkill
- seedance-short-dramaSkill
- spec-modeSkill
- wechat-account-bookmarksSkill
- wechat-ai-model-writerSkill
- wechat-android-shortcutsSkill
- wechat-ios-shortcutsSkill
- wechat-medical-writerSkill
- wechat-tech-writerSkill
- wps-presentation-batchSkill
The file
Files
视频课件提取与修复
把录像里的课件还原成能正常展示的 PPT。分两项验收:内容收齐(页面不漏、不错、不编)和外观干净(没有会议痕迹、不变形)。把整页截图装进 PPT 不等于完成。新会话从本入口开始,不依赖旧聊天、旧讲者名单、固定坐标或本机临时脚本。
红线
以下规则适用于所有步骤,参考文件不再逐条重复。
- 按逻辑页交付。 扫描保留短页和全部变化候选,人工核对后按选页与去重规则生成整理版:页内动画/视频各取一个完整代表状态,整套回翻重复内容只保留一次;用户要求复现讲述过程时依其要求。相似度和时长只筛候选,每个删除写理由。
- 不编内容。 被遮挡、模糊、截断的数值、剂量、出处和文献半句不猜补,不用生成式内容代替证据图。歧义保留可辨认的原文,列为待核对并写明页码。
- 证据图保真。 CT、病理、照片、报告、曲线不拉伸、不重绘、不整图去白,也不靠锐化“恢复”看不清的字。只有完整可核对的数据才能重建图表。
- 分清界面和内容。 会议时钟、正在共享、鼠标、控制条要清理;报告的检验日期、图表时间轴、页脚、Logo、引用是内容,必须保留。
- 备注和日志分开。 新建稿备注为空;来源时间、裁切框、OCR、筛选理由留在工作目录。已有真实讲稿不随意清除。
- 不覆盖。 源视频、源 PPT 保留,成品另存;输出目录已存在时脚本拒绝写入。不重跑旧生成脚本覆盖人工校对的内容或用户后来的修改。
- 只报告实际做过的检查。 没在 PowerPoint/WPS 打开过,就不说“已在 PowerPoint/WPS 检查”;没逐页看过,就不说“已逐页验收”。
- 公开 Skill 不收私有资料。 真实讲者、病例、视频、底板和本机绝对路径只放任务私有目录,不写回本仓库。
快速流程
SKILL_DIR 为本 Skill 的实际安装路径。命令参数和 plan 格式见 提取流程与配置。
| 步骤 | 做什么 | 命令 / 产物 |
| 1 | 建任务清单,探测视频 | video_slides.py probe --video V |
| 2 | 定位每位讲者和课件区域,写 plan.json | 首、中、尾整帧:ffmpeg -ss T -i V -frames:v 1 -n F.png |
| 3 | 粗扫候选页 | video_slides.py scan --plan P --out scan.json |
| 4 | 出预览,逐个审核,补漏页、合并状态并全套去重 | video_slides.py preview --selection scan.json --out-dir D,审核结果写入 selected.json(每项 keep + reason) |
| 5 | 取原分辨率整帧 | video_slides.py capture --selection selected.json --out-dir D → manifest.json |
| 6 | 生成截图版草稿 | node build_image_decks.mjs manifest.json DRAFT_DIR |
| 7 | 外观修复、16:9 重排或换底板 | 第 4 节及参考文件 |
| 8 | 验收后交付 | 宿主验证器 + audit_pptx.py + 全部页面渲染 |
已有截图PPT的外观修复从第7步开始;已有PPT只需合并或检查重复时,直接读选页与去重参考,在当前文件上处理。只问会阻止工作的缺项,已给出的信息不再问。
范围与工具
- 有源 PPT、PDF 或独立共享屏幕轨道时先检查能否直接利用,不从低清视频重复重建已有原件。
- 分工:本 Skill 管讲者定位、翻页筛选、截图修复和内容核对。PPT 的创建、渲染和最终验证用宿主当前可用的 presentations Skill;普通导出和窄范围 OOXML 修订可用
wps-presentation-batch。读取实际安装的入口,不硬编码宿主插件版本和缓存路径。 - 依赖:可用
load_workspace_dependencies时先发现宿主运行环境。视频脚本需要 Python 3.10+ 和 FFmpeg/FFprobe,仅scan另需 NumPy。缺工具时说明具体缺项,不宣称已完成;安装依赖或联网前遵守当前环境的网络规则。 - scripts/build_image_decks.mjs 依赖宿主的
@oai/artifact-tool,只导出私有草稿,正式交付仍走宿主验证。没有该库时用宿主支持的其他 PPT 作者工具,不把图片改扩展名冒充 PPT。 - 图片编辑遵守宿主工具限制,限制不因本 Skill 而豁免。优先重新选帧、原生 PPT 裁切和原生文字重排。
1. 建立任务清单
- 查目录、已有输出和用户给的时间点。明确或合理推断:视频文件、讲者姓名、每段大致起止、输出位置和命名、是否要求可编辑或 16:9。
- 时间点只是定位锚点。分清录像相对时间和会议时钟/墙上时间;多个视频文件分别记录,秒数不能混用。
- 用 probe 记录时长、显示尺寸、旋转和像素宽高比。时间越界先修正;有旋转或非正方形像素时,先标准化成正方形像素的工作副本并记录转换(见 extraction.md 第一节),不拿编码宽高直接裁。
- 工作文件放在交付目录之外的私有暂存区,例如
~/.cache/视频课件/<任务名>/,不和成品、原始素材混放。用户授权替换原文件时,先暂存、核验再替换。 - 用户要求清理或确认任务完成后,按交付与清理处理。先看用户指定的参考目录,交付目录只留当前课件、原始素材和一份交接说明;先保存续作信息,再把旧版与工作文件移入废纸篓。
- 按讲者建清单:每人一份 PPT,不是每段一份;同一讲者分多段时记录段序并合并。讲者身份用用户名单、议程、封面交叉确认,不能只看当前发言头像。
- 记录源文件指纹和大小,用于中断恢复和防止混用旧缓存。
2. 定位讲者和课件区域
- 在锚点前后 10–30 秒取样,找到第一张课件和交接给下一位的边界,再按实际转场扩大范围。
- 每人至少看首、中、尾三张完整帧,记录课件矩形
[x,y,w,h],原点为显示帧左上角。区分课件背景与会议背景、摄像头、侧栏、共享工具条、上下黑边。 - 同一讲者的封面和正文比例可能不同,共享窗口也会移动或放大。布局一变就拆成多段或按页覆写裁切,不能一个坐标套全场。边缘识别、白区识别只给候选,深色课件和白色会议背景会让它们失效。
3. 收齐页面,选清晰帧
- 在课件区域内低清粗扫,通常 1 帧/秒。
ignore_regions用来排除时钟、共享提示、鼠标热点等动态区域,只影响检测,不会清理成品图像。 - 扫描器保留短区间,只标记是否稳定。先看带编号和时间的候选图,再回到原始彩色整帧。变化小不等于重复:多一个数值、箭头、结论或图像都可能是有效页面。
- 回查所有转场边界和不稳定区间;快速翻页、淡入淡出、短页提高到 4–10 帧/秒或逐帧检查。低频扫描可能整页漏采,只回查已发现的转场也找不回来;还要对完整讲课时段连续复看或密集采样,留意灰度相近但颜色或标记变化的页面。
- 读取页内动画、视频与整套去重,为每个候选写
keep、reason和稳定来源ID。先合并同页动态状态,再查非相邻回翻重复;独立报告、日期、解剖层面的变化不能仅凭同标题合并。删除页映射到保留代表页,过渡帧、桌面、参会名单另写排除理由。 - 在每个稳定区间挑无鼠标遮字、无提示、无动画残影的帧,取原分辨率 PNG。低清灰度检测图不能进成品。
- 原始整帧保留在工作目录,正式放置时再裁到课件边界。最终页码、来源时间、裁切框一一对应。
4. 外观修复
详细方法见 外观修复与宽屏重排。按以下优先级选方法,不要求每页都走全部步骤:
- 同一页换无遮挡的帧,或用已有原始课件。
- 精确裁掉课件外的会议界面、黑边、共享条,不切到正文和页脚。
- 位于纯色空白区、没盖住任何内容的小提示,用无边框、颜色一致的原生形状遮盖;逐页检查,不在渐变或纹理上留下补丁。
- 普通文字页重建为可编辑文字,统一字号、段落和留白;需要时重建封面和标题。
- 证据图保留原图,只清掉图外多余背景并保持比例。
“看不出来”是外观目标,不代表恢复了视频没录到的信息,也不能把文件说成原作者原版。缺失或模糊处先找更好的来源,确实无法恢复时列出页码和限制。
- 用户只说“研究 16:9”:做代表样页和方案说明,不批量改整套。已授权制作:做完整套,不重复索要许可。宽屏靠重排,不把 4:3 整图横向拉伸,也不靠裁上下边缘硬塞。
- 16:9 完整改版或图片课件换底板,继续读 16:9 重排与图片课件换底板。两者共用内容拆分和重排流程,已校对的可编辑宽屏稿优先复用。只有独立背景层的普通替换才交给 WPS 批处理;含正文的整页截图不能当背景删除。
5. 组装与命名
- 默认
讲者姓名.pptx;用户指定命名或参考目录时沿用其规范,如截图版讲者-课题.pptx、整理版讲者-课题-16比9浅色底板.pptx。没有明确讲课题目时,读封面、病例主线和总结,拟一个内容支持的题目;不凭药名猜主题,不夸大结论。 - 截图版保留课件实际比例;可编辑重排版用用户指定比例。同一份 PPT 画布统一,异形证据图按比例放置,不强制每张铺满。
- 页面清单定稿后再编最终页码;用户要求原页数时作为验收项。截图版与重排版按来源ID同步选页;只保留一个结束页,详见选页参考。
- 普通文字保持可编辑,报告和影像可以保留图片;交付时准确说明可编辑范围。用户需要来源对照表时单独提供,不放进幻灯片。
6. 验收与交付
执行 验收清单。重点:
- 全部页面渲染后逐页全尺寸查看;总览只用来观察整体风格,不能代替单页检查。
- 四角和底边不留正在共享、会议时钟、鼠标、界面边框、黑边、白块补丁。
- 校对数字、小数点、正负号、指数、单位、日期、药名剂量和指南出处。
- 文本不溢出、不压图,没有孤立末字或括号、数值拆断和难看的换行;图片不拉伸、不裁断关键标签。
- 动画合并后已独立完成整套非相邻重复检查,确认代表页覆盖完整,首尾无冗余;检查页数、比例、包结构、备注,确认源文件没被意外修改。
audit_pptx.py是补充检查(含重复 ZIP 条目、未引用媒体、未用版式),不代替宿主验证器和实际渲染。换底板、加首尾页和重编页码见宽屏与换底板参考的 F 段。 - 成品放在用户看得到的目录。macOS 从隐藏工作区复制出来后检查,只清除成品意外带上的 Finder 隐藏标记。
- 交付每位讲者的最终 PPT,附上不能恢复的内容和需核实的页码。
中断恢复与交接
先读工作目录里的配置、候选筛选和最终清单,核对源指纹、裁切和目标设计没变,只重做缺失或受影响的步骤。重新生成时以人工校对后的内容清单为准;已有成品的增量修改以当前PPT为准,先识别用户后续编辑和未生成修订,避免旧清单覆盖新文件。换模型时在任务目录写私有交接说明:最新成品、各讲者阶段、源底板、权威内容清单、已知问题、下一步范围和当前文件指纹,写法见宽屏与换底板参考的 G 段。
本 Skill 的验证
python3 -B -m unittest discover -s "$SKILL_DIR/tests" -v设置宿主发现的 RUNTIME_NODE 和 RUNTIME_NODE_MODULES 后,同一测试命令会额外执行 PPT 草稿导出、回读与渲染测试;缺少运行环境时该项明确跳过。
行为场景见 evals/evals.json。脚本测试只能验证检测和文件处理规则;“没有明显截图痕迹”和事实完整性仍须逐页视觉验收。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

