
今天拆的是 Shotstack:一家把云端渲染农场做成接口的公司,Agent 通过托管 MCP 或命令行写一条 Edit JSON,几十秒后取回一条 mp4 的链接;文章给全它在链条上的位置、三步上手路径、十二处已知阻塞,以及按分钟计费的账单和几份口径不一致的授权说明。

https://mcp.shotstack.io;右侧按权限分成两段——interactive tools 1 个(studio),read-only tools 5 个(create_studio_link、get_render_status、get_shotstack_guide、get_template、list_templates),每一条都要单独批准。6https://mcp.shotstack.io/,走 Streamable HTTP,认证用 OAuth,或者在头部带 x-api-key。官方文档里列了十来个客户端的接法,从 Claude Desktop、ChatGPT、Cursor,到 VS Code、Codex CLI、Gemini CLI、Windsurf、Zed、JetBrains、Goose 和 Raycast。8studio、render_video、get_render_status、create_studio_link、get_shotstack_guide,模板管理 6 个(create_template、update_template、list_templates、get_template、render_template、delete_template),再加 list_models、quote_generation、generate_asset、get_generation_status。8 而那篇 MCP 教程写的是「Five template-management tools」,正文里列了五个,少了 update_template。6 第三方包装器报的又是另一个数:Composio 的 Shotstack 工具集自报 23 个工具,把 Ingest 与 Serve 接口也一起包了进去。9npm install -g @shotstack/cli,再用 npx skills add shotstack/shotstack-cli 把技能装上。10 这个技能是一份 SKILL.md,教 Agent 怎么用命令行、怎么把 Edit JSON 写对,另外挂了一组按主题拆开的参考文件:时间线分层、字幕预设、SVG 限制、字体、素材库、排查。11tracks[0] 是最上层,顺序与网页里 z-index 的直觉正好相反:字幕和标题放前面的轨道,背景放后面的轨道。第二,系统字体没有装,Arial、Helvetica、Times New Roman 会被静默替换成 Roboto 且不报错,字体要自己放进 timeline.fonts[],而 font.family 得写字体文件的基名,写字体真名会失配。第三,所有素材的 src 必须是公网可访问的 HTTPS 地址,本地路径、data: URI、渲染到一半会过期的签名链接都不行。12render_video 立刻返回一个 render ID,状态依次是 queued、fetching、rendering、saving、done,产物默认落它自己的 CDN,状态响应里那个 url 是 24 小时有效的临时链接。613{{HEADLINE}} 这样的合并字段,人看过一遍,存成模板,之后每条视频只发一次模板 ID 加这行数据。14 有两处细节要记住:请求里的 merge 数组会覆盖模板里保存的默认值,所以每个字段都得发;更新模板是整体替换,想试改动要先复制一份。14render_video 工具,循环里轮询到 done。16
get_shotstack_guide 拿编写规范,再调 render_video,然后连调两次 get_render_status 轮询,最后交回的是一条落在 shotstack-api-stage-output.s3-ap-southeast-2.amazonaws.com 上的 mp4 链接,并复述了它用的素材、音乐与三段文字的时间点。阶段(stage)环境的产物地址出现在这里,说明这次跑的是免费带水印的那一档。6| 你提供 | 它交回 |
|---|---|
| 一个 Shotstack 账号和一个 API key,分 stage 与 v1 两套环境8 | 一个托管 MCP 端点,或者一个能登录、能校验、能预览、能开浏览器的命令行11 |
| Agent 写下的一条 Edit JSON:轨道、片段、素材地址、输出规格12 | 一个 render ID,随后是状态流转,最后是一条 mp4 或 GIF 的链接6 |
公网 HTTPS 的素材;本地文件先 shotstack ingest upload 换成 URL1217 | 一条视频,或者一份能继续换数据渲染的模板(模板 ID 加合并字段)14 |
| 积分:按量付费一分钟一个积分,套餐里一个积分能换更多分钟3 | 生产渲染,以及按模型单独计价的图像、视频、语音与音乐生成18 |
| 一句自然语言,或者一次工具调用7 | 一个可以分享给别人接着改的 Studio 链接,或者直接一条渲好的成片8 |
| 想自己搭编辑器时,一份接受非竞争条款的授权19 | Studio SDK 与白标编辑器,源码可读,授权把竞争性用途排除在外20 |
npm install -g @shotstack/cli
npx skills add shotstack/shotstack-clishotstack validate edit.json 离线检查 schema、同轨重叠、字体和素材地址;shotstack studio edit.json 打开浏览器里的编辑器。这两条都不需要 API key,也不消耗积分。10app.shotstack.io 拿 key,用 shotstack login 存下来,然后 shotstack render edit.json --env stage --watch。stage 环境免费、带水印;换成 --env v1 才是生产渲染,扣积分。11 key 按环境分开存,~/.shotstack/credentials.json 权限是 600,环境变量 SHOTSTACK_API_KEY 优先于它。11https://mcp.shotstack.io/ 加成连接器、走一遍 OAuth 就完了;Claude Code 一条命令:claude mcp add --transport http shotstack https://mcp.shotstack.io8
shotstack studio 打开的编辑器里躺着一条 15 秒的 edit,上方是预览窗口,下方三条轨道——两段文字、一条 earth.mp4 视频、一条 motions.mp3 音乐,时间标尺到 14 秒。教程的说明是:可以在浏览器里直接调文字时间、改字体、挪片段,满意了再点 Render。6asset.src 里写了本地路径、data: URI,或者半小时就过期的签名链接。现状是官方编写规范写「No local file paths, no data: URIs, no signed URLs that expire mid-render. The render workers fetch assets from the public internet.」,本地文件要走 shotstack ingest upload 先换成 URL。12 你能做的:把「上传素材」当成流水线的第一道独立步骤,别让它藏在渲染请求里。font.family 写了 Montserrat ExtraBold 这类真名,或者用了 Arial 这类系统字体。现状是编写规范列出「System fonts like Arial, Helvetica, and Times New Roman are NOT installed; text set in them renders in Roboto, with no render error」,并且 font.family 要对应字体文件的基名;只有一个字体时写错也不显示差异,加第二个字体才会暴露。12 你能做的:把字体写进项目约定文件,并且每次渲染前跑一遍 shotstack validate,它会警告对不上的 family。tracks[0] 是最上层;rich-caption 不写 width、height 和 fit: "none" 会覆盖整个输出;SVG 资源里不能用 <text>,文字一律交给 rich-text。12 你能做的:把「轨道 0 在最上面」写进给 Agent 的指令里,字幕用官方那五个预设名(Nico、Kai、Kapow、Lovely Little Lychee、Rizz)而不要自己拼样式。validate 不联网、不扣积分。21 你能做的:即使主力是 MCP,也把 CLI 装上,让 Agent 在提交前先 validate。@shotstack/shotstack-mcp-server 停在 1.1.0,最后一次发布是 2026-08-11,最近一周下载 12 次。22 你能做的:把 MCP 当接入层,渲染这一步的 payload 自己留一份版本可控的副本。create_studio_link 拿一个网页链接。68 你能做的:先用一个客户端把链路跑通,再决定要不要铺开到整个团队。"auto"、"end" 或 alias 继承时长时只是估算。18 你能做的:生成前先调 quote_generation,把生成与渲染的预算分开记。destinations: [{ provider: "shotstack", exclude: true }],那样就得自己在 24 小时内把临时链接里的产物取走。1323 你能做的:先用一两条真实长度的视频量出每分钟的积分消耗,再决定档位;交付量大就尽早把产物转到自己的对象存储。skills/shotstack/SKILL.md 的头部自己写着 license: Apache-2.0。424 这两个说法谁说了算,官方没有解释。它名下的 n8n 节点是明确的 MIT。25
@shotstack/cli 最新 0.10.0,共 18 个版本,2026-10-01 至 10-07 那一周下载 473 次。426
| 方案 | 你给它什么 | 它给你什么 | 它在这一层 | 许可与公开体量 |
|---|---|---|---|---|
| Shotstack | 一个账号与 key、Agent 写的一条 Edit JSON、按分钟买的积分 | 云里渲好的 mp4,加一份能换数据重渲的模板 | 渲染底座(按分钟买的服务) | 服务条款;Studio SDK 为 PolyForm Shield;CLI 仓库无许可文件419 |
| Remotion(第 23 期) | 一份 React 工程、Node、一个能跑命令的编码 Agent | 逐帧渲出来的 mp4 | 渲染底座(自建) | 自订两层许可,NOASSERTION,62,799 star27 |
| HyperFrames(第 14 期) | 一份 HTML 与 CSS 工程 | 浏览器逐帧拍出来的 mp4 | 渲染底座(自建) | Apache-2.0,59,761 star28 |
| OpenMontage(第 22 期) | 一个编码 Agent、三个运行时、一句需求 | 按 YAML 清单跑的产线 | 方法论与资产 | AGPL-3.0,65,835 star29 |
| OpenEdit(第 21 期) | 一个编码 Agent、一段素材 | 一张 HTML 页渲成的 mp4 | 命令行工具箱加技能 | Apache-2.0,1,621 star30 |
| ArcReel(第 20 期) | 一台能跑 Docker 的机器、模型凭据、一段原文 | 资产、分集、分镜、视频,加剪映草稿 | 自部署产线工作台 | AGPL-3.0,5,405 star31 |
| OpenCreator(第 19 期) | macOS 或 Windows、一个可用的 Codex 登录态 | 十项创作工具加一个 Agent 会话 | Codex 之上的宿主外壳 | Apache-2.0,12,667 star32 |
| ViMax(第 18 期) | 三类模型接口、一个工程目录 | 从想法或剧本推到多镜头成片 | 自带 Agent runtime 的多 Agent 编排 | MIT,12,598 star33 |
| Toonflow(第 17 期) | 一台机器、四类模型 Key、逐段授权 | 一张可继续编辑的无限画布工程 | 编排与工作台 | MIT,16,974 star34 |
| OpenChatCut(第 16 期) | 素材与一句自然语言 | 可撤销的真时间线工程 | 编辑器加 MCP | AGPL-3.0,2,226 star35 |
| hypit(第 15 期) | 一条参考视频 | 可重跑的 SVML 作品源码 | 工作流描述语言 | 改过的 Apache-2.0,NOASSERTION,20,581 star36 |
| Palmier Pro(第 24 期) | 一台 macOS 26 的 Apple Silicon Mac、一个现成的 Agent、生成时买积分 | 一台原生剪辑台,52 个 MCP 工具改同一张时间线 | 编辑器(应用即工具面) | 源码止于 GPLv3 的 v0.7.6,之后二进制专有;14,535 star37 |
shotstack.io
shotstack.io
shotstack.io
github.com
shotstack.io
shotstack.io
shotstack.io
composio.dev
shotstack.io
shotstack.io
shotstack.io
shotstack.io
shotstack.io
shotstack.io
shotstack.io
shotstack.io
shotstack.io
raw.githubusercontent.com
github.com
registry.npmjs.org
shotstack.io
raw.githubusercontent.com
github.com
registry.npmjs.org
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.