mcpField
G
goodcase

goodcase

github.com/learnprompt其他12159 次安装今天更新
代码仓库

关于 goodcase

goodcase Skill 通过自然语言查询 goodcase.ai 上有出处、署名和提示词的 AI 创作案例,供使用 Agent 的人查找和拆解案例。它按分类、关键词或模型筛选,并支持抽样及新模型评测流程。

主要功能

  1. 01按分类与关键词搜索案例
  2. 02获取案例详情和完整提示词
  3. 03按分类或形态固定种子抽样
  4. 04查询逐模型复测记录
  5. 05提供模型评测工作流

适用场景

  1. 01寻找特定类型或主题的 AI 案例
  2. 02查看案例原始提示词与编辑点评
  3. 03抽取可复现的模型评测题目
  4. 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 硬件)。传入其他值会返回 400
  • q:关键词,匹配 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 参数。

每条案例必须包含:

  1. 标题加粗 + 创作者署名(creator 字段,如 @umesh_ai)
  2. 一句话说这条好在哪 / 适合学什么(基于 summary + 分数)
  3. 关键信号用人话:如"稳定分 91(照着 Prompt 复现方向很稳),成本档高(建议先小步试)"
  4. 必带 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,如实写"待跑"或空着

评论

支持 Markdown