mcpField
S
scenario-caption-studio

scenario-caption-studio

github.com/scenario-labs创意与媒体1.2k394 次安装1 天前更新
代码仓库

关于 scenario-caption-studio

scenario-caption-studio 是用于在 Scenario 中为视频制作字幕的技能,适合整理成片并面向不同发布场景的创作者。它支持语音转录或输入 SRT、字幕翻译,以及烧录字幕、字幕轨和独立 SRT 输出。

主要功能

  1. 01转录语音或使用现有 SRT
  2. 02将字幕翻译为 18 种语言
  3. 03提供三种字幕样式设置方式
  4. 04设置字幕分段与位置
  5. 05导出烧录字幕视频、字幕轨或 SRT

适用场景

  1. 01为完成的社交视频添加字幕
  2. 02制作翻译后的视频版本
  3. 03为长视频生成隐藏字幕 SRT
  4. 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-fillmaxSegmentWords 设为 3 到 5;使用卡拉 OK 预设时设为 1middle:平台 UI 和原生自动字幕占据底部烧录
广告短片、效果剪辑modern-chip 或 minimal-underline,强调色设为品牌颜色每条字幕提示 3 到 7 个词bottom;片尾卡或叠加层位于下方时使用 top用于静音信息流时烧录;添加 outputSrt,供平台上传字幕
YouTube 长视频、教程、访谈默认外观或 cinematic-fade;克制的风格更显专业maxLines 设为 2,maxSegmentChars 设为 84(每行 42 个字符,共两行,符合广播惯例)bottom使用 outputSrt 提供平台隐藏式字幕;仅在重新嵌入时烧录
电影风格作品、预告片、电影节剪辑cinematic-fade句子长度的字幕提示,maxSegmentDuration 约为 6bottom烧录

这些行是制作时的起始建议,需要与用户确认,并非平台规定;如果无人值守,任务自身的指令会回答这些问题,而对应行的默认值会补足用户未说明的部分。各投放位置的安全区域说明位于 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 时省略这些上限。

示例:制作一条竖屏社交短视频,然后生成西班牙语版本

  1. 对组装好的成片调用 asset_get:确认时长,并确认它是最终剪辑版,因为价格会受素材影响(video 带有 cost_impact;先剪辑,使用 scenario-video-editing)。
  2. 对 model_scenario-caption-studio 调用 model_schema_get。
  3. 估价:调用 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。
  4. 运行时设置 wait: false,然后使用 job_id 调用 jobs_wait;超时时,使用返回的 pending_job_ids 再次调用,不要循环调用 job_get。
  5. 派生版本前先审核,因为任务成功并不能证明渲染结果符合预期:使用 asset_download 下载 SRT 附属文件(不要设置 format:它只会转换图像;如果一次运行同时返回视频和 SRT, 两个资源 ID 的顺序不固定,可通过 asset_get 返回的 mimeType 区分),并将其中的文本 与撰写好的脚本和必需名称核对;然后下载视频并用 ffmpeg -vf "fps=2" 制作联系表, 检查烧录字幕的拼写、大小写和位置。按预期显示尺寸进行检查,包括字幕底板:确保 人脸、手部、演示的操作和重要 UI 清晰可见,并且字幕在同一条提示语内位置稳定。对照 提示语的起止时间检查音频;转录正确并不代表同步正确。在提示语边界前后以及提示语内 采样帧:画面揭示和淡入淡出的时间可能超出提供的 SRT 时间,而短于 100 ms 的闪光也会 出现在 fps=2 扫描中。如果需要严格遵守边界,请核实实际主题,或说明这一限制;仅有 正确的附属文件并不算通过。检查最后一个口播词是否保留,并分别比较音频流和视频流; 如果较短的音频流包含完整旁白,可能只是省略了末尾静音。
  6. 西班牙语版本:在相同参数中添加 targetLanguage: "es",包括 transcriptionPrompt, 并再次设置 dry_run(这会改变价格),然后再运行。翻译在运行过程中完成,因此一份主 版本可为每个市场生成一个变体。适用于拉丁字母的分段上限不适用于中文、日语或韩语 (流媒体风格指南规定,每行字符数应为其三分之一),因此请按目标语言重新调整 maxSegmentChars。
  7. 使用 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 再次调用;视频工具任务通常会超过等待时限。

评论

支持 Markdown