当你读到这些文字时,OpenAI刚刚打开了大门。昨天——真的就是昨天——他们为ChatGPT启动了App Directory,并向所有开发者开放了提交。不只是选定的合作伙伴。是所有人。包括你。

8亿用户。几乎没有竞争。机会之窗现在就开着。几个月后当所有人涌入时,窗口就会关闭。
这不是又一篇"看看你有一天可以做什么"的文章。这是给那些想要现在就抓住机会的人的指南,趁着市场还空荡荡的。
还记得2008年App Store开放时,所有人都在想"谁需要手机上的应用程序?"然后Angry Birds赚了10亿美元,Instagram以10亿卖给Facebook,Uber成长到800亿。最早进入的开发者一夜暴富,仅仅因为他们是第一批。
现在是2025年12月。完全相同的事情正在发生。只不过这次叫做ChatGPT Apps。

10月6日OpenAI推出了新平台——你知道启动时有多少用户吗?8亿。不是2008年iPhone的1000万。八亿。App Store启动时小了80倍。明白了吗?
现在有多少竞争对手?截至12月18日——不到20个应用。Spotify、Booking.com、Canva、Zillow、AllTrails,几个企业工具。就这些。真的就这些。市场完全空白。昨天OpenAI向所有开发者开放了提交——包括你。
我没开玩笑。你在ChatGPT里输入:"Spotify,创建一个跑步播放列表"——聊天界面里直接打开Spotify小部件。有歌曲、按钮,一切都能用。不用切换标签页,不用复制粘贴。神奇。

或者:"Booking,找巴黎100欧以下的酒店"——砰,地图、选项、照片都出来了,可以立即预订。

你也可以创建同样类型的应用。
让我来告诉你怎么做。
为什么这不只是另一个"新功能"
听着,我理解。所有人都对"哇,新技术将改变世界"这类新闻产生了免疫力。每周都有新东西。加密货币、NFT、元宇宙、下周就来的AGI。厌倦炒作了?我也是。
但这次不同。看看数据。
2008年的App Store:
- 启动时1000万iPhone用户
- 要开发应用,你需要Mac(至少1000美元)和测试设备
- 竞争从零开始,但六个月后有数千个应用
- 你必须学习Objective-C(对,那个带方括号的噩梦)
结果呢?Instagram卖了10亿,Angry Birds有10亿次下载,Uber现在值800多亿。

最早进入的人——只是赶上了时机。他们在没有竞争的时候就在那里。
现在的ChatGPT Apps:
- 每周8亿活跃用户
- 开发——普通笔记本电脑,任何操作系统,免费工具
- 不到20个竞争对手(12月17日向所有人开放提交!)
- 技术栈——TypeScript或Python,你已经会的
数学很简单:受众大80倍,竞争对手少几百倍,进入门槛低几倍。
这不是炒作。这是昨天(12月17日)打开的机会之窗,2-3个月后当所有人涌入时会关闭。第一批通过审核的应用将在2026年1月开始出现在目录中。现在那里几乎没人。
这些ChatGPT Apps到底是什么(不废话)
好的,先跳过技术术语。用大白话说。
以前是这样:你在ChatGPT里,想做点什么——比如订酒店。ChatGPT给你建议,然后你复制酒店名字,在新标签页打开Booking.com,搜索,预订。一大堆窗口切换。很烦。
现在是这样:你在ChatGPT输入"Booking,找马德里周末80欧以下的酒店",聊天界面里直接出现——地图、选项列表、照片、价格,可以点击预订。全在那里。不用标签页。
看起来是个小细节?嗯,苹果当时也看起来是个小细节——"有按钮为什么要触摸屏?"然后诺基亚死了。
ChatGPT Apps不是:
马上说清楚,免得搞混(我一开始也搞混了)。
不是Custom GPTs。Custom GPTs只是带指令的聊天机器人。你告诉它"像海盗一样回答"——它就像海盗一样回答。就这样。没有小部件,没有交互性。
不是ChatGPT Plugins。OpenAI在2024年4月关闭了Plugins。它们慢、笨拙、运行不佳。埋了,理所应当。
不是使用ChatGPT API。API是你做自己的应用,在里面使用ChatGPT。完全不同的故事。
那是什么?
ChatGPT Apps是ChatGPT内部的完整应用程序。有界面、按钮、卡片、地图、视频——你想要什么都行。你创建后端(TypeScript或Python),做UI(普通HTML/CSS/JS),ChatGPT直接在聊天中渲染。
工作流程示例(一步步):

- 用户:"Zillow,给我看纽约50万美元以下的房子"
- ChatGPT理解:需要调用Zillow应用
- 向你的服务器发送请求(这叫MCP服务器,稍后详述)
- 你的服务器:搜索房子,组织响应 + 小部件的HTML
- ChatGPT接收数据并显示小部件,有地图、照片、描述
- 用户点击房子 → 看到详情
- 说:"去掉40万美元以上的" → 列表更新
- 找到需要的 → 点击"在Zillow打开" → 网站打开
整个魔法在于这发生时没有切换上下文。与ChatGPT的对话不中断。你只是说你想要什么,一切就出现在那里。
为什么需要这个?
合理的问题。这里有个真实用例:
以前:我想在参观博物馆后订餐厅。
- 打开博物馆网站,查看开放时间
- 谷歌附近的餐厅
- 选一个,打开OpenTable
- 预订
- 添加日历提醒
现在:"ChatGPT,在普拉多博物馆闭馆后预订附近的餐厅。"
- ChatGPT找出闭馆时间
- 找附近的餐厅
- 提供选项(有地图、菜单、评论)
- 预订桌子
- 添加到日历
一句话代替五个步骤。
这就是为什么我们需要它。
开发者争相进入的三个原因
1. 即时获得受众(不公平,但有效)
创业公司的常规路径:
- 想法 → MVP → 启动
- 建站,配置分析
- SEO(等待几个月)
- 付费广告(钱,钱,钱)
- 冷电话,邮件
- 一年后:1000个用户(如果你幸运)
用ChatGPT Apps:
你做应用。发布到Store。用户写"给我找意大利面carbonara的食谱"——如果你有食谱应用,ChatGPT自己推荐你的应用。
不是你找用户。ChatGPT把他们带给你。
就像拥有世界上最好的销售经理,24/7免费工作,认识所有8亿用户。
现在想象你有三个竞争对手。不是三千个。三个。在某些细分市场可能根本没人。
2. 不需要从头构建UI(但应该研究指南)
你知道在应用中做一个像样的UI要多长时间吗?几个月。响应式、浏览器兼容性、主题(明暗)、可访问性。加上单独的iOS版本、单独的Android版本。工作量巨大。
用ChatGPT Apps——ChatGPT为你渲染UI。你提供HTML模板,它集成到界面中。主题?自动。响应式?自动。iOS/Android?到处都能用,这是网页。
但有个陷阱:OpenAI提供了清晰的设计指南。这不是"做你想做的"。有关于小部件大小、配色方案、排版、间距的建议。一切都清楚地记录在案。
好消息:遵循这些指南比从头创建设计系统更容易。OpenAI已经考虑了一致性、可访问性、UX模式。你只需应用他们的标准。
你专注于逻辑、数据、让应用有用的东西。不是让按钮在不同设备上看起来一样。
3. 先行者优势(窗口现在就开着)
仔细听,因为这是文章最重要的部分。
2025年12月17日——昨天——OpenAI启动了App Directory并向所有开发者开放提交。不是合作伙伴,不是企业。是所有人。你现在可以去platform.openai.com提交应用审核。
现在有什么:
- Spotify、Booking.com、Expedia(旅行)
- Canva、Figma(设计)
- Zillow(房地产)
- Coursera(教育)
- AllTrails、Coupler、Daloopa、Coveo、Egnyte、Hex(企业工具)
数数。8亿用户,不到20个应用。App Directory目录实际上是空的。Featured部分是空的。推荐算法刚开始调整。

第一批通过审核的应用将在2026年1月开始出现。这意味着你有2-3周时间做一个高质量的应用并提交审核。有机会成为第一波。
到2026年夏天将有:
- 数千名开发者
- 数百个创业公司
- 大量模仿者
- Featured位置的激烈竞争
- 在数千个应用上训练过的推荐算法
但别担心。这并不意味着夏天就太晚了。ChatGPT Apps不是一年后会消失的炒作功能。这是一个基础平台,会一直存在。
类比:App Store在2008年推出,成功的新应用今天仍在出现。TikTok在2018年爆发市场——商店推出10年后。Clubhouse在2020年值数十亿。
ChatGPT Apps将在未来几年增长和演变。只是那些在第一波进入的——在接下来的2-3个月——将获得最大好处:更少的竞争对手,更多的关注,排名第一位置,先驱声誉,Featured的机会。
你也可以六个月后进入。但现在是风险最小、回报最大的机会窗口。目录是空的。提交开放了。竞争几乎不存在。
一个月后会有数百份提交。三个月后——数千份。但现在你可以成为前二十名之一。
技术上如何工作(不用术语)
好的,营销够了。进入正题——它在底层是如何构建的。

简单图示
用户
↓ 写提示词
ChatGPT UI(你看到的)
↓ 理解需要什么工具
Apps SDK Runtime(引擎)
↓ 发送请求
你的MCP服务器(你的代码)
↓ 处理,调用API
你的数据库/外部服务
↓ 返回数据
Widget(iframe中的HTML/CSS/JS)
↓ 显示
用户看到结果
实际上,一个请求是这样的:
用户:"Spotify,创建早晨跑步播放列表"
- ChatGPT:好的,这是关于音乐的,需要Spotify的
create_playlist工具 - ChatGPT → 你的服务器:POST请求,参数
{theme: "morning_run", duration: 30} - 你的服务器:
- 收到请求
- 调用Spotify API
- 编译歌曲列表
- 形成响应 + 小部件的HTML
- 你的服务器 → ChatGPT:这是你的数据 + UI模板
- ChatGPT:在iframe中渲染小部件(受保护的沙箱)
- Widget:通过
window.openaiAPI接收数据 - 用户:看到播放列表,可以听、编辑
整个过程需要几秒钟。
MCP协议——是什么,为什么
MCP = Model Context Protocol(模型上下文协议)。这是连接AI与外部工具和数据的开放标准。
简史:
- 2024年11月 → Anthropic(Claude的创造者)宣布MCP
- 2025年3月 → OpenAI说"是的,我们也这么做"
- 2025年12月 → MCP移交给Linux基金会
现在是共同标准。构建一次MCP服务器——可以与ChatGPT、Claude、VS Code、任何AI客户端一起工作。
类比:还记得以前每个手机都有自己的充电器吗?诺基亚一个,三星另一个,iPhone第三个。真烦人。然后他们发明了USB-C——所有人用一个接口。
MCP是AI应用的USB-C。
MCP的三大支柱
MCP由三个原语组成。听起来吓人,但实际上很简单:
1. Tools(工具)
这些是AI可以调用的函数。例如:
search_products— 搜索产品book_hotel— 预订酒店create_playlist— 创建播放列表get_weather— 获取天气
你注册一个工具,描述参数(需要传什么),ChatGPT自动理解何时调用它。
2. Resources(资源)
这些是数据源或UI模板。例如:
- 带小部件的HTML文件
- 用户数据的JSON
- 图片、视频
你控制Resources,不是AI。你决定返回什么以及什么格式。
3. Prompts(提示词)
常见任务的可重用模板。如果你有标准场景,可以描述一次,用户会更快使用。
说实话?Prompts很少使用。Tools和Resources——这才重要。
安全性呢?
小部件在沙箱iframe中运行——隔离的环境。它们不能:
- 读取其他网站的cookies
- 在ChatGPT上下文中执行任意JavaScript
- 访问其他用户的数据
所有请求通过HTTPS。传输中的数据用TLS 1.2+加密。存储——AES-256。OpenAI通过了SOC 2 Type 2审计,符合GDPR/CCPA。
简而言之,安全性很可靠。不需要重新发明轮子。
构建你的第一个应用(现在)
理论够了。让我们做一个真正的应用。现在。20-30分钟内。
我们要构建什么:待办事项列表。是的,我知道,这是陈词滥调。但它简单明了。做个todo——理解原理——然后如果你想的话可以建造宇宙飞船。
你需要什么
- Node.js(可能已经安装了)
- 任何代码编辑器
- 终端
- ngrok(用于公共URL)
一切免费,一切可用。
步骤1:创建项目
mkdir my-first-chatgpt-app
cd my-first-chatgpt-app
npm init -y
npm install @modelcontextprotocol/sdkpackage.json应该像这样:
{
"type": "module",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.20.2"
}
}> 注意:在示例中,我们直接使用JSON Schema验证参数。如果你想要更强大的验证,可以添加zod并在工具处理程序中使用。
步骤2:编写MCP服务器
创建文件server.js:
import { createServer } from "node:http";
import { readFileSync } from "node:fs";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
// 带小部件的HTML(下一步创建)
const widgetHtml = readFileSync("widget.html", "utf8");
// 我们的任务"存储"(实际上会是数据库)
let todos = [];
let nextId = 1;
function createTodoServer() {
const server = new McpServer({
name: "my-todo-app",
version: "1.0.0"
});
// 将小部件UI注册为Resource
server.registerResource(
"todo-widget",
"ui://widget/todo.html",
{},
async () => ({
contents: [{
uri: "ui://widget/todo.html",
mimeType: "text/html+skybridge", // 重要!没有这个不会工作
text: widgetHtml,
_meta: {
"openai/widgetPrefersBorder": true // 小部件周围的边框
},
}],
})
);
// 注册添加任务的Tool
server.registerTool(
"add_todo",
{
title: "添加任务",
description: "向列表添加新任务",
inputSchema: {
type: "object",
properties: {
title: {
type: "string",
description: "任务标题"
}
},
required: ["title"]
},
_meta: {
"openai/outputTemplate": "ui://widget/todo.html", // 显示哪个小部件
"openai/toolInvocation/invoking": "正在添加任务...", // 加载时的文本
"openai/toolInvocation/invoked": "任务已添加 ✓", // 完成时的文本
},
},
async ({ title }) => {
// 创建任务
const todo = {
id: `todo-${nextId++}`,
title,
completed: false
};
todos.push(todo);
// 返回结果
return {
// ChatGPT的文本(在聊天中显示什么)
content: [{
type: "text",
text: `✅ 已添加:"${title}"`
}],
// 小部件的数据
structuredContent: {
tasks: todos
},
};
}
);
return server;
}
// 带CORS的HTTP服务器(必需!)
const port = 8787;
const httpServer = createServer(async (req, res) => {
const url = new URL(req.url, `http://${req.headers.host}`);
// CORS预检(ChatGPT首先发送OPTIONS请求)
if (req.method === "OPTIONS" && url.pathname === "/mcp") {
res.writeHead(204, {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "POST, GET, OPTIONS",
"Access-Control-Allow-Headers": "content-type, mcp-session-id",
"Access-Control-Expose-Headers": "Mcp-Session-Id",
});
res.end();
return;
}
// 健康检查(验证服务器是否运行)
if (req.method === "GET" && url.pathname === "/") {
res.writeHead(200).end("✅ MCP服务器运行中");
return;
}
// MCP端点(ChatGPT会在这里调用)
if (url.pathname === "/mcp") {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Expose-Headers", "Mcp-Session-Id");
const server = createTodoServer();
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: undefined,
enableJsonResponse: true,
});
// 连接关闭时清理
res.on("close", () => {
transport.close();
server.close();
});
await server.connect(transport);
await transport.handleRequest(req, res);
return;
}
res.writeHead(404).end("Not Found");
});
httpServer.listen(port, () => {
console.log(`🚀 服务器运行中:http://localhost:${port}/mcp`);
});看起来复杂?实际上有三个部分:
- 注册小部件(UI)
- 注册工具(它能做什么)
- HTTP服务器(让ChatGPT能够访问我们)
步骤3:制作小部件
创建widget.html:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8" />
<title>待办小部件</title>
<style>
* { box-sizing: border-box; }
body {
margin: 0;
padding: 20px;
font-family: -apple-system, BlinkMacSystemFont, sans-serif;
background: var(--bg, #f8f9fa);
}
.task-list {
display: flex;
flex-direction: column;
gap: 10px;
}
.task {
padding: 15px;
border-radius: 8px;
background: white;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
display: flex;
align-items: center;
gap: 10px;
}
.task:hover {
box-shadow: 0 4px 8px rgba(0,0,0,0.15);
}
.task.completed {
opacity: 0.5;
text-decoration: line-through;
}
.empty {
text-align: center;
padding: 40px;
color: #999;
font-style: italic;
}
</style>
</head>
<body>
<div id="root"></div>
<script type="module">
// 从ChatGPT获取数据
const toolOutput = window.openai?.toolOutput;
const theme = window.openai?.theme;
// 如果是深色主题,改变背景
if (theme === 'dark') {
document.documentElement.style.setProperty('--bg', '#1a1a1a');
}
// 渲染任务列表
function render(tasks) {
const root = document.getElementById('root');
if (!tasks || tasks.length === 0) {
root.innerHTML = '<div class="empty">📝 还没有任务。添加你的第一个!</div>';
return;
}
root.innerHTML = `
<div class="task-list">
${tasks.map(task => `
<div class="task ${task.completed ? 'completed' : ''}">
<span>${task.title}</span>
</div>
`).join('')}
</div>
`;
}
// 首次渲染
render(toolOutput?.tasks || []);
// 监听更新(当ChatGPT更新数据时)
window.addEventListener("openai:set_globals", (event) => {
const newTasks = event.detail?.globals?.toolOutput?.tasks;
if (newTasks) render(newTasks);
});
</script>
</body>
</html>这是普通HTML。魔法在window.openai——ChatGPT就是这样传递数据给我们的。
步骤4:本地运行
打开两个终端。
终端1(启动服务器):
node server.js你会看到:🚀 服务器运行中:http://localhost:8787/mcp
终端2(公共隧道):
ngrok http 8787ngrok会给你一个公共URL,类似https://abc123.ngrok.app。复制它。
步骤5:连接到ChatGPT
- 打开ChatGPT
- Settings → Apps & Connectors → Advanced settings
- 启用Developer Mode(需要Plus或Pro)
- 点击Create Connector
- 输入URL:
https://你的ngrok-url.ngrok.app/mcp - 保存
步骤6:测试!
打开新聊天并输入:
添加任务:买牛奶如果一切正常——你会看到一个带任务的小部件!
再试试:
添加任务:去健身房
添加任务:给妈妈打电话直接在聊天中看到任务列表了吗?恭喜,你刚创建了第一个ChatGPT应用!🎉
接下来呢?
这是最基本的例子。接下来你可以:
- 添加删除任务功能
- 做复选框标记为完成
- 连接真实数据库(PostgreSQL、MongoDB)
- 添加OAuth授权
- 部署到Vercel(免费)
但你理解原理了。其余的是细节。
高级功能(当基础变得无聊时)
好的,你做了待办列表。现在想要更严肃的东西。这里还有什么可以做:
OAuth授权
如果你的应用处理用户个人数据(如Spotify播放列表或Google Drive),你需要授权。
ChatGPT支持带PKCE的OAuth 2.1。听起来吓人,但运作简单:
- 用户第一次调用你的应用
- ChatGPT显示"连接账户"
- 重定向到你的授权服务器
- 用户授予访问权限
- 你的服务器返回token
- ChatGPT保存token并在每次请求时发送
在代码中看起来像这样:
server.registerTool(
"get_user_playlists",
{
title: "获取播放列表",
_meta: {
"openai/auth": [{ type: "oauth2" }] // 需要授权
}
},
async (args, context) => {
// 检查token
const token = context.headers?.authorization?.replace('Bearer ', '');
if (!token) {
return {
error: "Unauthorized",
_meta: {
"mcp/www_authenticate": { error: "invalid_token" }
}
};
}
// 获取数据
const playlists = await fetchSpotifyPlaylists(token);
return { content: [{ type: "text", text: JSON.stringify(playlists) }] };
}
);配置认证服务器的细节是单独的主题。简而言之:你需要/authorize端点、/token端点和服务器元数据。阅读文档,那里有解释。
全屏小部件
有时聊天中的小部件太小。比如地图。你需要全屏。
// 在小部件中
await window.openai.requestDisplayMode({ mode: "fullscreen" });有三种模式:
- inline — 聊天中的普通小部件(默认)
- fullscreen — 全屏(用于地图、图表)
- pip(画中画)— 浮动窗口(用于视频、音乐)
通过window.openai.requestDisplayMode()切换。
Agentic Commerce Protocol (ACP) — 直接在ChatGPT中销售
想通过ChatGPT销售产品?OpenAI和Stripe创建了一个开放标准——ACP。
如何运作:
- 你有产品(JSON/CSV/XML格式的Product Feed)
- 用户:"ChatGPT,给我订一双Nike Air Max,42码"
- ChatGPT在你的feed中找到产品
- 显示产品卡(照片、价格、描述)
- 用户:"购买"
- Instant Checkout — 通过你的Payment Provider付款(Stripe/PayPal)
- 你收到关于购买的webhook
- 你发货产品
佣金:OpenAI从销售中抽取小部分百分比(确切数字未公开)。
谁已经在做:Instacart(完整的Instant Checkout),100万+Shopify商家。
这真的有效。人们直接在聊天中购买,不用去网站。
部署:进入生产环境
一切在本地运行,但用户需要稳定的服务器。ngrok会在一小时后挂掉——不是选项。
选项1:Vercel(最简单)
Vercel官方支持ChatGPT Apps。有免费tier,足够开始。
npm i -g vercel
vercel login
vercel就这样。Vercel会配置HTTPS、配置CDN、给你稳定的URL。
Vercel的现成模板:
vercel.com/templates/next.js/chatgpt-app-with-next-js选项2:Railway / Fly.io / Render
如果你需要更多控制(自己的Docker、自己的环境变量等):
Railway:
railway login
railway link
railway upFly.io:
fly launch
fly deploy这三个平台开始都是免费的,然后为资源付费。便宜。
生产检查清单
启动前检查:
✅ HTTPS — 必需,否则ChatGPT不会连接
✅ CORS — 允许https://chatgpt.com
✅ 健康检查 — /应该返回200
✅ 速率限制 — 不被DDoS
✅ 环境变量 — 代码中没有秘密
✅ 日志记录 — 理解什么坏了
✅ 监控 — 正常运行时间、延迟、错误
Express的最小CORS:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.header('Access-Control-Allow-Headers', 'content-type, mcp-session-id');
next();
});这足够开始了。
ChatGPT App Directory:提交现在开放
最常见的问题是:"我们什么时候能发布?"
答案:已经可以了。2025年12月17日OpenAI向所有开发者开放了提交。
2025年12月18日的状态:
✅ App Directory已启动 — https://chatgpt.com/apps
✅ 提交已开放 — 通过platform.openai.com
✅ Apps SDK处于BETA — 任何开发者都可以使用
✅ 第一批批准的应用 — 将在2026年1月开始出现
谁已经在那里:
- Spotify — 播放列表、推荐
- Booking.com、Expedia — 旅行
- Canva、Figma — 设计和演示
- Zillow — 美国房地产
- Coursera — 教育课程
- AllTrails — 步道和路线
- Coupler、Daloopa、Coveo、Egnyte、Hex — 企业工具
总共不到20个应用。就这些。目录几乎是空的。
如何提交你的应用(一步步)
步骤1:准备你的应用
提交前确保:
- 应用在Developer Mode中测试过
- 服务器在HTTPS上运行(必需!)
- 遵循App Submission Guidelines
- 有Privacy Policy和Terms of Service
- UI遵守OpenAI指南
步骤2:前往OpenAI Developer Platform
访问platform.openai.com → "ChatGPT Apps"部分 → "Submit App"。
步骤3:填写提交表单
你需要提供:
应用信息:
- 应用名称(独特、清晰)
- 描述(它做什么,对谁有用)
- 类别(productivity、travel、education、entertainment等)
- 目录的图标和横幅(PNG,特定尺寸)
MCP详情:
- 你的MCP服务器URL(必须通过HTTPS访问)
- 服务器提供的工具列表
- 认证设置(如果需要OAuth)
- 小部件端点
测试指南:
- 审核者的测试场景(如何验证一切正常)
- 触发你的应用的示例提示
- 预期行为
截图/UI预览:
- ChatGPT中小部件的截图
- 主要功能演示
- 显示应用在明暗主题中的外观
国家/地区可用性:
- 应用将在哪些国家可用
- 地区限制(如果有)
Privacy Policy:
- 所有应用必需
- 你收集什么数据,如何使用,如何存储
- 完整政策文本的链接
发布说明:
- 此版本的新内容
- 已知限制或bug
- 未来计划(可选)
步骤4:提交审核
点击"Submit"。OpenAI开始检查:
- 技术审查(服务器是否工作,是否有bug)
- 安全审查(是否有漏洞,数据是否正确处理)
- 政策审查(是否符合Usage Policies)
- UX审查(是否便于使用)
审查时间线:几天到几周(取决于复杂性)。
步骤5:收到回复
要么批准 — 恭喜,应用进入目录!
要么要求更改 — 需要修复问题并重新提交。
批准后,你的应用出现在App Directory中,8亿用户可以找到它。
批准要求
通过审核,应用必须:
✅ 符合OpenAI的Usage Policies
✅ 适合所有受众(无成人内容、暴力、仇恨言论)
✅ 只请求必要数据(最小权限原则)
✅ 有工作的HTTPS端点(HTTP不会工作)
✅ 提供清晰的Privacy Policy
✅ 遵循UI Guidelines(设计一致性、可访问性)
✅ 不违反第三方服务的Terms of Service(如果与它们集成)
自动拒绝如果:
- 没有HTTPS
- 没有Privacy Policy
- 请求功能不需要的数据(例如位置,如果你不使用)
- UI不响应或损坏
- 应用崩溃有错误
批准后做什么
你的应用出现在目录中 — 用户可以通过搜索或Featured部分找到它。
用户如何找到你:
- 目录搜索 — 按关键词搜索
- @提及 — 在聊天中输入
@你的应用 做某事 - 推荐 — ChatGPT自己在看到相关查询时推荐你的应用
- Featured — 最好的应用进入推荐
深层链接:
你可以分享直接链接到你的应用:
https://chatgpt.com/apps/你的应用发到社交媒体、网站、新闻通讯——人们点击并直接进入ChatGPT中的你的应用。
- 支持联系方式
- 安全认证(如果处理金钱)
货币化 — 真的能赚钱吗?
百万(字面意思)的问题。
收入选项:
| 方法 | 如何运作 | 状态 |
| Instant Checkout | OpenAI从销售中抽取% | ✅ 运作中 |
| Subscription | 用户为应用付费 | 🔜 即将推出 |
| Freemium | 基础版免费,Pro付费 | 🔜 2026 |
| Ads | 广告模式 | ❓ 不清楚 |
Instant Checkout已经运作。Instacart直接在ChatGPT中销售食品杂货,OpenAI收取佣金(大小未披露,但他们说"合理")。
Subscription将在2026年Q1-Q2推出。像App Store一样——用户为应用付费,OpenAI拿~30%(可能)。
你能赚多少?
没人知道。Store还没开,没有统计数据。但我们可以看看App Store:
- 前1%的应用:每月$10K-100K+
- 前10%:每月$1K-10K
- 其余:每月$0-1K
ChatGPT Apps潜力更大,因为:
- AI自己推荐应用(免费发现)
- 转化率更高(一切在聊天中,无切换)
- Instant Checkout减少摩擦
但目前——不确定。第一批将实验。
这适合谁(诚实对话)
不是每个人都应该冲向ChatGPT Apps。坦诚点。
✅ 这适合你如果:
- 你会用TypeScript或Python编程
- 你理解REST API、HTTP、JSON
- 你有面向广泛受众的应用想法
- 你准备学习和实验
- 你不怕变化(SDK在preview,一切都在演变)
- 你想在一个新行业的开始就进入
❌ 不要开始如果:
- 你是编程的完全初学者(先学基础!)
- 你期望没有工作就有即时利润
- 你现在需要稳定收入(目前只能链接到你的网站购买)
- 你做狭窄的B2B产品(ChatGPT是面向大众市场的)
- 你没准备好技术变化
AI开发者的真实薪资
如果你不创建自己的应用而是在公司工作:
美国(2025):
- Junior AI Developer:$95K-$130K/年
- Mid AI Engineer:$161K-$220K/年
- Senior AI Engineer:$301K-$440K/年
- AI Research Scientist:$500K-$893K/年
按地区远程工作:
- 西欧:€60K-€120K/年
- 东欧:$35K-$80K/年
- 印度:$15K-$45K/年
- 中国:$25K-$70K/年
- 南美:$30K-$65K/年
自由职业(全球):$35-$116/小时(平均$65-75)
来源:levels.fyi、Glassdoor、AngelList(2025年12月)
AI开发者需求每年增长10-20%。会继续增长。
创建ChatGPT Apps的真实挑战

好的,整篇文章我都在告诉你这有多酷多简单。但坦诚点——不是一切都顺利。
开发者面临真实的挑战:
1. 范式转变
这是最难的部分。你习惯写普通应用:用户点击按钮 → 代码执行 → 结果显示。一切可预测。
ChatGPT Apps不同:
- AI决定何时调用你的工具
- 用户用自然语言说话,不点击UI
- 你的应用是AI手中的工具,不是直接逻辑
你必须学会像AI工程师一样思考,而不是像经典web开发者。这就像从过程式编程转向函数式——技术看起来熟悉,但方法不同。
2. MCP协议 — 新标准
MCP刚出现,文档少,最佳实践还在形成。你不能谷歌"如何在MCP中做X"——Stack Overflow是空的。
你必须阅读官方文档(有时不完整)、研究OpenAI的例子、实验。
3. 调试比普通web应用更难
在普通应用中你看到请求 → 查看日志 → 理解什么坏了。
在ChatGPT Apps中:
- AI可能误解提示
- 工具可能在你不期望时被调用
- 小部件在沙箱iframe中渲染 — DevTools不总是有帮助
- 错误可能在三个层次:AI、MCP传输、你的代码
你需要新的调试技能。
4. OAuth和安全 — 高责任
如果你的应用处理个人数据,你需要OAuth。但这不只是"安装库就能用"。
你必须:
- 配置授权服务器
- 实现PKCE流程
- 每次请求验证token
- 确保秘密的安全存储
- 通过OpenAI的安全审查
一个错误——用户数据泄漏。认真的。
5. 生产部署 — 不只是"上传到主机"
HTTPS是必需的。需要CORS。SSE/Streaming HTTP必须工作。健康检查。速率限制。监控。日志记录而不泄漏敏感数据。
对于初级开发者这可能是压倒性的。
6. 与大玩家竞争
当Store开放时,不只是独立开发者会进入。Spotify、Booking、Canva——这些是有大团队的大公司。
如何与他们竞争?你需要清晰的策略、专注于细分市场、理解市场。
7. 快速变化的生态系统
Apps SDK处于preview。每周都在添加功能。一个月前能用的东西在更新后可能会坏。
你必须准备快速适应。
这就是为什么你需要一个基础课程,而不只是"30分钟教程"。
培训:CodeGym课程

我们在CodeGym理解这些挑战。这正是为什么我们不只创建"半小时ChatGPT Apps基础",而是准备真实开发的生产级完整课程。
我们做得不同
1. 渐进的范式转变
课程从经典web开发开始,然后平滑过渡到AI优先方法。你不是跳进冷水——你一步步来。
2. 深入MCP
我们不只是说"MCP是这样工作的"。我们分解:
- 协议的内部架构
- AI如何决定调用工具
- 优化工具描述以更好发现
- 使用Resources的高级模式
- 在堆栈所有层级调试
3. 真实世界项目,不是hello world
40个实践任务——不是"做个待办列表"。而是:
- 带Instant Checkout的电商应用
- 带地图集成的旅行规划器
- 带AI生成的内容创建工具
- 带实时数据的分析仪表板
- 还有36个其他任务
4. 安全第一
单独的安全模块:
- 带PKCE的OAuth 2.1(一步步)
- Token验证
- 速率限制策略
- PII保护
- GDPR/CCPA合规
5. 真实条件下的生产部署
不只是"这是Vercel的命令"。而是:
- 平台比较(Vercel、Railway、AWS)
- CI/CD管道
- 监控和警报
- 错误跟踪
- 性能优化
- 扩展策略
6. NestJS作为基础
整个课程建立在NestJS上——现代TypeScript后端开发框架。
为什么NestJS?
- 非常适合MCP服务器(模块化架构)
- 开箱即用的生产就绪
- 依赖注入支持
- 与TypeScript优秀配合
- 巨大的社区
即使你以前没用过NestJS——我们会从零解释一切。如果用过——你会学到如何将它应用到AI应用。
7. 通过实践改变思维方式
每个级别包括:
- 理论模块(10-15分钟)
- 实践任务(30-60分钟)
- AI导师的代码审查
- 常见错误分析
课程结束时你像AI工程师一样思考,不只是知道语法。
课程大纲(简要)
模块1:基础(级别1-4)
- 什么是ChatGPT Apps,为什么需要
- MCP协议:架构和原理
- 环境配置(NestJS + MCP SDK)
- 第一个应用:简单小部件
模块2:MCP和Tools(级别5-8)
- 注册和描述Tools
- 参数和验证(Zod)
- Structured content和UI模板
- 优化Tool discovery
模块3:小部件和UI(级别9-12)
- 小部件的HTML/CSS/JS
- window.openai API
- 显示模式:inline、fullscreen、PiP
- OpenAI设计指南
- 主题和响应式
模块4:OAuth和安全(级别13-15)
- 带PKCE的OAuth 2.1
- 授权服务器配置
- Token管理
- 安全最佳实践
- GDPR/CCPA合规
模块5:高级功能(级别16-18)
- Agentic Commerce Protocol (ACP)
- Instant Checkout集成
- 多步骤流程
- 状态管理
模块6:生产(级别19-20)
- 部署策略
- 监控和日志
- 性能优化
- 扩展和负载均衡
- 提交到ChatGPT Store
为什么有效
不只是理论。课程80%是实践。你每天都在写代码。
不只是教程。复杂度递增的任务。从简单到高级。
GO TO FULL VERSION