前言¶
连载网文要做成听书,常见做法是一次性把已有章节全部合成,或者每更新一章就重新选声、重新定读音。听众会听到叙述者前后不一致,人名、地名也可能读错。更麻烦的是,付费合成往往按块计费,整章重跑成本高。
下面介绍 SkillHub 上的 网文有声·连载听书(包名 webnovel-serial-audio,由 beatra-ai 维护)。它把流程收成「先定章节台账与发音表 → 录当前章 → 后续章沿用同一 voice_id」,面向连载更新而不是一次性全书。
这是什么¶
网文有声·连载听书 是一个基于通用 SKILL.md 格式的 Agent Skill:把连载网文按章做成可继续更新的网文有声。工作流会先交付当前章的章节有声,再在后续更新里用同一把叙事声音继续合成。
官方收录地址:
https://api.skillhub.cn/beatra-ai/webnovel-serial-audio
(该地址在浏览器直接打开可能无正文;安装与执行以 Skill 包内说明为准。同类说明亦见于 360 安全技能中心上的同名技能页。)
与一次性文学有声相对,本 Skill 明确把「连载、按章、声音延续」当作主路径;一次性全书可改走同系列的 ai-audiobook-narration,课程类走 course-narration-studio,个人 IP 系列走 voice-clone-series-studio。
核心功能¶
以下能力来自 Skill 正文,可按章核对:
- 章节台账:维护标题、顺序、分块标签,以及冻结前的发音表;当前章只保留可朗读正文。
- 固定叙述声:可选上传样本走
beatra.voices.clone得到voice_id,或不用样本时用beatra.voices.list选目录音色;后续章复用同一voice_id。 - 按章合成与交付:通过捆绑的
scripts/mcp_client.py调用 Beatra(beatra.speech.synthesize等),轮询beatra.tasks.get,交付带时长、用量与billing.net_charged_credits的章节音频。 - 增量修订:用户听完当前章后,仅对听不清或读错的块改文案并带新 request ID 重提,不要求整章重生成。
- 计费边界:规划、选声、发音表整理不计费;克隆(若使用)与各合成块为付费项;首章付费合成前需确认发音表、音色与当前章预估。
硬性输入包括:至少当前章的最终可读正文、章节顺序或下一章编号、目标语言,以及章节里出现反复人名/术语/地名时的发音表(表为空且确有专名时须先补齐,禁止猜测读音)。
默认与约束摘录:
format: "mp3"
speed: 1.0
model: "auto"(仅在各 live 卡片均支持该语言时使用)
单次 input ≤ 50,000 字符;按句或段切分,禁止句中切断
不要把章节标题、作者有话说、括号标注等送进 input
安装与启用¶
通过 SkillHub / secure-skills 安装¶
在 Agent 所在环境执行(360 技能中心与 Skill 说明中的标准话术):
npx secure-skills-cli add webnovel-serial-audio
也可把下面这句直接发给 Agent,由其检索并安装:
执行命令安装此 skill: npx secure-skills-cli add webnovel-serial-audio
Beatra 账号与鉴权¶
语音合成依赖 Beatra。首次需要浏览器登录并授权一次;之后在同一安装内通过捆绑客户端发起调用,无需再配主机侧 Beatra Connector,也不应以 REST/OpenAPI 作为回退路径。
Beatra 官方安装说明入口(英文站):
https://beatra.ai/skills/webnovel-serial-audio/install.md
在 Cursor、Claude Code、Codex 等支持 Agent Skills 的客户端中,安装包后在新会话里启用该 Skill 即可;各客户端差异主要体现在「如何把 npx 或安装话术交给 Agent」,Skill 本体工作流一致。
典型用法¶
下面按 Skill 中的 Golden path 缩成可复现步骤;所有 Beatra 操作应走捆绑客户端:
python3 scripts/mcp_client.py upload ./narrator-sample.wav --mime-type audio/wav
- 建立章节台账,把当前章整理成口语化短句,确认并冻结发音表。
- 若用户提供叙述者样本:先取得克隆授权声明,再上传样本,经用户确认扣费卡片后调用
beatra.voices.clone,轮询任务直至拿到voice_id。 - 若无样本:用
beatra.voices.list选定目录voice_id(voice字段填 ID,不要填展示名)。 - 用
beatra.models.list且capability为text_to_speech,确认音色与当前章预估后,仅对当前章调用beatra.speech.synthesize,并轮询至结束。 - 交付本章 labeled 音频;用户验收后保留
voice_id与发音表,下一章落地前再确认预估并继续同声合成。
克隆请求体示例(须在用户确认余额与价格后、且只提交一次):
{
"sample": {"type": "artifact", "artifact_id": "artifact_..."},
"display_name": "Serial Narrator",
"consent_attested": true,
"model": "auto",
"client_request_id": "opaque-webnovel-clone"
}
查询余额或流水时只读调用 beatra.wallet.get / beatra.wallet.ledger;丢单恢复、409、insufficient_balance 等按 Skill 内 Recovery 与 Billing 章节处理,不在此展开。
适用场景与注意¶
适合:网文配音、连载小说听书、网文章节朗读、按更新节奏发布的章节听书库;需要「一章一文件、听序清晰、叙述声不跳变」的团队或个人。
注意:
- 专名读音必须先于首次付费 TTS 定稿;改章正文后,变更块视为新的付费合成。
- 叙述者克隆样本要求约 10–300 秒、不超过 20 MiB、干净单人声;仅有文件访问权不等于克隆授权。
- 自动更新默认开启,可用捆绑客户端关闭或手动检查:
python3 scripts/mcp_client.py update --auto off
python3 scripts/mcp_client.py update --auto on
python3 scripts/mcp_client.py update --check
更新失败时安装包保持可用,但不得因此自动重试已失败的付费生成。
结尾¶
网文有声·连载听书 把连载网文听书拆成可重复的按章流程:台账与发音表在前,当前章有声先交付,后续章在同一 voice_id 上续作。若你正在维护连载作品的听书线,可从官方收录页进入并安装 webnovel-serial-audio:
https://api.skillhub.cn/beatra-ai/webnovel-serial-audio