gif-edit 是一个面向动态 GIF 编辑的技能,来源为 langchain-ai/design-agent。其核心主张是:GIF 是逐帧动画,许多在静帧上看似正确的决定会在动画过程中暴露问题,因此应先按帧编辑、在整条时间线上检查、最后再进行编码。
用途与主要能力 该技能处理机械性修改,包括调整尺寸与重新取景、在帧上替换文字、改变播放节奏、裁剪与重排循环、为循环添加收尾画面。技能说明中给出典型工作流:先用 ffprobe 查看输入 GIF 的宽高、帧数、帧率等参数,再用 ffmpeg 将 GIF 拆成 PNG 帧序列(使用 fps_mode passthrough),在帧上进行编辑,最后用 palettegen 与 paletteuse 编码回 GIF。示例命令中的帧率为 20,输出到 renders/out.gif。
使用方式与操作要点 技能强调从帧入手而非直接编辑 GIF 文件。拆帧后编辑,编码时使用调色板生成与调色板使用滤镜,dither 参数示例为 bayer。对于屏幕录制类素材,另有 references/camera-retime-size.md 中的镜头与尺寸处理参考。
技能列出的注意事项包括:不要仅凭静帧判断裁剪;不要对动画内容使用 fillborders=smear,因为边缘像素复制会在运动图形接触边缘时产生条纹;应先裁剪到目标比例,再以相同比例缩放两轴,避免拉伸变形,若裁剪会切掉重要内容应向使用者确认为构图问题;循环应从真实内容开始,因为预览和部分邮件客户端只显示第 0 帧;放慢速度应增加真实帧而非降低帧率,也不要用 minterpolate 插帧,以免 UI 文字与光标出现残影;裁剪应在运动静止处结束并加保持帧;拼接片头与静止帧时两者必须使用完全相同的裁剪与缩放几何,且只应在静止结束帧上擦除区域;文字应重新排版而非放大位图,使用品牌字体并通过 html2png.mjs 渲染,且要求指定字体以避免回退字体;渐变条带是 GIF 256 色索引格式的固有限制,若需真正平滑可额外提供 MP4 或动态 WebP。
移除画面元素时的优先顺序为:裁剪掉、重新取景使其不入画、仅当背景平坦时才覆盖。
适用场景与限制 该技能适用于对 GIF 做尺寸、文字、节奏、循环和收尾等方面的编辑,尤其是屏幕录制 GIF。限制在于:它依赖 ffmpeg、sharp 及环境中的品牌 token 与 html2png 工具;颜色受 256 色索引限制;技能文档未提供收费、价格、平台支持范围等信息,暂未提供。交付前应检查编码后的 GIF 本身,核对尺寸、帧数、帧率与时长,查看首尾帧,并可用 upload_files 交付。