File contents 生成旁白配音
为旁白/解说创作类型剧本的每个分镜,以该分镜的 novel_text 原文合成一段旁白配音,
写回该分镜的 generated_assets.narration_audio(输出 audio/segment_{segment_id}.wav)。
只依赖剧本,不依赖分镜图/视频——剧本生成后即可推进。
工具调用
重要:生成旁白配音必须调用下列 MCP 工具入队。此 skill 不提供任何 Python/Shell 脚本,不得用 BASH 调 python .../scripts/*.py。
通过 MCP 工具入队:
操作
工具
全集补齐(默认,所有缺旁白配音的分镜)
mcp__arcreel__generate_narration_audio({"script": "episode_1.json"})
指定批量范围
mcp__arcreel__generate_narration_audio({"script": "episode_1.json", "segment_ids": ["E1S01", "E1S02"]})
单分镜重生
mcp__arcreel__generate_narration_audio({"script": "episode_1.json", "segment_ids": ["E1S05"]})
选择规则 :不传 segment_ids 则只为缺 narration_audio 的分镜入队——已失效但仍可用的旧配音会被复用,不自动重生;
显式传入的分镜即使已有旁白配音也会重新合成(用于换音色/语速后重生)。
只在用户要求时调用 :缺 TTS 不是工作流缺口,也不拦导出;后期配音方式的旁白根本不需要 TTS。
不要因为计划报了缺失旁白配音就自动补齐。用户在某次视频请求上选了「使用当前 TTS」时,按预检返回的
problems[].action 处理——action 是权威,不要按 code 自己推 :generate_tts 为对应分镜生成、
regenerate_tts(tts_stale / tts_duration_unavailable)重新合成且旧旁白配音保留、wait_for_task
等在跑的任务结束后重查而不是重复提交。新旁白配音完成后请用户试听确认。
regenerate_tts 必须显式传 segment_ids (取自 problems[] 涉及的分镜)。省略即「只补缺失」,
而 stale 旁白配音算可复用、会被跳过,不带 ID 重合成等于什么都没做,视频请求会一直卡在同一个问题上。
依赖 :generation worker 必须在线(audio 独立通道);audio 供应商、模型与全局默认音色/语速由用户在 Web 设置页配置。
项目级音色/语速覆盖 :用户要求"这个项目旁白用 X 音色 / 语速 1.2"时,调
mcp__arcreel__patch_project({"settings": {"narration_voice": "X", "narration_speed": 1.2}})
写项目级覆盖(优先于全局设置,只影响当前项目;传 null 清除回退全局)。改完后对已有旁白配音的分镜重新合成才会生效。
工作流程
状态检测 — 读取剧本,检查各分镜的 generated_assets.narration_audio,统计缺失分镜并告知用户
入队生成 — 调用 MCP 工具,任务经生成队列由 worker 处理,工具等待全部完成后返回逐分镜结果
汇报 — 汇总成功/失败明细展示给用户
断点续传
中断(服务重启、任务失败、会话断开)后重新调用不传 segment_ids 的全集补齐 即可:
已有旁白配音的分镜自动跳过,只补缺失分镜,不重复扣费。
错误处理
单分镜失败不影响批次:工具返回 requested / succeeded / failed / blocked 的逐 ID 结果
按 failed / blocked 里每一项自带的问题码与下一步动作决定重试还是先改输入,不要读文本猜
可重试的分镜用 segment_ids 精确重试
工具提示未配置 audio 供应商时,说明后期配音这条路照常可用、视频不受影响;不要建议用户为了
继续做视频去配置 TTS 供应商 。只有用户主动想要 in-app 旁白时,才引导其到 Web 设置页配置后重试
1 --- 2 name: generate-narration-audio 3 description: Generate Narration Audio 4 --- 5 6 # 生成旁白配音 7 8 为旁白/解说创作类型剧本的每个分镜,以该分镜的 `novel_text` 原文合成一段旁白配音, 9 写回该分镜的 `generated_assets.narration_audio`(输出 `audio/segment_{segment_id}.wav`)。 10 只依赖剧本,不依赖分镜图/视频——剧本生成后即可推进。 11 12 ## 工具调用 13 14 **重要:生成旁白配音必须调用下列 MCP 工具入队。此 skill 不提供任何 Python/Shell 脚本,不得用 BASH 调 `python .../scripts/*.py`。** 15 16 通过 MCP 工具入队: 17 18 | 操作 | 工具 | 19 |------|------| 20 | 全集补齐(默认,所有缺旁白配音的分镜) | `mcp__arcreel__generate_narration_audio({"script": "episode_1.json"})` | 21 | 指定批量范围 | `mcp__arcreel__generate_narration_audio({"script": "episode_1.json", "segment_ids": ["E1S01", "E1S02"]})` | 22 | 单分镜重生 | `mcp__arcreel__generate_narration_audio({"script": "episode_1.json", "segment_ids": ["E1S05"]})` | 23 24 > **选择规则**:不传 `segment_ids` 则只为缺 `narration_audio` 的分镜入队——已失效但仍可用的旧配音会被复用,不自动重生; 25 > 显式传入的分镜即使已有旁白配音也会重新合成(用于换音色/语速后重生)。 26 > 27 > **只在用户要求时调用**:缺 TTS 不是工作流缺口,也不拦导出;后期配音方式的旁白根本不需要 TTS。 28 > 不要因为计划报了缺失旁白配音就自动补齐。用户在某次视频请求上选了「使用当前 TTS」时,按预检返回的 29 > `problems[].action` 处理——**action 是权威,不要按 `code` 自己推**:`generate_tts` 为对应分镜生成、 30 > `regenerate_tts`(`tts_stale` / `tts_duration_unavailable`)重新合成且旧旁白配音保留、`wait_for_task` 31 > 等在跑的任务结束后重查而不是重复提交。新旁白配音完成后请用户试听确认。 32 > 33 > **`regenerate_tts` 必须显式传 `segment_ids`**(取自 `problems[]` 涉及的分镜)。省略即「只补缺失」, 34 > 而 stale 旁白配音算可复用、会被跳过,不带 ID 重合成等于什么都没做,视频请求会一直卡在同一个问题上。 35 > 36 > **依赖**:generation worker 必须在线(audio 独立通道);audio 供应商、模型与全局默认音色/语速由用户在 Web 设置页配置。 37 > 38 > **项目级音色/语速覆盖**:用户要求"这个项目旁白用 X 音色 / 语速 1.2"时,调 39 > `mcp__arcreel__patch_project({"settings": {"narration_voice": "X", "narration_speed": 1.2}})` 40 > 写项目级覆盖(优先于全局设置,只影响当前项目;传 `null` 清除回退全局)。改完后对已有旁白配音的分镜重新合成才会生效。 41 42 ## 工作流程 43 44 1. **状态检测** — 读取剧本,检查各分镜的 `generated_assets.narration_audio`,统计缺失分镜并告知用户 45 2. **入队生成** — 调用 MCP 工具,任务经生成队列由 worker 处理,工具等待全部完成后返回逐分镜结果 46 3. **汇报** — 汇总成功/失败明细展示给用户 47 48 ## 断点续传 49 50 中断(服务重启、任务失败、会话断开)后重新调用**不传 `segment_ids` 的全集补齐**即可: 51 已有旁白配音的分镜自动跳过,只补缺失分镜,不重复扣费。 52 53 ## 错误处理 54 55 - 单分镜失败不影响批次:工具返回 `requested / succeeded / failed / blocked` 的逐 ID 结果 56 - 按 `failed` / `blocked` 里每一项自带的问题码与下一步动作决定重试还是先改输入,不要读文本猜 57 - 可重试的分镜用 `segment_ids` 精确重试 58 - 工具提示未配置 audio 供应商时,说明后期配音这条路照常可用、视频不受影响;**不要建议用户为了 59 继续做视频去配置 TTS 供应商**。只有用户主动想要 in-app 旁白时,才引导其到 Web 设置页配置后重试
arcreel/arcreel/tree/main/agent_runtime_profile/.claude/skills/generate-narration-audio commit 07f4c887a6
Frequently asked questions How do I install the Generate Narration Audio skill? Run npx skillmds@latest add arcreel/generate-narration-audio in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Generate Narration Audio skill do? Generate Narration Audio It is listed under Coding & Dev Tools on SkillMD.
Is Generate Narration Audio safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Generate Narration Audio? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Generate Narration Audio free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Generate Narration Audio? arcreel (@arcreel) published this skill. Their other Agent Skills are listed on their SkillMD profile.