按PPT目录无损切分录屏视频

SKILL内容创作

原名 video-chapter-split

内容创作 未标注权限 许可证不明确
安装这个技能

用画面文字识别与 PPT 目录文本匹配,定位每章起止位置,再把培训或讲座录屏按章节无损切成片段,不重新编码,适合把长课程视频拆成小节。

一句话选型结论

按资料字段整理

按PPT目录无损切分录屏视频是内容创作类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类内容创作 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_41023ddb/video-chapter-split
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

内容创作
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_41023ddb仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量11.3 KBSKILL.md 原文大小,越大说明说明书写得越细

能做什么

0 项能力
上游给出的能力概览与适用场景
课程视频切小节按PPT目录分段录屏无损切割

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写文章与脚本

按主题产出初稿与分镜脚本。

改稿与润色

把草稿改顺、统一语气。

多平台文案改写

同一内容按平台改成长短不同的版本。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在内容创作场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
按PPT目录无损切分录屏视频当前 未标注权限 未标注 未标注 未标注 有
AI 视频生成 调用外部服务 GitHub 仓库 431.3 万 Codex、Claude、Cursor 有
视频帧 联网访问 ClawHub 市场 262.1 万 OpenClaw 有
Markdown 转换器 写入文件 ClawHub 市场 135.3 万 OpenClaw 有
哔哩哔哩全合一 接触敏感数据 ClawHub 市场 64.1 万 OpenClaw 有
Remotion video toolkit 命令行 浏览器控制 ClawHub 市场 63.9 万 OpenClaw 有

SKILL.md 全文

11.3 KB
模型实际读到的说明书原文,来自技能仓库

按 PPT 目录切分视频

把一段(或几段)录屏视频,按 PPT 的目录章节切成独立片段。默认无损流拷贝:
画质、码率、音轨与原片逐比特一致,1 小时视频切片耗时约 10 秒。

判据是文字,不是画面。低于 500 kbps 的录屏(尤其 WPS 演示投屏)做感知哈希
比对完全不可用,实测最高相似度仅 0.72 且无区分度。原因与实证见
references/pipeline.md——动参数前先读它。

硬性红线

  1. 先探测,再切割。 录屏开头可能有很长的黑屏死气(实测有一段 57 分 38 秒
    全黑 + 数字静音)。不先跑 probe/frames 就切,第一个片段会带着几十分钟黑屏。
  2. 不凭猜测下结论。 两次观测矛盾时,直接抽该时刻的帧实测比对,不要推断。
  3. 如实报精度。 做了 refine 边界精度约 ±1 秒;跳过则约 ±30 秒。
    章节是否分对取决于 anchor_pages 是否正确。做不到就说明做不到。
  4. 模型不能读图时不要假装读过。 全部校验走 OCR 文本 + 数值。
  5. 不重新编码,除非用户明确要求。流拷贝是"直接视频生成视频"的正解。
  6. 片段只会略长,不会丢内容(-ss 落在前面的关键帧上)。校验时长时按
    max(5s, 2%) 容差判断,不要为几秒偏差反复重切。
  7. 不篡改原视频。 只读原片,输出到新目录。

工作流

全程用一个 --work 目录保存中间产物,每一步都可重跑,不必一次跑完。

0. 环境

  • 调 load_workspace_dependencies 取 Python 路径。
  • ffmpeg 在 Windows 上通常没装。先探测,缺了就下:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force   # 脚本签名策略
& <skill-dir>\scripts\get_ffmpeg.ps1 -Work <work>

后续所有 Python 调用形如:

$py = "<load_workspace_dependencies 返回的 python>"
$vs = "<skill-dir>\scripts\vsplit.py"
$env:PYTHONIOENCODING = "utf-8"      # 中文输出
& $py $vs <子命令> ...

1. probe — 视频体检

& $py $vs probe --video "<视频>" --work <work>

输出时长、流、是否自带章节、关键帧表(median GOP / max GOP)、格式元数据。

如果 chapters: N found 且章节名就是想要的章节——直接把章节时间写进
boundaries.json 的 cuts({deck,no,title,start,end,dur}),跳到第 8 步 cut,
不必走下面的 OCR 流程
。

2. outline — 读 PPT 目录

& $py $vs outline --work <work> --deck "DMS:<DMS.pptx>" --deck "APM:<APM.pptx>"
  • --deck NAME:PATH 可重复;顺序必须等于视频里的播放顺序。
  • 输出 outline.json:每页的文本行、标题,以及自动探测的目录页与章节提议。
  • 目录页是按结构认出来的:整页由 编号/章节名 成对组成,而不是看有没有
    "目录"两个字——真实目录页上常常只有 01 服务介绍 02 信息调研 …,
    反倒有正文页标题叫「专业服务产品目录」会被误命中。
    重复出现的目录页(每章开头各一份)会被一并识别,它们是很好的章节锚点。

3. sections — 产出并复核 sections.json

& $py $vs sections --work <work>

生成 sections.json 后打开看一眼。每个章节:

字段 含义
anchor_pages 该章首页在 PPT 里的页码。视频里这一页首次出现 = 该章开始
lead_pages 可选。章节前的目录/分隔页页码,用于把起点往前挪到分隔页

脚本会打印一张复核表,逐条看这三类提示:

  • anchor=MISSING —— 没找到锚点页,必须手工指定。
  • <- slides N look like this section's lead-in —— 这条提示可靠。说明第 N 页
    对本章名的贴合度高于对上一章名。典型情况:目录写"安装部署",正文首页标题却是
    "环境准备"。把 anchor_pages 改成 [N]。
  • hint: slides 1-2 (deck title / agenda) precede the first section —— 每份 PPT 的
    第一章默认锚在标题页(第 1 页),这样开场与目录页属于第一章。
    想从正文首页开始就把 anchor_pages 改成目录页 +1。

不确定页码时用 outline.json 里的 slides[].text 对照。

> sections 只是提议,match 之后还要再复核一次。 常见情况:提案的锚点是
> 章节分隔页,但讲师把分隔页直接点过去了(只停 1 秒),视频里根本没留下——
> 于是那一章整个找不到边界。这时把它改成该章的第一个正文页(目录页的下一页)。
> 反过来,某章算出 8 秒、13 秒这种极短时长,先别怀疑算错:很可能讲师真的跳过了,
> 如实保留并在索引里说明。

4. frames — 抽帧、找稳定状态、选代表帧

& $py $vs frames --video "<视频>" --work <work>

1 fps 抽帧 → 亮度图(报出黑屏死气区段,并停下让你确认要不要排除)→
帧间差分找稳定画面状态 → 每个状态全分辨率重抽一张代表帧到 reps/。

黑屏提示会打印 !! blank (near-black) stretches found。看到就停下来问用户:
是排除还是保留。

5. OCR 代表帧

& $py $vs ocr-list --work <work>          # 打印现成命令
$files = (Import-Csv <work>\rep_manifest.csv | ForEach-Object { $_.file })
& <skill-dir>\scripts\ocr.ps1 -Paths $files | Out-File <work>\ocr_reps.txt -Encoding UTF8

ocr.ps1 用 Windows 内置 Windows.Media.Ocr(无需安装任何东西),
按传入的完整路径逐图输出 ===== <path> ===== 块。日志很大(1 小时视频约 190 KB),
不要让 OCR 文本进你的上下文,交给 match 读。

6. match — 文字匹配 + Viterbi → 候选边界

& $py $vs match --work <work>

输出 timeline.json(逐帧幻灯片时间轴)与 boundaries.json(各章起止),
并在终端打印合并后的时间段视图(from / to / score / slide)和候选切点表。

看两件事:

  • 时间轴里若有明显不合理的跳跃(比如 APM 段一直标成 DMS 末页),
    参考 references/pipeline.md 第 3 节的转移代价,不要乱调阈值。
  • !! sections without a boundary 表示某章锚点页在视频里没找到——
    多半是那页被跳过了,或 anchor_pages 指错了。

此时必须停下来把候选边界给用户看,确认后再做 refine。另外若打印了
!! N s (… -> …) before the first section are covered by no clip,说明开头那段
非 PPT 画面(投屏/门户/桌面)没归入任何章节,要和用户确认留还是切出来。

7. refine + 再 OCR + match --fine — 把边界收到 1 秒内

& $py $vs refine --video "<视频>" --work <work>
$files = (Import-Csv <work>\fine_manifest.csv | ForEach-Object { $_.file })
& <skill-dir>\scripts\ocr.ps1 -Paths $files | Out-File <work>\ocr_fine.txt -Encoding UTF8
& $py $vs match --work <work> --fine

refine 一次采两个尺度:大范围 3 秒步长找对邻域,候选点附近再 1 秒步长精修。
实测一份 11 章的 1 小时视频共取 825 帧、约 3 分钟。

跳过这一步精度约 ±30 秒(受代表帧位置支配);做了约 ±1 秒。要精确就做。

> refine 是逐时间戳单独定位的,不是用 fps 滤镜批量抽。
> fps 滤镜会把帧吸附到自己的输出网格上,与真实时间戳有 1–2 秒的静默偏移,
> 足以让所有边界一起偏。详见 references/pipeline.md。

8. cut — 流拷贝出片 + 校验

& $py $vs cut --video "<视频>" --work <work> --out <work>\clips

-c copy 无损切割,切点自动回吸到 --snap(默认 4 秒)内的关键帧,
随后自动 ffprobe 校验每段的时长与流数量并打印结果。

若某章算出 ≤0 秒,脚本会报错并跳过而不是照切——这说明锚点顺序错了,
回去看 sections.json。

> ⚠️ DSH 沙箱:被 spawn 的进程(ffmpeg)只能写工作区内,写工作区外报
> Permission denied,而 PowerShell 自己的 Copy-Item 能写任意位置。
> 所以先切到 <work>\clips,再用 Copy-Item 搬到目标目录。
> 不要为这个去查 ACL,那是预期行为。

9. verify — 确认每段开场是对的章节页

& $py $vs verify --work <work>
$files = (Import-Csv <work>\clipcheck_manifest.csv | ForEach-Object { $_.file })
& <skill-dir>\scripts\ocr.ps1 -Paths $files | Out-File <work>\ocr_clipcheck.txt -Encoding UTF8

把 OCR 结果与章节首页文字对一遍。全部对得上再交付。

10. 交付

Copy-Item "<work>\clips\*.mp4" "<目标目录>" -Force

用 present 交付片段 + 一份索引说明(Markdown 或 txt),索引里写清:

  • 每个片段对应的目录章节、起止时间码、时长、大小;
  • 视频里的异常发现(黑屏死气、非 PPT 演示段、被跳过的章节);
  • 分界是怎么定出来的、精度多少、哪些地方需要人工确认。

不要交付中间脚本与抽帧素材。

常用参数

场景 做法
视频自带章节 probe 里读出章节起止,手写进 boundaries.json 的 cuts,直接 cut,跳过 OCR 全流程
用户直接给了时间码 同上:手写 cuts 后跑 cut,不需要 PPT 和 OCR
只要粗切、不要精细 跳过 refine,边界精度约 ±30 秒
只关心某一段 frames --lo <秒> --hi <秒> 限制范围
私有构造,不连外网 先手工放一份 ffmpeg 到 <work>\tools\,或 --ffmpeg <路径>
章节很短(讲师跳页) 如实保留,在索引里说明原因,不要合并掉

边界

  • 章节划分依赖人工确认的 anchor_pages。脚本能自动提议,但目录名与正文页
    标题不一致时必然提错,必须看一眼 sections.json。
  • 两份 PPT 的目录页文字可能完全相同(只有页码不同),此时只能靠播放顺序 +
    Viterbi 单调性区分,无法靠单帧文字区分。
  • 低码率画面 OCR 噪声大,正确匹配的得分也常见 0.40–0.70,
    阈值默认 0.60 而非常识上的 0.9。不要为了提高"把握"盲目提高阈值,会把正确页筛掉。
  • 需要视觉核查时必须走 office-pptx skill 的渲染 CLI(DSH 捆绑的 LibreOfficeKit),
    不要去找系统安装的 soffice。模型不能读图时如实报告"视觉核查未完成"。
  • OCR 只支持 Windows(Windows.Media.Ocr)。非 Windows 需自行替换 OCR 后端,
    匹配与切割部分不受影响。
  • 本 skill 只做按章节切分,不做转码、压缩、拼接、字幕或画质修复。

常见问题

5 问
答案由本站依据条目字段整理
按PPT目录无损切分录屏视频怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_41023ddb/video-chapter-split。安装方式为未标注。装完刷新技能列表或重开客户端。

按PPT目录无损切分录屏视频支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

按PPT目录无损切分录屏视频权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

按PPT目录无损切分录屏视频收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

按PPT目录无损切分录屏视频用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。