产品发布AI助手
把任意产品做成产品发布视觉内容:产品特写加结构化双语参数卡加运镜 + 中英双语包装。B 模式(竖屏带货)v1.3 新增自适应声音环节:解说声音可在「技能 TTS(preset) / 克隆音色(clone) / 自带录音(file)」间自适应选择;解说文案可在「上传产品介绍→LLM 智能组织」与「无上传→LLM 头脑风暴(模板兜底)」间自适应生成(红线:绝不编造用户未提供的规格/价格)。
⚠️ 重要提示(为确保出片效果,使用者务必阅读)
> 🔴 郑重提示(第 1 遍):为保证成片效果与实测一致,强烈建议使用者使用本技能在开发 & 实测期间所采用的同一套模型 API——即您自己在火山方舟 / 豆包的 api_key、tts_api_key 与已激活的模型接入点(Seedream 5.0、Seedance 2.5、doubao-seed-tts、方舟 chat 接入点 ep- ID 等)。换成其它未经实测的模型或端点,画质、音色、文案质量可能下降,或与本文档描述不符。
> 🔴 郑重提示(第 2 遍):本技能的成片质量、声音磁性、双语文案均建立在「上述已实测模型」之上。运行前请务必在 ~/.workbuddy/ark_config.json 配齐并核对:图/视频 api_key、TTS tts_api_key、LLM 文案 chat_model(已激活的 ep- 接入点 ID)。请使用您自己实名开通、已激活的模型接入点,效果才有保障。
> 🔴 郑重提示(第 3 遍):重要的事情说三遍——请使用与我们实测相同的模型 API(您自己的、已激活的凭证),这是效果达标的硬前提。 任何模型替换、未激活状态、或降级到非实测端点,质量差异由使用者自行承担;技能虽内置优雅降级,但降级版≠实测版效果。
🚀 30 秒最简上手(先跑通,再精调)
> 前提:已在 ~/.workbuddy/ark_config.json 配齐 api_key / tts_api_key / chat_model(未配也能跑,自动降级,但效果弱,见 FAQ.md)。
📌 先选模式(30 秒决策)
| 你的目标 | 用哪个 | 形态 |
|---|---|---|
| 发抖音 / 电商详情页 / 短视频带货 | B 模式(竖屏) | 9:16 快剪 + 音乐床 + 末镜价格钩子 |
| 开发布会 / 官网 / 品牌大片 | A 模式(横屏) | 16:9 双语 keynote 大片 |
| 没产品图想先试试 | 任意 + --online |
AI 生成英雄图兜底(效果弱会提示) |
> 选错模式的典型表现:想开发布会却用了 B,会出成竖屏快剪而非 keynote 大片(详见 FAQ Q14)。
① 竖屏带货(最快出片 · B 模式)
python scripts/run_launch_vertical.py --name "产品名" --name_en "Product" --lang zh \
--looks "卖点1" "卖点2" "卖点3" --price-hook "到手价 ¥xxx" \
--theme commerce-stage --online --narration preset --work-dir vwork
→ 产出 vwork/launch_vertical_final.mp4(9:16,含中文磁性解说 + 旋律音乐床 + 末镜价格钩子)。
② 横屏发布会(A 模式)
python scripts/run_launch.py --name "产品名" --name_en "Product" \
--selling-points "卖点1" "卖点2" --params '{"价格":"xxx"}' \
--lang both --theme tech-blue
→ 产出 launch_final.mp4(16:9,双语 keynote 大片)。
💬 不想敲命令?直接这么跟本技能说
- “帮我把这款无线耳机做成竖屏带货短视频,卖点是主动降噪和 36 小时续航,价格钩子写到手 ¥399,用中文磁性解说。”
- “给新手机做个横屏发布会大片,中英双语,卖点:2K 屏、钛金属、长续航,参数按我给的填。”
- “我没产品图,你帮我 AI 生成英雄图再做发布视频。”(效果弱于有图,会提示)
- “用我自己的声音解说”——把录好的 mp3 给本技能,说“用这个录音做解说”,它走
file模式零合成、零编造。 - “没有豆包模型怎么办?”——本技能会回你自动降级方案(见
FAQ.md)。
0. 一句话定位
不是「模特走秀」(那是 AI 时装秀场),而是产品本身 + 参数的发布会。产品悬浮特写 + 参数 keynote,最接近「余大嘴发布会」结构化 keynote 场面。
1. 三层架构(丙混合 · 确定性优先)
L1 · AI 出片层(产品视觉)
- 产品英雄图:豆包 Seedream 5.0 文生图(产品悬浮、暗调舞台光、产品光影、微旋转)。兜底用内置
ImageGen。 - 运镜视频:豆包 Seedance 2.5 图生视频(英雄图作首帧,prompt 放开运镜:缓慢环绕 / 俯冲 / 推拉 / 微距)。兜底用内置
VideoGen。
L2 · 确定性合成层(核心差异化,必须确定性,禁止交给 AI 自由发挥)
- keynote 烧卡(
scripts/keynote_burn.py,Pillow):在视频帧上叠加结构化参数卡——产品名 / 核心卖点(3–5 条)/ 关键参数(重量·尺寸·材质·价格)/ 中文 + 英文双语。 - 成片合成(
scripts/compose.py,FFmpeg):L1 视频 + 可选 TTS 旁白 + keynote 卡 → 多段拼接(开场 → 卖点1 → 卖点2 → 参数 → 收尾 CTA)。
L3 · 编排层
scripts/run_launch.py:输入产品图(或产品名让 AI 生图)/ 产品名 / 卖点列表 / 参数表 / 语言(zh|en|both)/ 风格主题,产出launch_manifest.json,串联 L1→L2→L3→打水印收尾。
2. 向导表单(向用户采集,缺一不可则追问)
- 产品素材:产品实拍图 / 渲染图路径;或只给「产品名」让 AI 生图(质量下降,需告知)。
- 产品名(中/英):如
星瀚 Pro 旗舰手机 / XingHan Pro Flagship Phone。 - 核心卖点(3–5 条,来自用户,AI 不编造):如 「2K 144Hz 护眼屏」「5800mAh 长续航」。
- 关键参数(来自用户,AI 绝不杜撰):重量 / 尺寸 / 材质 / 价格等。这是诚实红线——参数只来自用户输入。
- 语言:
zh(仅中文)/en(仅英文)/both(中英双语,默认)。 - 风格主题:
tech-blue(科技蓝,默认)/lux-gold(奢华金)/minimal-white(极简白)。
3. 调用方式(编排器)
# 有产品图直出(推荐)
python scripts/run_launch.py \
--image 产品图.jpg \
--name "星瀚 Pro" --name_en "XingHan Pro" \
--selling-points "2K 144Hz 护眼屏" "5800mAh 长续航" "钛金属中框" \
--params '{"重量":"198g","屏幕尺寸":"6.8英寸","材质":"钛金属","价格":"4999元"}' \
--lang both --theme tech-blue \
--out launch_manifest.json
# 无图:让 AI 先生成英雄图
python scripts/run_launch.py \
--name "星瀚 Pro" --name_en "XingHan Pro" \
--selling-points "..." --params '{...}' \
--no-image --theme tech-blue
编排器会依次:① 出英雄图(Seedream 或兜底)② 出运镜视频(Seedance 2.5 或兜底)③ 烧 keynote 卡 ④ FFmpeg 拼接 + 打 AI Generated / 虚拟合成 水印 → 成片 launch_final.mp4。
> 各独立模块也可单独调用(见 scripts/ 与 references/)。
3.1 双角色磁性解说(v1.1 增量能力)
在 v1.0.0 单人模板填空基础上,新增「男女双角色磁性解说 + 磁性后期」:
- 双角色交替主持(非对话互动):
launch_cue.py为每段(开场/卖点/参数/CTA)分配speaker(M=男 / F=女),严格交替朗读——开场=M → 卖点1=F → 卖点2=M → 卖点3=F → … → CTA 收尾。是交替朗读,不是男女对话互动台词。 - 补「适合场景 / 能达到的效果」维度:每个卖点段解说词围绕「亮点 + 在XX场景 + 达到XX效果」展开。支持
--scenes/--effects输入(与--selling-points一一对应);未提供时,若开启--expand --online,由豆包 LLM 基于卖点合理扩写(绝不编造用户未提供的规格数字)。 - 双音色 TTS(豆包优先 + Edge-TTS 兜底):
launch_tts.py按speaker选音色——男磁性 / 女磁性。优先豆包doubao-seed-tts-2.0(方舟 openspeech 端点),任何失败(无凭证/未开通/网络/解析)自动降级 Edge-TTS,绝不卡死。 - 磁性后期(FFmpeg 统一调性):对每段音频做动态稳定(压缩)→ 低频增厚(磁性)→ 轻度混响(现场感)→ 整体增益(洪亮)→ 限制(防破音),男女声统一。
输出:launch_manifest.json 中新增 cue.json(含 speaker 分配)、tts/tts_manifest.json、tts/narration.mp3(完整旁白轨,已混入成片)。
> ⚠️ 上架提示(务必告知使用者):为保证磁性主持效果,建议使用豆包语音(需开通方舟语音技术产品,凭证多为 appid+token,可能不同于 ark 图/视频的 api_key)。未开通豆包语音时,自动降级 Edge-TTS(免费、无需认证),效果仍可用但音色磁性略弱。 豆包 voice_type 字符串请按方舟 openspeech 音色表确认后再正式使用(当前为占位 ID,已加注释)。
3.2 B 模式 · 竖屏快剪带货型(v1.2 增量)
与 A 模式(横屏旁白发布会)并存互补,不是替代。B 面向信息流投放(抖音 / Reels / 电商详情页),形态来自参考爆款实测:9:16 竖屏 · 10–15s · 零旁白 · 音乐床 + 下三分之一斜体衬线字幕 · 约 1 秒/款快剪 · 全景↔细节特写交替 · 末镜亮价格钩子。
| 维度 | A 模式 · 发布会解说型 | B 模式 · 竖屏快剪带货型 |
|---|---|---|
| 画幅 | 16:9 横屏 | 9:16 竖屏(1080×1920) |
| 时长 | 60–90s | 10–15s |
| 声音 | 双主持磁性旁白 | 音乐床 + 可选解说(自适应:preset/clone/file) |
| 节奏 | 分段递进 | 约 1 秒/镜快剪 |
| 文字 | keynote 卡 | 下三分之一斜体衬线字幕 + 价格钩子(解说开启时字幕同步解说词) |
| 场景 | 招商 / 官网 / 发布会 | 抖音 / Reels / 电商详情页 |
调用方式
# B 模式 · 纯音乐床(默认,零旁白,保持爆款形态)
python scripts/run_launch_vertical.py \
--name "Jeans Atelier" --name_en "JT Denim" --lang pt \
--looks "Vestido jeans sem mangas" "Shorts jeans feminino" "Calca jeans masculina" \
--price-hook 'Para o seu amor, leve por apenas R$99' \
--theme commerce-stage --online --work-dir vwork
# B 模式 · 自适应解说(顶配:技能TTS + LLM文案,联网时调用方舟LLM写带货文案)
python scripts/run_launch_vertical.py \
--name "Jeans Atelier" --name_en "JT Denim" --lang pt \
--looks "Vestido jeans sem mangas" "Shorts jeans feminino" "Calca jeans masculina" \
--price-hook 'Para o seu amor, leve por apenas R$99' \
--theme commerce-stage --online --narration preset --work-dir vwork
# B 模式 · 使用者自带录音(自己的声音特色,零合成)
python scripts/run_launch_vertical.py \
--name "Jeans Atelier" --name_en "JT Denim" --lang pt \
--looks "Vestido jeans sem mangas" "Shorts jeans feminino" "Calca jeans masculina" \
--price-hook 'Para o seu amor, leve por apenas R$99' \
--theme commerce-stage --offline --narration file --voice-ref 我的解说.mp3
# B 模式 · 上传产品介绍让技能组织成解说词(--intro 路径或文本)
python scripts/run_launch_vertical.py \
--name "Jeans Atelier" --name_en "JT Denim" --lang pt \
--looks "Vestido jeans sem mangas" "Shorts jeans feminino" \
--price-hook 'Para o seu amor, leve por apenas R$99' \
--intro "这是一条..." --theme commerce-stage --online --narration preset
--looks:每镜短描述/字幕(来自用户),逐一成镜;每 4 镜自动插 1 个细节特写。--price-hook:末镜价格钩子(来自用户,AI 绝不编造)。--music:合规背景乐路径(不传则自动合成 AI 旋律音乐床占位,非授权曲库)。--narration:off(默认零旁白)|preset(技能 TTS)|clone(克隆音色,需--voice-id)|file(自带录音,需--voice-ref,零合成)。--intro:用户上传的产品介绍(文件路径或直接文本);提供后解说文案由 LLM/规则智能组织,未提供则头脑风暴。--no-llm:关闭方舟 LLM 文案(改用模板/规则兜底,离线自动走此路)。--theme commerce-stage:影棚白 T 台主题(多镜头视觉一致性关键)。--lang:pt(葡语,Brazil 线)/es/en/zh/both。- 输出:
launch_vertical_final.mp4(9:16,含 AI 水印)+launch_vertical_manifest.json(各产物 SHA256)。
3.2.1 自适应声音环节(v1.3 增量,顶配)
把 B 模式的「声音」做成两层自适应,让使用者既可用自己的声音、也可用技能准备的声音,且解说文案自动生成:
A. 声音来源自适应(三选一)
1. preset(技能准备的声音):中文走豆包磁性嗓(premium,已锁定);其它语言走 Edge 神经多语音色(免费、最优可用)。
2. clone(声音克隆):通过火山「声音复刻」生成的克隆音色 id(传 --voice-id),接入同一条 premium TTS 管线——比单纯导入录音更"顶配"。
3. file(使用者自己的声音):--voice-ref 指定自带录音文件,直接复用,零合成、零编造,100% 保真。
B. 解说内容自适应(双路径)
- 用户上传产品介绍(--intro)→ 联网时调用方舟 LLM 智能分段组织成口播解说词;离线/失败回退规则分段(保留用户原话)。
- 未上传 → 联网时调用方舟 LLM 头脑风暴专业带货文案;离线/失败回退模板头脑风暴。
- 红线:LLM 文案严格"只用给定事实 + 通用连接语",禁止编造具体规格/价格;任何虚构点用 [补充:xxx] 显式标注,留待用户确认。
工程要点
- 解说轨与音乐床自动混合(音乐压低铺底);解说时长驱动每镜时长,保证解说不被截断。
- 解说开启时,下三分之一字幕卡同步显示解说词(与音频对齐),末镜仍亮价格钩子。
- 任一环节失败均优雅降级:TTS 不可用→静音占位;LLM 不可用→模板;绝不卡死整条流水线。
> 实测状态(诚实标注):中文 preset 经豆包磁性嗓已验证产出真实语音(volumedetect mean≈-24dB);非中文 preset 依赖 Edge/网络(部分沙箱/网络会拦截微软 TTS 端点),若出声失败请改用 file(自带录音)保证出声;方舟 LLM 文案已于 2026-09-24 真实点亮——ark_config.json 配 chat_model: "ep-m-20260924101345-s9pmw"(预置推理服务,背后模型 doubao-seed-2-0-pro-260215),实测 /api/v3/chat/completions 返回 HTTP 200 并吐出真实带货文案;未配 chat_model 时自动走模板/规则文案。克隆音色(clone)需用户在火山引擎「声音复刻」控制台生成克隆音色 id 后,通过 --voice-id 接入。
> B 模式绝不改动 A 模式的 16:9 / 磁性旁白链路;两条腿各自独立运行(A 用 run_launch.py,B 用 run_launch_vertical.py)。
4. 技术栈与依赖
| 能力 | 工具 |
|---|---|
| 英雄图(主) | 豆包 Seedream(~/.workbuddy/ark_config.json,/images/generations) |
| 运镜视频(主) | 豆包 Seedance 2.5 图生视频(/contents/generations/tasks,不传 ratio) |
| 兜底出图 / 视频 | 内置 ImageGen / VideoGen |
| keynote 烧卡 | Python + Pillow |
| 成片合成 | FFmpeg(系统需安装;合成前先 ffmpeg -version 探活,缺失报错指引) |
| 主题包 / 控场 | 改写自 ai-fashion-runway 的 m7_theme_pack.py / m5_cue_sheet.py |
| 双角色解说词 | scripts/launch_cue.py(M/F 交替 + 场景/效果维度,可选豆包 LLM 扩写) |
| 双音色 TTS | scripts/launch_tts.py:豆包 doubao-seed-tts-2.0 优先 + Edge-TTS 兜底 |
| 磁性后期 | scripts/launch_tts.py + FFmpeg(压缩/限制/低频增厚/混响/增益,男女统一调性) |
| 参数表解析 | openpyxl(若用户传 xlsx 参数表) |
| 竖屏字幕卡(B) | scripts/keynote_burn.py::render_vertical_subtitle(下三分之一斜体衬线,PT/ES/EN/ZH) |
| 竖屏编排(B) | scripts/run_launch_vertical.py(快剪时间轴 + 细节特写插入 + 价格钩子 + 音乐床 + 自适应声音) |
| 影棚主题(B) | launch_theme_pack.py::commerce-stage(白 T 台影棚,多镜头一致性) |
| 背景乐(B) | scripts/compose.py --music(合规 BGM 循环铺满,零旁白) |
| 自适应解说层 | scripts/narrate.py:解说文案(LLM/模板双路径)+ 声音渲染(preset/clone/file)+ 解说×音乐混音 |
| LLM 文案 | 方舟 chat(ark_config.json 的 api_key / chat_model / host),失败回退模板;红线不编造规格 |
| 克隆音色 | 火山声音复刻音色 id 经 launch_tts._dubao_synth(voice_override=) 接入豆包 premium TTS |
5. 诚实边界(红线,不可破)
- 不杜撰参数:keynote 卡数据只来自用户提供的卖点 / 参数表,AI 不编造重量 / 尺寸 / 价格等规格。
- 不冒充真人 / 不实宣传:成片为虚拟合成,打
AI Generated / 虚拟合成水印;不得生成以假乱真的虚假测评。 - 版权合规:音乐 / 字体须合规(生成式无版权或授权曲库),不抓流媒体;字体用系统自带或开源字体。
- 审美拍板权在用户:主题包给基底,用户可改;AI 不独裁也不放任翻车。
- 禁止伪造未核实成片:所有「实测产出」必须真实存在文件 + 附路径 + 附 SHA256;沙箱拦网时明确标注「未实跑」。
6. 验收(交付前必做)
- [ ]
name:==_skillhub_meta.json的slug(==product-launch-ai),可被 Skill 工具按product-launch-ai调起。 - [ ] 离线验收:一张产品图 + 卖点/参数文本 → 纯本地产出带双语 keynote 卡的成片(L2/L3 不依赖联网即通过)。
- [ ] 联网验收(沙箱放开后):豆包 Seedream 出英雄图 + Seedance 2.5 出运镜视频 → 合成成片含结构化 keynote。
- [ ] 成片打
AI Generated / 虚拟合成水印;参数卡内容严格来自用户输入。 - [ ] 双语:zh / en / both 可切换。
- [ ] B 模式离线验收:
run_launch_vertical.py --offline→ 产出 9:16 竖屏成片 + 下三分之一斜体衬线字幕卡(含末镜价格钩子),L2/L3 不依赖联网即通过。 - [ ] B 模式联网验收(沙箱放开后):Seedream 9:16 出图 → 竖屏快剪成片;B 不得影响 A(A 仍需能独立跑通)。
- [ ] B 模式自适应声音验收:
--narration preset(在线 LLM 文案 + TTS 合成解说轨,成片含 aac 解说)|--narration file --voice-ref(自带录音混音,时长对齐)|--narration off(默认零旁白音乐床)三者均产出合法成片;--narration clone --voice-id(克隆音色,需用户提供火山克隆 id)。