- AI 应用
- 提示工程
- 人工智能
- 前端
【免费下载链接】ChatGPT-Shortcut
Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库
社区提示词(Community Prompts)是 ChatGPT-Shortcut 中由用户共享、经投票机制筛选的公开提示词库。本文将围绕 i18n/th/docusaurus-plugin-content-docs/current/guides/community.md 的核心内容,结合仓库前端源码(列表页、详情页、投票与收藏逻辑),为你讲透社区页的排序过滤、投票机制、私有化切换与讨论区功能,并给出与自定义提示词、我的收藏的联动关系,帮助你把提示词"存进来、投出去、收进库"。
社区提示词是什么
在 ChatGPT-Shortcut 中,除了官方预置的提示词库(首页卡片),任何登录用户都可以通过"创建提示词"把自写内容发布到社区,形成Prompt ชุมชน(社区提示词)。社区页面聚合了其他用户主动分享的内容,你可以浏览获取灵感,也可以把自己创作的东西分享出去。投票机制是社区内容排序的核心:有用且受欢迎的提示词会不断攀升,质量较弱的提示词则会在足够多的反对票后从列表中被隐藏。
从源码看,社区页是独立的 React 路由页面 src/pages/community-prompts.tsx,它通过 src/api/prompts.ts 中的getCommPrompts()向后端/userprompts端点分页拉取数据;单条提示词的详情由 src/components/CommunityPromptPage.tsx 渲染。社区数据与官方卡片(cards类型)不同,属于commus类型的用户生成内容,由 Strapi 后端存储并通过/userprompts/bulk批量获取。
排序与筛选
社区列表页顶部提供了两种排序维度与一个搜索框(src/pages/community-prompts.tsx):
| 排序/筛选 | 说明 |
|---|---|
| 最新发布(默认) | 按id倒序,展示最近分享的提示词,对应后端的sort=id:desc |
| 最多赞 | 按upvoteDifference倒序,展示净赞数最高的提示词,对应sort=upvoteDifference:desc |
| 关键词搜索 | 通过页面 URL 的name查询参数驱动,无需登录即可搜索公开社区内容 |
排序切换由 antdSegmented组件实现,切换或输入搜索词后会自动回到第 1 页。搜索由 src/components/SearchBar 渲染,社区公开内容搜索不要求登录(源码注释明确"community prompts 是用户主动分享的公开内容,搜索无需登录"),但投票与收藏仍需要登录。
从底层实现看,getCommPrompts()(src/api/prompts.ts)会把搜索词 percent-encode 后拼进filters[$or]查询:同时对description(内容)、title(标题)、remark(用途说明)三个字段做不区分大小写的包含匹配。搜索词超过 100 字符会被截断,且缓存键用q_前缀隔离,避免与"无搜索"的默认列表缓存互相污染。
投票机制:赞/踩如何决定可见性
投票是社区内容治理的核心,规则如下:
- 赞(Upvote):把优质内容推到更多人面前,净赞数
upvoteDifference = upvotes - downvotes决定"最多赞"排序; - 踩(Downvote):当一条提示词累积的反对票达到阈值,就会被从列表中隐藏;
- 收藏 = 赞:把一条社区提示词加入你的收藏,会自动为它投一票赞;
- 仅限登录用户:投票前必须登录,且对同一条提示词,只有你最近一次投票生效(后投的会覆盖先投的)。
前端投票调用链
社区卡片上的投票按钮会调用vote回调(src/pages/community-prompts.tsx),其完整流程为:
- 登录检查:未登录时弹出
voteLoginRequiredText()提示并引导打开登录弹窗(文案见 src/utils/voteMessages.ts); - 会话级防重:用
sessionVotedIdsRef记录本次会话已投过的promptId_action组合,防止 API 在途时重复点击; - 乐观更新(Optimistic UI):先本地把
upvotes/downvotes/upvoteDifference更新到界面上,让点赞有即时反馈; - 请求后端:调用 src/api/prompts.ts 的
voteOnUserPrompt(promptId, action),请求POST /userprompts/{id}/vote; - 权威数据回填:成功后用服务端返回的
counts(真实upvotes/downvotes)覆盖本地,并清空列表缓存(flushCacheByPrefix(CACHE_PREFIX.COMM_LISTS))确保下次刷新看到最新票数; - 失败回滚:请求出错时回滚到原始票数,移除会话标记,并提示
voteFailedText(action)。
收藏即投票的源码印证
"收藏 = 赞"在 src/hooks/useFavorite.tsx 中有明确实现:当isComm=true收藏社区提示词时,addFavorite()在收藏 PATCH 成功后会异步追加一次voteOnUserPrompt(id, "upvote")(不阻塞收藏流程,.catch(() => {})静默处理失败)。同时它还做了本地预校验:不能收藏自己发布的提示词(会直接提示"不能收藏自己的提示词"并省掉一次注定 403 的 PATCH 请求)。反方向,取消收藏(useFavorite.tsx)则只移出收藏、不会自动投踩。
投票按钮的 UI 细节
在详情页 src/components/CommunityPromptPage.tsx 中,投票按钮被设计为非对称的"投票胶囊"(vote pill):▲ 永远带数字(主信号),而 ▼ 在downvotes=0时只显示图标弱化呈现;只有当踩数大于 0 时才显示数字。整个控件带role="group"与aria-label无障碍标注,fontVariantNumeric: "tabular-nums"保证数字等宽对齐。字符数与 token 估算(estimateTokens)也会在标题下方的元信息行展示,帮助读者判断提示词体量。
私有提示词:公开与私有的切换
并非所有想法都适合公开。创建或编辑提示词时,底部的"分享到社区"开关控制可见性(详见 用户提示词指南):
- 开启(默认):提示词发布到社区列表,其他用户可见、可收藏、可投票;
- 关闭:提示词变为私有,仅你自己可见;
- 随时可切换:公开/私有状态可以反复切换,不需要重建。
私有化在数据层也有兜底:当一条社区提示词被作者转为私有或删除后,前端getPrompts()(src/api/prompts.ts)会通过/userprompts/check-updates校验发现它已不在返回列表,从而把缓存条目标记为_unavailable: true、_unavailableReason: "unshared",并保留一份带 1 年 TTL 的"不可用"缓存——这意味着即便作者取消分享,已经收藏过它的用户仍能看到缓存内容(界面会提示"该提示词可能已被删除或设为私有")。这是"私有化即刻生效、但已消费内容不硬性消失"的设计取舍。
讨论区:评论与表情互动
打开任意社区提示词的详情页(src/components/CommunityPromptPage.tsx),除了完整内容(标题、作者、字符数、tokens、正文、作者备注),底部还有讨论区:登录后即可发表评论、参与对话,支持表情(emoji)和 GIF。
讨论区由 src/components/Comments.tsx 实现(通过lazyWithRetry按需加载,避免把评论组件链拖入首屏主包),并以pageId+type="userprompt"关联到具体社区提示词。详情页外层会通过onCountChange回调显示"讨论 · N"的评论数徽标。分享按钮同样支持把当前提示词分享到社交平台(ShareButtons 懒加载)。
与其他功能的联动
社区提示词并非孤立模块,它与账号体系内两个核心功能深度联动:
| 关联功能 | 联动方式 |
|---|---|
| 自定义提示词 | 社区内容来自用户创建的提示词,开关控制发布/私有 |
| 我的收藏 | 收藏社区提示词 = 自动赞 + 收入个人库,可在"我的收藏"中统一管理 |
在"我的收藏"视角(我的收藏指南)中,收藏的社区提示词与自建提示词一同展示,支持标签分类、拖拽排序、跨设备同步;而收藏社区条目会自动带来源标记source: "community",与服务端commLoves字段保持一致,确保心形按钮的状态判断始终与服务端权威值同源。
性能与体验设计
社区页在体验上有几处值得注意的实现(可作为理解社区功能运行原理的补充):
- 构建期快照:社区首屏数据由 src/utils/snapshotPrime.ts 从构建期生成的
communitySnapshot.json预热到本地缓存(列表层 + 详情层),让 SSG HTML 首屏即含真实卡片,并把网络请求延后为后台静默刷新(SWR 模式); - 分页:每页 12 条(
COMMUNITY_PAGE_SIZE = 12),列表底部提供分页器与快速跳转; - ETag 条件请求:
getCommPrompts()携带If-None-Match头,服务端返回 304 时直接复用本地缓存并延长 TTL,减少不必要的流量; - 请求节流:同一条缓存键 1 小时内不再重复请求后端,失败时也会留下 1 小时的抑制窗口,避免对后端反复重试。
这些机制共同保证了社区列表在移动端与桌面端的流畅体验,同时让投票、收藏后的排序结果能较快反映到界面上。
小结
通过本文你可以完整掌握 ChatGPT-Shortcut 社区提示词的使用链路:在 社区列表页 用"最新/最多赞/关键词"筛选内容 → 在 详情页 查看完整信息并投票、收藏、评论 → 通过"分享到社区"开关管理自己的内容公开/私有 → 在"我的收藏"统一整理。投票决定内容可见性、收藏自动点赞、私有化随时可切换,这三个机制构成了社区内容自治的核心闭环。
- AI 应用
- 提示工程
- 人工智能
- 前端
【免费下载链接】ChatGPT-Shortcut
Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor · Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词:现成的拿来就用,好用的收进自己的库
相关推荐
ChatGPT-Shortcut 社区提示词(Topluluk Promptları)完全指南:探索、投票、收藏与讨论
ChatGPT Shortcut 社区提示词(Topluluk Promptları)完全指南:探索、投票、收藏与讨论 社区提示词(Community Prom
AI 应用提示工程人工智能前端ChatGPT-Shortcut 社区提示词机制详解:投票排序、收藏联动与私密分享的实现原理
ChatGPT Shortcut 社区提示词机制详解:投票排序、收藏联动与私密分享的实现原理 社区提示词(Community Prompts)是 ChatGPT
AI 应用提示工程人工智能前端ChatGPT-Shortcut 社区提示词(Community Prompts):投票、筛选、私有化与讨论的完整使用指南
ChatGPT Shortcut 社区提示词(Community Prompts):投票、筛选、私有化与讨论的完整使用指南 在 ChatGPT Shortcut
AI 应用提示工程人工智能前端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考