关于 scenario-caption-studio
scenario-caption-studio 是用于在 Scenario 中为视频制作字幕的技能,适合整理成片并面向不同发布场景的创作者。它支持语音转录或输入 SRT、字幕翻译,以及烧录字幕、字幕轨和独立 SRT 输出。
主要功能
- 01转录语音或使用现有 SRT
- 02将字幕翻译为 18 种语言
- 03提供三种字幕样式设置方式
- 04设置字幕分段与位置
- 05导出烧录字幕视频、字幕轨或 SRT
适用场景
- 01为完成的社交视频添加字幕
- 02制作翻译后的视频版本
- 03为长视频生成隐藏字幕 SRT
- 04通过编辑后的 SRT 修正或重设字幕样式
MCP 相关
通过 Scenario 技能使用工具模型 model_scenario-caption-studio,以及 model_schema_get、model_run 和相关资源与任务工具。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-caption-studio安装后在 Claude Code 中输入/scenario-caption-studio确认已加载。
详细介绍
场景字幕工作室
概述
Caption Studio 是一种工具模型 model_scenario-caption-studio:输入视频,转录语音(使用 Whisper)或应用现有的 SRT 文件,输出经过样式处理的字幕,可烧录到画面中,也可作为软字幕轨道和 .srt 附属文件交付。它支持翻译成 18 种语言,并提供三种字幕样式。运行这个工具模型就是此技能的全部用途,因此会明确指定其 ID,而不是进行发现;model_schema_get 会直接启动流程。不同团队可用的工具模型可能不同,因此团队缺少某个工具模型时,应将其标记为缺口,而不是用其他工具模型替代。连接方式和核心流程:参见 scenario 技能。
字幕制作是成片的最后一道工序:先完成组装(scenario-video-assembly),然后只为最终母版添加一次字幕。字幕只承载转录文本;必须逐字准确显示、但不需要口头说出的文字(CTA、价格、法律声明等)属于 scenario-text-overlay 的范畴。如果你的可用技能中缺少此处提到的某个同系列技能,请让用户安装它(npx skills add scenario-labs/skills --skill <name>);若是在无人值守的情况下运行,则根据工具架构继续操作,并标记缺口。
先询问,再添加字幕
目的地几乎决定了所有参数,因此在处理架构之前,先集中询问一轮:视频将发布到哪里(关闭声音的移动端信息流、付费广告位,还是坐着观看的长视频),是否保留或翻译口语语言(targetLanguage,保留原语言时使用 auto),是否有品牌颜色,以及平台需要哪种交付内容。交付内容由三个开关决定:烧录到像素中的字幕是 outputSubtitles: "video_image"(默认值),可切换的字幕轨道是 "video_data",旁置文件是 outputSrt: true,仅生成 SRT 的处理则是在此基础上添加 outputVideo: false。当文字必须百分之百准确时,先进行这一步:在制作时,它的价格与烧录字幕相同,因此换来的不是节省,而是确定性——先确认文字,再为任何像素付费。然后根据回答进行映射:
| 目的地 | 样式 | 分段 | 位置 | 输出 |
|---|---|---|---|---|
| 社交媒体移动端短视频(9:16 Shorts、Reels) | tiktok-bouncy 或 word-pop;音乐主导时使用 karaoke-fill | maxSegmentWords 设为 3 到 5;使用卡拉 OK 预设时设为 1 | middle:平台 UI 和原生自动字幕占据底部 | 烧录 |
| 广告短片、效果剪辑 | modern-chip 或 minimal-underline,强调色设为品牌颜色 | 每条字幕提示 3 到 7 个词 | bottom;片尾卡或叠加层位于下方时使用 top | 用于静音信息流时烧录;添加 outputSrt,供平台上传字幕 |
| YouTube 长视频、教程、访谈 | 默认外观或 cinematic-fade;克制的风格更显专业 | maxLines 设为 2,maxSegmentChars 设为 84(每行 42 个字符,共两行,符合广播惯例) | bottom | 使用 outputSrt 提供平台隐藏式字幕;仅在重新嵌入时烧录 |
| 电影风格作品、预告片、电影节剪辑 | cinematic-fade | 句子长度的字幕提示,maxSegmentDuration 约为 6 | bottom | 烧录 |
这些行是制作时的起始建议,需要与用户确认,并非平台规定;如果无人值守,任务自身的指令会回答这些问题,而对应行的默认值会补足用户未说明的部分。各投放位置的安全区域说明位于 scenario-formats 中。middle 会在画面中心渲染字幕;对于居中拍摄的访谈对象,这正是嘴部所在位置:自拍剪辑只有在人物面部位于画面上方三分之一处时才添加字幕(在组装时重新构图),因为架构不提供 lower-third 位置。对于长视频,上传字幕轨道优于烧录字幕,因为观众可以切换和调整字幕样式,辅助技术可以读取字幕,平台也会将其编入搜索索引;当样式本身就是重点,或字幕轨道无法随文件传输时,则应选择烧录。
风格阶梯
分为三个层级:stylePreset 选择现成的外观(7 种预设;留空则使用默认值);stylePrompt
用通俗语言描述外观,并生成匹配的风格(会产生 cost_impact);themeTsx
提供完整的自定义主题,用来替换预设,此时 stylePrompt 会进一步调整该主题。
没有字体参数:字体属于这些层级的一部分,也是风格最强烈的表达信号。因此,如果字体本身必须传达情绪或品牌,请用通俗语言将意图写入 stylePrompt
(字重、字形类别和感觉:“粗重的窄体无衬线,高能量感”“轻盈的几何无衬线,安静而高级”);指定确切的品牌字体则应使用 themeTsx,而
scenario-text-overlay 会根据含义,为字幕周围的文本卡片选择字体。预设也会改变文字本身的样式:一次创作时运行使用了 tiktok-bouncy,将所有字幕都改成了大写;其他预设的大小写行为尚未验证。因此,当大小写必须准确时(例如产品名称、“LoRA”),请通过 stylePrompt 或 themeTsx 指定,并在交付前检查一帧画面。
fontColor 设置正文颜色(对比度比美观更重要:预设在各种背景上都能让白色正文保持清晰),而 accentColorStart/accentColorEnd 控制高亮动画(卡拉 OK 填充、弹出效果):强调色最好只用于一个元素,通常是品牌色;两个值相同会得到纯色,不同则会生成渐变。自动调整字号(fontSizePx 留空)在创作时渲染出的文字高度约为 30 像素(画面尺寸为 1080x1920),在手机信息流中难以辨认:制作竖屏社交内容时,请明确设置 fontSizePx(画面高度为 1920 像素时,创作阶段可从 60 到 90 开始),并在手机尺寸下检查画面。outputTsx: true 会返回该次运行使用的主题,因此可以在下一段视频中精确复现已采用的风格。
确保文字准确
- 撰写旁白时,请保留脚本作为措辞参考。烧录字幕前,将转录文本与脚本对照,检查是否有漏词、重复或改动;拼写提示不能代替这种核对。字幕时间点应根据实际录音确定,而不是按词数或计划的镜头时长推算。请通过下方支持的输入修正 SRT;不要臆造脚本对齐参数。
transcriptionPrompt是拼写提示,而非风格字段:请列出音频中出现的姓名、品牌和行话。提示只能提高识别正确的几率,不能保证正确(一次撰写时运行中,提示中的姓名就拼错了两次),因此在信任烧录字幕之前,请检查转录文本中的每个必需姓名;如果有误,请使用large-v3重试,或提供更明确的提示。modelSize是准确度、速度和成本(cost_impact)之间的权衡:默认的medium适用于清晰的旁白;对于嘈杂音频、口音或密集的术语,请升级到large-v3;.en变体仅支持英语。- 模型会转录母版中的所有音频,因此请在添加字幕之前调整背景音乐与对白的平衡(
scenario-video-assembly),而不是之后。 - 更正和更换样式都通过
subtitles输入完成;其约定要求提供内联内容,而非引用(撰写时):将 SRT 文本本身进行 base64 编码后作为值传入。在这里,asset_...ID 不会被解引用;该 ID 字符串会被当作内容进行 base64 解码,运行仍会报告成功、计费,并渲染零条字幕(作业记录中的segment_count: 0就是判断依据)。因此,复用流程是:设置outputSrt: true,将转录文本作为资源返回;使用asset_download下载,如有需要,在本地更正拼写,再将编辑后的文本进行 base64 编码后传回。这样也能解决upload_asset没有文本类型的问题(撰写时的事实)。SRT 会沿用此次运行的分段方式(卡拉 OK 运行会返回每条字幕一个词),因此在上传广告平台或应用更舒缓的样式之前,请在本地重新分块。切勿仅凭作业状态就交付subtitles运行结果:请像示例演示的那样检查输出;如果缺少字幕,请对作业所使用的字幕资源调用asset_get,查看它实际收到的内容。架构未说明分段上限是否会对传入的 SRT 重新分块,因此转录时请设置分段方式,并在使用subtitles时省略这些上限。
示例:制作一条竖屏社交短视频,然后生成西班牙语版本
- 对组装好的成片调用
asset_get:确认时长,并确认它是最终剪辑版,因为价格会受素材影响(video带有cost_impact;先剪辑,使用scenario-video-editing)。 - 对
model_scenario-caption-studio调用model_schema_get。 - 估价:调用
model_run,设置dry_run: true和parameters={"video": "<asset_id>", "stylePreset": "tiktok-bouncy", "maxSegmentWords": 4, "textPosition": "middle", "transcriptionPrompt": "Scenario, LoRA, Flux", "outputSrt": true}。 更改targetLanguage、modelSize、stylePrompt或outputSubtitles后,重新估价: 这些参数都带有cost_impact。 - 运行时设置
wait: false,然后使用job_id调用jobs_wait;超时时,使用返回的pending_job_ids再次调用,不要循环调用job_get。 - 派生版本前先审核,因为任务成功并不能证明渲染结果符合预期:使用
asset_download下载 SRT 附属文件(不要设置format:它只会转换图像;如果一次运行同时返回视频和 SRT, 两个资源 ID 的顺序不固定,可通过asset_get返回的mimeType区分),并将其中的文本 与撰写好的脚本和必需名称核对;然后下载视频并用ffmpeg -vf "fps=2"制作联系表, 检查烧录字幕的拼写、大小写和位置。按预期显示尺寸进行检查,包括字幕底板:确保 人脸、手部、演示的操作和重要 UI 清晰可见,并且字幕在同一条提示语内位置稳定。对照 提示语的起止时间检查音频;转录正确并不代表同步正确。在提示语边界前后以及提示语内 采样帧:画面揭示和淡入淡出的时间可能超出提供的 SRT 时间,而短于 100 ms 的闪光也会 出现在fps=2扫描中。如果需要严格遵守边界,请核实实际主题,或说明这一限制;仅有 正确的附属文件并不算通过。检查最后一个口播词是否保留,并分别比较音频流和视频流; 如果较短的音频流包含完整旁白,可能只是省略了末尾静音。 - 西班牙语版本:在相同参数中添加
targetLanguage: "es",包括transcriptionPrompt, 并再次设置dry_run(这会改变价格),然后再运行。翻译在运行过程中完成,因此一份主 版本可为每个市场生成一个变体。适用于拉丁字母的分段上限不适用于中文、日语或韩语 (流媒体风格指南规定,每行字符数应为其三分之一),因此请按目标语言重新调整maxSegmentChars。 - 使用
scenario技能将主版本、变体和 SRT 资源归档到一个集合中,方便查找交付内容。
常见错误
- 在合成前为每个片段添加字幕:只为完成后的成片添加一次字幕,否则字幕会在剪辑间漂移,每次编辑都会使字幕失去对应内容。
- 期望软字幕轨道呈现预设样式:
video_data会渲染为纯文本,由观看者切换显示;只有烧录进视频的字幕才能保留样式。 - 将法律声明或行动号召设计成字幕:免责声明有固定文案、字号和显示时长,字幕逻辑会重新拆分并调整其时间;可切换的字幕轨道也完全不符合“无需观看者操作即可显示”的规则。未被口播的精确文案应使用
scenario-text-overlay卡片在合成阶段叠加。 - 未使用卡拉 OK 或弹出式预设,却将
maxSegmentWords: 1设为 1:除非样式带有动画效果,否则逐词提示会像幻灯片一样闪现。使用弹出式预设(即在提示词内逐词显示的预设:tiktok-bouncy、word-pop,以及创作时使用的卡拉 OK 预设对)时,提示词结尾绝不能是单个字母的单词:弹入时间取决于字符数,因此创作时,结尾的 “I” 或 “a” 只显示了约 70 ms。重新拆分提供的 SRT 也意味着必须负责其时间设置:提供的 SRT 只包含提示词时间,因此弹出式预设会将每个提示词的单词均匀分布在提示词时长内;只要提示词时长超过语音,强调效果就会偏离语音。确保每个提示词的结束时间与口播部分一致,并且只延长最后一个提示词,使其持续到片段结束。 - 将
jobs_wait超时视为失败:使用pending_job_ids再次调用;视频工具任务通常会超过等待时限。