Skip to Content
平台能力MCP能力提取链接去水印视频

提取链接去水印视频

meowload-api-service 是 FunClaw 对外开放的 MeowLoad 媒体提取能力。调用方只需要申请这一个 capabilityKey,再通过 input.action 选择具体业务动作。

这条能力是同步 data_service:调用成功时会直接返回 MeowLoad 的规范化结果,不创建平台任务,也不自动写入 FunClaw 资产。如果需要把视频或 JSON 结果沉淀为团队资产,调用方需另行使用 application-asset-service 写入。

能力信息

字段
能力 Keymeowload-api-service
能力名称提取链接去水印视频
能力类型data_service
执行方式同步执行,不创建平台任务
上游服务MeowLoad Native API
服务端配置MEOWLOAD_API_KEY,可选 MEOWLOAD_API_BASE_URL、超时和重试配置
资产写入不自动写资产

子能力列表

action子能力适用场景入参
media.extract单帖媒体提取提取单个帖子、视频或分享链接中的视频、图片、封面和不同格式地址。包含 Sora2 去水印等单帖提取场景。url
playlist.extract主页/播放列表批量提取提取账号主页、播放列表或 profile 页中的帖子列表,支持 cursor 翻页。url, cursor?
subtitle.extract视频字幕提取提取视频可用字幕轨,例如 YouTube 字幕。url
credits.query查询剩余额度查询当前 FunClaw 服务端 MeowLoad Key 的剩余调用额度。

调用入口

组织显式路径:

POST /api/open/v1/organizations/{orgId}/capabilities/meowload-api-service:execute Authorization: Bearer <sk-organization-application-api-key> Content-Type: application/json

Skill/MCP key-only 路径:

POST /api/open/v1/capabilities/meowload-api-service/execute Authorization: Bearer <sk-external-agent-or-application-api-key> Content-Type: application/json

请求体统一放在 input 中:

{ "input": { "action": "media.extract", "params": { "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw" } } }

使用应用级 Key 时可以传 applicationId;使用组织级、数字员工或 External Agent Key 时通常省略:

{ "applicationId": "organization-application-id", "input": { "action": "credits.query", "params": {} } }

通用响应结构

外层是 FunClaw 统一开放能力响应,内层 data 是 MeowLoad 能力响应:

{ "capabilityKey": "meowload-api-service", "message": "SUCCEEDED", "code": 200, "data": { "action": "media.extract", "provider": "meowload", "status": "SUCCEEDED", "data": {}, "trace": { "requestId": "meowload-request-id", "elapsedMs": 463, "upstreamHttpStatus": 200 } } }
字段说明
capabilityKey固定为 meowload-api-service
message/codeFunClaw 开放能力入口结果。code=200 表示本次同步调用完成。
data.action本次执行的子能力 action。
data.provider固定为 meowload
data.statusMeowLoad 业务结果状态,成功时为 SUCCEEDED
data.dataaction 级业务数据。不同 action 的结构不同。
data.trace排障摘要,只包含请求 ID、耗时和上游 HTTP 状态,不包含 API Key。

media.extract

单帖媒体提取。给一个帖子、视频或分享链接,返回文本、媒体数组、预览图、资源 URL,以及可选的不同格式地址。

请求示例:

{ "input": { "action": "media.extract", "params": { "url": "https://www.youtube.com/watch?v=jNQXAC9IVRw" } } }

字段说明:

字段必填说明
input.action固定为 media.extract
input.params.url单帖、单视频或分享链接。

成功响应中的 data.data

{ "id": "post-or-video-id", "text": "Me at the zoo", "createdAt": "2026-07-17T00:00:00Z", "medias": [ { "mediaType": "video", "resourceUrl": "https://cdn.example.com/video.mp4", "previewUrl": "https://cdn.example.com/cover.jpg", "headers": { "Referer": "https://example.com/" }, "formats": [ { "quality": 1080, "qualityNote": "HD", "videoUrl": "https://cdn.example.com/video-1080.mp4", "videoProxyUrl": "https://proxy.example.com/video", "videoExt": "mp4", "videoSize": 12345678, "audioUrl": "https://cdn.example.com/audio.m4a", "audioProxyUrl": "https://proxy.example.com/audio", "audioExt": "m4a", "audioSize": 123456, "separate": 0 } ] } ] }

返回字段:

字段说明
id上游返回的帖子或视频 ID,可能为空。
text标题、正文或描述文本。
createdAt上游创建时间,可能为空。
medias[].mediaType媒体类型,例如 videoimage
medias[].resourceUrl主要媒体资源地址。调用方通常优先读取这个字段。
medias[].previewUrl封面或预览图地址。
medias[].headers下载或访问资源时上游建议携带的请求头。
medias[].formats[]不同清晰度、音视频分离或扩展格式列表。
formats[].videoUrl某个格式的视频地址。
formats[].videoProxyUrlMeowLoad 提供的视频代理地址;当 videoUrl 为 IP 绑定的 googlevideo 临时地址时优先使用。
formats[].audioUrl某个格式的音频地址,可能为空。
formats[].audioProxyUrlMeowLoad 提供的音频代理地址;音视频分离格式应与 videoProxyUrl 成对使用。
formats[].separate上游格式标记,用于表示音视频是否分离等状态。

playlist.extract

主页/播放列表批量提取。首轮只传 url;如果响应里 hasMore=true 且有 nextCursor,下一轮把 nextCursor 作为 cursor 传回。

请求示例:

{ "input": { "action": "playlist.extract", "params": { "url": "https://www.instagram.com/nike/" } } }

翻页请求:

{ "input": { "action": "playlist.extract", "params": { "url": "https://www.instagram.com/nike/", "cursor": "next-cursor-from-previous-response" } } }

字段说明:

字段必填说明
input.action固定为 playlist.extract
input.params.url主页、播放列表或 profile 链接。
input.params.cursor上一页响应里的 nextCursor。首轮省略。

成功响应中的 data.data

{ "hasMore": true, "nextCursor": "cursor-2", "user": { "username": "Nike", "imageUrl": "https://cdn.example.com/avatar.jpg" }, "posts": [ { "id": "post-id", "createdAt": "2026-07-17T00:00:00Z", "text": "post text", "postUrl": "https://example.com/p/post-id", "medias": [ { "mediaType": "image", "resourceUrl": "https://cdn.example.com/image.jpg", "previewUrl": "https://cdn.example.com/preview.jpg", "formats": [] } ] } ] }

返回字段:

字段说明
hasMore是否还有下一页。
nextCursor下一页 cursor。没有下一页时可能为空。
user.username主页用户名。
user.imageUrl主页头像。
posts[]提取到的帖子列表。
posts[].postUrl原帖链接。
posts[].medias[]帖子里的媒体数组,结构与 media.extractmedias[] 一致。

subtitle.extract

字幕提取。给一个视频链接,返回视频摘要和可用字幕轨。

请求示例:

{ "input": { "action": "subtitle.extract", "params": { "url": "https://www.youtube.com/watch?v=example" } } }

字段说明:

字段必填说明
input.action固定为 subtitle.extract
input.params.url视频链接。

成功响应中的 data.data

{ "id": "video-id", "text": "video title", "description": "video description", "duration": 120, "publishedAt": "2026-07-17T00:00:00Z", "thumbnailUrl": "https://cdn.example.com/thumb.jpg", "subtitles": [ { "languageName": "Chinese (China)", "languageTag": "zh-CN", "urls": [ { "url": "https://cdn.example.com/subtitle.srt", "format": "srt" } ] } ] }

返回字段:

字段说明
id视频 ID。
text视频标题或文本。
description视频描述。
duration视频时长,单位由上游返回值决定,通常为秒。
publishedAt发布时间。
thumbnailUrl缩略图。
subtitles[].languageName字幕语言名称。
subtitles[].languageTag字幕语言标签,例如 zh-CNen
subtitles[].urls[]字幕文件地址列表。
subtitles[].urls[].format字幕格式,例如 srtvtt

credits.query

查询 FunClaw 服务端当前 MeowLoad Key 的剩余额度。该 action 不需要 url

请求示例:

{ "input": { "action": "credits.query", "params": {} } }

成功响应中的 data.data

{ "availableCredits": 497 }

availableCredits 可能是数字,也可能是上游返回的字符串;调用方不要假设一定是整数类型。

授权说明

授权检查发生在 FunClaw 层,而不是 MeowLoad 层:

  • 应用级 API Key:应用必须被授予 meowload-api-service
  • 组织级 admin API Key:组织直接授权或组织应用授权里必须包含 meowload-api-service
  • 数字员工 / External Agent API Key:对应数字员工必须被授予 meowload-api-service
  • 仅授予 funclaw-mcp-server 不等于授予所有业务能力;MCP 入口仍会按当前 Key 的业务能力清单过滤。

边界与注意事项

  • 该能力只返回提取结果,不下载文件、不转存对象存储、不写平台资产。
  • 返回的 resourceUrlvideoUrlaudioUrl 可能是短期或 IP 绑定地址;对应代理字段存在时优先使用 videoProxyUrl / audioProxyUrl
  • 如果 headers 非空,调用方下载对应媒体时应保留这些 header。
  • media.extractplaylist.extract 的媒体结构一致,调用方可以复用同一套解析逻辑。
  • playlist.extract 的分页由上游 cursor 控制,FunClaw 不做本地分页缓存。
  • trace 只用于排障,不应作为业务主键或幂等键。

常见错误

HTTP 状态原因
400缺少 action、缺少必填 urlparams 不是对象,或传入了当前 action 不支持的字段。
401未提供 Authorization: Bearer <sk-...>,或使用用户登录 token 调用开放能力执行入口。
403当前 API Key 没有被授予 meowload-api-service
402MeowLoad 上游额度耗尽,FunClaw 错误 reason 包含 MEOWLOAD_QUOTA_EXHAUSTED
502MeowLoad Key 配置错误、上游不可用、上游鉴权失败或返回非 JSON。

典型错误响应:

{ "capabilityKey": "meowload-api-service", "message": "api key capability not granted", "code": 403, "data": { "error": { "code": "OPEN_CAPABILITY_FORBIDDEN", "status": 403, "type": "FORBIDDEN", "reason": "api key capability not granted" } } }
Last updated on