☰
ChatGPT-Shortcut(AI Short)部署指南:三种部署形态的选型与 Vercel / Cloudflare / Docker 落地实践
2026/9/25 6:08:19 网站建设 项目流程
  • AI 应用
  • 提示工程
  • 人工智能
  • 前端

【免费下载链接】ChatGPT-Shortcut

Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库

项目地址:https://gitcode.com/gh_mirrors/ch/ChatGPT-Shortcut
点击查看免费下载

本文基于仓库中的部署文档(中文版 docs/deploy.md,即德语版 i18n/de/docusaurus-plugin-content-docs/current/deploy.md 的翻译源)展开,系统讲解 ChatGPT-Shortcut(产品名 AI Short)自部署时的三种形态选型、四种落地方式(本地构建、Vercel、Cloudflare Pages、Docker)、离线版数据架构,以及如何自定义提示词与保持 Fork 同步更新。读完后你可以独立完成一个可自托管的 18 语言提示词库站点的部署,并理解其构建与运行时配置背后的源码实现。

一、先选部署形态:标准版、离线版与完整自部署

部署文档开篇就把目标读者界定清楚:想自部署或定制 AI Short 的开发者;普通用户直接使用官方在线版即可,无需阅读本文档。

按需求选择一种部署形态(下表完整继承自部署文档):

形态后端说明
标准部署(默认)复用官方共享后端Fork 后可自定义网站名称、描述、提示词等(见配置与自定义);登录、收藏、社区、同步开箱即用
离线部署版无后端,数据存浏览器本地企业内网、政务等无外网环境,无需账户
带后端的完整自部署自建独立后端需要独立的账户体系、数据自主可控、私有社区

前两种形态可以照文档操作完成部署;第三种形态因后端服务并未开源,文档建议邮件联系开发者并说明使用场景与规模,以获取部署方案与支持。这一约束直接决定了后续章节的范围:后文所有可复现的步骤都只覆盖标准部署与离线部署两条路径。

部署文档按流程拆分为四篇子文档,按需查阅:

  • 标准部署 —— 复用官方共享后端,支持本地构建、Vercel、Cloudflare Pages、Docker 四种方式;
  • 离线部署版 —— 企业内网、政务网络等无外网环境的离线方案,无需后端与账户;
  • 配置与自定义 —— 修改网站标题、描述、提示词,以及对接自定义后端;
  • 开启同步更新 —— 让 Fork 跟随上游自动更新,避免功能落后。

二、标准部署:复用官方共享后端,开箱即用

标准部署的定位是「复用官方共享后端」:登录、收藏、社区、评论、跨设备同步全部依赖官方共享后端,你只需要托管静态前端。环境要求为Node.js 20.0 或更高版本,支持 macOS、Windows(含 WSL)和 Linux——这一点在 package.json 的engines字段中有硬性声明:"node": ">=20.0"(package.json)。

2.1 本地构建与单语言构建

基础命令为:

# 安装依赖 yarn # 本地开发 yarn start # 构建:默认按 scripts/i18nLocales.mjs 的 defaultLocale 生成静态产物到 build 目录 yarn build

要理解这些命令的实际行为,需要看 package.json 中的脚本定义:

  • start依赖prestart钩子,会先执行node scripts/genCommunitySnapshot.mjs --ensure-only,确保社区快照数据存在;
  • build依赖prebuild钩子,先执行node scripts/genCommunitySnapshot.mjs生成社区提示词快照,再交给node scripts/buildPhased.mjs完成真正的构建。

多语言如何不爆内存是本项目构建链路的一个核心设计。站点共支持18 种语言,语言清单由 scripts/i18nLocales.mjs 单一数据源提供:

export const defaultLocale = "zh-Hans"; export const locales = ["zh-Hans", "en", "zh-Hant", "ja", "ko", "es", "pt", "hi", "ind", "vi", "th", "fr", "de", "it", "ru", "ar", "tr", "bn"];

该文件同时被docusaurus.config.js与构建脚本读取,保证「配置里的 locales」和「分段构建实际要 build 的 locales」永远一致。而无参yarn build走的 scripts/buildPhased.mjs 采用分段构建策略:

  • 一次性docusaurus build全部 18 个 locale 会在单进程里把内存撑爆(OOM),因此脚本把语言切成小块,每块单独跑一个docusaurus build进程,进程退出即释放内存;
  • 每块语言数由环境变量BUILD_CHUNK控制,默认 3、下限 2(scripts/buildPhased.mjs);内存吃紧时可设BUILD_CHUNK=2,进程更多更慢,但峰值内存更低;
  • 默认语言zh-Hans固定在第一块,负责写build/根目录,其余语言写build/<locale>/;脚本还专门防了一个坑——末块若只剩 1 个非默认 locale,Docusaurus 会把它当成站点根写进build/覆盖默认语言,分块逻辑会自动把它并入前一块(scripts/buildPhased.mjs);
  • 全部构建完成后,mergeSitemaps()把各 locale 的<url>去重合并进根build/sitemap.xml,保证 robots 指向的 sitemap 覆盖全部 18 种语言(scripts/buildPhased.mjs)。

只构建部分语言是部署平台的常用姿势:buildPhased.mjs实现了透传模式——只要显式带参(如yarn build --locale pt),就直接转交单次docusaurus build,不再分段(scripts/buildPhased.mjs)。多语言可串联:yarn build --locale zh-Hans && yarn build --locale en。完整 locale 取值即上文i18nLocales.mjs中的 18 个代码。

2.2 Vercel 部署

按文档流程:Fork 本项目后,在 Vercel 新建项目并选择刚 Fork 的仓库,使用默认构建配置(yarn build)部署即可。

注意:Vercel 免费版可能因内存不足报错。解法是按单语言部署——进入项目Settings → Build & Deployment → Build Command,点Override,把构建命令改为单语言命令,例如中文yarn build --locale zh-Hans、葡萄牙语yarn build --locale pt,其他语言类推。

这条建议正好对应上文源码层面的透传机制:单语言构建走单次docusaurus build,不再经历 18 语言全量构建,内存占用大幅下降。

2.3 Cloudflare Pages 部署

先 Fork 本项目,然后:

  1. 登录 Cloudflare Pages,选Create a project;
  2. 绑定刚 Fork 的仓库;
  3. 配置构建:
    • Build command:yarn build --locale zh-Hans(按要部署的语言换 locale,葡萄牙语用yarn build --locale pt)
    • Output directory:build
  4. 点击部署,等待构建完成。

之后每次推新代码会自动触发构建和部署。注意构建产物目录固定为build/,这是 Docusaurus 的默认输出位置,与分段构建脚本写入的目录一致。

2.4 Docker 部署

一行命令部署(两个镜像源任选):

# ghcr.io docker run -d -p 3000:3000 --name chatgpt-shortcut ghcr.io/rockbenben/chatgpt-shortcut:latest # docker hub docker run -d -p 3000:3000 --name chatgpt-shortcut rockben/chatgpt-shortcut:latest

或使用docker-compose,仓库根目录已提供 docker-compose.yml:

services: chatgpt-shortcut: container_name: chatgpt-shortcut image: ghcr.io/rockbenben/chatgpt-shortcut:latest ports: - "3000:3000" restart: unless-stopped

镜像的构建方式可以直接从 Dockerfile 看到,它采用两阶段构建:

  1. 构建阶段:基于node:24-alpine,固定--platform=$BUILDPLATFORM在原生架构(amd64)下只构建一次静态产物,避免多架构构建时 arm64 在 QEMU 模拟下重复跑yarn build导致双倍内存 OOM;SKIP_GIT_INFO=true让 Docusaurus 不依赖 git 信息,从而把.git排除出构建上下文,构建上下文从约 1.2GB 大幅缩小(Dockerfile);RUN yarn build走的正是上述分段构建流程,构建全量 18 语言(Dockerfile)。
  2. 运行阶段:基于nginx:stable-alpine,删除默认 Nginx 配置,拷入自定义配置 nginx.conf,将第一阶段的build产物复制到/usr/share/nginx/html,暴露3000端口(Dockerfile)。

nginx.conf 的关键是 SPA 路由回退:try_files $uri $uri/ /index.html;保证前端路由(如提示词详情页、/prompt/<id>页面)在直接刷新时不会被 404,同时把404页面映射到构建产物中的404.html。这也解释了为什么任何「构建产物目录 =build/」的静态托管方案(Nginx、Apache、Caddy 等)都能直接承载本站点。

三、离线部署版:无后端、无账户的企业内网方案

离线版面向企业内网、政务网络、保密环境、校园网等无法或不便访问外网的环境。它与标准版的本质区别是:无后端、无需注册——所有个人数据存在浏览器本地,部署后内网团队打开浏览器即可使用。

3.1 团队使用方式与数据架构

离线版是纯静态网站。部署到内网服务器(如http://192.168.1.100:3000)后:

  1. 管理员将离线版部署到内网服务器;
  2. 团队成员用浏览器打开该地址,即可浏览、搜索、复制提示词;
  3. 每个人的收藏和自建提示词保存在自己的浏览器中,互不影响;
  4. 无需注册账户,无需安装任何软件,打开即用。

其中提示词库(精选提示词)是构建时打包的静态数据,所有用户看到的内容一致;每个用户的收藏、自建提示词、排序和标签保存在各自浏览器的 localStorage,彼此独立。个人数据在浏览器中的存储键如下表(继承自离线部署文档):

数据存储键说明
收藏列表local_favorites收藏的提示词 ID 数组
自建提示词local_user_prompts用户创建的提示词数据
排列顺序local_myspace_order「我的收藏」中的卡片排序
自定义标签local_custom_tags标签定义和分配关系

需要注意的限制:浏览器本地存储约5MB 容量上限(日常使用够用);清除浏览器数据会丢失个人数据,建议定期通过「我的账户 → 数据管理 → 导出数据」备份为 JSON;更换电脑或浏览器后需重新导入。

3.2 与在线版的功能差异

功能在线版离线版
提示词浏览/搜索/筛选✅✅
提示词复制✅✅
收藏管理服务器存储浏览器本地存储
自定义提示词服务器存储浏览器本地存储
我的收藏(拖拽排序、标签)✅✅
多语言支持(18种)✅✅
数据导入/导出✅✅(格式互通)
提示词详情页✅✅(静态数据,无评论)
用户注册/登录✅❌(无需账户)
社区提示词列表/投票✅❌
评论反馈✅❌

也就是说,离线版牺牲了「账户、社区、评论」三类依赖后端的协作能力,完整保留了提示词库本身的浏览、搜索、收藏与个人化能力,且数据格式与在线版互通。

3.3 离线版的部署方式

离线版基于offline分支,管理员完成一次部署后团队成员无需任何操作。

Docker 部署(推荐)——使用预构建的离线版镜像(注意 tag 是offline而非latest):

# 使用预构建的离线版镜像 docker run -d -p 3000:3000 --name aishort-offline ghcr.io/rockbenben/chatgpt-shortcut:offline # 或使用 Docker Hub docker run -d -p 3000:3000 --name aishort-offline rockben/chatgpt-shortcut:offline

部署后团队成员访问http://<服务器IP>:3000即可使用。docker-compose写法:

services: aishort-offline: container_name: aishort-offline image: ghcr.io/rockbenben/chatgpt-shortcut:offline ports: - "3000:3000" restart: unless-stopped

源码构建——如需自定义提示词内容或修改配置:

# 克隆离线版分支 git clone -b offline https://github.com/rockbenben/ChatGPT-Shortcut.git cd ChatGPT-Shortcut # 安装依赖 yarn # 本地开发 yarn start # 构建单语言版本(中文) yarn build --locale zh-Hans # 构建全部语言 yarn build

构建产物在build/目录,可部署到任意静态文件服务器。文档给出的 Nginx 配置示例:

server { listen 3000; server_name _; root /path/to/build; index index.html; location / { try_files $uri $uri/ /index.html; } }

这与容器内使用的 nginx.conf 是同构的:同一个try_filesSPA 回退规则,验证了离线版「任意静态服务器均可托管」的通用性。Vercel、Cloudflare Pages 等平台部署时选择offline分支即可,其他步骤与在线版一致。

3.4 数据导入导出与从在线版迁移

导出:进入「我的账户 → 数据管理 → 导出数据」,将个人收藏和自建提示词导出为 JSON 文件。

导入支持以下格式:

  • 离线版导出的文件:完整恢复收藏、提示词、排序和标签;
  • 在线版导出的文件:自动兼容处理——用户提示词合并到本地(按标题去重)、精选收藏(card)合并到本地收藏、社区收藏(community)自动转为本地自建提示词、MySpace 排序恢复到本地、自定义标签追加合并(不覆盖已有)。

从在线版迁移只需三步:在在线版的「我的账户」页面导出数据 → 在离线版「我的账户 → 数据管理」导入该 JSON → 社区收藏自动转为本地提示词,精选收藏正常同步。两个版本的 ID 体系不同(在线版用服务器 ID,离线版用时间戳 ID),但导入按标题去重,不会冲突。

常见问题要点:团队共享自建提示词可通过一人导出、他人导入实现(自动去重);提示词库更新则需管理员拉取最新offline分支重新构建部署(或拉取最新 Docker 镜像),团队成员刷新浏览器即可看到新内容,个人数据不受影响。

四、配置与自定义:改标题、加提示词、对接后端

标准部署与离线部署部署完成后,通常还需要按品牌与内容需求做自定义。配置文档给出了四个可自定义的层面。

4.1 网站标题、描述与说明文档

  • 网站标题和描述:编辑 docusaurus.config.js;
  • 使用说明和介绍:改 docs/ 目录下的对应 Markdown 文件(本项目自身就是 Docusaurus 站点,文档即源码)。

4.2 主页提示词数据

主页精选提示词的源数据在 src/data/prompt.json——一个数组,每个对象按zh/en/ja等语言代码键存放所有语言的版本。新增提示词时的格式:

{ "zh": { "title": "custom prompt", "prompt": "custom prompt", "description": "custom description", "remark": "custom mark" }, "en": { "title": "custom prompt", "prompt": "custom prompt", "description": "custom description", "remark": "custom mark" }, "website": null, "tags": ["music"], "id": 500, "weight": 1 }

编辑后运行python CodeUpdateHandler.py(脚本见 CodeUpdateHandler.py),它会按预设规则拆分prompt.json生成各语言的prompt_<locale>.json(与 src/data/ 目录下已有的prompt_ar.json、prompt_ja.json、prompt_zh-Hans.json等文件对应),并同步更新各语言的主页面和精选提示词页面。

注意:建议将id设为500 以上,避免与现有提示词或社区内容的 ID 冲突。运行脚本会自动为每条提示词(含新增的)生成卡片数据和详情页,无需手动创建页面文件;自定义提示词默认没有精选元描述和评论数据。

4.3 对接自定义后端

项目默认连接一个共享后端(登录、收藏、社区、评论、跨设备同步都依赖它),src/api/ 提供了完整的接口契约可供参考。后端服务本身并未开源;如需带后端的完整自部署,只能走「邮件联系开发者」路径。API 模块结构:

src/api/ ├── index.ts # 统一导出入口 ├── config.ts # API URL 配置 ├── client.ts # Axios 客户端(含认证拦截器) ├── auth.ts # 认证 API(登录/注册/OAuth) ├── prompts.ts # 提示词 CRUD + 搜索 + 投票 ├── favorites.ts # 收藏操作 ├── myspace.ts # 我的空间数据(核心数据源) ├── comments.ts # 评论系统 └── user.ts # 用户信息

从源码可以看到接入点非常集中:src/api/config.ts 把主 API 地址(当前指向官方的 Strapi 后端)与 Google OAuth 登录入口服务集中定义为API_URL、GAUTH_API_BASE两个常量,注释中明确「所有接口地址集中在此,便于后期修改」,且要求该文件不导入其他 API 模块以避免循环依赖。此外,API 数据通过lscache结合 ETag 实现智能缓存——服务器返回 304 Not Modified 时直接复用本地缓存,减少数据传输(lscache也在 package.json 的依赖列表中)。

五、保持 Fork 同步更新

标准部署通常基于 Fork 进行,这就引出同步更新文档解决的问题:Vercel 一键部署的项目可能一直提示存在更新——因为 Vercel 默认新建项目而非 fork,无法检测上游更新。解决方法:

  1. 删除原仓库;
  2. 用项目页右上角的Fork按钮 Fork 本项目;
  3. 在 Vercel 新建项目页面重新选择刚 Fork 的项目并部署。

Fork 后需手动在 Actions 页面启用 Workflows,并跑一次 Upstream Sync Action(若遇到 Upstream Sync 执行错误,先手动执行一次 Sync Fork);启用后项目每天自动同步上游。想立即手动更新时,可按 GitHub 官方「Sync a fork」流程拉取上游分支合并。

六、部署要点速查

决策点推荐做法依据
无外网的企业/政务环境离线版(offline分支或:offline镜像),纯静态 + 浏览器本地存储docs/deploy/offline.md
一般自托管 / PaaS 部署标准版,单语言yarn build --locale <locale>降低内存占用docs/deploy/standard.md
平台免费构建资源紧张覆盖 Build Command 为单语言构建;自建镜像可设BUILD_CHUNK=2进一步压低峰值scripts/buildPhased.mjs
Docker 端口固定 3000(Nginx 容器内监听 3000)nginx.conf、Dockerfile
构建产物目录build/(根目录为zh-Hans,其余语言在build/<locale>/)scripts/buildPhased.mjs
新增提示词后运行python CodeUpdateHandler.py,id取 500 以上CodeUpdateHandler.py
更换后端地址集中修改 src/api/config.tsdocs/deploy/configuration.md
Fork 落后上游用 Fork 而非 Import,启用 Upstream Sync 每日自动同步docs/deploy/sync-updates.md

适用前提小结:本文所有步骤以当前仓库版本(chatgpt-shortcut4.4.2,Docusaurus 3.10.1,Node ≥ 20)为准;标准版依赖官方共享后端,离线版功能不含账户/社区/评论;完整独立后端尚未开源,需要时只能联系开发者获取方案。

  • AI 应用
  • 提示工程
  • 人工智能
  • 前端

【免费下载链接】ChatGPT-Shortcut

Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库

项目地址:https://gitcode.com/gh_mirrors/ch/ChatGPT-Shortcut
点击查看免费下载
上一篇:推荐使用:强大的Schema.NET——结构化数据的C实现
下一篇:【亲测免费】 探索Go蓝牙:跨平台的BLE开发新境界

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询