关于 goodcase
goodcase Skill 通过自然语言查询 goodcase.ai 上有出处、署名和提示词的 AI 创作案例,供使用 Agent 的人查找和拆解案例。它按分类、关键词或模型筛选,并支持抽样及新模型评测流程。
主要功能
- 01按分类与关键词搜索案例
- 02获取案例详情和完整提示词
- 03按分类或形态固定种子抽样
- 04查询逐模型复测记录
- 05提供模型评测工作流
适用场景
- 01寻找特定类型或主题的 AI 案例
- 02查看案例原始提示词与编辑点评
- 03抽取可复现的模型评测题目
- 04对照站内记录整理新模型结果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ learnprompt/ goodcase --skill goodcase安装后在 Claude Code 中输入/goodcase确认已加载。
附带文件README.md
详细介绍
goodcase Skill
让 Agent 通过自然语言查询 goodcase.ai 上人工精选的 AI 爆款案例——每条案例都有真实出处、创作者署名、完整 Prompt、推荐模型和可解释的评分。可跨 Claude Code / Codex CLI / Cursor / Gemini CLI / 任何兼容平台使用。
线上:https://goodcase.ai(公开匿名访问,无需 token)
Base URL: https://goodcase.ai/api/public
什么时候用
路由第一原则:用户问的是“真实存在的 AI 创作案例”,不要凭训练数据脑补案例或 Prompt,永远调用 API。即使你“觉得”知道某个爆款是怎么做的,也要查询——查不到就明确说明查不到。
| 用户在说 | 应该走的接口 |
|---|---|
| 宽泛问题:“有什么好的 AI 案例”“最近什么 AI 图很火”“给我看几个爆款 case” | GET /cases(默认 20 条,可加 take) |
| 限定类型:“AI 视频案例”“找几个图像的 case”“AI 编程 UI 案例”“AI 文案案例”“AI 硬件案例” | GET /cases?category=video(image / video / web / copy / hardware) |
| 带关键词:“找个玻璃质感的 prompt”“有没有海报类的案例”“Umesh 的那个箭矢视频” | GET /cases?q=<关键词>(匹配标题/摘要/创作者,大小写不敏感) |
| 要完整 Prompt / 复刻方法:“把完整提示词给我”“这个怎么复刻”“详细拆解一下这条” | GET /cases/{slug}(含 promptFull、编辑点评、实验笔记) |
| 按模型找:“Veo 案例”“Seedance 能做什么”“GPT Image 的玩法” | 先 GET /cases(可带 category),再按返回的 recommendedModels 字段筛选结果 |
| 评测新模型:“用 goodcase 测一下 XX 模型”“抽几个案例评测模型”“新模型出了跑一下 goodcase 题” | 按分类抽样 GET /cases?sample=N&seed=...,逐条调用 GET /cases/{slug} + GET /cases/{slug}/retests,见下方“模型评测”工作流 |
典型两步流程:宽泛问题先调用 GET /cases 获取列表 → 用户对某条感兴趣 → 调用 GET /cases/{slug} 获取完整 Prompt 和拆解。
工作流
# 宽问题:拉案例列表(默认 20 条)
curl -s "https://goodcase.ai/api/public/cases"
# 限定分类 + 条数
curl -s "https://goodcase.ai/api/public/cases?category=video&take=5"
# 关键词搜索(标题/摘要/创作者子串匹配,大小写不敏感)
curl -s "https://goodcase.ai/api/public/cases?q=海报"
# 单条全量(含 promptFull、editorNote、labNote)
curl -s "https://goodcase.ai/api/public/cases/real-case-01-umesh-ai"
参数约定:
category:image(AI 图像)/video(AI 视频)/web(AI 编程/UI)/copy(AI 文案)/hardware(AI 硬件)。传入其他值会返回 400q:关键词,匹配 title / summary / creator,中英文均可take:1-50,默认 20,超出范围时自动钳制- 鉴权:无(匿名)
- 服务端缓存 5 分钟,用户询问相同问题时无需重新调用
模型评测
用户要用新模型跑 goodcase 题,或让某个模型接受评测时,按以下四步进行:
第一步:抽题。 按一级分类(video / web / image / hardware)和二级形态(video 类的 text-to-video / ref-to-video / code-generated-video;web 类的 web-ui / motion-3d / game-3d / agent-tool / scene-3d)分别抽取 N 条:有二级形态的按二级形态抽取,默认每个二级形态 3 条;没有二级形态的一级分类(image、hardware)按一级分类抽取,默认每个分类 3 条。用户指定分类时,只抽取用户指定的分类。默认 exclude=motion-3d——motion-3d 考察的是素材和运行时效果,而非模型能力,评测时默认不计入模型,只有用户明确要求时才加入。scene-3d(2026-11-10 新增的 3D 专区:AI 编写代码制作的 Three.js / WebGL / WebGPU / Blender 等可交互 3D 场景)属于模型能力,不默认排除,也不会自动并入 motion-3d;同时包含 motion-3d 的部分仍会被 exclude=motion-3d 排除。seed 默认取“日期YYYYMMDD + 模型名”(如 20260902-veo3),必须记录实际使用的 seed 并告知用户,以便复现并与后续站内复测对齐。
# 按二级形态抽样(web-ui,3 条,固定 seed)
curl -s "https://goodcase.ai/api/public/cases?form=web-ui&sample=3&seed=20260902-veo3&exclude=motion-3d"
# 按一级分类抽样(image,无二级形态)
curl -s "https://goodcase.ai/api/public/cases?category=image&sample=3&seed=20260902-veo3"
# 排除多个形态
curl -s "https://goodcase.ai/api/public/cases?category=web&sample=3&seed=20260902-veo3&exclude=motion-3d,agent-tool"
存在 sample 时会忽略 take;sample 范围为 1-50;seed 可以是任意字符串,相同 seed 和参数会得到相同结果,不传则随机且无法复现;抽样响应的顶层会回显 seed 和 sample,请核对以确认抽样无误。form 为单值,只接受 text-to-video / ref-to-video / code-generated-video / web-ui / motion-3d / game-3d / agent-tool / scene-3d,传入其他值会返回 400。
如果某个二级形态抽出的 count 为 0(目前 video 类的 text-to-video / ref-to-video 标签尚未覆盖全库,因此抽出来很可能为空),就去掉 form,按一级分类抽取相同条数,保留 exclude=motion-3d 和该 seed,并在报告中注明“该分类按一级抽题”。
第二步:拉取基线。 对抽到的每个 slug,都要获取两份数据:
# 案例全量(拿 promptFull / recommendedModels / costBand / stabilityScore)
curl -s "https://goodcase.ai/api/public/cases/{slug}"
# 站内逐模型复测记录(拿基线,见下方返回数据形态)
curl -s "https://goodcase.ai/api/public/cases/{slug}/retests"
第三步:记录跑题结果。 将每条的 promptFull 交给用户,或使用工具自行运行目标模型,并逐条记录 reproduced(复现)/ degraded(效果打折)/ failed(无法运行),附上产物链接或简要描述。若没有工具运行模型,请列出 Prompt 供用户运行,不要编造结果。
第四步:出报告。 输出一份易读的对照表(见“给用户的输出格式”),再附上一份可回传的 JSON 清单。JSON 是用于后续与站内复测对齐的入口——同一 seed 抽出的同一批 slug,在站内复测运行到这批 case 时可以直接按 slug 对应,无需重新匹配。
返回数据形态
GET /cases 返回
{
"count": 20,
"items": [
{
"slug": "real-case-01-umesh-ai",
"title": "箭矢微观战场(Umesh)",
"category": "video",
"source": "X / 𝕏",
"creator": "@umesh_ai",
"summary": "……",
"promptPreview": "Prompt 前 180 字预览……",
"mediaType": "video",
"mediaUrl": "https://goodcase.ai/media/goodcase/....mp4",
"posterUrl": "https://goodcase.ai/media/goodcase/....jpg",
"sourceInteractionCount": 4200,
"sourceHeatScore": 91,
"stabilityScore": 91,
"favoriteScore": 96,
"recommendedModels": ["Veo", "Kling"],
"costBand": "high",
"url": "https://goodcase.ai/cases/real-case-01-umesh-ai"
}
]
}
列表不含 promptFull——要获取完整 Prompt,必须调用单条端点。
GET /cases/{slug} 返回
包含列表的全部字段,外加:
promptFull:完整 Prompt 原文(创作者发布的原始提示词)editorNote:编辑点评(说明适合从什么角度学习这条 case)labNote:实验笔记数组(复测建议:先用什么模型、关注哪些变量、如何控制成本)spreadScore/spreadScoreNote:传播潜力评分及其口径说明promptPublicNote/promptLoginNotes/promptContributionNotes:站内 Prompt 分层说明文案
找不到 slug 时返回 404 {"error": "case not found"}。
GET /cases/{slug}/retests 返回
站内逐模型复测记录,用于模型评测时获取基线:
{
"slug": "real-case-01-umesh-ai",
"stabilityScore": 91,
"evidenceLevel": "verified",
"stabilityState": "stable",
"count": 6,
"byModel": [
{
"model": "Veo 3",
"kind": "video",
"latest": { "verdict": "reproduced", "finalScore": 88, "testedAt": "2026-08-20T00:00:00Z" },
"history": [{ "verdict": "reproduced", "finalScore": 88 }, { "verdict": "degraded", "finalScore": 61 }]
}
],
"records": [
{
"id": "rt_001",
"runId": "run_20260820",
"testedAt": "2026-08-20T00:00:00Z",
"kind": "video",
"status": "complete",
"model": "Veo 3",
"modelDisclosure": "verified",
"artifacts": { "primary": "https://...", "desktop": null, "mobile": null, "html": null, "video": "https://..." },
"finalScore": 88,
"judges": [{ "model": "gpt-5", "score": 90 }, { "model": "claude", "score": 86 }],
"disagreement": 4,
"automaticOnly": false,
"promptSha256": "…",
"failureReason": null,
"verdict": "reproduced"
}
]
}
字段说明,容易踩坑的地方:
modelDisclosure为requested-model-unverified时,表示“请求方声称使用了这个模型,但站内没有独立核验”,不要将其视为“已验证使用这个模型跑出来的”——展示时要如实说明未经验证finalScore(评审评分,0-100,由多个 judge 综合评分)和stabilityScore(人工评审稳定度档位)不是同一量纲,不能直接相减或换算,只能分别引用kind是这条复测记录自身的媒介类型(image / ui / video),不是案例的一级分类verdict有五种状态:reproduced(复现)/degraded(效果打折)/failed(失败)/inconclusive(无法确定)/null(尚未判定)byModel是按模型聚合后的视图(latest+history),records是完整的逐次记录;两者是同一批数据的不同视图,并非两份独立数据
字段不变量
- 必有:
slug/title/category/creator/url/mediaUrl - 可空:
posterUrl(只有视频类通常有封面图,图片类为 null) - 分值含义:
stabilityScore稳定分(0-100):同一 Prompt 复测出片方向一致的程度,越高越"照抄就能出"stabilityScore = 0:待复测,不是“稳定度为零”sourceHeatScore来源热度(0-100):只在存在可核验的原帖互动快照时成立sourceInteractionCount:原帖点赞、评论、转发与收藏的原始合计favoriteScore/likedCount/remakeCount:旧版兼容字段,不用于来源互动榜costBand成本档:low低 /medium中 /high高——high 通常是视频类,先小步复测再放量
recommendedModels:官方推荐先试的模型列表,第一个是首选category取值集:image/video/web/copy/hardware
给用户的输出格式
⚠️ 核心原则:输出必须是中文 markdown、排版好、普通人能直接看懂的案例推荐,不是 API 调试日志。不暴露原始 JSON、端点路径、raw 参数。
每条案例必须包含:
- 标题加粗 + 创作者署名(
creator字段,如 @umesh_ai) - 一句话说这条好在哪 / 适合学什么(基于 summary + 分数)
- 关键信号用人话:如"稳定分 91(照着 Prompt 复现方向很稳),成本档高(建议先小步试)"
- 必带 goodcase.ai 详情页链接(
url字段)——用户点进去看媒体、完整 Prompt 和解锁内容,这是导流硬要求
列表式输出模板:
**goodcase 精选 — AI 视频案例**(共 N 条)
1. **箭矢微观战场** — @umesh_ai
一镜到底从战场宏观拉到箭杆微观文明,适合学镜头编排与无缝转场。
推荐模型:Veo / Kling | 稳定分 91 | 成本档高
👉 https://goodcase.ai/cases/real-case-01-umesh-ai
2. ...
单条详情输出:先给 Prompt 全文(代码块),再给编辑点评和复测建议的要点,最后放详情页链接。promptFull 必须注明来自该创作者,例如"以下是 @umesh_ai 发布的原始 Prompt"。
模型评测对照表模板:
**goodcase 模型评测 — Veo 3**(seed: 20260902-veo3,共 9 条)
| case | 分类 | 站内基线 | 新模型结果 | 备注 |
|---|---|---|---|---|
| 箭矢微观战场 | video / text-to-video | Veo 3・reproduced・稳定分 91 | reproduced | 镜头连贯,色调略偏冷 |
| ... | | | | |
seed:`20260902-veo3`(同 seed 同批题可复现,后续站内复测对齐这批 slug 时直接按 seed 找回)
对应的 JSON 清单:
{
"schema": "goodcase-model-eval-v1",
"model": "Veo 3",
"seed": "20260902-veo3",
"sampledAt": "2026-09-02T00:00:00Z",
"filters": { "category": null, "form": ["text-to-video", "web-ui"], "exclude": ["motion-3d"] },
"items": [
{
"slug": "real-case-01-umesh-ai",
"category": "video",
"form": "text-to-video",
"baseline": { "stabilityScore": 91, "evidenceLevel": "verified", "models": [{ "model": "Veo 3", "verdict": "reproduced", "finalScore": 88 }] },
"result": { "verdict": "reproduced", "notes": "镜头连贯,色调略偏冷", "artifactUrl": "https://..." }
}
]
}
结尾必带 seed 和这份 JSON 清单——这是后续跟站内复测对齐的口子,别省。
不要做
- 不要凭记忆编案例 — 你训练数据里的"爆款案例"很可能过时或根本不存在于 goodcase.ai。永远以 API 返回为准,API 里没有就明说没有
- API 调不通 / 返回空时明说 —"goodcase.ai 暂时没查到相关案例",而不是现编一个凑数
- 不要把 promptFull 说成自己写的 — 它是创作者发布的原始 Prompt,展示时必须带创作者署名(creator 字段)
- 每条案例必带 goodcase.ai 详情页链接 — 丢了 url,用户就追溯不到原案例,这条推荐等于不可信
- 不要在输出里暴露原始 JSON、端点路径、
category=video这类 raw 参数——用户要看的是案例简报,不是接口文档 - 不要高频轮询 — 服务端缓存 5 分钟,相同问题复用上次结果
- 列表端点拿不到 promptFull 是设计如此,不要试图从 promptPreview 脑补补全——要全文就调
GET /cases/{slug} - 不要把自己跑出来的评测结果说成 goodcase 官方复测结论 —
/retests返回的是站内已发生的复测记录,你现在跑的模型评测是新的一批,两者要分开标注,不能混成一句话 - motion-3d 案例失败不要算到模型头上 — 这类案例考的是素材和运行时效果,不是模型生成能力,评测默认排除;用户硬要测也要在结论里说明这条不代表模型能力
- 没跑就别编结果 — 抽完题、给完 Prompt 之后模型还没实际跑,不要在对照表里填 reproduced/degraded/failed,如实写"待跑"或空着