mcpField
G
goodcase

goodcase

github.com/learnpromptその他12159 回インストール今日更新
リポジトリ

goodcase について

goodcase.aiの出典と作者情報付きAI制作事例を、自然言語で検索するSkillです。カテゴリ・キーワード検索、詳細と全文プロンプトの取得、再現可能な抽出、モデル評価の手順に対応します。

主な機能

  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 スキル

Agent が自然言語で goodcase.ai 上の人手で厳選された AI のヒット事例を検索できるようにします。各事例には実際の出典、クリエイターのクレジット、完全な Prompt、推奨モデル、説明可能なスコアが付いています。Claude Code/Codex CLI/Cursor/Gemini CLI/その他の互換プラットフォームで利用できます。

オンライン:https://goodcase.ai(匿名で公開アクセス可能、トークン不要)

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 を実行します。下記の「モデル評価」ワークフローを参照してください

典型的な 2 ステップの流れ:幅広い質問には、まず 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 の課題を実行したい場合、または特定のモデルを評価したい場合は、以下の 4 ステップで進めます。

ステップ 1:課題を抽出します。 第 1 階層のカテゴリ(video/web/image/hardware)と第 2 階層の形式(video は text-to-video/ref-to-video/code-generated-video、web は web-ui/motion-3d/game-3d/agent-tool/scene-3d)ごとに N 件を抽出します。第 2 階層の形式がある場合は形式ごとに抽出し、デフォルトでは各形式から 3 件を抽出します。第 2 階層の形式がない第 1 階層のカテゴリ(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 が返ります。

特定の第 2 階層形式で抽出した結果、count が 0 件の場合(現状:video カテゴリでは text-to-video/ref-to-video のタグ付けがまだ全データに行われていないため、抽出結果が空になる可能性が高いです)、form を外して同じ件数を第 1 階層のカテゴリから抽出します。exclude=motion-3d と seed は変更せず、レポートではその形式について「このカテゴリは第 1 階層から課題を抽出」と記載してください。

ステップ 2:ベースラインを取得します。 抽出した各 slug について、以下の 2 種類のデータを取得してください。

# 案例全量(拿 promptFull / recommendedModels / costBand / stabilityScore)
curl -s "https://goodcase.ai/api/public/cases/{slug}"

# 站内逐模型复测记录(拿基线,见下方返回数据形态)
curl -s "https://goodcase.ai/api/public/cases/{slug}/retests"

ステップ 3:課題の実行結果を記録します。 各事例の promptFull をユーザーに渡すか、ツールを使って対象モデルで実行し、reproduced(再現)/degraded(品質低下)/failed(実行できず)のいずれかを事例ごとに記録します。生成物へのリンクまたは簡単な説明も添えてください。自分でモデルを実行するツールがない場合は、Prompt を明確に記載してユーザーに実行してもらい、結果を捏造しないでください。

ステップ 4:レポートを作成します。 人にわかりやすい比較表(「ユーザー向けの出力形式」を参照)と、後から送信できる JSON リストを出力します。この JSON は、後でサイト内の再評価結果と照合するために使用します。同じ seed で抽出した同じ slug の一覧なら、サイト内でその事例群を再評価する際に 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:編集者のコメント(この事例からどのような観点を学べるか)
  • 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(複数の judge の評価を統合した、0~100 の審査スコア)と stabilityScore(人手評価による安定度の段階)は異なる尺度です。直接差し引いたり換算したりできません。それぞれ個別に引用してください
  • kind は個々の再評価記録のメディア形式(image/ui/video)であり、事例の第 1 階層のカテゴリではありません
  • verdict には reproduced(再現)/degraded(品質低下)/failed(失敗)/inconclusive(判定不能)/null(未判定)の 5 種類の状態があります
  • byModel はモデルごとに集約したビュー(latest + history)で、records は個々の実行記録の全件です。同じデータを異なる切り口で表示したものであり、独立した 2 種類のデータではありません
字段不变量
  • 必有: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,如实写"待跑"或空着

コメント