OpenCode 从零创作技能:把视频萃取出文章和幻灯片

前面有很多跟 OpenCode 相关的一点经验分享给大家:

其中关于技能的部分,有不少朋友看过了基于已有技能修改的案例之后,表示想从头来创作一个自己的技能,希望给个案例参考一下。

这回咱们考虑这样一个场景:从视频提取图片做出文档。

看视频费眼睛,也费时间。刷过学习视频的人都懂——半个小时讲下来,真正有信息量的可能就那几分钟。剩下的大半是口头禅、重复、空镜头。视频的信息密度确实不高。

但很多好东西只有视频。当年在北师大听过不少赵峥老先生的课,后来发现他在 B 站上还发了很多物理公开课。讲得好,但不看可惜,长时间盯着又累。

有了 opencode 之后就在想,能不能让它帮个忙:把视频下载下来,提取音频转成逐字稿,抓关键帧做成幻灯片,再写一篇总结。整个流程跑一遍,输出一份随时能翻看的图文材料。说干就干,这个事来回改了挺久,最后不光能做出来,还把整个过程做成一个技能了。

这个过程本身挺值得说一说的。

和上一回提到的"改一个已有的技能"不一样了,这次终于是从零开始,先想清楚要干什么,把步骤拆解开,自己详细叙述给 opencode 让它跑通验证,再把流程整理成技能文件存下来。后面每次直接调用就行,不用重新解释。

从零把一件事变成技能

有时候你觉得一个流程特别好用,但每次都得跟 AI 从头说一遍,太累了。比如这个"下载视频→提取字幕→关键帧→幻灯片→文章"的流程。你心里门儿清,但不想每次打这么多字。

opencode 的技能系统就是解决这个的。你第一次把流程跟它讲清楚,它帮你写成技能文件。以后直接调技能名,当初设计好的流程完整载入上下文,省掉所有重复的口舌。

怎么跟 opencode 说清楚你要干什么

关键是把任务拆解完、说详细。拿视频萃取这个例子来说,我给 OpenCode 的对话大概是下面这样的。(注意,我就是把下面的文字直接发给 OpenCode 的,大家也可以这么做,但没必要严格按照我这样的文本格式和次序,完全可以有自己的风格探索出来哈。)


要帮我创建一个技能。这个技能中文名字叫视频萃取,英文名字叫 VideoExtract,要完成下面这些事。

第一步,想办法调用工具把链接里的视频下载下来。yt-dlp 能用的就用 yt-dlp 下载。如果实在不能下载,就用截图加音频流的方式把内容获取下来。

第二步,处理音频。如果能获得原始的字幕就用原始字幕,字幕比转写更准。如果不能,就基于音频来生成字幕,用 whisper 或者 faster-whisper 都行。这样就能得到一个可以作为基础文本的东西——但注意不要直接用这个文本,原始转写会有笔误和口误。

第三步,修正文本。基于前面的字幕信息或者转写出来的文本,整理一遍,看里边会不会有笔误或者口误之类的。说错的东西修正一下,重复的口头语去掉。修正完的版本才是有用的。

第四步,从视频里提取关键帧。有些视频连续好几帧变化不大、信息差异不大,要设置一个合理的阈值,只截真正有画面变化的帧。尤其是那种 PPT 幻灯片的公开课,画面几秒一翻页,关键帧就在翻页的那一刻。截下来的关键帧按照前后次序记录好时间轴。这个时间轴后面有用——你点文字想快速跳转的时候,能对得上。

第五步,生成最终产物。前面你有了文本(修正过的逐字稿)也有了图片(关键帧),就可以生成了:

  • 可以做成一个网页,打开方便。网页里内嵌好图片也排好文本。
  • 网页也可以转成 Word 文档,方便编辑。
  • 生成幻灯片(PPTX)。
  • 生成一个干货总结,去掉铺垫和重复,只留核心内容,但不能损失任何重要信息。
  • 最后,有一个可选项:中间的这些临时文件(下载的视频、提取的音频、原始截图)要允许用户选择保留还是删除。

后续如果要进行上面的过程,要能够直接通过 /视频萃取 https://www.bilibili.com/video/BVxxxxxx 之类的命令来完成这个过程。


这段对话为什么能让 opencode 写出一个完整的技能

拆开看的话,上面这段话给了 opencode 它需要的所有原材料:

每一轮要做什么:下载、音视频分离、文本修正、关键帧、最终产物,五步,每一步都明确了输入和输出。

工具链:yt-dlp 下载、ffmpeg 提取音频和帧、whisper 转写、python-pptx 做幻灯片。

异常兜底:不能下载就截图加音频流,任何平台都能拿到内容。

质量控制:修正转写中的笔误和口误,不是直接用原始输出。

多格式输出:网页、Markdown、Word、幻灯片、总结,不同需求都能覆盖。

opencode 拿到这些之后,能把它转成一个结构化的 SKILL.md 文件——包含命令名、触发条件、步骤模板、输出清单、工具依赖、注意事项。下次直接用命令调就行了。

写好技能之后怎么用

按照上面的过程完成之后,OpenCode 应该已经把技能文件放到 ~/.config/opencode/skills/ 对应的目录下。之后只需要说一句:

/视频萃取 https://www.bilibili.com/video/BVxxxxxx

它就自动把整套流程载入上下文,你不必再说第一步干嘛第二步干嘛。这也是技能和纯搞一个脚本的区别——技能是带上下文、带步骤的,模型知道整体要干什么。重复的事一次跑通,后面全靠命令。

完成后的效果如下图所示:

OpenCode 根据指令生成技能文件和输出目录

然后检查一下对应目录应该是给制作好了所要求的文件了。

桌面上的测试输出目录和产物文件

上面这个案例只是为了给大一新生演示,所以非常简单也非常粗糙,其实技能系统还有很多更复杂的玩法,此处就不展开更多了。

千万不要怕自己没有什么编程基础啊经验啊等等的,这些都不应该太担心,大胆尝试一下再说。

没有任何编程经验的朋友也不要担心,只要你能把这个过程说清楚,并且是可控的,每一步都有明确的验证的方法,就基本可以大胆尝试不用担心了。

因为重要的不是任何的编程的基础和经验,而是把一件事情拆解成一个个可行步骤的这个过程。

好了,接下来根据你需要的场景,想办法创作属于自己的技能吧。