Skills audiobooklm
提供有声书创作与音频能力(ABS 读写、音效/音频检索、二创、音色推荐、章节角色分析等),通过 HTTP Streamable MCP 调用。
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/audiobooklm/audiobooklm" ~/.claude/skills/clawdbot-skills-audiobooklm && rm -rf "$T"
manifest:
skills/audiobooklm/audiobooklm/SKILL.mdsource content
audiobooklm 技能说明(OpenClaw)
MCP 地址:
https://aigc.ximalaya.com/audiobooklm/mcp
安装前注意事项(发布到 ClawHub 必带)
- 来源与信任
- 官方入口:
https://aigc.ximalaya.com - MCP 服务地址:
https://aigc.ximalaya.com/audiobooklm/mcp - 仅在你信任该域名与发布方时安装。
- 凭证配置
- 必需环境变量:
(Bearer Token)AUDIOBOOKLM_TOKEN - 建议使用测试账号或低权限 token,不要粘贴高权限生产 token。
- 建议定期轮换 token;发现泄露立即吊销并重建。
- 数据外发与合规
- 使用本技能时,输入文本、音频 URL、以及你提交的结构化数据会发送到
。aigc.ximalaya.com - 不要上传未授权、涉密或敏感个人信息内容。
- 版权或隐私不明确的内容,先确认授权后再调用。
0. 首次使用引导(OpenClaw 必须先提示)
当用户首次使用本技能,或检测到未配置 token 时,OpenClaw 必须先提示以下内容,再进入工具调用:
- 请先访问 https://aigc.ximalaya.com 注册/登录账号。
- 进入个人中心创建 API Token(MCP / API Token)。
- 在 OpenClaw 配置 Bearer Token(
),再继续使用本技能。AUDIOBOOKLM_TOKEN
推荐提示文案(可直接复用):
使用 audiobooklm 前,请先到 https://aigc.ximalaya.com 登录并在个人中心创建 API Token,然后将 token 配置到 OpenClaw(Bearer Token / AUDIOBOOKLM_TOKEN)。配置完成后我再为你执行读取书籍、音效检索或二创操作。
1. 使用规则(必须遵守)
- 所有书籍/章节/音频/音效结论都必须来自本轮真实工具返回,禁止编造。
- 调用成功不等于业务成功:若工具返回文本里包含
或{"success":false}
,按失败处理并转述真实错误。code!=20000 - 禁止输出原始大段 JSON 给用户,需整理为自然语言;但不得改写关键事实(标题、ID、URL、错误信息)。
2. 鉴权与会话(标准 MCP 流程)
请求头固定:
Accept: application/json, text/event-streamAuthorization: Bearer <AUDIOBOOKLM_TOKEN>Content-Type: application/json
调用顺序(不可跳过):
initializenotifications/initialized
/tools/list
(都要带tools/call
)mcp-session-id
若无 token 或 token 无效,服务会返回
401(invalid_token)。
3. 工具清单(以 tools/list 实时结果为准)
OpenClaw 不应硬编码工具总数;先调用
tools/list,再按返回结果路由。以下为当前主流程常用工具:
chapter_splitsearch_faqannotate_pinyincharacter_analyzetimber_assignsearch_sound_labelsound_effectchapter_character_analysischapter_character_predictdialogue_splitsearch_audiofan_made_audiopatch_absread_absimage_generationcreate_albumupload_audio_to_albumlist_tts_voicessynthesize_ttsasr_audio_to_text
说明:部分环境会通过服务端配置隐藏某些工具(如
text_writing、analysis_audio_fx、analysis_sound_description 等);是否可用必须以本轮 tools/list 为准。
4. 路由策略(按用户意图)
- 书单/单书/单章读取:
read_abs
- 书单:
scope={"domain":"books"} - 单书:
scope={"domain":"book","book_id":"<id>"} - 单章:
scope={"domain":"chapter","book_id":"<id>","chapter_id":"<id>"}
- 创建书/写入编辑:
patch_abs
- 创建书必须:
且不传scope={"domain":"book"}book_id - 常见流程:先
取read_abs(books)
,再team_id
,再patch_abs(create_book)patch_abs(add_chapter...)
- 环境音/音效检索:
search_sound_label
- 如“海浪、雨声、风声、紧张 BGM”
- 文生音频(检索优先,未命中则自动 TTS 生成):
search_audio
- 该工具不是通用“站内专辑检索”,而是:
- 先在服务端
做语义匹配命中(返回已有mock.json
/audio_url
)audio_path - 未命中时自动执行“LLM 写文案 -> LLM 推荐音色 -> TTS 合成”并返回新
audio_url
- 音频二创:
fan_made_audio
- 必须传
+audio_urluser_instruction
- 音色推荐:
timber_assign
- 建议参数:
(效果更稳定){"description":"成熟男声","text":"..."}
非强制;未提供时工具会尝试基于文本自动分析,但可控性会下降description
- 指定文本 + 指定音色ID 直接合成:
+list_tts_voicessynthesize_tts
- 适用于“我已经有文案,并且要固定某个音色ID”的刚性 TTS 需求
- 标准顺序:先
取list_tts_voices
,再speakerIdsynthesize_tts(text, speaker_id) - 该场景不要路由到
(其音色是自动匹配,非强指定)search_audio
- 章节角色链路:
- 一体化:
chapter_character_analysis - 分步:
->dialogue_splitchapter_character_predict
- 图像生成:
image_generation
,若下游超时按真实错误返回{"prompt":"..."}
5. 参数速查(仅列关键)
read_abs
必填对象,scope
仅可为domainbooks|book|chapter
可选数组fields
可选对象pagination
可选cookie
patch_abs
必填对象,scope
为domainchapter|book|books
必填数组,每项需operationsop_id/type/reason
可选base_version
可选,默认dry_runfalse
可选cookie
search_sound_label
必填query
可选,默认 3top_k
search_audio
必填user_query
可选cookie- 不支持直接传
、text
、speaker_id
等 TTS 细粒度参数(由工具内部自动决策)rate
fan_made_audio
必填audio_url
必填user_instruction
可选cookie
timber_assign
可选(建议传,便于控风格)description- 其余可选:
content_file/content_text/text/enable_ai_analysis/speaker_list/topk/rate/cookie
list_tts_voices
可选cookie
可选(limit
表示不限制)<=0
synthesize_tts
必填text
必填(来自speaker_id
的list_tts_voices
)speakerId
可选cookie- 注意:服务端会将文本截断到 200 字以内
sound_effect
必填data- 可选:
(默认 true)、use_audio_fx
(默认 2)、analysis_mode
(默认 1)data_mode
chapter_split
- 必填:
、content_filefilename - 可选:
、max_chapter_length
、handle_intro_text
、enable_ai_fallback
、start_chapter_number
、enable_loose_patterns
、ai_spliterauto_cleaner
chapter_character_analysis
、content_file
、content
三选一(content_text
是content_text
同义字段)content- 可选:
、context_window
、max_window_length
、scopemax_characters
dialogue_split
或text_list
至少一项lines- 可选:
chapter_name/context_window/max_window_length - 注意:传
时不会做真实说话人识别,对白段text_list
会固定为“对白”;若要尽量提取说话人,优先传speakerlines
chapter_character_predict
必填text_list- 可选:
scope/max_characters - 建议
段落数不超过 200(底层模型链路对超长输入会退化/报错)text_list
character_analyze
必填content_file- 可选:
max_dialogues_per_character/include_relationships
search_faq
必填query
可选(默认 3)top_k
annotate_pinyin
必填text
image_generation
必填prompt
6. 失败处理规范
- 鉴权失败:明确提示“token 无效或过期,请在个人中心重新生成 token 后重试”。
- 工具超时:明确提示“该能力处理时间较长,本次超时,请稍后重试”。
- 业务失败(
):直接转述success=false
,不加臆测结论。msg - 不存在的工具:先
校验后再路由,不要硬调。tools/list
7. 最佳实践组合(推荐工作流)
7.1 首次接入自检(建议每次会话首轮执行)
:确认服务在线与工具集。tools/list
:验证 token 权限与团队上下文。read_abs(scope.domain=books)- 若
成功,再执行用户任务;若失败,优先提示用户检查 token 是否过期/绑定错误团队。read_abs
7.2 “查某本书最后一章”
:按书名匹配 book_id。read_abs({"scope":{"domain":"books"}})
:取章节列表并定位最后一章 chapter_id。read_abs({"scope":{"domain":"book","book_id":"<id>"}})
:返回正文并生成摘要。read_abs({"scope":{"domain":"chapter","book_id":"<id>","chapter_id":"<id>"}})
7.3 “新建书并写入第一章”(最小闭环)
取可用read_abs(books)
。team_id
:patch_abs(create_book)
且不传scope={"domain":"book"}
。book_id
:对新书patch_abs(add_chapter)
添加第一章。book_id
回读验证写入结果。read_abs(book)
7.4 search_audio
正确用法(给 OpenClaw 的 TTS 适配重点)
search_audio
。search_audio(user_query=用户原话)- 判断返回来源:
- 若
:代表命中已有素材(可能是source=mock
,也可能是本地audio_url
)。audio_path - 若
:代表已完成“文本生成 + 音色推荐 + TTS 合成”。source=generated
- 若用户明确要“新生成 TTS”但命中
,需先告知“当前命中已有素材”,再询问是否改成更具体需求重试以触发生成链路。mock - 若生成链路失败(常见:无法获取可用音色 ID / 下游 TTS 失败),只转述真实错误,不编造成功结果。
7.5 search_audio
能力边界(必须告知模型)
search_audio
一次调用只能产出 1 条结果,不支持search_audio
/分页。top_k- 生成链路内部会先写短文本(约 100 字),TTS 侧最终还会截断到 200 字以内;不适合长章节整段合成。
- 生成链路的音色选择是自动匹配,不能在该工具里强制指定特定
。speaker_id - 想提高“按用户意图生成”的命中率,
应包含:user_query
- 内容主题(讲什么)
- 风格/情绪(温柔、悬疑、热血等)
- 角色倾向(男女声、年龄段)
- 若用户要求精细控音色/多版本对比,优先改用
+ 其他可控链路,不要把timber_assign
当成可编排 TTS 引擎。search_audio
7.6 “章节音效生产链路”
- 先准备章节结构化
。data - 调
(默认sound_effect
)。analysis_mode=2 - 结果回显时保留关键字段(新增段落、音效建议、命中素材 URL),不要整段原始 JSON 直出。
7.7 “角色分析推荐链路”
- 单章分析优先:
。chapter_character_analysis - 若用户已有拆分文本:
。dialogue_split -> chapter_character_predict - 全书/长文本角色抽取:
(注意可能耗时长,需超时提示)。character_analyze
7.8 角色链路能力边界(避免误路由)
用dialogue_split
入参时,本质是格式转换,不会可靠识别对白说话人。text_list- 需要“逐段 speaker_name”时,优先走:
。lines -> dialogue_split -> chapter_character_predict - 单章文本较长时,
/chapter_character_analysis
属于 LLM 推断结果,应以“建议值”呈现,不要宣称绝对准确。chapter_character_predict
7.9 指定文本+音色ID 的 TTS 最佳实践(OpenClaw 必须优先)
- 当用户意图包含“用这段文本 + 指定音色/某个 speakerId 合成”时,优先走
。list_tts_voices -> synthesize_tts - 若用户只给“音色名称”未给 ID,先
,按list_tts_voices
匹配确认后再调speakerName
。synthesize_tts - 若用户未指定音色,只描述风格(如“温柔女声”),优先
做推荐试听;需要固定单音色再转timber_assign
。synthesize_tts - 若
不在本轮synthesize_tts
,回退到tools/list
或timber_assign
,并明确告知“当前环境不支持直指定 speaker_id 合成”。search_audio - 返回结果时优先给
与实际使用的audio_url
;若文本超过 200 字,需提示已被服务端截断。speaker_id
7.10 专辑创作与上传全链路(AI 批量生产)
- 创建专辑:若用户未指定专辑 ID,先调
。create_album(album_name, book_type, book_content/book_file) - 批量生产内容:
- 使用
或 LLM 自身能力生成多集文案(每集建议 1500 字左右)。text_writing - 记录每集的标题与正文。
- 使用
- 音色匹配与合成:
- 若用户指定音色(如“喜安之”),先调
获取list_tts_voices
。speakerId - 循环调用
为每一集生成音频 URL。synthesize_tts(text, speaker_id)
- 若用户指定音色(如“喜安之”),先调
- 上传与发布:
- 调
将合成好的音频挂载到指定专辑。upload_audio_to_album(album_id, audio_url, title) - 循环执行直至所有集数处理完毕。
- 调
- 异常处理:若 TTS 合成失败(如
为空),应记录失败集数并提示用户重试,不要中断后续上传。audioUrl
7.11 语音识别
- ASR 识别:使用
将长音频转为文字。asr_audio_to_text(audio_url)
8. 调试附录(仅供开发)
# 1) initialize(记录响应头里的 mcp-session-id) curl -i -sS -X POST "https://aigc.ximalaya.com/audiobooklm/mcp" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer ${AUDIOBOOKLM_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"openclaw","version":"1.0.0"}}}' # 2) initialized(带 mcp-session-id) curl -i -sS -X POST "https://aigc.ximalaya.com/audiobooklm/mcp" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer ${AUDIOBOOKLM_TOKEN}" \ -H "Content-Type: application/json" \ -H "mcp-session-id: <session-id>" \ -d '{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}' # 3) tools/list(带 mcp-session-id) curl -i -sS -X POST "https://aigc.ximalaya.com/audiobooklm/mcp" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer ${AUDIOBOOKLM_TOKEN}" \ -H "Content-Type: application/json" \ -H "mcp-session-id: <session-id>" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
9. 更新日志(OpenClaw)
0.0.7(2026-03-13)
- 优化鉴权链路:支持通过token完成音色查询与合成。
- 新增
,create_album
,upload_audio_to_album
,list_tts_voices
,synthesize_tts
toolsasr_audio_to_text
0.0.6(2026-03-13)
- 修正
能力描述:明确“mock 命中优先,未命中才自动文生音频(LLM 文案 + 音色推荐 + TTS)”,避免误当作通用站内音频检索。search_audio - 新增“指定文本 + 指定音色ID”最佳实践:优先
,并补齐回退与截断提示规则。list_tts_voices -> synthesize_tts - 补全关键工具边界:
动态路由原则、tools/list
的chapter_character_analysis
同义入参、content_text
在dialogue_split
模式下仅做格式转换的限制。text_list