# Video Blog

用户要把一个视频写成博客文章、公众号或专栏文章、图文稿时用：一篇不看视频也能读明白的完整文章，分作者视角（用户自己的视频，以用户名义发布）与观众视角（别人的视频，带出处的转述）...

- Repository: https://github.com/JimLiu/baocut (1645 stars)
- Category: Engineering
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add JimLiu/baocut --skill video-blog -g -a claude-code -y`
Codex: `npx skills add JimLiu/baocut --skill video-blog -g -a codex -y`
Cursor: `npx skills add JimLiu/baocut --skill video-blog -g -a cursor -y`
Gemini CLI: `npx skills add JimLiu/baocut --skill video-blog -g -a gemini-cli -y`

## Description

用户要把一个视频写成博客文章、公众号或专栏文章、图文稿时用：一篇不看视频也能读明白的完整文章，分作者视角（用户自己的视频，以用户名义发布）与观众视角（别人的视频，带出处的转述）。需要视频的转写。不用于只要摘要要点（用视频内容总结），也不用于与视频无关的写作。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 视频写成博客文章

读这篇文章的人没看过视频，多半也不打算看。他要的是一篇完整的文章：读完之后，视频里讲的道理他懂了，例子他记住了，步骤他能照着做。所以它既不是整理过的文稿，也不是总结：总结告诉读者这一期讲了什么，文章把这一期的内容完整地重讲一遍，让人读得下去。

最容易写坏的两种样子：一种是把文稿去掉口头禅、分几段、加几个小标题就交出去，读起来还是一个人在说话的记录，前后跳、指代不明、该解释的没解释；另一种是写着写着变成了总结，每个话题两句话带过，例子、数字和步骤都没了。前者读者读不顺，后者读者读完什么也带不走。

动笔前先用 `skills_read` 读本 skill 的 `references/writing-baseline.md`：材料、基线（忠于文稿、不编造、转述不加料、补足背景）、两类读者与视角、篇幅与风格的档位、默认值都在那里，下面不重复。

## 1. 取材料

1. 用 videos_inspect 看视频的文档。没有转写（kind 为 speech 的文档）时先转写，告诉用户转写在进行。转写没润色过时人名、术语可能有错字，对照视频信息核对。
2. 带时间码的文稿：先用 speech_sentences 取按句编号的文稿（每句带编号与时间，正文段落末尾回引编号，见写作基线「句子编号与出处」；长视频按 next 分几次取）；它说没有可编号的句子时再用 export（kind `transcript`、format `md`、timestamps `true`；有几份文稿时按它列出的候选用 documentId 指定），jobs_inspect 等到 completed，读 outputs 里的文件。时间是剪辑后时间线上的时间；要标时间点时取它，不要自己估算。
3. 视频信息：videos_inspect 给出的视频名与章节；来源标题、作者、发布平台、链接只用视频信息里有的和用户提供的。
4. 没有视频（例如只从链接下载并转写）：jobs_inspect 的 outputs 里有 SRT、TXT，直接读。
5. 长文稿先分段读（按章节或时间），每段记下主题块、要引用的原话和它们的时间码，再合起来写成品。只读了一部分时不写成品。
6. **只写一个主题、或几部视频合写时**，不通读每一部：用 speech_relevant（`intent` 写主题，`videoIds` 给这几部，`order` 给 `time`）取相关的段落，句子编号与 speech_sentences 同一套，回引照常；`effectiveMode` 为 lexical 或 none 时没有语义索引，退回按上面逐部读。用户要「相关阅读」时，用 space_related_videos 列出讲相近内容的一两部视频（不给的不编）。
7. **必要时看画面**。文稿里指着屏幕说话的地方（演示、幻灯片、代码、图表、「这个」「这里」「大家看」），光读文字不知道在说什么时，用 videos_frames 在那几个时间码取几帧看（`at` 列出时刻，或 `range` 加 `count` 等间隔取，一次最多 24 帧，读每帧的 `file`）。纯对话、读文稿就能懂的不取。帧是那个时刻的素材画面，不含字幕、文字与叠加的元素；从画面里看到的东西是你补的背景，写进去时读者要分得清。

## 2. 语言

产出用哪种语言，按下面的顺序取第一个有的：

1. 用户这次的要求里指定的语言；没指定时，用户这次给你的消息所用的语言。
2. 界面语言：会话上下文里给出了用户的界面语言时用它。
3. 转写的语言。

用户的消息只有几个字、看不出语言时跳过第 1 条。拿不准时按上面的顺序取，交付时提一句也可以出另一种语言的版本。写作基线对任何语言都成立；本页举的措辞只是示意。

## 3. 动笔之前

先想清楚下面几件事，它们不进成品：

1. **视角是哪一种**。用户说了就照办；没说时按基线「视角」一节判断：用户的偏好里说明了身份、并且视频显然是用户自己的，用作者视角；显然是别人发布的，用观众视角；都看不出来按观众视角，拿不准可以简短地问一句。把别人的话说成用户自己的，比把用户的话写成转述更糟。

The rest: https://github.com/JimLiu/baocut/blob/HEAD/skills/baocut/built-in-skills/video-blog/SKILL.md
