基于火山引擎Kickart服务生成抖店/抖音商品营销短视频,支持用户上传自定义图片/视频素材、素材分析、创意分析、故事板创作、成片生成、抖音发布全流程。当用户发送抖店/抖音商品链接、提及「上传素材」「添加图片」「添加视频」「素材分析」「创意分析」「故事板」「生成短视频」「营销视频」「发布视频」「抖音发布」时触发使用。
所有用户请求必须先完成以下4步校验,不得跳过:
./references/火山鉴权指南.md,检查本地是否已配置环境变量./references/套餐开通指南.md,调用套餐查询接口检查用户套餐是否在有效期内、创点余额充足haohuo.jinritemai.com或v.douyin.com)Task ID持久化存储(保留72小时,与后端任务结果有效期一致)。无论本地exec会话/状态是否丢失、异常中断,都只会通过已持久化的Task ID查询后端真实任务状态,永远不会自行发起重复提交。Task ID查询到后端任务明确返回失败状态,仅向用户明确告知失败原因和对应解决方案,等待用户明确指令,不会自动重新提交任务,不产生任何额外创点消耗。结合当前用户输入和历史记录,按以下优先级判断意图:
./references/任务查询指南.md,无需依赖其他任务上下文判断,直接执行标准化查询流程| 任务类型 | 执行依据 | 输出要求 | 前置要求 |
|---|---|---|---|
| 进度查询 | 读取./references/任务查询指南.md(含完整标准化查询流程规范)调用对应服务接口 | 输出当前任务执行状态(如「任务已完成」、「任务执行中」等),确认是否需要调整 | 需从会话上下文持久化存储中获取对应任务ID,无有效ID时直接告知用户未查询到相关任务 |
| 素材分析 | 读取./references/素材分析指南.md(含完整执行流程规范)调用对应服务接口 | 输出商品主图/详情图/视频数量、核心卖点、基础商品信息,确认结果准确性后询问下一步需求 | 任务提交成功后自动将Task ID持久化存储到会话上下文 |
| 创意分析 | 读取./references/创意分析指南.md(含完整执行流程规范)调用对应服务接口 | 输出目标受众、推荐视频规格、核心卖点提炼、创意方向建议,确认结果准确性后询问下一步需求 | 任务提交成功后自动将Task ID持久化存储到会话上下文 |
| 故事板创作 | 读取./references/故事板创作指南.md(含完整执行流程规范)调用对应服务接口 | 输出分镜脚本、镜头描述、口播文案、画面时长分配,确认结果准确性后询问下一步需求 | 任务提交成功后自动将Task ID持久化存储到会话上下文 |
| 视频生成 | 读取./references/消费成片指南.md(含完整执行流程规范)调用对应服务接口 | 输出成片视频下载链接、视频参数,确认是否需要调整 | 任务提交成功后自动将Task ID持久化存储到会话上下文 |
| 素材上传 | 读取./references/素材上传指南.md(含完整上传流程规范)调用对应工具接口 | 输出上传成功的素材URL列表,确认素材完整性后询问下一步需求 | 任务提交成功后自动将会话ID、素材列表持久化存储到会话上下文 |
| 视频发布 | 读取./references/视频发布指南.md(含完整二维码生成和发布流程规范)调用对应脚本接口 | 输出抖音发布跳转二维码(图片形式)、使用说明,提醒用户扫码即可跳转发布 | 前置要求:已获取到成片视频公网下载链接,且用户提供了发布文案内容 |
任务ID持久化要求: 所有异步任务(素材分析/创意分析/故事板创作/视频生成)提交成功后,必须将以下信息持久化存储到会话上下文:
任务状态查询优先级:
用户查询进度时,必须按以下顺序执行查询:
① 检查是否存在正在运行的对应exec子进程:存在则调用process(action=poll)轮询进程状态
② 无运行中的进程:使用持久化的Task ID调用scripts/task.py查询后端真实任务状态
③ 最终任务状态以后端接口返回结果为准,禁止仅以本地脚本执行退出状态判断任务最终结果
本地脚本超时处理逻辑: 当本地执行脚本因超时退出(非0返回码)时,不得直接判定任务失败,必须立即使用持久化的Task ID调用查询接口确认后端任务状态:
素材消耗规则(强制遵守)
当视频生成任务确认完成并向用户交付成片后,必须立即执行素材消耗操作:调用python3 upload.py clear -s <当前会话ID>清空当前会话所有已上传的素材本地记录,防止同一份素材被重复用于其他视频创作,保障素材使用唯一性。
所有任务输出文件必须遵循以下规范,避免文件名冲突和磁盘占用问题:
/tmp/openclaw/kickart/output/目录,执行前自动创建目录:
mkdir -p /tmp/openclaw/kickart/output
<文件类型>_<13位毫秒时间戳>_<6位随机数>.json,冲突概率为0:
| 文件类型 | 命名前缀 | 示例 |
|---|---|---|
| 素材分析结果 | material | material_1742525890123_654321.json |
| 创意分析结果 | creative | creative_1742525912345_123456.json |
| 故事板生成结果 | storyboard | storyboard_1742525956789_987654.json |
| 视频成片结果 | video | video_1742526012345_456789.json |
# 生成素材分析输出文件名
MATERIAL_FILE="/tmp/openclaw/kickart/output/material_$(date +%s%N | cut -b1-13)_$((RANDOM%900000+100000)).json"
所有错误必须明确告知原因和可执行解决方案,禁止模糊提示!!!
| 错误码 | 错误描述 | 详细说明 | 用户处理建议 |
|---|---|---|---|
| 0 | 无返回值 | 接口调用成功,但服务返回结果为空 | 请稍后重试,如问题持续请联系火山技术支持 |
| 1402 | 创点不足 | 调用接口时,用户账户的创点额度不足 | 请前往 创点充值页面 充值创点或升级套餐 |
| 1412 | 图片格式错误 | 调用接口时,输入参数中包含了非支持的图片格式 | 请检查图片格式是否为 jpg、png 等支持的格式 |
| 1413 | 无效的媒体URL错误 | 调用接口时,输入参数中包含了无效的媒体URL | 请检查您提供的URL是否正确,避免包含特殊字符或格式错误 |
| 1414 | 输入包含敏感信息错误 | 调用接口时,输入参数中包含了敏感信息,如个人隐私数据等 | 暂不可生成带人物的营销视频,请等待后续版本更新 |
| 1415 | 输出包含敏感信息错误 | 调用接口时,服务返回结果中包含了敏感信息,如个人隐私数据等 | 暂不可生成带人物的营销视频,请等待后续版本更新 |
| 1416 | 输入媒体数量错误 | 用户输入的素材数量超过限制 | 提供的媒体素材数量超出限制,多出的素材可能不会使用 |
| 1417 | 大模型调用错误 | 模型调用出错,通常是输入参数错误 | 媒体素材处理存在问题,请重新尝试,如问题持续请联系火山技术支持 |
| 1418 | 时长计费参数错误 | 提交时入参时间有问题 | 要求的成片时长不符合技能要求,请按照0-60s的时长限制提交制作需求,如问题持续请联系火山技术支持 |
| 1501 | 用户套餐过期 | 调用接口时,用户套餐已过期 | 请前往 套餐开通页面 开通套餐 |
| 100010 | 签名验证失败 | AK/SK签名验证失败 | 请检查您提供的火山鉴权AK/SK是否正确,可访问火山引擎控制台确认 |
| 100013 | 缺少服务权限 | 缺少iccloud_muse服务的RegisterArkClawCombo权限 | 您的企业账号未开通Kickart权限,请联系火山主账号管理员为您开通,或详询火山技术支持 |
| x01001 | AK/SK未配置 | 用户未配置AK/SK | 请输入火山鉴权的AK/SK,可访问火山引擎控制台获取 |
| x01010 | 有效套餐缺失 | 素材上传出现错误,通常是套餐原因 | 请前往 套餐开通页面 开通套餐 |
| 其他 | - | 未明确列出的其他错误情况 | 稍后重试,如问题持续请联系火山技术支持 |