- AI 应用
- 提示工程
- 人工智能
- 前端
【免费下载链接】ChatGPT-Shortcut
Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库
本文基于仓库中的部署文档(中文版 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 本项目,然后:
- 登录 Cloudflare Pages,选Create a project;
- 绑定刚 Fork 的仓库;
- 配置构建:
- Build command:
yarn build --locale zh-Hans(按要部署的语言换 locale,葡萄牙语用yarn build --locale pt) - Output directory:
build
- Build command:
- 点击部署,等待构建完成。
之后每次推新代码会自动触发构建和部署。注意构建产物目录固定为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 看到,它采用两阶段构建:
- 构建阶段:基于
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)。 - 运行阶段:基于
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)后:
- 管理员将离线版部署到内网服务器;
- 团队成员用浏览器打开该地址,即可浏览、搜索、复制提示词;
- 每个人的收藏和自建提示词保存在自己的浏览器中,互不影响;
- 无需注册账户,无需安装任何软件,打开即用。
其中提示词库(精选提示词)是构建时打包的静态数据,所有用户看到的内容一致;每个用户的收藏、自建提示词、排序和标签保存在各自浏览器的 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,无法检测上游更新。解决方法:
- 删除原仓库;
- 用项目页右上角的Fork按钮 Fork 本项目;
- 在 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.ts | docs/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 · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库
相关推荐
语音识别中的噪声分类:silero-models环境适应技术
语音识别中的噪声分类:silero models环境适应技术 在当今语音交互技术快速发展的时代,背景噪声成为影响语音识别准确率的关键因素。silero mode
人工智能语音音频AnyDoor部署指南:零基础掌握本地、云端和Docker三种高效部署方案
AnyDoor部署指南:零基础掌握本地、云端和Docker三种高效部署方案 AnyDoor是一款基于零样本对象级图像定制技术的创新工具,能够帮助用户实现目标对象
Cloudflare Pages 前端部署指南:cloudflare_temp_email 三种部署方式详解
Cloudflare Pages 前端部署指南:cloudflare_temp_email 三种部署方式详解 本文基于开源项目 cloudflare_temp_
后端前端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考