2025年12月15日星期一

接了一个视频商单,用AI视频商单生产智能体,从0到成片只需10分钟


点击上方卡片关注 不要错过精彩文章





📌

持续更新有关Agent的最新搭建思路和工作流分享,希望能给您带来帮助,点一点上方的🔵蓝色小字关注,你的支持是我最大的动力!🙏谢谢啦!🌟" 


大家好!我是唐舰长,在观看本文章前可以先看一下上方的视频


这是舰长基于之前的心理火柴人进行更改的,同时也是一个商单案例将火柴人和商业逻辑进行整合,如果有看过视频的小伙伴会发现,在视频的中间和后面都是在讲一个特色"全域运营"。


这个"全域运营"就是隐藏在视频中的产品介绍,对比现状凸显自己产品的优势,达到既看了商业内容,又变相带货


这也是本次舰长分享的一套智能体工作流可以直接实现的效果,对于火柴人的工作流目前还是非常火的,尤其是这种讲商业的,就让人忍不住停留观看。


话不多说,直接开始本次的分享,流程比较长,舰长就不过多分享搭建思路,关于Coze视频工作流搭建思路和逻辑的可以多看一些舰长之前分享的视频工作流:

最新扣子(Coze)重磅更新:一键生成火柴人视频特新版


工作流详情图:

Image


Coze使用网址:https://www.coze.cn/

在资源库中创建一个新的工作流

Image


开始节点

创建两个变量:

"chanpin":自己的产品介绍

"zhuti":传递需要生成的商业内容

Image


如需测试使用,可以使用舰长的输入内容:

chanpin:

什么是全域运营?它本质上来说就是私域与公域的联动,公域做流量,私域做承接及复购,是商家和品牌实现商业增长的必经之路。商家既能从公域平台获得流量曝光,引流用户到店铺,也能通过精细化的私域运营手段帮助店铺锁客留客,持续挖掘用户的存量价值,打造广泛引流+有效承接+精准转化的运营链路。才能同时释放公域流量红利和私域经营红利。今天主要给大家介绍一下全域运营解决方案的整体流程,主要分为四大模块,第一个模块抖音引流,公域引流以抖音全链路运营为主,主要包括入驻来客、策划团单、达人探店、全民探店-AI短视频矩阵四个分支,为商家提供一站式抖音运营服务。通过在公域平台进行曝光和转化,快速打爆店铺知名度,增强品牌的影响力,获得用户的增量。第二个模块企微沉淀私域运营,用企业微信来做承接,引导顾客快速加入门店的私域流量池,完成初步锁客。主要包括四个方面,一搭建企微,设置自动欢迎语和员工活码。二设置加好友激励,在店内张贴海报,引导到店客户加企微和注册会员。三配置引流码,配合扫码点餐低成本的引导客户加企微。四注册视频号,策划视频号内容。并在主页打通企微。第三个模块小程序变现,完成初步锁客后,再通过小程序进行变现。利用储值有礼、积分商城、拼团秒杀、消即返、首单优惠等营销功能,提升社群的活跃度,从而进一步锁定顾客,提升顾客消费频次。除此之外,再配合共享合伙人功能。能够很好的利用微信的社交关系链,以滚雪球的方式快速实现会员的裂变。另外还有抖音核销团购、服务通知、领卡福利、优惠券营销、无痕广告等功能,商家可以根据自己的需求进行选择。第四个模块 AI智能运营系统触达,为了能够持续经营门店的会员,可以借助 ai 智能运营系统,通过大数据采集用户行为。自动记录用户消费数据和偏好,并通过画面上的六大触达方式来自定义设置运营计划。系统会自动执行门店的计划,在有效降低人工运营成本的前提下,对会员进行沉默唤醒,增加粘性,培养忠实客户,以提升客户再次到店的几率,同时保证唤醒流程的标准化。助力商家实现营销自动化。接下来我们详细了解一下每一种触达方式。一、企微触达,用户在添加商家企微后,商家可以用企微一键群发消息给用户,可以推送活动海报、小程序、活动文字等,例如每周一发送本周特价菜,或者在每个会员生日时发送生日问候等等。二、短信触达,商家可以编辑活动文字给会员推送短信消息,会员收到后点击短信链接可以直接跳转到商家小程序,例如在每月会员日时通过短信发送优惠券会员点击即可领取。三、公众号触达用户,关注商家公众号后,商家可以通过公众号消息给用户推送活动信息。例如,在做周年庆活动时,通过公众号向会员发布消息通知等;四、小程序触达,用户进入小程序界面后,通过弹窗引导用户领取会员卡或领取优惠券等等,例如配合领卡福利,刺激用户领会员卡,有助于商家留存会员。五、朋友圈触达,在后台提前编辑好一周的朋友圈。系统会定时提醒员工发布,员工在企微中点击发送即可,可针对不同标签的客户发送不同朋友圈内容,点击朋友圈链接,可以直接跳转小程序活动页面。六、服务号模板触达系统自带消息模板商家不用自行编辑大段文字,只需填入相应信息即可生成店铺消息进行推送。

zhuti:

当下实体店的抖音获客的现状,投完流留不住客户


1:生成短视频文案-大模型节点

使用模型"deepseek- v3.1"

技能去添加一个联网问答节点,主要要获取最新的商业数据

输入:

chanpin引用开始节点的chanpin

zhuti:引用开始节点的zhuti

系统提示词和用户提示词太长,舰长已经打包好,文章结尾有领取方式

Image


2:火柴人的构造词-大模型节点

从第一个节点延伸一条直线指向第二个节点

输入引用开始节点的zhuti

系统提示词和用户提示词太长,舰长已经打包好,文章结尾有领取方式

Image


3:生成素材图-图像生成节点

选择通用pro模型

输入引用节点2点输出

提示词直接写入变量{{input}}

Image


4:素材抠图-智能体抠图插件

Image


上传图引用节点3点输出data

Image


5:制作视频背景图-画板节点

引用开始节点的zhuti

Image


画板设置:背景是16:9的背景

Image


6:文字拆分-代码节点

input:引用开始节点的zhuti

output:引用节点1的输出

代码太长,舰长已经打包好,文章结尾有领取方式

输出:变量一定要一致:

result:变量类型为Array<object>

Image


7:语音合成火山版-插件语音合成火山版

因为Coze的普通语音合成插件的声音没有情感,太过单调,但使用火山版的插件是可以用高情感的声音。

Image


在这里面我们先配置其他内容,app_id和app_token下面在讲如何获取

选择批处理,去处理节点6传递过来的数据;所以引用节点6的输出即可

cluster为火山集群:统一填写"volcano_tts"

speaker_id为音色,舰长这个音色就是视频音色,"zh_female_mizai_saturn_bigtts"

text:引用节点7的item1

Image


获取地址:https://console.volcengine.com/speech/service/8?AppID=8461750846

打开后先开通一下

Image


页面往下滑就是app_id和app_token

Image


更多音色选择:https://console.volcengine.com/speech/new/setting/activate?projectName=default

Image


左侧的就是speaker_id

Image


8:获取音频时间-插件剪映小助手"get_audio_duration"

使用的速推开发的插件,在插件中找到工具名为get_audio_duration

Image


使用批处理去处理节点7的数组内容

批处理引用节点7的输出

输入:

mp3_url:引用节点8的item1-link

Image


9:时间轴生成-代码节点

输入:引用节点8的输出

代码:格式乱了用豆包调整一下

async def main(args: Args) -> Output:    time_segments = []    current_start = 0        for segment in args.params.get('input', []):        duration = segment.get('duration'0)        end_time = current_start + duration                time_segments.append({            "start": current_start,            "end": end_time        })        current_start = end_time  # 直接继承结束时间作为下一段起始        # 新增逻辑:计算最终结束时间    final_end = current_start if time_segments else 0  # 当输入为空时返回0        return {        "result": time_segments,        "endtime": final_end  # 新增的最终结束时间字段    }

输出:

result:变量类型为Array<object>后添加子项:

start:变量类型为string

end:变量类型为string

endtime:变量类型为string

Image


10:合并片段-大模型节点

引用及节点1的输出

系统提示词:

## 任务合理的分配内容,当用户提供文案内容,你需要合理的分配段落句子以数组格式输出,每组中最多只能有三句话,这里的每一句话是按照符号算的,如果是逗号也算一句话。每组不得超过三句,可以是二句,也可以是三句,但不能是一句话第一句话中的"知道吗?"的问号符号要删除,进行输出

用户提示词:

文案内容:{{input}}

输出output:变量类型Array<string>

Image


11火柴人的构造词-大模型节点

使用批处理引用及节点10的输出

输入:引用节点11的item1

系统提示词:

# 角色 视频分镜描述专家## 技能11. 依据用户提供的文案内容,创作一个素材分镜描述提示词。示例Prompt : A simple, minimalistic image using stick figures with clean lines and high contrast. The background should be wihte, and the figures should be black with white outlines. ## 限制- 视频文案及分镜描述必须一致,且以火柴人形式呈现。- 图像必须是黑白色,不允许有其他颜色

用户提示词:

{{input}}
Image


批量产出素材图-批处理节点

并行运行数量为3

输入引用节点11的输出

Image


12:生成素材图-图像生成节点

选择通用pro模型

输入引用批处理节点的item(in input)中的output

Image


13:素材抠图-智能体抠图插件

上传图:引用及节点12的输出data

Image


批处理的输出

Image


14:合并生成图片时间线-代码节点

三个支线合并到一个代码节点中

Image


输入:

input:引用节点9的输出

time:引用节点10的输出

text:引用节点6的输出

代码太长,舰长已经打包好,文章结尾有领取方式

输出:

result:变量类型为Array<object>后添加子项:

start:变量类型为number

end:变量类型为number

Image


节点15到节点节点31,大部分用的都是速推的插件

Image


分别为:

视频合成_剪映小助手和剪映小助手数据生成器

Image


15:创建剪映草稿

视频合成_剪映小助手里的创建草稿工具"create_draft"

Image


16:音频导入

视频合成_剪映小助手里的工具"easy_create_material"

使用批处理并引用节点7的输出

audio_url:引用节点16中的link

draft_url:引用节点15的输出draft_url

Image


别忘记把并行的数量设置为"1"

Image


17:调整图片传输格式-文本处理节点

输入:一个引用节点5的输出data'另一个引用节点9的输出endtime

一定要用豆包调整一下格式

[    {        "image_url": "{{String1}}",        "width": 1920,        "height": 1080,        "start": 0,        "end": {{String2}}    }]
Image


18:添加背景图片素材

视频合成_剪映小助手里的工具"add_images"

draft_url:引用节点15的输出draft_url

image_infos:引用节点17的输出

Image


19:str_to_list

剪映小助手数据生成器里的工具"str_to_list"

引用节点4的输出

Image


20:提取第一个图片时间线-代码节点

输入:

input引用节点6的输出

代码:格式乱了用豆包调整一下

async def main(args: Args) -> Output:    # 获取输入参数:从 args.params 中提取名为 'input' 的数组    input_array = args.params['input']        # 提取数组中的第一个元素(假设数组不为空)    first_item = input_array[0]        # 从第一个元素中获取 'start' 和 'end' 的值    start_value = first_item['start']    end_value = first_item['end']        # 创建一个包含 start 和 end 的对象    result_item = {"start": start_value, "end": end_value}        # 将对象放入数组中,并命名为 "result"    result_array = [result_item]        # 返回包含结果数组的字典    return {"result": result_array}

输出:

result:变量类型为Array<object>后添加子项:

start:变量类型为string

end:变量类型为string

endtime:变量类型为string

Image


21:imgs_infos

剪映小助手数据生成器里的工具"imgs_infos"

imgs:引用节点19 的输出

timelines:引用节点20的食醋

in_animation:点开

n_animation_duration:1000000

Image


22:add_images

视频合成_剪映小助手里的工具"add_images"

image_infos:引用节点21的输出

draft_url:引用节点15的draft_url

其他配置如图

Image


23:音频导入数据-代码节点

输入:https://v3-jianying.vlabvod.com/d450fe5f4a736879307df9bdfae1aa6d/696666ef/video/tos/cn/tos-cn-ve-2774/ocrANIiMWgQsw8BAiQkmDPZyWrZAdMQvyIWjj/?a=1775&ch=0&cr=0&dr=0&er=2&cd=0%7C0%7C0%7C0&br=145&bt=145&ft=OV.Cu77JWH6BMaSj4vr0PD1IN&mime_type=audio_mp4&qs=6&rc=MzY8O2Q4PDQ6M2RoO2U1O0BpM3c1b2o5cmxtczMzNDlkM0BfNDUwXjIvXzMxYS5gNTMxYSMtM2ZlMmRrbWlgLS1kYS9zcw%3D%3D&btag=80000e00008000&dy_q=1765726703&l=202512142338229B6330959F5EFAF40DEC

代码:格式乱了用豆包调整一下

async def main(args: Args) -> Output:    # 从输入参数中获取音频链接    audio_url = args.params['input']        # 按照指定格式构建输出字符串    output_string = f'[{{"audio_url": "{audio_url}","duration":100,"start":200000,"end":1000000}}]'        # 返回字符串结果    return {        "result": output_string    }

输出:result

Image


24:add_audios

视频合成_剪映小助手里的工具"add_audios"

audio_infos:引用节点23的输出

draft_url:引用节点15的draft_url

Image


25:str_to_list_1

剪映小助手数据生成器里的工具"str_to_list"

引用开始节点的zhuti

Image


26:caption_infos

剪映小助手数据生成器里的工具"caption_infos"

texts:引用节点25的输出

timelines:引用节点20点输出

in_animation:预览打字

in_animation_duration:引用及节点20输出的end变量

Image


27:add_captions

视频合成_剪映小助手里的工具"add_captions"

captions:引用节点26的输出

draft_url:引用节点15的draft_url

alignment:0

font_size:15

text_color:#000000

transform_x:-353

transform_y:237

Image


28:调整图片输入格式-代码节点

输入:

time:引用节点14的输出

url:引用批处理节点的输出

代码太长,舰长已经打包好,文章结尾有领取方式

输出:result(一定要一致)

Image


29:添加图片素材

视频合成_剪映小助手里的工具"add_images"

draft_url:引用节点15的draft_url

image_infos:引用节点28的输出

Image


30:调整文字传输格式-代码节点

输入:

input引用节点6的输出

time:引用节点9的输出

代码:格式乱了用豆包调整一下

async def main(args: Args) -> Output:    # 获取输入参数    input_texts = args.params['input']       # 文本内容列表    time_list = args.params['time']          # 时间参数列表        # 构建结构化数据    result = []    for text, time in zip(input_texts, time_list):        # 关键修改点:将字符串转为数字类型        item = {            "text": text,            "start"int(time['start']),    # 强制转换为整数            "end"int(time['end']),        # 强制转换为整数            "in_animation""渐显",            "out_animation""渐隐",            "in_animation_duration"500000,            "out_animation_duration"500000        }        result.append(item)        # 转换为JSON字符串(数字类型会自动保持为JSON number)    return {"result": json.dumps(result, ensure_ascii=False)}

输出:result

Image


31:添加字幕素材

视频合成_剪映小助手里的工具"add_captions"

captions:引用节点30的输出

draft_url:引用节点15的draft_url

alignment:1

font_size:7

text_color:#000000

transform_y:-700

Image


结束节点

draft_url:引用节点15的draft_url

Image


这套工作流看起来复杂,但跑通之后,你就拥有了一个24小时不停工的商业视频生产线

它能帮你实现:

✅ 从产品介绍到成片,全程自动化

✅ 火柴人+商业逻辑,既有创意又能带货

✅ 30+节点协同工作,省去90%的重复劳动

✅ 一套模板适配多个行业,改参数就能用


舰长团队用这套流程接了3个商单,单价从800到2000不等。客户最满意的一点是:视频既不硬广,又能把产品讲透


实操建议:

  1. 1. 先跑通再优化:别一开始就纠结细节,先让工作流运行起来
  2. 2. 音色很关键:火山引擎的高情感音色是灵魂,别用机械音


新手容易踩的3个坑:

  1. 1. 火山语音的speaker_id填错,导致音色不对
  2. 2. 批处理节点忘记改并行数量,接口崩溃
  3. 3. 代码节点的输出变量类型没对齐,后续节点报错
  4. 4. 剪映小助手用的不熟练,最终产出是一个json链接,需要结合剪映小助手APP提取/当然也可以直接渲染出视频。


如果这套方法对你有启发,欢迎:

  • 📌 点个「在看」,让更多创作者看到这套玩法
  • 💬 评论区说说你的产品类型,舰长帮你分析适不适合做火柴人视频
  • 🔄 转发给做商单/IP/短视频的朋友
  • ⭐ 收藏本文,对着教程实操一遍(代码和提示词都打包好了)


需要获取工作流中的代码和提示词,可以在文章底部评论"1215",并添加微信发送评论截图进行领取。


关注公众号并添加舰长微信,领取智能体学习资料,并参与智能体技术直播讲解

Image

另外非常欢迎大家加入[唐舰长AI落地智能体交流群],主要交流群每周都会进行公益直播教大家搭建AI智能体工作流

Image
Image

没有评论:

发表评论

别傻了!养生赛道哪有不用AI获取流量的,不过要变现,还是要看谈单转化

今天有个好久没联系的伙伴问我:"指挥官,有没有做过AI赋能大健康的项目? 今天有个好久没联系的伙伴问我:"指挥官,有没有做过AI赋能大健康的项目?" 我听完笑了,翻看聊天记录,他是24年初就加了我微信,将近两年了,还在AI的门外犹犹豫豫。 先甩两...