- AI 应用
- 提示工程
- 人工智能
- 前端
【免费下载链接】ChatGPT-Shortcut
Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库
AI Short 是一个开源的 AI 提示词快捷指令库站点,支持 18 种语言的本地化构建。本文基于 i18n/ko/docusaurus-plugin-content-docs/current/deploy/configuration.md(韩文版「구성 및 커스터마이징」)展开,完整覆盖它的四个核心主题:修改网站标题与描述、编写使用文档、新增/编辑主页提示词、以及对接自定义后端。全文结合仓库源码说明每一项配置的落点、数据流向与背后的实现机制,让读者既能照做,也能理解原理。
四个自定义层次与文件落点
| 要自定义的内容 | 主要落点 | 说明 |
|---|---|---|
| 站点标题、站点描述、导航、主题 | docusaurus.config.js | Docusaurus 站点主配置 |
| 使用说明与介绍文档 | docs/ | 文档正文,按需编辑对应 Markdown 文件 |
| 主页提示词数据 | src/data/prompt.json | 多语言提示词主数据源 |
| 后端接口与认证逻辑 | src/api/ | 前端 API 契约(后端服务未开源) |
以下是每一层的具体做法与原理。
修改网站标题和描述
站点的标题、描述、导航、主题等全局配置全部集中在 docusaurus.config.js。
// @ts-check import { themes as prismThemes } from "prism-react-renderer"; import { defaultLocale, locales } from "./scripts/i18nLocales.mjs"; const config = { title: "AiShort", // 浏览器标题栏 / <title> 前缀 favicon: "img/favicon.ico", url: "https://www.aishort.top", // 生产站点 URL baseUrl: "/", // 站点根路径 i18n: { defaultLocale, // zh-Hans(默认语言) locales, // 18 种语言(见 scripts/i18nLocales.mjs) }, themeConfig: { navbar: { /* 顶部导航项 */ }, footer: { /* 页脚版权 */ }, }, // ... }; export default config;title决定站点品牌名;各页面的具体描述通过页面 Layout 的title自定义(见 src/pages/index.tsx)。navbar.items控制顶部导航(社区提示词、使用说明、反馈建议等),navbar中的label与items均可按需增删。themeConfig.footer控制页脚版权声明。- 语言列表必须与 scripts/i18nLocales.mjs 保持一致:该文件是语言单一数据源,
docusaurus.config.js与 scripts/buildPhased.mjs 都从中读取,增删语言只需改动这一处,避免配置与分段构建脱钩导致脏 URL。
修改站点配置前,建议先阅读 docs/deploy/configuration.md(中文版)与 docs/deploy.md 了解部署形态;Docker 构建时设
SKIP_GIT_INFO=true可跳过对 git 环境的依赖(参见 Dockerfile)。
修改使用说明与介绍文档
使用说明类文档放在 docs/ 目录(首页入口见 docs/introduction.md):
- 部署与运维:
docs/deploy/下的standard.md、offline.md、configuration.md、sync-updates.md,以及总入口 docs/deploy.md; - 使用指南:
docs/guides/下的getting-started.md、interface.md、my-collection.md、community.md、user-prompts.md、account.md、faq.md; - 浏览器扩展:
docs/extension/下的README.md、usage.md、firefox-extension-setting.md、manual-chrome-extension.md等。
这些文档与语言翻译位于i18n/ /docusaurus-plugin-content-docs/current/(如韩文版deploy/configuration.md),按需编辑即可。注意:文章内部互相引用时使用相对路径(如../deploy),在仓库根目录视角应理解为 i18n/ko/docusaurus-plugin-content-docs/current/deploy.md。
新增与编辑主页提示词(prompt.json 数据流水线)
数据结构与新增格式
主页提示词的源数据是 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 }字段说明(依据 CodeUpdateHandler.py 与 src/data/cards/100_en.json 的实际处理逻辑):
| 字段 | 类型 | 说明 |
|---|---|---|
zh/en等 | 对象 | 每种语言的title(标题)、prompt(提示词正文)、description(描述)、remark(标注/备注) |
website | string/null | 来源网站链接,可为null |
tags | string[] | 标签数组(如["music"]),用于分类与“相关推荐”计算 |
id | number | 唯一 ID,建议 ≥ 500,避免与现有提示词/社区内容冲突 |
weight | number | 权重/热度,构建时被重命名为count,参与相关推荐排序 |
实际仓库中的卡片数据(如 src/data/cards/100_en.json)在构建后会包含id、tags、website、count、related、metaTitle、metaDescription、faq以及datePublished/dateModified等字段,均由脚本自动生成,无需手写。
运行构建脚本
编辑完成后,在仓库根目录执行:
python CodeUpdateHandler.py该脚本(CodeUpdateHandler.py)会:
- 按语言拆分主数据:生成
src/data/prompt_<locale>.json(如prompt_en.json、prompt_ko.json),供各语言首页读取;同时生成src/data/default/favor_<locale>.json与other_<locale>.json两个精选列表(分别由favor_ids与other_ids过滤得到)。 - 为每条提示词生成卡片数据:写入
src/data/cards/<id>_<locale>.json,包含related(相关推荐)、metaTitle、metaDescription、faq与日期字段;compute_card_dates会在内容未变时保留旧日期,内容变更时只更新dateModified,保证跨构建稳定。 - 自动生成详情页:为 1..max_id 的每个 ID、每种语言生成
src/pages/prompt/<id>.tsx与i18n/<locale>/docusaurus-plugin-content-pages/prompt/<id>.tsx(内容为import PromptPage ...的模板),无需手动创建页面文件。 - 同步首页:将 src/pages/index.tsx 复制到各语言
i18n/<locale>/docusaurus-plugin-content-pages/index.tsx,并做favor_zh-Hans → favor_<lang>、other_zh-Hans → other_<lang>的变量替换。 - 简体/繁体转换:若安装了
opencc(opencc-python-reimplemented),zh-Hant内容由简体自动转换生成;未安装时跳过转换并保持简体内容(脚本会打印警告)。
数据流水线
注意事项
id必须 ≥ 500,避免与既有提示词或社区内容冲突;- 自定义提示词默认没有精选元描述(
meta_cards.json中未登记)和评论数据; - 脚本依赖
src/data/meta_cards.json(精选描述映射)与src/data/meta_faqs.json(FAQ 映射),两者格式异常时仅打印警告、不中断主流程; - 新提示词加入后,
max_id随之增大,脚本会自动覆盖到所有语言的全部 ID。
对接自定义后端
默认后端与 API 模块结构
项目默认连接一个共享后端(登录、收藏、社区、评论、跨设备同步均依赖它),后端服务本身未开源。前端接口契约完整文档化在 src/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/index.ts 的统一导出):
| 模块 | 核心导出 | 说明 |
|---|---|---|
| config.ts | API_URL、GAUTH_API_BASE、USE_LEGACY_GAUTH | 主 API 地址(生产https://api.newzone.top/api,开发http://localhost:1337/api);Google OAuth 独立服务地址与旧/新流程开关 |
| client.ts | apiClient、getAuthToken、persistAuthToken、clearUserProfileCache | 基于 Axios 的实例:请求拦截器自动附加Authorization: Bearer <token>;响应拦截器统一处理 401(清除 token 与全部用户缓存)并抽取 Strapi 错误消息;超时 30s |
| auth.ts | register、login、changePassword、forgotPassword、resetPassword、sendPasswordlessLink、loginWithToken、getGoogleAuthUrl、googleLogin | 认证流程 |
| prompts.ts | getPrompts、submitPrompt、updatePrompt、deletePrompt、getCommPrompts、voteOnUserPrompt、fetchAllCopyCounts、updateCopyCount | 提示词 CRUD、批量获取、分页搜索、投票与复制计数 |
| favorites.ts | patchFavorites | 收藏增量操作(delta 结构) |
| myspace.ts | getMySpace、clearMySpaceCache、updateMySpaceOrder、updateCustomTags | 我的空间聚合数据(收藏、社区、用户提示词等) |
| comments.ts | getComments、postComment | 评论读写 |
| user.ts | getUserAllInfo、updateUsername | 用户信息 |
缓存机制:lscache + ETag
API 数据通过lscache与 ETag 实现智能缓存,核心逻辑在 src/utils/cache.js:
- 写入:
setCacheWithETag原子性地同时写入数据与 ETag(同一 TTL);服务端未返回 ETag 时自动清除旧 ETag,防止“旧 ETag 配新数据”。 - 读取:
getCache先查内存层memCache(返回同一对象引用,保证 Reactmemo/浅比较命中),未命中再降级到lscache并回填。 - 304 复用:当请求携带
If-None-Match且服务端返回304 Not Modified时,直接复用本地缓存,并通过extendCache连带续期 ETag,减少数据传输。社区列表分页接口getCommPrompts(src/api/prompts.ts)即采用此模式:validateStatus: (status) => status === 200 || status === 304。 - TTL 与清理:
CACHE_TTL定义了各类数据的缓存时长(如卡片 100 天、社区 30 天、复制计数 10 天、不可用内容 1 年);flushCacheByPrefix按前缀批量失效;cleanupLegacyCache一次性清理旧版缓存前缀。
从源码结构看,各 TTL 常量与缓存键前缀是后续对接自定义后端时需要重点对齐的约定:若自定义后端不支持 ETag,则这些条件请求逻辑自动退化为全量拉取,仅本地缓存仍生效。
部署形态与自定义后端的关系
是否需要自定义后端,取决于部署形态(参见 i18n/ko/docusaurus-plugin-content-docs/current/deploy.md):
| 形态 | 后端 | 适用场景 |
|---|---|---|
| Standard(默认) | 复用官方共享后端 | 改站点名、描述、提示词即可;登录、收藏、社区、同步开箱即用 |
| 离线版 | 无后端,数据存浏览器本地 | 企业内网/政府网络等隔离环境,无需账号 |
| 完全自托管后端 | 独立后端 | 需要独立账号体系、完整数据主权或私有社区 |
前两种形态无需自行实现后端;第三种因后端未开源,需要与开发者联系确认部署方案与支持。
小结
AI Short 的自定义从「改配置」到「接后端」共四个层次:
- 站点级:编辑 docusaurus.config.js 修改标题、导航、主题与多语言配置;
- 文档级:编辑 docs/ 下的 Markdown 文件;
- 数据级:在 src/data/prompt.json 新增/编辑提示词(
id≥ 500),运行python CodeUpdateHandler.py自动生成各语言数据与页面; - 后端级:对照 src/api/ 的接口契约对接自定义后端,并理解
lscache + ETag缓存机制(src/utils/cache.js)以保证数据新鲜度与性能。
配置完成后,参照 docs/deploy.md 选择 Standard、离线或完全自托管形态进行构建部署即可。
- AI 应用
- 提示工程
- 人工智能
- 前端
【免费下载链接】ChatGPT-Shortcut
Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库
相关推荐
AI Short 配置与自定义指南:修改站点标题、主页提示词与对接自定义后端
AI Short 配置与自定义指南:修改站点标题、主页提示词与对接自定义后端 AI Short(ChatGPT Shortcut)是一个基于 Docusauru
AI 应用提示工程人工智能前端AI Short(ChatGPT-Shortcut)配置与自定义实战:改站点标题、扩展主页提示词数据流水线与对接自定义后端
AI Short(ChatGPT Shortcut)配置与自定义实战:改站点标题、扩展主页提示词数据流水线与对接自定义后端 AI Short 是一个完全开源的提
AI 应用提示工程人工智能前端ChatGPT-Shortcut(AI Short)配置定制指南:站点标题、首页提示词数据管道与自定义后端接入
ChatGPT Shortcut(AI Short)配置定制指南:站点标题、首页提示词数据管道与自定义后端接入 本篇指南基于 AI Short(仓库 ChatG
AI 应用提示工程人工智能前端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考