OpenClip:缩略图与图片编辑
两个免费工具,通常一起使用:
extract_thumbnails- 从视频中提取帧。edit_image- 压缩、调整大小、裁剪或转换图片格式。
两者均免费,需要 OpenClip 账户,但无需订阅或积分。
设置(一次性)
OpenClip 是一个远程 MCP 服务器,地址为 https://openclip.app/mcp。在出现 OAuth 提示时使用你的 OpenClip 账户登录,无需复制 API 密钥。
- Claude Code:
claude mcp add --transport http openclip https://openclip.app/mcp,然后使用/mcp授权。 - Claude Desktop / web: 设置 -> 连接器 -> "添加自定义连接器",粘贴 URL,登录。
- Cursor(
.cursor/mcp.json):{ "mcpServers": { "openclip": { "url": "https://openclip.app/mcp" } } } - 仅限标头的客户端: 在
openclip.app/settings/connect处生成 MCP 令牌,并使用Authorization: Bearer <token>连接到https://openclip.app/mcp/key。
快速验证:调用 get_account。
文件输入
create_upload(filename, content_type)返回一个id和一个upload_url。- 将原始字节通过 PUT 请求发送到
upload_url。 - 将返回的
id作为video(缩略图)或file(图片编辑)参数传递。
不要调用 complete_upload。 该操作会启动付费的视频剪辑管线。免费工具直接读取上传的文件。list_videos 中已有的视频也可作为输入。
extract_thumbnails
extract_thumbnails(video, count?, width?)。
count- 1 到 10,默认为 1。帧会均匀分布在视频中,因此count: 5可提供一个粗略的联系表供你选择。width- 输出帧的可选像素宽度。
输出是一个帧的压缩包,而非单个图片 URL。将压缩包 URL 交给用户,如果你需要特定帧,则解压它。
当用户需要某个精确时刻的帧而非均匀分布时,先用 edit_video(operation="trim",参见 openclip-video-editing)将视频裁剪到该时刻,然后从裁剪后的片段中提取一个缩略图。
edit_image
edit_image(file, operation, ...params),每次调用只执行一个操作:
- compress -
quality1 到 100(默认 80),可选format(jpg、png、webp)。 - resize - 以像素为单位的
width和height,可选format。 - crop - 可以是
aspect("1:1"、"9:16"、"16:9"、"4:5")或显式的x、y、width、height,可选format。
当图片要放在网页上时使用 webp,当需要兼容所有环境时使用 jpg。
轮询
两个工具都会返回一个 tool_job hashid,其 status 为 "queued"。每 5 到 10 秒轮询 get_tool_job_status(tool_job):
queued/processing- 仍在处理,继续轮询。completed- 返回永久 CDNoutputsURL 及result_meta。failed- 返回error。
规则
- 始终进行轮询,两个工具都是异步的。
- 每次调用只执行一个
edit_image操作。要调整大小后再压缩,请依次运行两次调用。 extract_thumbnails始终返回压缩包。不要向用户承诺提供单个帧 URL。- 输出 URL 是永久 CDN 链接,不会签名或过期。
- 免费使用每天有速率限制,并且有按文件大小的上限。
示例提示到操作
- "从这个视频中抓取一个缩略图" -
create_upload,PUT 字节,extract_thumbnails(video),轮询,返回压缩包 URL。 - "给我 5 帧供选择" -
extract_thumbnails(video, count=5),轮询。 - "我想要 1:30 处的帧" -
edit_video(video, operation="trim", start_ms=90000, end_ms=91000),轮询,然后对输出执行extract_thumbnails,轮询。 - "把这张图片变成正方形的 webp" -
edit_image(file, operation="crop", aspect="1:1", format="webp"),轮询。 - "这个 PNG 太大了,压缩一下" -
edit_image(file, operation="compress", quality=75, format="webp"),轮询。
相关
将主体裁剪为透明 PNG 请参见 openclip-remove-background。视频裁剪和裁剪请参见 openclip-video-editing。