计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
video-to-gif【效率与协作】使用 meitu-cli 把视频转 GIF 动图,支持普通 GIF(长边 ≤480px)和透明底 GIF(240×240px)。当用户说视频转 GIF、做表情包、做动图、透明底贴纸、浮动表情时触发。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
调用 meitu video-to-gif 将已有视频转换为 GIF 动图,覆盖 2 类:
api_video_to_gif,等比例 GIF,长边 ≤480px,适用于微信表情包、社交动图api_convert_video_to_gif,固定 240×240px 透明底,适用于透明贴纸、浮动表情尺寸不可自定义。不处理:图片转 GIF、GIF 转视频、GIF 编辑、视频拼接、视频配音、视频风格变换。
| 场景 | 后端 API |
|---|---|
| 普通 GIF | api_video_to_gif |
| 透明底 GIF | api_convert_video_to_gif |
>=2.0.6meitu tools update;EXEC AKSK → 跑命令MEITU_OPENAPI_TOOL_TASK_MODE=command路径别名:
$VISUAL={OPENCLAW_HOME}/workspace/visual/
Preflight → Execute → Deliver
meitu --version ≥ 2.0.6;meitu auth verify --jsonMEITU_OPENAPI_TOOL_TASK_MODE=command./output/ | else → $VISUAL/output/video-to-gif/;mkdir -p {output_dir}触发信号/路由
命中信号词:
api_video_to_gif(普通):转 GIF、做表情包、动图、GIF 转换(无透明需求)api_convert_video_to_gif(透明底):透明底 GIF、透明贴纸、浮动表情、透明背景 GIF决策顺序:
prompt(如"人物在纯色背景前做表情""猫咪在户外奔跑")api_convert_video_to_gifapi_video_to_gif(默认)无法判断 → prompt 写"通用视频"走默认 api_video_to_gif。
参数定义
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
video_url | STRING | 是 | 视频地址;缺失 → "请提供视频链接" |
prompt | STRING | 是 | Agent 对视频内容的描述,用于判断 GIF 类型 |
API 参数映射
两路 API 均直传 video_url:
api_video_to_gif → 输出等比例 GIF,长边 ≤480pxapi_convert_video_to_gif → 输出 240×240px 透明底 GIF工具调用
普通 GIF:
meitu video-to-gif \
--skill_name skill_video-to-gif \
--video_url {video_url} \
--prompt "{content_description}" \
--json --download-dir {output_dir}
透明底 GIF:
meitu video-to-gif \
--skill_name skill_video-to-gif \
--video_url {video_url} \
--prompt "{content_description}" \
--transparent true \
--json --download-dir {output_dir}
错误降级
| 场景 | 处理 |
|---|---|
video_url 缺失 | 提示"请提供视频链接" |
video_url 不可访问 | 直接返回无效错误,不重试 |
| 用户要透明底但视频无透明通道 | 尝试调用透明 API,效果不佳则提示限制 |
| 用户要 >480px 的 GIF | 告知 api_video_to_gif 最大 480px |
| 用户要自定义尺寸透明底 | 告知 api_convert_video_to_gif 固定 240×240px |
| 视频时长过长 | 提示裁剪或降低质量重试 |
api_convert_video_to_gif 超时 | 降级为 api_video_to_gif(放弃透明底)重试,告知透明底暂不可用 |
api_video_to_gif 调用失败 | 重试 1 次,仍失败返回错误 |
| 内容合规拦截 | 直接返回合规提示,不重试 |
| 图片转 GIF / GIF 转视频 / GIF 编辑 | 拒绝,告知能力范围外 |
解析 --json → downloaded_files[0].saved_path 或 media_urls[0]。
mv {file} {output_dir}/{YYYY-MM-DD}_{name}_{gif_type}.gif(gif_type = normal | transparent)
{YYYY-MM-DD}_{descriptive-name}_{normal|transparent}.gif./output/;一次性 → $VISUAL/output/video-to-gif/t_mt1a3i5n7b1680836b-8e05-47d2-b6f0-3bd10eb0c5d3