01
先放商品,越具体越容易写准
商品名、卖点和目标人群会直接影响钩子和产品出场方式。商品图只作参考,不要求白底。类目限制:保健食品、母婴、医疗器械及周边暂不开放。
{{ mode === 'oral' ? '下一步选主播/场景和成片时长。' : '商品信息填完,下一步按类目推荐 6 个题材组合。' }}
02
选一个情绪钩子,再定怎么植入
先选题材和爽点,再定视觉风格与产品出场方式。AI 推荐会按商品类目匹配,不喜欢就展开全部。
维度 1 · 题材{{ selectedTrope ? selectedTrope.genre : '待选择' }}
维度 2 · 爽点{{ selectedTrope ? selectedTrope.trope : '待选择' }}
维度 3 · 视觉{{ styleName }}
维度 4 · 植入{{ integrationName }}
AI 推荐组合
{{ recoNote || '按商品名、卖点和人群匹配,最多 2 个同题材,避免一水儿宫斗。' }}
DeepSeek 拆解
{{ analysis.category }}
卖点排序:{{ analysis.sellingPointOrder.join(' / ') }}
痛点:{{ analysis.painPoints.slice(0, 3).join(' / ') }}
填完商品后点“重新推荐”,这里会出现 6 个匹配的题材组合。
视觉风格
产品植入方式
{{ selectedTrope ? selectedTrope.genre + ' · ' + selectedTrope.trope : '先选题材' }}
02
是否露脸已经在商品步骤选好。口播不演剧情:先说清商品和利益点,再上手演示,最后给价格和 CTA。
形式{{ oralMode === 'face' ? '露脸口播' : '不露脸口播' }}
主播{{ oralMode === 'face' ? ((meta.oral.hosts.find(h => h.id === host.gender) || {}).name || '女主播') : '不出现人脸' }}
风格{{ oralStyleName }}
场景{{ (meta.oral.scenes.find(s => s.id === host.sceneId) || {}).name || '室内桌面' }}
主播
口播风格
拍摄场景
成片时长
{{ selectedDurationLabel }} · {{ selectedDurationDesc }}
{{ oralMode === 'face' ? '露脸口播 · 主播形象会作为视频参考' : '不露脸口播 · 商品图是唯一参考' }}
03
这条片子做多长?
时长不是越长越好。平台看的是完播率:先做 15/30 秒测钩子,跑通了再扩到 60/90 秒讲完整故事。
{{ selectedDurationLabel }}{{ selectedDurationDesc }}
- 前 3 秒先说清产品和利益点,直接抓人。
- 每一镜产品都是主角,卖点具体、能演示。
- 结尾给价格/优惠和明确 CTA,不演剧情。
- 产品在 55%–70% 的位置出场,不早于冲突建立。
- 每个镜头 2–5 秒,台词单句不超过 15 个字。
- 只讲一个事件、一次反转,不塞第二条支线。
{{ duration }} 秒 · {{ script ? script.shots.length + ' 个镜头' : '还没生成' }}
{{ mode === 'story' ? '04' : '03' }}
{{ mode === 'oral' ? '开场钩子、产品、卖点、CTA' : '钩子、冲突、产品、反转' }}
{{ mode === 'oral' ? '口播不演剧情:前 3 秒抓人,产品是主角,卖点要具体,结尾给价格和行动。' : '先选一个开头钩子。整条片子只讲一件事:主角被压到最低点,产品帮她完成反转。' }}
{{ mode === 'oral' ? '还没有口播脚本' : '还没有剧情脚本' }}
按当前商品、{{ mode === 'oral' ? '口播形式' : '题材' }}和时长生成一版,之后再逐镜改。
{{ script.durationLabel }} · {{ script.style.name }} · {{ script.integration.name }}
DeepSeek 参与
{{ script.title }}
{{ script.logline }}
3 个开头钩子 点一个直接换开头
{{ b.start }}–{{ b.end }}s{{ b.label }}
{{ String(s.n).padStart(2, '0') }}
{{ s.start }}–{{ s.end }}s
{{ s.beatName }} · {{ s.shot }} / {{ s.camera }}
{{ s.action }}
{{ s.speaker }}:{{ s.dialogue }}
产品露出
{{ script ? script.shots.length + ' 个镜头 · ' + script.style.name : '' }}
05
角色三视图与场景锚点
一条片子里只保留 1 个主角、1 个反派、1 个见证者。三视图会作为之后每一段视频的人物参考,先生成或绑定至少 1 个角色。
先生成剧情,这里会自动按题材给出角色和场景。
三视图规范:左侧大脸特写 + 无头正面 / 侧面 / 背面,四格服装发型完全一致。
{{ c.role }}{{ c.name }}{{ c.age }} 岁
{{ c.identity }}
- 外形锚点
- {{ c.look }}
- 声音
- {{ c.voice }}
已绑定素材库:{{ c.boundAsset.name }}
{{ c.error }}
场景
{{ script.world.setting }}
世界规则
{{ script.world.world }}
视觉锚点
{{ script.world.visualAnchors.join(' · ') }}
不能出现
{{ script.world.forbidden.join(' · ') }}
{{ script ? script.characters.length + ' 个角色 · ' + (hasCharacterRef ? '已有视频参考图' : '还没有生成或绑定角色') : '' }}
05
{{ oralMode === 'face' ? '生成主播形象' : '不露脸模式' }}
{{ oralMode === 'face' ? '一张主播定妆照就够:半身、看镜头、手持商品。后面每一段都会把这张图和商品图一起作为参考。' : '不露脸不需要主播图:视频只拍双手、商品和桌面/场景,旁白讲解;商品图就是唯一参考。' }}
先生成口播脚本,这里会自动给出主播或场景。
主播定妆照:半身、正面对镜头、自然表情、手持商品;真实皮肤质感,无文字。不需要三视图。
{{ c.role }}{{ c.name }}{{ c.age }}
{{ c.identity }}
- 外形锚点
- {{ c.look }}
- 声音
- {{ c.voice }}
已绑定素材库:{{ c.boundAsset.name }}
{{ c.error }}
不露脸
不生成主播形象,也不会把人物参考图带进视频;镜头只拍手部、商品和使用动作。
场景
{{ script.world.setting }}
视觉锚点
{{ script.world.visualAnchors.join(' · ') }}
场景
{{ script.world.setting }}
视觉锚点
{{ script.world.visualAnchors.join(' · ') }}
不能出现
{{ script.world.forbidden.join(' · ') }}
{{ oralMode === 'face' ? (hasCharacterRef ? '主播参考图已就绪' : '还没有生成或绑定主播形象') : '不露脸模式 · 只需商品图' }}
{{ mode === 'story' ? '06' : (oralMode === 'face' ? '05' : '04') }}
分段生成视频与选 take
脚本会自动按 15 秒左右合并成段,一段里有多个分镜。每段单独提交、单独重做;同一段可以生成多条 take,选一条作为成片。14.3 秒这种不足整秒的段,按 15 秒向上取整生成。
先生成脚本,这里会自动分好段。
{{ segmentList.length }} 段 · 脚本 {{ script.totalSeconds }} 秒 · 按整秒生成 {{ totalGenSeconds }} 秒 · 预计 {{ totalEstCost }} 积分
不露脸模式:商品图是唯一参考,不会带人物图;视频只拍手部、商品和场景。
还没有人物参考图:先回到上一步生成或绑定至少一个主播/角色形象,再生成视频。
尾帧接力已开启:上一段选中成片的最后一帧会自动作为下一段参考图;按顺序生成,完成一段才解锁下一段。
{{ overallPercent }}% · 已完成 {{ doneCount }}/{{ segmentList.length }} 段 · 本批 {{ batchDone }}/{{ batchTotal }}
第 {{ seg.n }} 段
镜头 {{ seg.shotNums.join('、') }}
{{ seg.start }}–{{ seg.end }}s · {{ seg.sec }}s
按 {{ seg.genSec }}s 生成
生成 {{ seg.genSec }}s
接上一段尾帧
先完成第 {{ firstPendingIndex + 1 }} 段
{{ seg.beats.join(' · ') }}
#{{ String(s.n).padStart(2, '0') }}{{ s.start }}–{{ s.end }}s{{ s.beatName }}{{ s.shot }} / {{ s.camera }}产品
{{ s.action }}
{{ s.speaker }}:{{ s.dialogue }}
本段视频提示词
{{ seg.prompt }}
{{ takeLabel(t) }}
{{ t.cost }} 积分
{{ segmentList.length }} 段 · 脚本 {{ script.totalSeconds }} 秒 · 成片按整秒共 {{ totalGenSeconds }} 秒
最新合成
{{ latestMerge.seconds }} 秒 · {{ (latestMerge.bytes / 1048576).toFixed(1) }} MB · 含字幕 · 含配音
下载合成视频
字幕已识别 先改错字,再烧录到视频;不需要字幕可以直接下载上面的无字幕版。
{{ mergeError }}
{{ batchRedo ? '全部重做' : ('从第 ' + (firstPendingIndex + 1) + ' 段开始 · 待生成 ' + batchTargets.length + ' 段') }}
{{ batchCost }} 积分
先完成角色三视图
字幕未启用:{{ meta.asr ? meta.asr.note : '本地 Whisper 未就绪' }}
配音未启用:{{ meta.tts ? meta.tts.note : 'Edge TTS 未就绪' }}
合成前要先给每一段选一条成片。
{{ mergeWarn }}
{{ mode === 'story' ? '07' : (oralMode === 'face' ? '06' : '05') }}
保存项目,下次接着改
项目会保存商品、题材、时长、整份脚本和每段选中的 take;模板只保存创作配置,换个商品可以直接复用。
当前还没有脚本:先打开下面保存过的项目,或回到第 1 步新建。生成剧情后才能保存和导出。
保存项目
现在可以导出 JSON;登录后才会保存到账号。
当前项目已关联,继续改完再点“更新项目”。
导出
完整脚本、角色、分段和全部提示词都在 JSON 里,方便交给剪辑或别的生成工具;成片 take 在项目里单独保存。