大家好,我是大明哥,目前专注 AI 智能体。我的教程《大明哥 AI 觉醒社 | AI 智能体 》正在免费开放中,如果想学习AI 智能体,请加大明哥,免费领取教程
这是大明哥**《100 个 Coze 精品案例》** 的第 006 个案例:用 Coze 工作流轻松生成抖音爆款星座 IP 视频 。
在流量至上的短视频时代,星座内容因易引发情绪共鸣、有代入感,吸引众多粉丝。不管是 “今日运势”“星座爱情分析” 还是 “性格揭秘”,只要内容准且有趣,就很容易涨粉和变现。比如下面这个账号,几乎每条视频点赞都10000+:
下面大明哥手把手教大家如何制作~
「整体思路」
先看视频:
下面来拆解这个视频:
- 开场有一个提示音,然后是 12 星座的图片 + 对应文字闪过,最后则是主星座图片的放大效果
- 再就是视频主体内容:文案字幕 + 语音
- 最后就是一些特效和蒙版了
实现流程是:
- 利用大模型生成文案、图片提示词
- 将文案转换为语音,并获取语音的时长,便于后面做时间线
- 利用图片生成器生成对应的星座图片
- 最后就是利用剪映小助手相关插件将各种资源如图片、字幕、语音视频等等添加进来
完整的工作流如下:
工作流别看着复杂,其实理解了很简单,就分为三大块:
- 左边:大模型准备文案、图片资源
- 中间:构建生成视频需要的各种数据,如语音、字幕、图片、特效等等
- 右边:将生成的视频数据添加到剪映草稿中
「搭建工作流」
生成文案+图片资源
生成文案
生成文案比较简单,就是利用大模型生成文案就行了。在生成文案后,将文案转化为语音和计算语音的时间,计算时间的主要原因就是需要在后面构建文案和语音的时间线:
生成文案的提示词如下:
# 角色
你是一位资深且权威的星座运势专家,拥有深厚专业知识与极为丰富的经验,能从专业角度为用户精心打造高质量、个性化的星座相关文案。
## 技能
### 技能 1: 生成星座文案
1. 当用户请求生成关于某个星座({{input}})的文案时,要全方位、深层次地剖析该星座的性格特点、情感模式、思维方式等典型特征。
2. 依据这些特征,运用生动形象、富有感染力且极具文采的语言,创作一段精彩文案。
3. 文案需细致呈现出星座在多种特定情境下的行为表现、情感变化、决策方式等内容。
4. 将内容一句一句以数组化形式输出,每句话长度15个字左右,每句话中可以有逗号或者顿号,但句末不能带标点符号。如下:
===回复示例===
- <今天我们要讲的是{{input}}>
- <一句生动描述星座特点的话>
- <一句展现星座在某种情境下反应的话>
- <一句阐述星座情感特质的话>
- <一句说明星座行为模式的话>
- <一句体现星座思维优势的话>
- <一句强调星座独特魅力的话>
- <一句总结星座整体印象的话>
- <一句拟物化比喻的星座核心特质>
- <一句展现本能在突发状况中的应激反应>
- <一句揭示隐藏人格面具的潜台词>
格式示例:
===示例结束===
## 限制:
- 仅围绕与星座相关的内容展开讨论,坚决不回答与星座无关的话题。
- 输出内容必须严格依照给定格式组织,不得有任何偏离框架要求的情况。
- 每句开头不要有""结束也不要有,需要以回车键分隔,帮我去掉空格,文本不宜太长
- 开头一定要有今天我们要讲的是{{input}}
- 字数控制在 80 - 100 字之间。
- 生成的文案需基于对星座知识专业且精准的理解。
- 文案内容必须积极健康,符合主流价值观 。
生成主星座图片
主星座图片就是我们需要讲解的星座。
在生成主星座图片,这里添加了一个循环,主要原因是图像生成这个组件不够稳定,偶尔会抽风,导致生成的图片为空,所以这里迭代 5 次:
再就是调用「图片生成」插件生成图片:
生成 12 星座图片
利用大模型将12星座图片的提示词生成:
# 角色
你是一位资深且专业的星座博主,对星座知识有深厚的储备,拥有独特新颖的见解,能为用户精心生成符合特定要求的、用于生成干净唯美星座图的提示词,尤其注重每个星座矢量图相关描述的生成。
## 技能
### 技能 1: 生成星座符号生图提示词
1. 生成十二星座的生图提示词,其中必须涵盖{{input}}这个星座。
2. 提示词要围绕生成鲜明的背景唯美风格的星座图展开,尽量融入能生成矢量图效果的相关描述元素,比如简洁线条、清晰轮廓等。
## 限制:
- 仅围绕与生成干净唯美风格且尽量涉及矢量图效果的星座符号生图提示词相关的内容进行交流,坚决拒绝回答无关话题。
- 输出内容严格按照给定框架要求组织,不得偏离。
- 输出的内容一定是跟十二星座有关
- 不要有纯白背景
## 注意事项
在回答过程中,务必保证信息的准确性和可靠性,可通过互联网搜索工具核实相关星座知识,以提供高质量的回复。
生成后,为了生成图片的效率,这里使用两个流程来做。与生成主星座图片一样,防止生成的图片为空,循环这里控制生成次数为 50 次:
整个循环由程序控制,当生成图片完成后,将 has\_more
设置为 false 即可。同时由于循环采用程序控制,则需要判断什么时候生成第几张图片,所以会看到有三个中间变量:
prompt\_list
:图片提示词列表image\_list
:生成的图片列表,用它来存放生成的图片prompt\_index
:提示词索引
在生成图片之前就需要根据 prompt\_index
来提取对应的提示词:
async def main(args: Args) -> Output:
params = args.params
prompt\_list = params["prompt\_list"]
prompt\_index = params["prompt\_index"]
prompt = prompt\_list[prompt\_index]["prompt"]
role\_name = prompt\_list[prompt\_index]["role\_name"]
# 构建输出对象
ret: Output = {
"prompt": prompt,
"role\_name": role\_name
}
return ret
生成图片之后需要将图片放入到 image_list 中,同时 prompt_index 自增,且需要判断是否已生成完毕:
async def main(args: Args) -> Output:
params = args.params
image = params["image"]
prompt\_index = params["prompt\_index"]
image\_list = params["image\_list"]
prompt\_list = params["prompt\_list"]
if image:
image\_list.append(image)
prompt\_index += 1
has\_more = True
if prompt\_index >= len(prompt\_list):
has\_more = False
# 构建输出对象
ret: Output = {
"image\_list": image\_list,
"prompt\_index": prompt\_index,
"has\_more":has\_more
}
return ret
所以,循环生成图片内部流程如下:
构建生成视频需要的数据
当文案、语音、图片资源生成好后了,就是构建生成剪映草稿需要的数据了。在生成数据之前,我们要利用 Python 对这些数据进行一些处理,同时提供一些其他的资源。
- 输入数据:
- 代码处理:
import json
async def main(args: Args) -> Output:
params = args.params
audio\_duration = params["audio\_duration"]
xingzuo\_image = params["xingzuo\_image"]
image\_list\_1 = params["image\_list\_1"]
image\_list\_2 = params["image\_list\_2"]
audio\_duration\_list = params["audio\_duration\_list"]
audio\_list = params["audio\_list"]
xingzuo\_prompt\_list = params["xingzuo\_prompt\_list"]
xingzuo\_name = params["xingzuo\_name"]
# 处理主新作图片
xingzuo\_image\_list = []
for xz\_image in xingzuo\_image:
if xz\_image:
xingzuo\_image\_list.append(xz\_image)
break
# 处理 12 星座图片
image\_list = image\_list\_1 + image\_list\_2
## 开场音效
open\_audio\_url = ["https://sike.skjava.com/ai/1748396216512\_ojzmqyqa0t.mp3"]
## 背景视频
bg\_video\_1\_url = ["https://sike.skjava.com/ai/1748273457335\_ai9c859mhsp.mp4"]
bg\_video\_2\_url = ["https://sike.skjava.com/ai/1748928397635\_qha7zbgz1.mp4"]
# 处理时间线(字幕&音频)
timelins\_start = 2000000
timelins = []
for duration in audio\_duration\_list:
timelins.append({
"start":timelins\_start,
"end":timelins\_start + duration["duration"]
})
timelins\_start += duration["duration"]
# 总时间线
all\_timelines = [{
"start":0,
"end":timelins\_start
}]
# 提取音频 url
audio\_url\_list = []
for audio in audio\_list:
audio\_url\_list.append(audio["data"]["link"])
# 特效
effect\_1 = ["方形模糊"]
effect\_2 = ["金粉飘落"]
# 星座名称
role\_name\_list = []
for prompt in xingzuo\_prompt\_list:
role\_name\_list.append(prompt["role\_name"])
main\_role\_name = [xingzuo\_name]
# 构建输出对象
ret: Output = {
"xingzuo\_image": xingzuo\_image,
"image\_list":image\_list,
"open\_audio\_url":open\_audio\_url,
"bg\_video\_1\_url":bg\_video\_1\_url,
"bg\_video\_2\_url":bg\_video\_2\_url,
"timelins":timelins,
"audio\_url\_list":audio\_url\_list,
"all\_timelines":all\_timelines,
"effect\_1":effect\_1,
"effect\_2":effect\_2,
"role\_name\_list":role\_name\_list,
"main\_role\_name":main\_role\_name
}
return ret
- 输出:
然后就是调用「剪映小助手」生成各种剪映草稿需要的数据了。
- 字幕&音频数据
- 主星座数据
- 12 星座数据
- 开场音效&背景视频数据
- 特效数据
将视频资源添加到剪映草稿
数据准备好后,「调用剪映小助手」插件中的创建草稿,然后就是不断往这个草稿中添加各种数据了:
- 添加背景视频&蒙版
- 添加12 星座文字以及字幕
- 添加 12 星座图片数据
- 添加主星座图片
- 添加配音
- 添加特效数据
- 添加关键帧数据
这个关键帧是为了处理主星座图片