提交插件

通过 OpenAI Platform 提交 plugin 以供评审

准备好公开发布插件时,请通过插件提交门户发起审核。

插件可以包含 App、skills,或同时包含两者。你可以提交:

  • 打包可复用工作流的 skills-only 插件。
  • 由 MCP server 支持的 App-only 插件;自定义 UI 可选。
  • 把 MCP App 与打包的 skills 组合起来的 App-plus-skills 插件。

提交表单会收集目录信息、MCP server 细节、打包的 skills、起始提示词(starter prompts)、测试用例、可用国家或地区,以及政策声明。具体需要填写哪些字段,取决于插件包含 skills、App,还是两者兼有。

本地开发、打包和 marketplace 设置见构建插件。插件中的 App 部分见构建 App

提交前准备

提交 MCP server,而不是现有 App 引用

不能提交一个引用现有、已发布 ChatGPT App 的插件。如果插件包含已经存在于 ChatGPT 中的 App,请通过门户从头提交这个 App 使用的 MCP server,把它作为新的 MCP 插件提交。门户会扫描 MCP server、验证 tool 元数据,并在审核中使用你提交的 server 信息。

获取插件提交权限

你必须拥有具备 App management 写权限的组织角色,才能创建或提交插件草稿。

  1. 打开 OpenAI Platform 角色设置
  2. 选择插件所属组织。
  3. 打开提交者使用的角色,或新建角色。
  4. 在角色权限中,把 Apps Management 设为 Write
  5. 保存角色,并把它分配给所有需要创建、编辑或提交插件草稿的人员。
  6. 重新加载插件提交门户

Platform 角色设置中的 Apps Management 写权限

组织 owner 已经拥有 App management 权限。非 owner 提交者需要写权限才能创建或提交草稿,需要读权限才能查看草稿和审核状态。

验证开发者或企业身份

所有公开提交都必须使用 OpenAI Platform 中已验证的开发者或企业身份。审核人员会用该身份确认提交内容与公开目录中的名称、网站、支持联系方式、隐私政策和条款一致。

验证身份:

  1. 登录 OpenAI Platform
  2. 选择要发布插件的组织。
  3. 打开组织设置
  4. 若以个人名义发布,完成 individual verification;若以公司名义发布,完成 business verification
  5. 返回插件提交表单,在 Developer Identity 字段选择已验证身份。

未验证或与发布者不匹配的身份可能导致拒绝。底层审核规则见 Apps SDK 的组织验证要求

如果 Platform 显示身份已验证,但提交表单无法识别,请确认提交使用的组织和项目与完成验证时一致。提交者还必须拥有该组织的 Apps Management 写权限;可请组织 owner 或 admin 更新角色,再重新加载门户。

准备所需材料

打开表单前,准备好以下内容:

材料 要准备的内容
目录信息 插件名称、短描述、长描述、logo、分类、网站、支持 URL、隐私政策 URL 和条款 URL。
开发者身份 OpenAI Platform 中已验证的个人或企业身份。
MCP server 对于包含 App 的插件:公开 MCP server URL、域名验证权限、认证信息、必要的演示凭据、Content Security Policy,以及准确的 tool 元数据。
Tool annotations 对于包含 App 的插件:每个 MCP tool 的 readOnlyHintopenWorldHintdestructiveHint
Skills 对于 skills 插件:由最终 skill 文件树组成的组合包或 ZIP。
Prompts 展示真实、高价值工作流的起始提示词。
测试用例 五个正向测试和三个负向测试,并写明预期行为。
可用区域 插件应开放的国家或地区。
发布说明 简述提交内容,以及相较之前版本的变化。

创建插件提交

  1. 打开插件提交门户
  2. 选择 Create plugin
  3. 选择提交类型:
    • 只打包 skills 时选择 Skills only
    • 提交 MCP App-only 插件时选择 With MCP
    • 提交 App-plus-skills 插件时同样选择 With MCP

包含 MCP 和 skills-only 选项的 Create plugin 菜单

填写表单期间,门户会把提交保存为草稿。

填写表单

Info

填写公开目录和发布者字段:

  • Plugin name: 使用面向用户的产品或工作流名称。
  • Descriptions: 解释插件能帮助用户做什么。短描述应简洁,长描述可展开工作流细节。
  • Developer Identity: 选择发布者已验证的个人或企业身份。
  • Logo and category: 使用可投入生产的品牌素材。
  • Website、support、privacy、terms URLs: 使用与发布者一致的公开 URL,并披露相关数据处理方式。

已填写插件目录字段的 Info 标签页

显示分类和开发者身份字段的 Info 标签页

提交前,应按隐私政策检查 MCP 响应。删除不必要的个人数据、认证 secrets、调试 payloads、内部标识符,以及未披露的用户相关字段。

MCP

对于 App 或 MCP 提交:

  1. 输入生产环境 MCP server URL。
  2. 配置认证;如果 server 要求登录,提供可供审核人员直接使用的演示凭据。
  3. 定义只允许 App 实际访问域名的 Content Security Policy。
  4. 如果门户显示 Domain not verified,完成域名验证。使用 MCP hostname 或其父 hostname 的 HTTPS origin,并把精确 token 放在 /.well-known/openai-apps-challenge
  5. 选择 Scan Tools
  6. 检查发现的 tools、domains、验证结果和 tool 元数据。
  7. 修复 server 或元数据问题、部署修复,再重新扫描。

扫描演示 MCP server 后的 MCP 标签页

不要输入 ChatGPT App ID,也不要让门户指向现有、已发布的 ChatGPT App。即使该 MCP server 已经支持一个发布中的 App,提交仍必须直接提供 server URL 和审核材料。

域名验证

包含 App 的插件必须验证其 MCP server 所在域名。门户显示域名验证 challenge 时,把精确 token 放在生成的 well-known URL:

https://<challenge-base-host>/.well-known/openai-apps-challenge

Challenge 端点只能返回当前插件的 verification token。不要返回 JSON、token 列表,也不要从同一 URL 返回多个 token。

Challenge Base URL 是可选 HTTPS origin,用来告诉门户到哪里检查 token。它必须是 MCP hostname 或其父 hostname,路径会被忽略。例如 MCP server URL 为 https://api.example.com/mcp 时,默认 challenge URL 是 https://api.example.com/.well-known/openai-apps-challenge;如果你能在 https://example.com 托管 token,也可以把它作为父 origin。

如果两个包含 App 的插件共用同一 MCP hostname、仅路径不同,它们也会共用默认 challenge URL。由于 Challenge Base URL 会忽略路径,不能通过不同 tenant path 分别验证。此时应使用能托管新 token 的父 origin、为 App 使用不同的 MCP hostname,或在两者都不可行时联系 OpenAI support。

如果已有另一个包含 App 的插件使用相同 MCP hostname,不要替换它仍在使用的 challenge token。应改用允许的父 origin Challenge Base URL,或使用不同的 MCP hostname。

每个 tool 都应有清晰的名称、描述、schemas 和输出结构。当输出 schema 有助于审核人员和模型理解返回内容时,应主动添加。

Tool annotations 必须与真实行为一致:

Annotation 何时使用
readOnlyHint 只有在 tool 仅查询、查找、列出、检索、预览或计算信息,且不会改变任何状态时才设为 true。如果 tool 能创建、更新、删除、发送、入队、运行作业、启动工作流、写日志或以其它方式改变状态,应设为 false
openWorldHint 对写操作 tool,如果它能改变公开可见的互联网状态,例如公开发帖、发送外部消息、发布内容、推送代码或向第三方提交表单,应设为 true。只有完全在封闭或私有系统中操作、无法改变公开互联网状态时才设为 false
destructiveHint 如果写操作 tool 能删除、覆盖、撤销访问、发送不可撤回的消息或交易,或产生其它不可逆副作用,应设为 true;否则设为 false

实现细节见 tool annotations 与 elicitation,审核预期见 Apps SDK 的 tool hint 拒绝说明

Skills

对于 skills-only 或 App-plus-skills 提交,上传最终 skill 组合包。应使用已经在本地测试过的相同文件树和指令。

准备上传 skill bundle 的 Skills 标签页

每个 skill 应包含:

  • 明确说明触发条件和任务步骤的 SKILL.md
  • 被引用的脚本、模板或素材。
  • 与插件用途一致、范围克制的指令。

上传的 skills 会接受政策合规和安全风险扫描,包括敏感信息、不必要的访问要求,以及可能与安全或预期插件行为冲突的指令。Skills 必须遵循与插件其它部分相同的标准;自动扫描不通过时,可能阻止提交或要求整改。

Prompts

添加能展示插件最高价值工作流的起始提示词。好的提示词既要足够具体,能说明什么时候使用插件,也要足够通用,方便用户调整。

例如:

  • "Investigate checkout errors from the last release and summarize likely root causes."
  • "Create a P1 incident brief from the latest support tickets and related deploys."
  • "Review unsuccessful deployment logs and recommend the next debugging step."

带 starter prompt 示例的 Prompts 标签页

Testing

提交恰好五个正向测试用例和三个负向测试用例。

每个正向测试用例应包含:

  • 用户提示词。
  • 预期 tool、skill 或工作流行为。
  • 预期结果结构。
  • 复现所需的测试账户或 fixture 数据。

每个负向测试用例应包含:

  • 用户提示词或场景。
  • 预期拒绝、澄清或安全回退行为。
  • 插件不应完成该请求的原因。

测试用例应让审核人员无需内部背景就能运行。如果插件需要认证,演示凭据必须能够完成每个测试,且不能依赖 MFA、短信、邮件确认或私有网络访问。

包含正向和负向测试用例的 Testing 标签页

Global

选择插件应开放的国家或地区。只选择发布者、产品、支持流程和法律条款都已准备就绪的区域。

选择国家和地区的 Global 标签页

Submit

提交前检查完整草稿。

Release notes 应说明:

  • 插件的用途。
  • 这是首次提交还是更新。
  • 与之前提交版本相比有哪些变化。
  • 审核人员需要了解的测试凭据、预期数据或设置说明。

确认目录信息、MCP server、skills、提示词、测试和可用区域准确无误后,再完成政策声明并选择 Submit for Review

包含发布说明和最终声明的 Submit 标签页

公开发布流程

提交插件只会启动审核,不会立即发布。公开发布流程如下:

  1. 通过插件提交门户提交插件。
  2. OpenAI 审核提交内容。审核流程仍在建设和扩展,所需时间可能不同。
  3. OpenAI 批准后,由开发者决定发布时间,并从门户发布。
  4. 发布后,插件会出现在 ChatGPT 和 Codex 共用的通用插件目录中。

没有单独的 Apps 目录。已发布 Apps、skills-only 插件和 App-plus-skills 插件都会进入同一个插件目录。

最终检查清单

提交前确认:

  • 提交者拥有 Apps Management 写权限。
  • 发布者拥有已验证的开发者或企业身份。
  • MCP server 使用公开的生产环境 URL。
  • 包含 App 的插件为其实际访问的域名定义了 Content Security Policy。
  • 审核凭据无需 MFA、邮件确认、短信确认或私有网络即可使用。
  • Tool 名称、描述、schemas 和 annotations 与真实行为一致。
  • 每个 tool 都准确设置 readOnlyHintopenWorldHintdestructiveHint
  • Tool responses 不包含不必要的个人数据、认证 secrets、调试 payloads、内部标识符或未披露的用户相关字段。
  • 已使用最终文件树在本地测试 skills。
  • 起始提示词展示真实用户工作流。
  • 提交包含五个正向测试和三个负向测试。
  • 隐私政策、条款、支持和网站 URL 均公开,并与发布者身份一致。