关于 goodcase
goodcase 是一项通过公开 API 查询 goodcase.ai 人工精选 AI 创作案例的技能。它面向需要真实案例、署名和原始提示词的 Agent 与用户,也支持按可复现方式抽样评测模型。
主要功能
- 01按关键词和分类搜索案例
- 02获取完整提示词与编辑点评
- 03按推荐模型筛选案例
- 04使用可复现的 seed 抽样
- 05结合站内复测记录比较模型表现
适用场景
- 01查找 AI 图像、视频、网页、文案或硬件案例
- 02获取原始提示词及创作者署名
- 03为模型评测抽取可复现的案例集
- 04查看站内复测记录作为评测基线
MCP 相关
这是 Agent 技能,不是 MCP 服务。它指导 Agent 调用 goodcase.ai 公开 API 查询案例列表、详情和复测记录。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ learnprompt/ goodcase-lite --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 图很火”、“给我看几个爆款案例” | GET /cases(默认 20 条,可加 take) |
| 限定类型:“AI 视频案例”、“找几个图像案例”、“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;web 档 web-ui / motion-3d / agent-tool)分别抽取 N 条:有二级形态的按二级形态抽取,默认每个二级形态 3 条;没有二级形态的一级分类(image、hardware)按一级分类抽取,默认每类 3 条。用户指定了分类时就只抽取用户指定的分类。默认 exclude=motion-3d——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 / web-ui / motion-3d / agent-tool,传入其他值会返回 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,如实写"待跑"或空着