前編のClaude API でつくる収益モデル比較ガイドで、4つの課金モデルの長所と落とし穴をお話ししました。この記事はその続編で、「実際にどうやって0から月収を作るか」の実装と運用に踏み込みます。
私は2014年から個人でアプリを作り続けていて、AdMob中心の時代には月収100万円を超える時期もありました。今は同じスタンスでAI API時代のサービスをいくつか運営しています。そこで痛感したのは、「アプリの月収を作る」のと「AI APIサービスの月収を作る」のは似ているようで全然違うということです。トークン原価が常に裏で動いているため、判断のスピード感も、捨てる勇気も、別物になります。
この記事は、私が今もう一度0から始めるならこうやる、という90日のロードマップです。各フェーズの成果物(deliverable)を明示しているので、追体験できる形にしました。
なぜ2026年が「個人がClaude APIで稼ぐ」最適期なのか
Claude Sonnet 4.6 と Opus 4.6 のリリース以降、API原価が私の感覚で前年比で大きく下がりました。一方で、消費者側の「AIサービスにお金を払う」習慣は完全に定着し、月額数百円〜数千円の小さなサブスクなら抵抗なく試してもらえる時代になっています。
加えて、Anthropic はPro / Max プランを消費者に直接売る道を開拓したことで、「個人開発者が小規模AIサービスを売る」という競合が表面上は増えました。しかしこれは悪いニュースではありません。市場が広がり、ユーザーの理解度が上がり、検索ボリュームが増えたからです。
つまり今は、原価が下がり、市場が成熟し、ツールが揃った3条件が揃った珍しいタイミングです。これを逃すと、来年は大手のSaaSが業界を埋め尽くしてしまうかもしれません。今やる価値があります。
Phase 1(Day 1-15)— アイデアを「払うサイズ」まで小さくする
最初の2週間は、技術ではなくテーマ選定だけに使ってください。私は最初のSaaSで2週間コードを書いてしまい、その後そのプロダクトに合うユーザーが見つからず、無駄になりました。
種となるアイデアの3条件
良い個人開発の種には次の3つが揃っている必要があります。
- 答えが客観的に正解か不正解かに分かれる: 翻訳、要約、校正、整形のように「これが正しい出力」がある領域は、Claudeが得意で、ユーザーも価値を判断しやすい
- 1リクエストで完結する: マルチターンの会話が必要なものは、原価とサポートコストが跳ね上がります。最初は単発処理に絞る
- 既存の検索需要がある: Google Trends かキーワードプランナーで月間500回以上検索される単語が含まれていること
私の選び方
私は次の質問を自分にします。
- 自分が「これがあったら払う」と思える具体的な状況を想像できるか
- 同じ機能を提供する競合が3〜5社いるか(0社のものは需要がない可能性が高い)
- 競合のレビューに「もっとこうだったら」が共通して書かれているか
これに当てはまるなら、種としては合格です。
Day 15時点の成果物
- 1〜2文で説明できるサービス名と機能
- ターゲットユーザーの具体的な人物像(私はいつも「自分の友人の誰か」を当てます)
- 競合3社のURLと、それぞれの欠点メモ
- 価格仮説(前編で選んだモデルと、初期価格帯)
ここで2週間取られても全く問題ありません。コードを書き始める前に、この4点が揃っていない状態でPhase 2に進まないでください。
Phase 2(Day 16-30)— 最小構成のラッパーを2週間で出す
技術スタックの選定で延々と悩む人が多いですが、Claude APIラッパーの最小構成は驚くほどシンプルです。私は次の構成を推奨します。
推奨スタック(個人開発者の現実解)
- フロントエンド: Next.js 16 + TypeScript(App Router)
- デプロイ: Cloudflare Workers + OpenNext または Vercel
- DB: Cloudflare D1 / KV または Supabase(無料枠で十分)
- 認証: NextAuth.js(Google ログインだけで十分)
- 決済: Stripe Checkout
- AI:
@anthropic-ai/sdk
これで完成までに必要なコード量は、トータル1,000行未満で済みます。私のサイト群もほぼこの構成です。
最小限のClaude API呼び出し
// app/api/generate/route.ts
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
export async function POST(req: Request) {
const { input } = await req.json();
// 1. 認証 & 残高確認
const user = await getUserFromSession(req);
if (!user) return new Response('Unauthorized', { status: 401 });
const canProceed = await checkUserCanGenerate(user.id);
if (!canProceed) return new Response('Quota exceeded', { status: 402 });
// 2. Claude 呼び出し
const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{ role: 'user', content: input }],
system: 'YOUR_PRODUCT_SPECIFIC_SYSTEM_PROMPT',
});
// 3. 使用量記録(あとで集計するため)
await recordUsage({
userId: user.id,
inputTokens: message.usage.input_tokens,
outputTokens: message.usage.output_tokens,
model: 'claude-sonnet-4-6',
});
return Response.json({ result: message.content[0] });
}このコードに含まれていない「リトライ」「ストリーミング」「ツール使用」などは、すべて Phase 4 以降の話です。最初は付けないでください。
Day 30時点の成果物
- 1ページだけの、入力フォームと出力結果が動くアプリ
- ユーザー認証
- 1日5回までの無料試用上限(DBにカウンターを置くだけ)
- まだ課金は実装しない
ここまでで「動くもの」を友人2〜3人に触ってもらえれば、Phase 2は完了です。
Phase 3(Day 31-45)— Stripe統合と収益動線
ここからが本番です。Stripe をどう設計するかで、その後の運営の楽さが3倍変わります。
個人開発者に最適な3層プラン構成
私が推奨する初期構成は、次の3つの選択肢を並列で提示することです。
- Tip / 1回購入(¥150〜¥250) — 試したい人、一度だけ使いたい人向け
- Pro(月額)(¥580〜¥980) — 月数回使う人向け
- Premium(買い切り)(¥2,480〜¥4,800) — 長期的に使う人、サブスクが嫌な人向け
完璧な金額は最初からは出せません。Phase 5 で価格テストをしますが、まずこの3層を仮置きして実装してしまいます。
Stripe Checkout 統合の核心
Stripe Checkout の price_data + product_data 方式を使うと、ロケール別の商品名・説明・画像をその場で指定できます。これが個人サービスの決済画面の品質を決定的に上げます。
// app/api/checkout/route.ts
const session = await stripe.checkout.sessions.create({
mode: planType === 'one-shot' ? 'payment' : 'subscription',
line_items: [{
price_data: {
currency: locale === 'ja' ? 'jpy' : 'usd',
unit_amount: priceMap[planType][locale],
recurring: planType === 'monthly' ? { interval: 'month' } : undefined,
product_data: {
name: productNames[planType][locale],
description: productDescriptions[planType][locale],
images: ['https://yourdomain.com/images/stripe-product.png'],
},
},
quantity: 1,
}],
metadata: {
userId: user.id,
planType,
// ↑ ここに plan_type を入れておかないと、後で
// tip と subscription の処理を分岐できない(重要)
},
success_url: `${origin}/${locale}/articles/${slug}?thanks=${planType}`,
cancel_url: `${origin}/${locale}/articles/${slug}`,
});metadata.plan_type を必ず設定してください。これがないと、Webhook で受け取った決済結果がチップなのか、サブスクなのか、買い切りなのかを区別できません。私はこれを最初の実装で忘れて、Premium権限が誤付与される不具合を本番で出しました。
Webhook で「ありがとう」を返す
決済完了後の処理は次の通りです。
// app/api/stripe/webhook/route.ts (簡略版)
const event = stripe.webhooks.constructEvent(body, sig, secret);
if (event.type === 'checkout.session.completed') {
const session = event.data.object;
const planType = session.metadata.plan_type;
const userId = session.metadata.userId;
switch (planType) {
case 'tip':
await recordTip({ userId, amount: session.amount_total });
break;
case 'one-shot':
await grantOneShotAccess({ userId, productSlug: session.metadata.productSlug });
break;
case 'monthly':
case 'lifetime':
await grantPremium({ userId, plan: planType });
break;
}
}Day 45時点の成果物
- 上記3プランがすべて動く決済画面
?thanks=...パラメータでお礼バナー表示- ペイウォール(コンテンツの一部だけプレビューを見せる)
- メールでの領収書送信(Stripeが自動でやってくれる)
Phase 4(Day 46-60)— SEOで初の流入を作る
ここまではユーザーがいない状態で作ってきました。ここから、見つけてもらう仕事をします。
私が今もう一度やるならの順番
- トップページに、機能ではなく『悩み』を書く: 検索者は機能名で検索しません。「AI 翻訳 APIキー 不要」のように悩みワードで検索します
- 使い方記事を5本書く: 自社サービスを使った具体例を見せる記事です
- 比較記事を3本書く: 「自社 vs 競合」を正直に書きます。私は競合の方が良い点も書くようにしています。これが信頼の入口になります
1記事あたりの構成テンプレート
私が4サイトで使っているテンプレートは次の通りです。
- H2_1: 読者が抱える具体的な悩み(機能名ではなく状況)
- H2_2: なぜ既存の方法ではうまくいかないか
- H2_3: 自社サービスでの解決手順(コード例つき)
- H2_4: 出力結果と限界
- H2_5: 別の選択肢(競合の紹介を含む)
このテンプレートを使うと、検索エンジンに評価されやすいだけでなく、ユーザーが課金に至る心理的距離が短くなります。
公開後にやること
公開して放置するのではなく、Google Search Console を毎日見てください。1ヶ月後、表示はあるのにクリックされていないキーワードが必ず出ます。それを見て、タイトルとメタディスクリプションを書き直します。
私の経験では、初期の3ヶ月で書き直しによるクリック増は新記事を書く以上の効果があります。
Day 60時点の成果物
- トップページの悩みドリブンなコピー
- 使い方記事5本、比較記事3本
- Google Search Console 登録済み
- 月100〜500の検索流入(運がよければ)
Phase 5(Day 61-75)— サブスク化と価格テスト
ここまでで初動の収益が見え始めるはずです。多くは1ヶ月数千円〜2万円程度です。これが私の経験する標準的な初動値で、ここからどう伸ばすかが正念場です。
価格テストの実践方法
A/Bテストツールを入れる必要はありません。次の手順で十分です。
- 2週間ごとに、Premium価格を¥500ずつ上げる/下げる: 解約率と新規購入率の両方を観察します
- 1ヶ月後、買い切りPremiumを「期間限定¥1,480」にする"感謝価格"バナーを出す: これは私のサイトでも採用していて、転換率が約1.5倍になりました
- 3ヶ月後、月額Proの上限を変えて、追加トークン購入を売り始める: ヘビーユーザーから追加収益が取れる構造に進化させます
解約率を下げる現実的な工夫
私が実装している解約防止策を3つ紹介します。
1) 解約画面で「次回請求の1週間前にメールでお知らせ」を提案 解約理由の多くは「次の請求が忘れた頃に来て嫌だった」です。お知らせメールを提案するとそれだけで踏みとどまる人がいます。
2) 一時停止オプションを用意
完全解約の前段に「3ヶ月一時停止」を置きます。Stripe のpause_collectionで実装できます。
3) 解約後も7日間は機能をそのまま使える期間を設ける これが「ちょっと不便を感じる仕組み」になり、再申し込みにつながります。
Day 75時点の成果物
- 価格テスト2回完了
- 感謝価格キャンペーンの設置
- 解約防止フロー
- 月収¥30,000〜¥80,000程度(運がよければ)
Phase 6(Day 76-90)— 運用と心の予算管理
最後の2週間は、コードよりも自分自身の管理に使います。これは個人開発でいちばん軽視され、いちばん致命的な部分です。
自分のコストを「お金」と「時間」と「心」の3軸で見る
私はこの3軸を月1で見直しています。
- お金: 売上 − Anthropic API原価 − Stripe手数料 − Cloudflareなどインフラ費 = 純利益
- 時間: そのサービスに費やしている週次時間(バグ対応、CS、マーケ含む)
- 心: 朝起きてそのサービスのSlack通知を見る気持ちが、ワクワク/中立/嫌のどれか
純利益が同じなら、心が「嫌」になっていないかが続けられるかの最大の指標です。私は過去に純利益が一番高かったプロダクトをこの理由で畳みました。
撤退ラインを最初から決めておく
これは多くの人がやっていない最重要事項です。私は次のいずれかが3ヶ月続いたら撤退、と決めています。
- 月の純利益がインフラ費を割る
- 週次の運用時間が10時間を超える
- 朝の通知を見るのが本気で嫌だ
撤退ラインを最初に決めておくと、サンクコスト(埋没費用)に縛られずに済みます。畳む勇気がある個人開発者は、長く続きます。
Day 90時点の到達点
- 自分の運用ペースが見えている
- 1日30分以下のメンテで回る運用
- 純利益・時間・心の3軸ダッシュボード(私はNotionで管理しています)
私が3年かけて学んだ落とし穴
最後に、AI API時代の個人開発でとくに痛い目を見た落とし穴を3つだけ。
落とし穴1: 「無制限」をどんな形であれ謳う
Anthropic自身がそうしているように、AIサービスで完全無制限は破綻します。「実質無制限」「フェアユース」「ソフトリミット」のような曖昧な言葉ですら、ヘビーユーザーの引力になります。最初から具体的な月間トークン上限を出して、超えたら追加購入、というシンプルな仕組みにしてください。
落とし穴2: モデル変更を反映しない
Claude のモデルは半年ごとに新しいものが出ます(Sonnet 4.6 → 4.7 → 5.0 のように)。新モデルの方が原価が安いことが多いので、モデル切り替えだけで利益率が10〜20%改善することがあります。私は3ヶ月に1回、本番のモデル指定を確認するようにしています。
落とし穴3: 1人で全部抱える
個人開発の最大の敵は孤独です。私の場合、サイト群を作っているうちに「自分以外の誰にも進捗を見せない」期間が3ヶ月続いて、心が折れかけました。月1でも、誰か1人に進捗を話す相手を作ってください。SNSで進捗をつぶやくだけでも違います。私は X と note に書くことでこれを補っています。
90日のロードマップは、あくまで「最短ルートの一例」です。生活や本業と両立する人は倍の180日かけても全く問題ありません。速度より、続けられる構造を優先してください。
私の場合、最初のAI APIサービスがまともな月収になるまでに半年以上かかりました。その代わり、いったん回り始めると、次のサービスは2ヶ月で同じ規模に到達できました。これは個人開発の一番楽しいところで、最初の1つを諦めずに作りきれた人だけが、その後ずっと自分のペースで稼ぎ続けられます。
明日、Phase 1のメモから始めてみてください。1週間後の自分は、今の自分より少しだけ前に進んでいます。