十四个可选密钥:每个解锁什么,不加会退到哪

2026-08-09

OpenMontage 的 README 在 .env 示例段的第一行就写了一句话:every key is optional, add what you have

这句话很容易被当成客套。真去数那一段,会发现它是有结构的:14 行配置分成 6 个注释组,每组解锁一类能力,缺哪一组就退到哪条免费路径。把这 14 行看懂,比照着教程一口气申请一堆 API 账号有用得多。

先数清楚:14 行里只有 13 个是密钥

README 的 .env 段逐行照抄如下(占位符 your-key 是原文写法,你自己的文件里绝不要把真实密钥贴到任何地方):

# .env — every key is optional, add what you have

# Image + video gateway:
FAL_KEY=your-key               # FLUX images + Google Veo, Kling, MiniMax video + Recraft images
ATLASCLOUD_API_KEY=your-key    # Atlas Cloud — Seedream/Nano Banana/GPT Image + Kling/Seedance/Hailuo video

# Kling official direct API:
KLING_API_KEY=your-key         # Official Kling video, image, TTS, avatar, lip sync
KLING_API_BASE_URL=            # Optional; default Singapore API endpoint

# Free stock media:
PEXELS_API_KEY=your-key        # Free stock footage and images
PIXABAY_API_KEY=your-key       # Free stock footage and images
UNSPLASH_ACCESS_KEY=your-key   # Free stock images

# Music:
SUNO_API_KEY=your-key          # Full songs, instrumentals, any genre

# Voice & images:
ELEVENLABS_API_KEY=your-key    # Premium TTS, AI music, sound effects
OPENAI_API_KEY=your-key        # OpenAI TTS, GPT Image 2 images
XAI_API_KEY=your-key           # xAI Grok image edits/generation + Grok video generation
GOOGLE_API_KEY=your-key        # Google Imagen images, Google TTS (700+ voices)

# More video providers:
HEYGEN_API_KEY=your-key        # HeyGen — VEO, Sora, Runway, Kling via single gateway
RUNWAY_API_KEY=your-key        # Runway Gen-4 direct

第一处细节:这 14 行里,KLING_API_BASE_URL 不是密钥。README 给它的注释是 Optional; default Singapore API endpoint——它是端点地址,默认走新加坡节点,你不填也不影响 KLING_API_KEY 生效。所以严格说是 13 个密钥加 1 个可选端点。第一次配的时候别把它当成”还差一个 key 没申请”。

第二处细节:注释是按能力分组的,不是按厂商分组的。GOOGLE_API_KEY 一行同时挂着 Google Imagen 图像和 Google TTS 两类能力;ELEVENLABS_API_KEY 一行挂着 TTS、AI 音乐、音效三类;KLING_API_KEY 那行更长,README 注释里写的是 video、image、TTS、avatar、lip sync 五项。一个密钥往往横跨好几张 provider 表,这是后面判断”不加会退到哪”时必须先想清楚的。

底座:不加任何密钥时,你还剩什么

README 有一节标题就叫 “What You Get With Zero API Keys”,开篇原话是:你不需要付费 API 密钥就能做出真视频。make setup 开箱给的是——

能力免费工具README 说它做什么
NarrationPiper TTS免费离线文字转语音
Open footageArchive.org + NASA + Wikimedia Commons免费/开放的档案影像与纪录片质感素材
Extra stockPexels + Unsplash + Pixabay免费素材影像/图片(开发者密钥可免费申请)
Composition (React)Remotion基于 React 的渲染
Composition (HTML/GSAP)HyperFramesHTML/CSS/GSAP 渲染
Post-productionFFmpeg编码、字幕烧入、音频混合、调色
Subtitles内置带词级时间戳的自动字幕

这张表就是那 14 行的”下限”。要理解每一个密钥不加时退到哪,只要把它解锁的能力放回这张表上找对应行就行了。

这里还有一条藏在 Composition & Rendering 表里的关键退路,README 写在 Remotion 那一格:当没有配置任何视频生成 provider 时,agent 生成静态图,由 Remotion 把它们变成完全动起来的视频。 也就是说,一个视频生成密钥都不加,流程本身不会断,只是走向从”生成动态片段”换成了”静态图 + 程序化动画”。

要注意这条退路和 README 另一处的区分放在一起看。README 标了 “Important distinction” 的那段说,OpenMontage 也能为免费/开源工作流做出真正的 “video video”——从免费素材库和开放档案构建语料库、检索真实动态片段、剪进时间线。走这条路要在 prompt 里明说 documentary montagetone poemstock-footage collage,并写清 use real footage only。换句话说,零密钥下有两条不同的路:静态图程序化动画,和真实素材剪辑。你不说清楚,就只能碰运气。

逐组读:解锁什么,不加退到哪

网关组(FAL_KEY / ATLASCLOUD_API_KEY / HEYGEN_API_KEY)。 这三个的共同点是一个密钥后面挂多个模型。README 给 FAL 的注释是 FLUX 图像加 Veo、Kling、MiniMax 视频再加 Recraft 图像;给 Atlas Cloud 的是 Seedream/Nano Banana/GPT Image 加 Kling/Seedance/Hailuo 视频;HEYGEN_API_KEY 那行原文写的是 “VEO, Sora, Runway, Kling via single gateway”,在视频 provider 表里 HeyGen 的类型也被 README 描述为 “Multi-model gateway”。网关型在结构上的特点就是”一个密钥对应表里的多行”——但请注意,模型好不好、贵不贵,README 表格里那些 “High quality”、“Cost-effective” 都是 README 自己的措辞,不是我们的评价,我们一个 API 都没调用过,也不据此做任何选型推荐。

不加这三个,视频侧退到:视频 provider 表里的 3 个 Stock 来源(Pexels、Pixabay、Wikimedia Commons)、4 个 Local GPU 路线,以及上面那条 Remotion 静态图路径。

Kling 直连组(KLING_API_KEY + KLING_API_BASE_URL)。 值得单独说,因为 Kling 在视频 provider 表里出现了两次:一次是 Kling (fal.ai),一次是 Kling Official,后者 README 注明是独立的 kling_official provider。这和 .envFAL_KEYKLING_API_KEY 是两个独立密钥完全对得上。所以”我已经有 FAL 了还要不要配 Kling 官方”这个问题,答案取决于你要不要那些只挂在官方直连下的能力——README 给 KLING_API_KEY 的注释里除了 video、image,还有 TTS、avatar、lip sync。

免费素材组(PEXELS_API_KEY / PIXABAY_API_KEY / UNSPLASH_ACCESS_KEY)。 这三个虽然写在 .env 里,但零密钥能力表把它们归在 Extra stock 一行,并注明开发者密钥可免费申请。不加的退路很明确:Open footage 那一行的 Archive.org、NASA、Wikimedia Commons 不需要密钥。这三行与前面几组在性质上不是一回事:按 README 的注明,它们的开发者密钥可以免费申请,扩的是素材池的宽度,而不是打开一个花钱的口子。

这里有一处口径差异值得记一笔:.envPIXABAY_API_KEY 的注释只写了 “Free stock footage and images”,而 README 在描述某段演示视频用了什么时提到了 Pixabay 音乐。两处写法不一致,以仓库当前状态为准,我们不推断原因。

音乐组(SUNO_API_KEY)。 这是退路最薄的一组。README 的音乐与音效表只有 3 个 provider:Suno AI(README 注明完整歌曲生成,最长 8 分钟)、ElevenLabs Music、ElevenLabs SFX——三个全是 Cloud API,而零密钥能力表里根本没有”音乐”这一栏。

这里要把两件事分开:README 在描述 make setup 之后会发生什么时,写了 agent 会自动找免版税背景音乐——那是”找现成的”;而音乐与音效表里这 3 个 provider 是”生成新的”。前者不在零密钥能力表里单列,后者一个本地免费兜底都没有。所以如果你的片子必须有一段专门生成的原创配乐,这是这 14 行里退路最短的一组,得在开工前就想清楚,别等到合成阶段才发现。

语音与图像组(ELEVENLABS_API_KEY / OPENAI_API_KEY / XAI_API_KEY / GOOGLE_API_KEY)。 语音侧的退路最扎实:TTS 表里 5 个 provider,前 4 个是 Cloud API,最后一个 Piper 标的是 Local,README 描述为 completely free, offline,正是零密钥能力表里 Narration 那一栏,手动安装步骤里的 python -m pip install piper-tts 装的也是它。图像侧退到 Local Diffusion(Local GPU,README 注为 Stable Diffusion, free)加 Pexels/Pixabay/Unsplash 三家 stock;顺带一提,图像那张 11 行的表里还塞了一个 ManimCE,类型是 Local,做的却是数学动画。

Runway 直连(RUNWAY_API_KEY)。 README 注释是 Runway Gen-4 direct,与视频表里的 Runway Gen-4 一行对应。退路同网关组。

密钥之外的一条侧路:本地 GPU

README 折叠块里还给了不靠密钥的另一种”解锁”:

make install-gpu

# Then add to .env:
VIDEO_GEN_LOCAL_ENABLED=true
VIDEO_GEN_LOCAL_MODEL=wan2.1-1.3b  # or wan2.1-14b, hunyuan-1.5, ltx2-local, cogvideo-5b

这两行不是密钥,是开关和模型名。它们和视频 provider 表里那 4 个 Local GPU 条目(WAN 2.1、Hunyuan、CogVideo、LTX-Video)对得上。有没有能跑的显卡、跑得动哪个尺寸,取决于你自己的机器,我们没有跑过任何一个,不给建议。

别拿 .env 猜能力:去问 registry

配完密钥最容易犯的错,是照着 .env 自己脑补”我现在能做什么”。README 在给 agent 的上手路径里给的办法是查 registry,两条命令:

python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))"
python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.provider_menu(), indent=2))"

这两条命令照抄自仓库文档,我们没有运行过,实际输出以你本地跑出来的为准。从调用形式能读出 registry 对象提供了 discover()support_envelope()provider_menu() 三个方法;AGENT_GUIDE.md 里还给这两者留了注释,provider_menu 是按能力分组的完整菜单,support_envelope 被明确警告”慢、输出量大,只用于调试”。

AGENT_GUIDE.md 在这件事上有几条硬条款,与密钥直接相关:preflight 是强制的,且 preflight 时必须展示 Provider Menu,用户必须看到自己有什么、还能解锁什么;不要孤立地呈现单个不可用工具,要永远展示完整能力图景,用 “X of Y providers configured for this capability.” 这种说法;不要硬编码 provider 名、API key 名或安装 URL,要从 registry 的 install_instructionsdependencies 字段读。最后这条尤其值得注意——它意味着”该配哪个环境变量”这件事的权威来源是 registry,不是任何一篇教程里抄来的变量名,也包括本文。

需要提醒的是,这些都是写给模型看的契约文本,是指令不是工程保障;能不能落地取决于你用的 agent 和它当时的上下文。

三处数字要自己数

写这类文章最容易翻车的就是照抄数字,这里如实列出三处可核实的不一致,只陈述差异,不推断原因,也不拿它评价项目:

  • TTS:README 的 provider 表标题写 5 个,表格也是 5 行;而 README 架构图里 tools/audio/ 写的是 “4 TTS providers”。
  • 视频:provider 表标题写 15 个 providers,表格 15 行;架构图里 tools/video/ 写的是 “13 video gen tools + compose, stitch, trim”。这两个不是同一个口径,一个数 provider,一个数 tool,引用时要说清是哪个。
  • Node 版本:Quick Start 的 Prerequisites 写的是 Node.js 18+,而 Composition & Rendering 表里 HyperFrames 标的是 Local (Node.js ≥ 22),Remotion 那格只写了 Local (Node.js)。这一条和本文关系很直接——HyperFrames 是零密钥路径里的合成运行时之一,按最低前置条件装好的环境未必满足它标注的下限。我们没有实测过,不断言它一定跑不起来,只提醒你装之前先看一眼自己的 Node 版本。

关于钱,以及一个容易被忽略的前提

README 里出现的那些金额——README 列的 5 段演示视频里有 4 段标了总成本,分别是 $1.33、$0.02、$0.69、$0.15(还有一段没标),以及示例 prompt 那节标的 ~$0.15–$1.50 和 ~$1–$3——都是项目方在 README 中自行标注的数字,我们没有验证过,也不能拿它推算你自己做一条要花多少钱。你的片长、重试次数、选的 provider 都不一样。

最后是那个容易被”零密钥”三个字盖住的前提:这 14 行说的是媒体 provider 的密钥。Quick Start 的四个前置条件里,第四项是”一个 AI 编码助手”——Claude Code、Cursor、Copilot、Windsurf 或 Codex。README 里通过 Ollama 和 LM Studio 支持本地 LLM 那条写的是 “Coming soon”,那是计划不是现有能力。所以即使这 14 行你一个都不填,编排这一侧仍然跑在你的 AI 编码助手上。

务实的次序是:先跑零密钥路径,看它在哪一步卡住;再回来只加那一个密钥。而不是先把 13 个申请一遍。


本文依据 OpenMontage 官方仓库(github.com/calesthio/OpenMontage)的 README、 AGENT_GUIDE.mdconfig.yamlpipeline_defs/lib/ 下的治理模块整理,核对日 2026-08-09。 本文内容为仓库源码与文档口径,我们没有安装或运行过该系统,也没有调用过其中任何一个 provider API, 文中出现的成本数字均为项目方在 README 中自行标注的金额,非我们的实测结果。 该项目以 AGPL-3.0 发布,部分流水线在 manifest 中自标 stability: beta,请以仓库最新内容为准。 安全相关做法请结合自身环境评估,本文不构成安全方案建议。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。