# Subtitle Workflow

用户给了视频链接或本机音视频，要转录、加字幕、做译文字幕或双语字幕时用：建可编辑视频并导入，转写、润色，需要时翻译，把字幕层放到画面上，再按需导出字幕文件或成片。有媒体时「转录...

- 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 subtitle-workflow -g -a claude-code -y`
Codex: `npx skills add JimLiu/baocut --skill subtitle-workflow -g -a codex -y`
Cursor: `npx skills add JimLiu/baocut --skill subtitle-workflow -g -a cursor -y`
Gemini CLI: `npx skills add JimLiu/baocut --skill subtitle-workflow -g -a gemini-cli -y`

## Description

用户给了视频链接或本机音视频，要转录、加字幕、做译文字幕或双语字幕时用：建可编辑视频并导入，转写、润色，需要时翻译，把字幕层放到画面上，再按需导出字幕文件或成片。有媒体时「转录」「加字幕」「翻译成某种语言」都按这个流程。不用于与视频无关的文字翻译。

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

# 转录与字幕

用户丢来一个链接或一个文件，说「加个字幕」。他要的成品是一个可编辑视频：素材在时间线上，转写润色过，需要时有译文，字幕层放在画面上；之后他能在编辑器里改一个字、挪一条字幕、换一种语言，要文件时再从视频导出。不要只交一个下载下来再改过的字幕文件：那样他改不了，也放不回视频上。

最容易做坏的样子：步骤顺序乱了。先翻译再润色，译文全过期；要双语时先建了原文字幕层再润色，原文层按润色前的标点切条，和译文层对不上；跨回合接着做时从头来一遍，用户等了两次。所以全程按这个顺序：确认 → 建视频并导入 → 转写 → 润色（含说话人实名） → 章节（旁路） → 翻译 → 建字幕层 → 导出 → 交付说明。只要原文字幕时，转写时建好的字幕层留着用：润色写回时它的文字跟着改（第 3 步）。每一步等工具的回执或任务完成再走下一步；跨回合接着做时，先 videos_inspect 看已经做到哪一步，从那里接着做，不重复已完成的步骤。

## 1. 先确认

动手前把这几件事弄清楚，弄不清的问一次，不要边做边猜：

- **交付物**：原文字幕、译文字幕还是双语字幕；要不要文件（字幕文件、带字幕的成片）。用户说「翻译成某种语言」是要译文字幕，说「双语」是双语字幕；只说转录、加字幕时是原文字幕。
- **目标语言**：用 BCP 47 标签（如 `zh-Hans`、`en`、`ja`、`es`）。要翻译、用户又没说译成什么时问一次。
- **原文语言、人名与术语**：用户说了就记下。语言给转写；人名与术语在转写模型收识别提示时给转写当 hint（见第 3 步），不收时只在润色时用。没说语言的让转写自动识别。
- **来源元数据**：从链接导入的素材，videos_inspect 的 `assets[].source` 有标题、发布者、简介（`description`，最多 1200 字符）与作者的章节（`chapters`）；转写或下载完成时 `pipeline.summary.description` 与 `pipeline.summary.sourceChapters` 也给出简介和作者章节的条数。润色、说话人实名、章节都用它。
- **在哪个视频上做**：编辑器里打开的或用户点名的视频就在它上面做；videos_inspect 看已有的素材、转写、译文与字幕层，已有的接着用。
- 用户明确只要一个字幕文件、不要视频或项目时，不走这个流程，按 `translate-subtitles` 的文件一节做（只转录不翻译时就交下载目录里的文稿）。

## 2. 建视频并导入

- **链接**：transcribe 给 `url`（可给 language、hint、name、noCaptions），它新建视频、下载导入、放上时间线、转写并建字幕层；用户说了原文语言时带上 language，给了人名术语、而转写模型收提示时带上 hint（见第 3 步）。download 给 `newVideo: true` 与 `transcribe: true` 也新建视频并转写，但只用默认设置、不建字幕层。jobs_inspect 等到 completed：`pipeline.summary.videoId` 是新视频，`pipeline.summary.assetId` 是素材。新建的视频在之后的步骤失败时保留，不要再建一次。
- **本机文件**：transcribe 给 `file`（可给 language、hint、name），它新建视频、导入、放上时间线并转写；第 3 步的转写就在这一步里。只要建视频不要转写时，videos_create 新建视频（名字取文件名；竖屏素材给竖屏的宽高），用 assets_import 导入并放上时间线（给 place）。
- 链接下载失败时照 error.details.remedy 告诉用户怎么补救，不要用别的方式下载。

## 3. 转写

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