返回文章列表
AI 实践

电商工作流

生成电商带货工作流

我看完了。这个工作流叫 **DianShangDaiHuo_CustomTxt_V5**,用途是:

把 **3 张商品图 + 一段自定义广告文案** 自动变成电商带货素材,并输出剪映草稿链接。它支持两种模式:

- `image_video = 视频`:生成“动态视频版”剪映草稿,同时也生成一份“图片轮播版”剪映草稿。

- `image_video != 视频`:只生成“图片轮播版”剪映草稿。

**整体流程**

1. 用户输入:

- `attr`:商品广告词/商品描述。

- `image_video`:填“视频”则走视频生成分支,否则走图片分支。

- `input`、`input2`、`input3`:三张商品参考图。

2. 文案处理:

- 先用“文本处理”节点把 `attr` 按这些分隔符切开:

- 换行 `\n`

- 句号 `。`

- 空格

- 分号 `;`

- 再用 `text_remove_empty` 移除空字符串。

- 得到一个文案数组,例如:

- 设备承压不用愁,这款抗压液压油超靠谱

- 高压工况稳得住,动力强劲不衰减

- 强韧油膜抗磨损,精密部件护得牢

- ...

3. 配音生成:

- 对每一句文案批量调用“语音合成”插件。

- 音色 ID:`7426725529589596187`

- 语速:`1.2`

- 然后获取每段音频时长,单位是微秒。

- 再用“字幕音频对齐”插件,把文案和音频时长对齐,输出:

- `text_captions`:字幕文本列表

- `text_timielines`:字幕时间轴列表

4. 生成静态商品素材图:

- 用大模型节点“描述词大模型”根据 3 张商品图和拆分后的广告文案,生成一组 AI 绘图描述词。

- 模型:`豆包·1.8·深度思考`

- 输出格式:JSON 数组。

- 要求描述词数量和广告文案句子数量一致。

- 然后进入循环节点,对每条描述词生成一张图。

- 图像尺寸:`1440 x 2560`

- 参考图:三张商品图,权重都是 `0.7`

- 图像生成提示词大意是:在描述词基础上,做 1:1 商品摄影复刻,完整展示商品,颜色材质准确,文字清晰,不要乱码,不要额外装饰,电商产品图风格,8K,锐利。

5. 图片轮播版剪映草稿:

- 创建剪映草稿,尺寸:

- 宽:`1728`

- 高:`2304`

- 把生成的图片批量加入草稿。

- 图片时间轴来自音频时长,每句广告词对应一段图片。

- 加字幕:

- 字体:`尔雅新大黑`

- 字号:`4`

- 字幕颜色:`#ffde00`

- 描边颜色:`#000000`

- `scale_x = 2.27`

- `scale_y = 2.27`

- `transform_y = -851`

- 加配音:

- 音量:`5`

- 输出图片版剪映草稿链接。

6. 视频版剪映草稿,仅当 `image_video = 视频`:

- 先用“动态描述词大模型_1”逐张分析生成好的商品图,为每张图生成动态视频描述词。

- 模型:`豆包·1.6·极致速度·250828`

- 然后批量调用视频生成:

- 模型:`doubao-seedance-pro`

- 模式:图生视频 `image2Video`

- 每段视频:`5 秒`

- 分辨率:`480p`

- 比例:自适应

- 关闭水印

- 首帧:前面生成的商品图

- 视频提示词最后额外加了一句:

- `禁止出现文字字体不清晰、不工整、歪斜残缺模糊锯齿。`

- 之后计算视频数量,并简单按每条视频 `5,000,000 微秒` 生成视频时间轴。

- 创建剪映草稿,尺寸同样是:

- 宽:`1728`

- 高:`2304`

- 加入生成的视频、字幕、配音。

- 输出视频版剪映草稿链接。

**你在扣子里复刻时的节点顺序**

按这个顺序搭就行:

1. **开始节点**

- `attr`:String,必填,商品描述/广告词。

- `image_video`:String,必填,默认“视频”。

- `input`:Image,必填,商品图片1。

- `input2`:Image,必填,商品图片2。

- `input3`:Image,必填,商品图片3。

2. **文本处理节点**

- 方法:split。

- 输入:开始节点的 `attr`。

- 分隔符:换行、句号、空格、分号。

- 输出:文案数组。

3. **插件节点:text_remove_empty**

- 插件名:`CodeL视频编排工具`

- API:`text_remove_empty`

- 输入:文本处理节点输出的数组。

- 输出:`texts`

4. **批处理节点:配音批处理**

- 输入列表:`texts`

- 并发:`10`

- 批量大小:`100`

- 内部放两个节点:

- `语音合成 / speech_synthesis`

- text = 当前批处理文本

- speed_ratio = `1.2`

- voice_id = `7426725529589596187`

- `get_audio_duration`

- mp3_url = 语音合成输出的 `data.link`

- unit = `微秒`

- 批处理输出:

- 音频链接数组:`data.link`

- 音频时长数组:`duration`

5. **插件节点:align_text_to_audio**

- 插件名:`字幕音频对齐_免费版`

- API:`align_text_to_audio`

- 输入:

- `duration_list` = 配音批处理输出的 duration 数组

- `texts` = 清洗后的文案数组

- 输出:

- `text_captions`

- `text_timielines`

6. **大模型节点:描述词大模型**

- 模型:豆包深度思考类模型。

- 输入:

- 三张商品图

- 文案数组

- 关键要求:

- 输出 JSON 数组。

- 数组长度和文案句数一致。

- 每条是一个不同视角的 AI 绘图描述词。

- 强调“图中的 xx 物品”。

- 结合商品卖点生成场景。

- 这个节点的系统提示词可以直接用源文件里的那大段“电商带货视频创意助手”。

7. **循环节点:生成图片**

- 循环输入:描述词大模型输出的 JSON 数组。

- 每次循环调用图像生成。

- 图像生成参数:

- 尺寸:`1440 x 2560`

- 步数:`25`

- guidance_scale:`2.5`

- max_images:`1`

- watermark:false

- 参考图:三张商品图,权重都设 `0.7`

- prompt 模板:

```text

{{input}},1:1 replica product photography, target object, full view, accurate color and texture, legible text, no garbled characters, correct typography, clear text edges, even lighting, realistic texture, high detail, e-commerce product shot, 8K, sharp focus, no extra decorations

```

8. **插件节点:audio_timelines**

- 插件名:`剪映小助手数据生成器`

- API:`audio_timelines`

- 输入:配音批处理输出的音频链接数组。

- 输出:图片/音频用的时间轴。

9. **选择器节点**

- 条件:开始节点的 `image_video` 等于 `视频`。

- true:走视频版,同时也走图片版。

- false:只走图片版。

10. **图片版剪映分支**

- `create_draft`

- width = `1728`

- height = `2304`

- `add_images`

- draft_url = create_draft 输出

- imgs = 循环生成的图片数组

- timelines = audio_timelines 输出

- `add_captions`

- texts = align_text_to_audio 的 `text_captions`

- timelines = align_text_to_audio 的 `text_timielines`

- font = `尔雅新大黑`

- font_size = `4`

- text_color = `#ffde00`

- border_color = `#000000`

- scale_x = `2.27`

- scale_y = `2.27`

- transform_y = `-851`

- `add_audios`

- mp3_urls = 配音批处理输出音频链接数组

- timelines = audio_timelines 输出

- volume = `5`

11. **视频版剪映分支**

- 大模型节点“动态描述词大模型”

- 批量输入:前面生成的图片数组。

- 每张图生成一句动态视频描述词。

- 批处理节点“视频批处理”

- 输入:图片数组 + 动态描述词数组。

- 内部调用视频生成:

- model = `doubao-seedance-pro`

- mode = image2Video

- duration = `5`

- resolution = `480p`

- watermark = false

- firstFrame = 当前图片

- 代码节点,计算视频数量和总时长:

```js

async function main(input) {

const video_url = input?.arguments?.video_url || input?.video_url || input?.params?.video_url;

const videoUrls = Array.isArray(video_url) ? video_url : video_url ? [video_url] : [];

const num = videoUrls.length;

const duration = num * 5000000;

return { duration, num };

}

```

- `timelines`

- duration = 代码节点输出 duration

- num = 代码节点输出 num

- start = `0`

- `create_draft`

- width = `1728`

- height = `2304`

- `add_videos`

- video_urls = 视频批处理输出的视频数组

- timelines = timelines 节点输出

- scene_timelines = audio_timelines 输出

- `add_captions`

- 参数同图片版。

- `add_audios`

- 参数同图片版。

12. **结束节点**

- 返回内容类似:

```markdown

## 剪映【图片】草稿地址

```

`{{图片草稿 draft_url}}`

```markdown

## 剪映【视频】草稿地址

```

`{{视频草稿 draft_url}}`

**一个复刻时要注意的坑**

这个工作流里有些 `draft_url` 引用的是 `create_draft` 的输出,而不是最后一个 `add_audios` 节点的输出。通常剪映小助手插件是“在同一个草稿链接上持续修改”,所以草稿地址不变,这样能跑。但你手动搭的时候,我建议结束节点引用每条分支最后一个节点 `add_audios` 的 `draft_url`,逻辑更直观,也更不容易因为插件实现差异出问题。

有想法或建议? 联系我