🧪 Skills
magic-image2video
根据用户提供的文本和图片(支持图片URL和本地路径)生成视频任务,并使用API Key提交到远程视频服务。
v1.0.0
Description
name: magic-image2video description: "根据用户提供的文本和图片(支持图片URL和本地路径)生成视频任务,并使用API Key提交到远程视频服务。" homepage: "" metadata: { "openclaw": { "emoji": "🎬", "requires": { "bins": ["python"], "env":["MAGIC_API_KEY"], "primaryEnv":"MAGIC_API_KEY" } } }
文本和图片转视频技能
基于提供的文本内容和图片创建一个视频生成任务。任务会立即提交,系统会自动轮询任务状态,并获取视频链接。
使用场景
✅ 推荐用于以下情境:
- “将这张图片按我的描述变成视频”
- “请帮我用这张图片做一个视频”
- “使用这张图生成一个视频”
不适用场景
❌ 不要用于以下情境:
- 用户要求视频剪辑、裁剪或添加特效 → 请使用视频编辑工具
- 用户要求屏幕录制或捕捉 → 请使用屏幕录制工具
- 用户仅想查询现有视频任务进度 → 请引导其在文件或相关系统中查询
前置条件
export MAGIC_API_KEY="your-key"
MAGIC_API_KEY 是远程视频服务客户端所需的环境变量。
整体流程(Agent 指南)
- 从用户消息中提取完整文本(记为
TEXT)与图片地址或路径(记为IMAGE)。 - 使用
video-create子命令创建任务,读取 stdout 的 JSON 输出,并提取task_id。 - 在聊天中明确告知用户
task_id(可选:包含原始 JSON 以供调试)。 - 使用
video-wait子命令,通过--task-id轮询任务,直到任务完成。任务状态等于 2 视为成功。 - 从
video-wait命令的 stdout 中提取video_url。 - 在聊天中明确告知用户最终视频链接
video_url,如果timeout也在聊天中展示。
Python 客户端(分步示例及聊天输出)
步骤 1:创建视频任务并在聊天中展示 task_id
-
获取用户需要生成视频的文本,存入
TEXT;获取图片地址,存入IMAGE。- 如果文本中含有双引号
",请务必进行转义(如将"替换为\"),以免命令行解析报错。
- 如果文本中含有双引号
-
执行如下命令(由 agent 工具调用;
{baseDir}会被 Skill 目录替换):
python3 {baseDir}/scripts/media_gen_client.py video-create \
--text "TEXT" --image "IMAGE"
- 读取此命令的标准输出(stdout),输出为 JSON,例如:
{
"biz_code": 10000,
"msg": "Success",
"data": {
"task_id": "2032443088023777280"
},
"trace_id": "664c6e22-1edd-11f1-bf4c-8262dce7d13f"
}
- 从 JSON 解析
task_id(如 "abc-123"),并在聊天中告知用户: “视频生成任务已创建,任务ID:abc-123。我会持续查询任务状态,等视频链接准备好会及时通知你。”
步骤 2:轮询任务状态并输出最终 video_url 至聊天
-
使用上一步获取的
task_id。 -
执行以下命令(每 10 秒轮询一次,最多等待 600 秒;超时请稍后重试):
python3 {baseDir}/scripts/media_gen_client.py video-wait --task-id YOUR_TASK_ID --poll 10 --timeout 600
- 读取标准输出。成功时输出的 JSON 示例:
{
"biz_code": 10000,
"msg": "Success",
"data": {
"task_id": "1234567890",
"task_status": 2,
"video_url": "https://www.magiclight.com/examplevideo.mp4"
},
"trace_id": "c89aeca8-1edd-11f1-bf4c-8262dce7d13f"
}
- 解析输出中的关键字段:
- 任务状态(如
task_status: 2),状态为2表示成功 - 视频链接(如
video_url: "https://example.com/path/to/video.mp4")
- 推荐的聊天回复流程如下:
- 用自然语言总结关键信息,例如:
"任务完成 ✅
task_id: abc-123
视频链接: https://example.com/path/to/video.mp4"
- 若结果显示任务失败或超时(如
success为false或无video_url为空 或error为timeout),
- 请说明失败原因(如有错误信息请包含),并告知用户可稍后重试或检查输入、配额等问题。
脚本输出约定
- Agent 必须始终:
- 解析 stdout JSON。
- 在聊天中清晰告知用户任务ID和视频链接。
- 如需调试,可以将原生 JSON 数据用代码块输出。
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!