mcpField
M
mediagen

mediagen

本地服务
github.com/Cripacx媒体与设计5110 周前更新

关于 mediagen

mediagen 是一个面向编码 Agent 的图像与视频生成技能,支持 Google Gemini、OpenAI 和 Kie AI。它通过命令行工具 mediagen 执行生成,并可按需为输出添加 AI 生成标识。适合希望由 Agent 完成媒体生成的开发者。

主要功能

  1. 01文生图与文生视频
  2. 02按需选择提供商、模型与比例
  3. 03编辑已有图像或媒体
  4. 04可选的 AI 生成内容标识
  5. 05按提供商凭据自动选择可用服务

适用场景

  1. 01为落地页生成宽幅配图
  2. 02在编码 Agent 中批量生成媒体素材
  3. 03为发布内容添加 AI 生成标识

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cripacx-mediagen": {
"command": "npx",
"args": [
"-y",
"mediagen"
]
}
}
}
启动命令npx -y mediagen

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmediagen0.3.0

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
kindenum否image 或 videoimage | video
sizestring否例如:1K、2K、4K
modelstring否所选提供商的模型 ID;请参阅 models 工具
promptstring是要生成的内容。请具体描述:简短提示词无法充分限定图像,模型会自行决定其余内容。
qualityenum否在速度和成本与保真度之间权衡fast | balanced | quality
durationnumber否仅视频使用,单位为秒
providerenum否覆盖已配置的默认提供商gemini | openai | kie
outputDirstring否覆盖已配置的输出目录
inputMediastring否要编辑或转换的本地文件路径
outputNamestring否输出文件名;其扩展名可能用于选择格式
aspectRatiostring否例如:1:1、16:9、9:16。如果模型不支持该值,则会返回支持的值并拒绝请求。

详细介绍

mediagen — 为编码 Agent 提供图像和视频生成能力

npm CI node

通过 Google Gemini、OpenAI 和 Kie AI,为你的 Agent 提供图像和视频生成功能——一个技能,一次安装,无需学习 API。

大致描述你想要什么,然后让它决定其余事项:

You:   Make a hero image for the landing page, wide, something moody and industrial.

Agent: npx -y mediagen image "A disused loading dock at dusk, wet concrete…"
         --aspect-ratio 21:9 --json
       → ./output/image-20260823T094107Z.png

它完整写出了提示词,知道 OpenAI 不支持 21:9 规则,并从 --json 中读取路径。

或者明确提出要求,它就不再自行决定:

You:   Same thing with gemini-3-pro-image, 21:9, 4K, marked as AI-generated,
       saved as hero.png.

Agent: npx -y mediagen image "A disused loading dock at dusk, wet concrete…"
         --model gemini-3-pro-image --aspect-ratio 21:9 --size 4K
         --output-name hero.png --json
       → ./output/hero.jpg

       [looks at the image]

       npx -y mediagen mark ./output/hero.jpg --visible-label
         --label-position top-right --json
       → ./output/hero.labelled.jpg

看到主体的位置后,它在第二轮中标注了结果——并将标签放在平坦的屋顶线上,而不是货物装卸区上方。

CLI 能接受的任何参数,都可以用文字提出——提供商、模型、宽高比、尺寸、输出名称和目录、质量预设、视频时长、用于编辑的输入图像,以及是否标注结果。说出其中任何一项,Agent 就会按要求使用;如果没有提及,它会自行选择,或采用你配置的默认值。

安装

npx -y skills add Cripacx/mediagen --skill mediagen

安装就这么简单。无需进行其他设置——该技能通过 npx 运行 CLI,首次使用时会下载,之后会将其缓存起来。

接着提供一个密钥:

npx -y mediagen init

交互式向导:选择提供商,逐个输入密钥(输入时不会显示),通过实时 API 验证每个密钥,为每个提供商选择一个模型,并设置默认值。只需一个密钥即可开始使用。

现在只要向你的 Agent 请求生成图像即可。

Agent 可以用它做什么

  • 根据描述生成图像和视频,或编辑你已有的媒体
  • 为任务选择合适的提供商——该技能知道 Gemini 支持 21:9 和视频,OpenAI 完全不支持 16:9,而 Kie 汇集了约 30 种第三方模型
  • 按字面要求执行你的指令。 指定模型、宽高比、尺寸或文件名,它就会照做。想在选择前查看可用选项时,可以使用 mediagen models
  • 妥善撰写提示词。 该技能内置了提示词撰写指南,因此在发送任何内容之前,它会将“一张氛围阴郁、富有工业感的主视觉图”扩写为包含主体、构图、光线、相机和材质的完整描述
  • 在需要时标注 AI 生成的内容——对于任何写实风格或计划发布的内容,该技能都会建议进行标注
  • 自行从故障中恢复,因为每个错误都附带机器可读的错误代码和后续操作

它不会做的事:要求你把 API 密钥粘贴到聊天中。 如果出现配置错误,该技能会提示你在自己的终端中运行 mediagen init。

前置条件

  • 至少一个 API 密钥:
    • Google Gemini(在此获取)——支持图像和视频,支持的画幅范围最广
    • OpenAI(在此获取)——支持图像
    • Kie AI(在此获取)——约 30 种第三方模型
  • Node.js 20.11 或更高版本

配置

mediagen init 可完成首次设置。之后如需修改设置:

npx -y mediagen config edit

菜单会列出每项设置、当前值及其来源——包括提供商、模型、密钥、输出目录、质量预设,以及 mediagen mark 的默认行为。每项更改都会在你进行操作时写入。

对于无法使用终端的 CI 和脚本,可以通过 config set 将相同的设置作为参数传入:

echo "$GEMINI_API_KEY" | npx -y mediagen config set gemini --stdin
npx -y mediagen config set gemini-model gemini-3-pro-image
使用哪个提供商

设置你偏好的顺序,最偏好的放在最前面:

npx -y mediagen config set provider-priority gemini,kie,openai

这是偏好顺序,而不是白名单。未指定 --provider 的请求会发送给顺序中第一个具备密钥且能完成任务的提供商——因此,缺少 OpenAI 密钥不会妨碍 Gemini 完成任务;请求视频时,也会直接跳过无法生成视频的提供商。指定 --provider 会覆盖上述所有设置。

mediagen models 会显示最终顺序、哪些提供商可用,以及请求会交由谁处理:

1. Google Gemini (gemini)  [preferred, key from config file]
  Would use: gemini-3.1-flash-image  (provider default)
2. Kie AI (kie)  [key from config file]
3. OpenAI (openai)  [preferred, no key]
  No key configured, so requests to it fail. Fix: mediagen config set openai

A request with no --provider uses gemini/gemini-3.1-flash-image.

使用 --json 时,还会添加 wouldUse、usableProviders 和 providerPriority。技能会让 Agent 在生成内容前读取这些信息,因此绝不会选择你没有密钥的提供商所提供的模型。

检查已配置的内容以及密钥是否仍然有效:

npx -y mediagen doctor

doctor 会逐个报告提供商的密钥是否已配置、密钥来自哪一层,以及提供商是否接受该密钥。它会区分_未配置_、已拒绝、无法连接_和_没有低成本的检查方法,因为这四种情况需要分别处理。

警告

特意不提供任何可将 API 密钥作为参数传入的标志。参数会留在 Shell 历史记录和进程列表中,即使命令已执行完毕,它们仍可能长期存在。

设置会依次从环境变量、工作目录中的 .env 文件和配置文件中读取:

变量用途
GEMINI_API_KEY、OPENAI_API_KEY、KIE_API_KEY凭据;至少需要一个
MEDIAGEN_PROVIDER_PRIORITY提供商的偏好顺序
GEMINI_MODEL、OPENAI_MODEL、KIE_MODEL各提供商的默认模型
MEDIAGEN_OUTPUT_DIR媒体的保存位置
MEDIAGEN_QUALITYfast、balanced、quality
MEDIAGEN_MARK默认标记输出
MEDIAGEN_VISIBLE_LABEL默认添加可见标签

提示

旧环境变量覆盖了你刚配置的密钥,是这类工具中代价最高的问题。mediagen config list 会标记所有被覆盖的值,让你直接看到问题,而不必猜测。

提供商

提供商图像视频编辑密钥验证
Google GeminiNano Banana 系列,最高 4K是是实时探测
OpenAIgpt-image 系列、DALL·E—是实时探测
Kie AI约 30 种模型:Flux、Imagen、Grok—大多数无低成本探测;会如实报告

说明

OpenAI 接受的是像素尺寸,而非宽高比,而且确实无法生成 16:9 图像——它能生成的最宽图像为 1536×1024,也就是 3:2。请求 16:9 时,系统会明确拒绝,而不会悄悄提供其他比例的图像。技能了解这一限制,会将宽屏比例的请求路由到 Gemini。

即使某个模型没有列在清单中,请求仍会发送给相应提供商,因此,新发布的模型无需等待 mediagen 将其加入清单即可使用。Kie 的模型目录根据 Kie 自己的文档生成,而非手动维护。

内容标记

《欧盟 AI 法案》将披露分为两项义务,因此 mediagen mark 有两个独立开关:

标志义务功能
machine-readable让工具能够发现写入 IPTC/XMP DigitalSourceType,默认开启
--visible-label向人们披露合成欧盟官方的 AI 内容标签

生成操作永远不会添加标记。 标记始终是第二条命令,需要在生成文件后运行:

npx -y mediagen image "a wide banner" --aspect-ratio 21:9 --size 2K --json
npx -y mediagen mark ./output/image-….jpg --visible-label --label-position top-left

这并非形式主义。可见标签必须放在主体之外,而只有成品图像才能确定该放在哪里。机器可读标记也不是免费的:向 JPEG 或 WebP 添加元数据意味着要对其进行解码和重新编码,因此标记会带来第二次有损处理——这笔代价值得有意承担,而不应只是请求生成图像的副作用。mediagen 会以高质量重新编码,以尽量降低这笔代价,但无法将其完全消除。

若要让 mediagen mark 默认绘制可见标签,而不必每次都指定:

npx -y mediagen config edit      # "AI marking by default"

配置的默认值仍可在每次运行时通过 --no-mark 或 --no-visible-label 覆盖。

可见标签是欧盟委员会自己的图标,随《AI 生成内容透明度行为准则》发布,可免费使用,无需注明出处。它的三个版本中会使用两个:默认使用 AI GENERATED,对由人创作、再经模型修改的媒体,使用 --modified 生成 AI MODIFIED。系统会根据标签所在角落下方的实际内容,选择浅色或深色版本,因为没人能看清的标签就不算披露。

默认情况下,标签位于右下角。--label-position 可将其移至其他角落,或使用 auto 将其放在图像细节最少的位置。

重要

可见标签绝不会覆盖源文件。mediagen mark photo.png --visible-label 会生成 photo.labelled.png,并确保 photo.png 的像素完全不变,同时将机器可读标记写入该文件——因此,无论你发布这两者中的哪一个,都会包含披露信息。若标签位置不佳,可以从未改动的原始文件重新生成,不能从其他文件生成。 只有在确实需要时,才使用 --in-place 覆盖原文件。

不使用 Agent 时

这个技能是 CLI 的封装,而 CLI 本身也可以独立使用。

npx -y mediagen image "a wide banner" --aspect-ratio 21:9 --size 2K
npx -y mediagen image "make the sky stormy" --input ./photo.jpg
npx -y mediagen mark ./output/image-….jpg --visible-label
npx -y mediagen video "a marble rolling down a wooden track" --duration 6
npx -y mediagen models

如果你经常使用,想运行更短的命令,可以全局安装:

npm install -g mediagen
选项
选项
--provider <name>gemini、openai、kie
--model <id>参见 mediagen models
--input <path>要编辑或转换的源媒体
--aspect-ratio <ratio>1:1、16:9、9:16、…
--size <size>1K、2K、4K
--duration <seconds>仅限视频
--output-name <name>文件扩展名可能会决定输出格式
--output-dir <dir>保存位置
--quality <preset>fast、balanced、quality
--jsonstdout 上恰好输出一个 JSON 对象
--verbose --quiet在 stderr 上输出诊断信息

提示

不使用技能时,提示词需要由你自己撰写。mediagen 会原样发送提示词——不会扩写或改写。请确定主体、构图、光线、相机或媒介、材质和氛围,并说明你想要什么,而不是不想要什么。

脚本编写

使用 --json 时,stdout 只包含一个 JSON 对象,不含其他内容。 不使用该选项时,保存路径位于最后一行;失败时 stdout 不会写入任何内容,因此读取最后一行时,绝不会把错误消息当作路径。

{
  "success": true,
  "filePath": "./output/image-20260823T094107Z.png",
  "kind": "image",
  "provider": "gemini",
  "model": "gemini-3.1-flash-image",
  "mimeType": "image/png"
}
退出代码含义
0成功
2输入或用法无效
3配置或凭据
4生成、网络或文件 I/O

失败时会附带一个 errorCode——取值为 VALIDATION_ERROR、CONFIG_ERROR、 API_ERROR、NETWORK_ERROR、FILE_ERROR、CONTENT_BLOCKED 或 TIMEOUT——以及一个 hint,说明具体的下一步操作。

将其用作 MCP 服务

适用于使用 MCP 通信,而不是运行技能的主机。使用同一个软件包,通过 mediagen mcp 启动,并提供 generate_media、list_models 和 check_configuration。

Claude Code
claude mcp add mediagen --env GEMINI_API_KEY=your-api-key-here -- npx -y mediagen mcp

-- 用于分隔 Claude 自身的标志与启动服务的命令。 添加 --scope project 或 --scope user 可更改写入配置的位置。

Claude Desktop

设置 → 开发者 → 编辑配置,或直接编辑:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mediagen": {
      "command": "npx",
      "args": ["-y", "mediagen", "mcp"],
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

之后重启 Claude Desktop。

VS Code
code --add-mcp "{\"name\":\"mediagen\",\"command\":\"npx\",\"args\":[\"-y\",\"mediagen\",\"mcp\"]}"

也可以在工作区中创建 .vscode/mcp.json——请注意,VS Code 使用 servers,而不是 mcpServers:

{
  "servers": {
    "mediagen": {
      "command": "npx",
      "args": ["-y", "mediagen", "mcp"]
    }
  }
}
其他 MCP 客户端

Cursor、Windsurf、Zed 和大多数其他客户端的配置格式与 Claude Desktop 相同,只是使用 各自的配置文件:

字段值
commandnpx
args["-y", "mediagen", "mcp"]
transportstdio

运行 mediagen init 后,上述配置中的 env 都可以省略—— 服务会读取与 CLI 相同的配置。

工作原理

一条流水线,三个前端。技能驱动 CLI;MCP 服务则是基于同一核心的 第二个适配器。两者本身都不包含任何行为,因此某项功能不会只存在于其中一个而缺失于另一个。

      agent skill  ·  CLI  ·  MCP server
                     ↓
 request → model resolution → capability check → provider client
                     ↓
                save to disk → result

              mediagen mark → AI content marking

每个提供方都是一个独立目录,声明其支持的功能。 添加提供方时,只需在其目录之外修改一行。提供方清单不导入厂商 SDK,因此 doctor 和 config 无须加载 SDK。

src/
├── types/          leaf types everything shares
├── core/           pipeline, errors, capability checks, file handling
├── config/         the three configuration layers, key verification
├── providers/      one directory per provider, plus the registry
│   ├── gemini/
│   ├── openai/
│   ├── kie/
│   └── shared/     polling for asynchronous providers
├── cli/            the command tree; output.ts owns stdout
├── mcp/            the MCP server
└── marking/        AI content marking
skills/mediagen/    the agent skill
scripts/            catalogue generation, version syncing

贡献

请参阅 CONTRIBUTING.md,了解开发环境设置、如何添加提供方以及如何发布版本。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。