mcpField
G
goodcase

goodcase

github.com/learnprompt创意与媒体10138 次安装2 周前更新
代码仓库

关于 goodcase

goodcase 是一项通过公开 API 查询 goodcase.ai 人工精选 AI 创作案例的技能。它面向需要真实案例、署名和原始提示词的 Agent 与用户,也支持按可复现方式抽样评测模型。

主要功能

  1. 01按关键词和分类搜索案例
  2. 02获取完整提示词与编辑点评
  3. 03按推荐模型筛选案例
  4. 04使用可复现的 seed 抽样
  5. 05结合站内复测记录比较模型表现

适用场景

  1. 01查找 AI 图像、视频、网页、文案或硬件案例
  2. 02获取原始提示词及创作者署名
  3. 03为模型评测抽取可复现的案例集
  4. 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 硬件)。传入其他值会返回 400
  • q:关键词,匹配 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 参数。

每条案例必须包含:

  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