mcpField
W
whop-dev

whop-dev

github.com/steve-cooks開発386 回インストール3 週間前に更新
リポジトリ

whop-dev について

Whop上で動作するアプリの開発・保守向けスキルです。認証、API、決済、Webhook、UI、デプロイの最新ガイドに加え、旧コードの移行確認も扱います。

主な機能

  1. 01アプリのスキャフォールドとデプロイ指針
  2. 02JWT検証とアクセス確認
  3. 03Whop SDKとAPIバージョンの指針
  4. 04チェックアウトとWebhook処理
  5. 05UIとデザインの参考資料

活用シーン

  1. 01新しいWhopアプリのスキャフォールド
  2. 02旧Whop連携の更新
  3. 03アクセス確認や決済フローの実装

MCP 対応

Whop APIとドキュメント向けの任意のMCPサーバーとして、`https://mcp.whop.com/mcp` と `https://docs.whop.com/mcp` を掲載しています。APIサーバーはブラウザーサインインを使用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/steve-cooks/skills --skill whop-dev

インストール後、Claude Code で/whop-devを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api-and-sdk.md
auth-and-access.md
build-and-ship.md
design-principles.md
payments.md
ui.md
webhooks.md

詳細

Whop アプリの開発

Whop アプリは whop.com 上の iframe 内で動作します。Whop はサインイン済みユーザーを JWT として送信し、サーバーがそれを検証して、そのユーザーがアクセスできる内容を確認し、API キーを使って Whop API と通信します。支払いはチェックアウトを通じて行われ、サーバーは署名付き Webhook からその情報を受け取ります。

Whop のスタックは 2026 年 7 月から 10 月にかけて大きく変わりました。チュートリアル、古いテンプレート、モデルの記憶にあるコードは、現在では誤っていることがよくあります。記憶よりも、このスキルと最新の Whop ドキュメントを優先してください。

優れた Whop アプリの条件(提案)

アプリを成功させるためのガイドラインです(必須要件ではありません。ユーザーの要望が優先されます)。

原則説明
クリエイターの力を引き出すカスタマイズ機能を提供し、それぞれの whop に独自性を持たせます
発見を促すユーザーがほかのユーザーを呼び込めるよう、何らかの共有機能や投稿できる仕組みをアプリに設けます
持続可能な価格設定にするクリエイターや顧客から過剰に料金を取らずに収益を上げます
UX をシンプルに保つ中心となる操作を分かりやすくし、クリック数を最小限に抑えます

詳細: design-principles.md

変更点(旧 → 現在)

旧(古い情報)現在
new Whop({ apiKey, appID, webhookKey })、@whop/api@whop/sdk 2.x の new WhopClient({ token })。環境変数は読み込みません。
TypeScript の whopsdk.verifyUserToken(headers)削除されました。jose を使って JWT を自分で検証してください(auth-and-access.md)
whopsdk.webhooks.unwrap(...)、btoa(secret)@whop/sdk/helpers の unwrapWebhook(rawBody, { headers, key })。シークレットはそのまま渡します
プラン、企業、company_idバリアントとアカウント、account_id。ID のプレフィックスは plan_ / biz_ のままです
memberships.cancel は期間終了時に解約cancel_at_period_end: true を指定しない限り、アクセス権は即時に終了します
@whop/api の chargeUserサーバーで checkoutConfigurations.create を実行し、その後クライアントで iframeSdk.inAppPurchase({ planId, id }) を実行します
@whop/checkout の WhopCheckoutEmbedWhop Elements の <Checkout><CheckoutElement/></Checkout> に置き換えられました
API v2、v5 の WebhookAPI v1(https://api.whop.com/api/v1)。v2 は 2026-11-13 に停止します
Vercel でホストする Next.js テンプレートがデフォルトWhop がホストする whop apps init(Vite + TanStack Start)。Next.js のセルフホストも引き続き可能です
https://mcp.whop.com/ssehttps://mcp.whop.com/mcp

基本ルール

  1. 保護されたリクエストごとに、サーバーでユーザーを検証してください。 iframe ページ、サーバー関数、API ルートでは、x-whop-user-token を読み取り、Whop の JWKS に対して検証してから、users.checkAccess を呼び出します。クライアントや URL から渡されたユーザー ID を決して信用しないでください。Webhook、OAuth コールバック、公開チェックアウトページでは、それぞれ独自の検証を行います。
  2. ビューごとにアクセスを制限してください。 Experience ビューでは has_access を必須とします。Dashboard ビューでは access_level === "admin" を必須とします。
  3. サーバー側で支払いが確認された後にのみ、商品やサービスを提供してください。 通常は、検証済みの payment.succeeded webhook を確認し、自分の注文記録と照合します(チェックアウトの metadata はブラウザーから設定できる場合があります)。クライアントコールバックとリターン URL は参考情報であり、支払いの証明にはなりません。
  4. Webhook ペイロードは信頼できないデータとして扱ってください。 まず未加工の本文で署名を検証し、型が定義されたフィールドのみを読み取ります。2xx を返す前(5 秒以内)に、一意の webhook-id を使ってイベントを永続的に保存し、その後、再試行を伴う処理を行ってください。
  5. API バージョンを固定してください。 @whop/sdk はビルド対象の Api-Version-Date を送信するため、apiVersionDate を上書きせず、SDK のバージョンを固定してください(上書きするとレスポンスは変わりますが、SDK の型は変わりません)。REST を直接呼び出す場合は Api-Version-Date を送信してください。保存済みの固定バージョンがない古いキーには、2025-01-01 の形式が適用されます。Webhook には独自の api_version_date 固定値があります。
  6. チャット、クライアントコード、ログ、Git にシークレットを含めないでください。 .env* ファイルが Git の追跡対象外になっていることを確認し、ユーザー自身に入力してもらうか、whop apps secrets set を実行してもらってください。変数名のみを参照してください。
  7. 取り消し不能な操作の前には確認してください。 本番環境へのデプロイ、返金、キャンセル、送金、支払いには、ユーザーの明示的な確認が必要です。また、金銭やアクセスを変更する API 呼び出しには、操作ごとの冪等性キーが必要です。自分の判断で送金してはいけません。
  8. 支払いはサンドボックスでテストしてください(environment: WhopEnvironment.Sandbox、キーは sandbox.whop.com から取得します)。whop CLI にはサンドボックスがないため、コマンド(whop apps init を含む)は実際のアカウントに対して実行されます。Elements はまだサンドボックスに対応していません。

ワークフロー

新規アプリ(空のフォルダー): build-and-ship.md を読みます。いくつか要件を確認し、計画について合意してから、ひな形を作成します。

既存アプリ: 作業に該当するリファレンスを参照します。

作業リファレンス
ひな形の作成、ローカル開発、権限、デプロイ、App Storebuild-and-ship.md
現在のユーザー、アクセス確認、ビュー、OAuthauth-and-access.md
SDK クライアント、API バージョン、名称変更、ページネーション、エラーapi-and-sdk.md
チェックアウト、アプリ内購入、メンバーシップ、保存済みカード、Platformspayments.md
Webhook ハンドラー、イベント、再試行webhooks.md
すりガラス風 UI、Tailwind、iframe SDK、Elements のテーマ設定ui.md
製品と成長に関するアイデアdesign-principles.md

古い Whop コードの更新: 上の表の左列に該当するパターンを探し、それぞれ置き換えます。その後、認証と webhook を最初から最後まで再確認してください。

組み込みのベストプラクティス

  • サーバーコード: 独立した処理を待機するときは Promise.all を使います。サーバー関数やアクションは公開エンドポイントのため、必ず関数内で認証します。モジュールスコープにユーザーごとのデータをキャッシュしないでください。
  • データ: どのデータベースでも使えます。行のキーには Whop ID(user_、biz_、exp_)を使います。外部キーにインデックスを設定し、クライアントに公開するデータには行レベルセキュリティを有効にします。サーバーレス環境では接続プーリングを使い、Webhook の処理はアップサートとして実装して、再試行されても問題が起きないようにします。
  • インターフェース: アクションには <button>、ナビゲーションには <a> を使い、アイコンのみのボタンには aria-label を追加します。:focus-visible のスタイルを常に表示し、破壊的な操作では確認を求めるか、取り消しを可能にします。金額と日付の書式設定には Intl を使います。
  • デザイン: 汎用的なグラデーションのヒーローではなく、アプリの利用者層に合ったビジュアルの方向性を選びます。Whop のライト/ダークテーマに合わせます。多くのメンバーが Whop のモバイルアプリを使うため、モバイルファーストで構築します。
  • 完了とは、検証済みであること: テストアカウントにインストールして、実際の Whop iframe でアプリを開き、主要なフローを実行して、テスト用の Webhook を送信してから作業完了とします。

リソース

コメント