dify需配置结构化tiktok脚本生成工作流:含严格json格式prompt、代码校验节点拦截非结构输出、知识库/api增强泛化、情绪标签映射及capcut webhook直连剪辑。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify自动输出符合TikTok传播规律的视频脚本,包含钩子、节奏卡点、情绪峰值、评论区引导等结构化字段,而不是一段连贯文字。
准备适配TikTok特性的提示词模板
新建一个Prompt节点,在「系统提示词」栏粘贴以下内容(必须保留换行和占位符):
你是一名TikTok爆款内容策划师,严格按以下JSON格式输出,不加任何解释、不省略字段、不合并段落:
{
"hook": "前3秒必须制造认知冲突或感官刺激,不超过12个字",
"beat_timing": ["0:00-0:03", "0:04-0:07", "0:08-0:11", "0:12-0:15"],
"script_blocks": [
{"time": "0:00-0:03", "text": "{hook}", "emotion": "震惊/好奇/愤怒"},
{"time": "0:04-0:07", "text": "用‘你根本不知道’‘99%人踩坑’等短句承接,加入具体数字", "emotion": "紧迫/揭秘"},
{"time": "0:08-0:11", "text": "抛出反常识结论,搭配生活化类比(如‘就像给Wi-Fi穿秋裤’)", "emotion": "荒诞/顿悟"},
{"time": "0:12-0:15", "text": "结尾用‘评论区扣1领模板’或‘双击屏幕解锁隐藏技巧’强引导", "emotion": "参与/即时反馈"}
],
"hashtag_suggestion": ["#短视频干货", "#TikTok运营"]
}
【必须关闭“JSON模式自动补全”】——否则Dify会擅自补全缺失字段导致格式错误,该选项在Prompt节点右上角「高级设置」中默认开启。
构建带校验的结构化输出链路
第一步:拖入一个「LLM」节点,选择Qwen2.5-7B-Instruct或GPT-4-turbo(需API密钥),连接到上一步Prompt节点输出口。
第二步:添加「代码解释器」节点,输入以下Python校验逻辑:
import json
try:
data = json.loads(input_data)
if all(k in data for k in ['hook','beat_timing','script_blocks','hashtag_suggestion']) and len(data['script_blocks']) == 4:
output = json.dumps(data, ensure_ascii=False)
else:
raise ValueError('字段缺失或script_blocks数量≠4')
except Exception as e:
output = f'ERROR: {str(e)}'
这一步强制拦截非结构化输出——如果大模型返回普通文本而非完整JSON,代码节点会直接报错并中断流程,避免脏数据进入下游。
注入真实TikTok数据增强泛化能力
方法一:在Workflow开头插入「知识库检索」节点,上传20条近期TikTok百万赞视频的字幕文本(CSV格式,含video_id、hook_text、avg_watch_time三列),设置检索关键词为用户输入的行业词(如“美妆”“健身”)。
方法二:用「HTTP请求」节点调用TikTok官方Business API的trending endpoint(需提前申请开发者权限),实时拉取当前飙升话题标签,动态注入到Prompt的hashtag_suggestion字段。
方法三:在LLM节点后接「变量赋值」节点,提取script_blocks中emotion字段的值,映射为TikTok后台推荐的情绪标签(如“震惊”→“surprise”),用于后续投放定向。
注意:方法二需在Dify「设置→API密钥」中配置tiktok_access_token,且该token有效期仅60天,过期后工作流将静默失败。
对接剪辑工具实现一键生成
在最终输出节点启用「Webhook」,目标URL填写CapCut开放平台的API地址(https://api.capcut.com/v1/project/create),Payload模板如下:
{
"project_name": "TikTok_{{input.topic}}_{{now}}",
"duration": 15,
"audio": {"type": "tts", "text": "{{output.script_blocks[0].text}} {{output.script_blocks[1].text}}"},
"subtitle": [
{"start": 0, "end": 3, "text": "{{output.script_blocks[0].text}}"},
{"start": 4, "end": 7, "text": "{{output.script_blocks[1].text}}"}
]
}
这一步把结构化脚本直接转成CapCut可识别的工程参数,跳过手动逐字录入环节。CapCut收到请求后自动生成含时间轴字幕和语音的草稿项目。










