一键研究并发布到喜马拉雅
把一个选题从「研究 → 剧本 → 有声 → 发布喜马拉雅」全链路跑完。仅当用户明确要求发布喜马拉雅时执行本技能;普通"研究 XX"走常规研报交付,不碰有声。
前置依赖(首次使用先检查,详见 references/setup-guide.md)
- 喜马拉雅 audiobooklm MCP(必需):
AUDIOBOOKLM_TOKEN已配置、list_tts_voices可调通。若未配置,先引导用户到 https://aigc.ximalaya.com 个人中心创建 API Token 并配置,不要绕过。 - 研究取数(必需,可降级):domain_search 优先 → 金融 MCP → WebSearch 兜底。
scripts/extract_script_lines.py(可选):Python 3 标准库即可跑;跑不了手工清洗。
总流程(6 步)
- 选题分流 → 决定研究方式和目标专辑
- 研究取数 → domain_search(金融 MCP 不可用时的既定降级通道)
- 写剧本 → 讲书剧场体(旁白/小白/阿研),时长规则见下
- 平台侧合成 → book_create → podcast_import → patch_abs → chapter_task_create → task_query → chapter_audio_mix
- 发布挂载 → upload_audio_to_album(
ai_generated=true) - 交付 → 报 track_id + 专辑链接 + 研究要点摘要 + 免责声明
第 1 步:选题分流与专辑路由
| 选题类型 | 研究方式 | 专辑路由 |
|---|---|---|
| 新股 IPO | IPO 研究:侧重业务 / 行业概览 / 募投项目(参考 references/research-guide.md) |
公司解读类专辑 |
| 已上市公司 | QARP 六维 30 分制框架:竞争格局、护城河、ROE>15%、净利现金含量>80%、增速可预测性、估值 | 同上 |
| 其他话题(行业/宏观/书籍等) | 专题研究,多源交叉 | 按话题匹配现有专辑 |
专辑是账号私有的,不要写死 album_id。 路由逻辑:
1. query_self_simple_albums_with_paid 查当前用户账号下的专辑
2. 有语义匹配的专辑(如公司类匹配"公司解读|20分钟了解一家上市公司"一类)→ 直接挂载
3. 没有 → create_album 新建后挂载
4. 已知参考:本 skill 创建者账号下有「公司解读|20分钟了解一家上市公司」专辑;其他账号无此专辑属正常,按步骤 3 新建即可
新建专辑时 create_album 的 style_name 必须用官方枚举(如 "现言手绘插画风"),book_type 传 "有声书",allow_cover_degrade=true 让 AI 生成封面。
第 2 步:研究取数
- 加载
workbuddy-finance-skill走金融场景规范;金融 MCP(westock/neodata)若 auth-required 不可用,降级 domain_search 一次取数(多源交叉:招股书/公司公告/券商研报/行业协会/行情)。 - 研究深度以剧本需求为准:不需要出完整研报交付,但关键数据(发行/财务/行业/募投/风险)必须核实,口径差异要标注。
- 研报预测类数字标"需核实原文";媒体转载数据同样标注。
第 3 步:写剧本
讲书剧场体,三角色:旁白(说书吐槽腔)/ 小白(散户喜剧对照组)/ 阿研(研究员泼冷水,女声)。
时长规则:
- 公司研究(新股/已上市)→ 约 20 分钟(口播约 5,500 字,270 字/分)
- 其他话题 → 按内容多少自适应(内容多则长、少则短,不硬凑 20 分钟)
结构:片头报幕 2 条(系列名 + 本期主题)→ 冷开场钩子 → 4 章左右正文(每章有"名场面"金句)→ 终章三句话收束 → 免责声明 → 收尾。详细模板见 references/script-template.md。
TTS 安全清洗(导入前必做):
- 数字全部转中文写法("96 万"→"九十六万"、"10%"→"百分之十")
- 型号/英文转中文读法("K-540iH"→"K五四零iH"、"logo"→"标志")
- 剥离演播标记 ⟨…⟩ 〔…〕(导入平台时不需要)
- 脚本可用 scripts/extract_script_lines.py 自动完成清洗并输出 JSON
合规:基于公开资料的原创讲书二创(转述+演绎,非披露原文照读);公司类末尾必须含完整免责声明("不构成投资建议,股市有风险…")。
第 4 步:平台侧合成(严格按序)
详细参数与坑见 references/pipeline-api.md,要点:
book_create(book_name, book_type="podcast")→ book_idpodcast_import(book_id, chapter_name, script_lines)—["[旁白] 台词", "[小白] 台词", …];长段会被平台自动拆分,段数变多属正常patch_abs绑音色 — 每个 op 必须带 character_id,scope 用{book_id, domain: "book"}chapter_task_create(book_id, chapter_id)→ task_idstask_query(task_ids, wait_timeout=300)轮询至全部 successchapter_audio_mix(book_id, chapter_id, wait_timeout=300)→ 返回平台 COS URL
音色定版(选型必查 gender 字段:=1 女声、=2 男声,勿按名字猜——"喜千晚"名字像女声实为男声):
| 角色 | 音色 | speaker_id |
|---|---|---|
| 旁白 | 水寒 | 10496 |
| 小白 | 喜骁舟 | 10201 |
| 阿研/女角 | 喜灵霏(gender=1 女声) | 33 |
音色是平台公共库,但不同账号可用/免费范围可能不同——绑定报错时用 list_tts_voices 按 gender + 风格重选同类音色。
第 5 步:发布挂载
upload_audio_to_album(album_id, audio_url=<COS URL>, title, ai_generated=true)→ track_id- 只收平台 COS 内网 URL,不收本地文件——本地拼接母带传不上去,必须走平台侧合成管线
- 更新已发单集用
update_audio_to_album(带原 track_id 原地替换) - 标题格式:
<公司/主题> <篇名> <一句话钩子>(如"皇冠新材 IPO 特别篇 你身上的胶带上市了")
第 6 步:交付
汇报:track_id + 专辑链接 + 研究要点(3-5 条核心结论)+ 剧本文件路径 + 免责声明。工作日志追加到工作区 memory。
Resources
references/setup-guide.md— 安装与环境依赖(新用户/其他机器先看这份):audiobooklm MCP 配置、Token 获取、账号差异references/pipeline-api.md— 喜马拉雅管线 API 参数、报错与坑(上传限制、并发、style_name 枚举等)references/script-template.md— 讲书剧场体剧本模板(章节骨架、角色口吻、金句范式、免责声明模板)references/research-guide.md— 三类选题研究要点(IPO / QARP / 专题)scripts/extract_script_lines.py— 从剧本 md 提取清洗后的台词 JSON,供 podcast_import 用