ビジネスモデル・課金設計
広告 + フリーミアム課金のハイブリッドモデル。クレジット制を導入し、字幕データの取得量に応じた従量的な制限を設ける。
クレジット制
- 1クレジット ≒ 動画1本の字幕閲覧権(動画の長さで重み付け)
- クレジット消費は ユーザー単位(DBに字幕データが既にあっても、各ユーザーが独立してクレジットを消費する必要がある)
- 検索の実行自体は 無料(クエリの送信にクレジットは不要)
- クレジット消費済みの動画は検索結果に 通常表示、未消費の動画は ぼかし表示
- クレジット不足時は取得可能な分のみ通常表示し、残りはぼかし表示(アップグレード導線を表示)
- 通常クレジットは繰越なし(月初リセット)。ボーナスクレジットは繰越あり(後述)
ライフサイクル概要
- 発行(IN): サインアップ・プラン変更・月次バッチは
credit_balanceを上書き、紹介成立・キャンペーンはbonus_creditに加算 - 消費(OUT): 動画ロック解除時に
credit_balance→bonus_creditの順で減算、同時にuser_video_accessにアクセス権を UPSERT - 期限切れ:
user_video_accessはcreated_at + 4 週間のexpires_atを持ち、月次バッチで物理削除 - 月次リセットの影響範囲:
credit_balanceのみ上書き。bonus_creditは温存される
クレジット消費
| アクション | 消費クレジット |
|---|---|
| 検索の実行 | なし(無料) |
| 検索結果のタイトル・サムネ・タイムスタンプ閲覧 | なし(無料) |
| 検索結果の字幕テキスト閲覧(ページ単位で消費) | 動画の長さに応じた重み付け(下表参照) |
動画の長さに応 じたクレジット消費
| 動画の長さ | 消費クレジット | 該当する動画の例 |
|---|---|---|
| 30分未満 | 1 | 通常の動画(大半がここ) |
| 30分〜1時間 | 2 | 長めの解説、ポッドキャスト |
| 1時間〜2時間 | 3 | ライブ配信のアーカイブ |
| 2時間〜4時間 | 5 | 長時間ゲーム配信 |
| 4時間以上 | 8 | 耐久配信、24時間配信等 |
旧モデルとの比較
| 旧(1分=1クレジット) | 新(動画単位+重み付け) | |
|---|---|---|
| 10分の動画 | 10クレジット | 1クレジット |
| 2時間の配信 | 120クレジット | 5クレジット |
| わかりやすさ | △「この動画は47クレジット」 | ◎「だいたい1本1クレジット」 |
| ストレス | △ 長い動画を開くのに躊躇 | ◎ 気軽に閲覧できる |
変更理由: 旧モデルでは動画の長さがそのままクレジット消費に直結し、長時間動画を開くことへの心理的ハードルが高かった。新モデルでは大半の動画が1クレジットで閲覧でき、ストレスなく検索体験を楽しめる。長時間配信のみ段階的に消費が増える設計で、コスト面のリスクも抑制する。
ボーナスクレジット
通常クレジットとは別の枠で管理される、月初リセットの対象外のクレジット。紹介報酬・キャンペーン・運用補填など、ユーザーに付与するクレジット全般で利用する。
- 消費順序: 動画閲覧時は 通常クレジット → ボーナスクレジット の順に消費される。通常クレジットは月初リセットで失うため先に使い、リセット対象外のボーナスを温存する設計(ヘビー利用月のバッファや Plus 解約後の価値として機能)
- 月初リセット: 対象外。使い切るまで残高が維持される
- 付与タイミング: 紹介報酬(後述)/キャンペーン/運用判断による補填など
- UI: 通常クレジット残高とボーナスクレジット残高を別々に表示する想定(実装は別 Issue)
詳細な DB スキーマ・消費ロジック・付与関数のバリデーションは DB スキーマ - ボーナスクレジット を参照。
紹介プログラム
ユーザー獲得の導線と して、既存ユーザーが新規ユーザーを招待できる紹介機能を提供する。紹介された側が Plus 以上に加入した時点で、双方にボーナスクレジット 100Cr が付与される。
成立条件:
- 紹介された側が 新規ユーザーとしてアカウント作成
- その後、Plus 以上のプラン(Plus / Pro)に加入
Free のままでは報酬付与されない。Cookie による自動追跡は行わず、紹介された側が Plus 加入時に紹介コードを明示的に入力する(F1 方式)。
導線フロー:
1. 紹介者 A が自分の紹介コードをシェア(メッセージ・SNS・メール等)
2. 被紹介者 B がサイトに来てサインアップ(普通の Google OAuth)
3. B が /pricing ページで Plus を選択
4. 「紹介コード(任意)」フォームに A のコードを入力 → サーバーが B.referred_by に A.id を記録
5. B が Stripe チェックアウトで Plus に加入
6. Stripe Webhook 完了時に双方へ 100Cr 付与(B.referral_rewarded_at に日時記録)
仕様:
| 項目 | 内容 |
|---|---|
| 紹介コード発行 | ログイン済みユーザー全員が自動的に紹介コードを持つ(アカウント作成時に自動生成) |
| 紹介コード | URL-safe 8 文字のランダム文字列(再生成不可、ユーザーごとに一意)。URL 形式でのシェアは現状サポートせず、コード単体を共有する |
| 報酬 | 双方に ボーナスクレジット 100Cr(通常クレジットとは別枠、月初リセット対象外) |
| 報酬条件 | 紹介された側が Plus 以上の新規加入を完了すること |
| 1 ユーザーあたりの被紹介回数 | 1 回まで(users.referred_by は一度しかセットできない) |
| 自己紹介 | 拒否(アプリ層で検証) |
| 解約時の報酬取消 | なし(付与後は取り戻さない) |
| 悪用対策 | MVP では特になし(Issue #109 の YAGNI 決定) |
| 共有手段 | コードのコピー+SNS シェア(Twitter / LINE / メール。コードを含むテンプレ文字列を生成) |
| i18n | 7 言語対応 |
UI 実装(#112):
- プロフィール画面に自分の紹介コードと「○人紹介した」カウント表示
- Plus 加入フォームに「紹介コード(任意)」入力欄
- ヘッダーまたはプロフィール画面にボーナスクレジット残高表示
詳細な DB 挙動は DB スキーマ - 紹介機能 を参 照。
アクセス権キャッシュ
- スコープ: ユーザー単位(ユーザーAの取得済み字幕はユーザーBには使えない)
- 有効期間: 1ヶ月(期限切れ後は再度クレジット消費が必要)
- キャッシュキー:
user_id+video_id(動画単位) - 一度クレジットを消費した動画は、異なる検索クエリでヒットしても通常表示
- 消費済み動画には マーク(アイコン) を表示し、再消費不要であることを視覚的に示す
- 検索パラメータに依存しないため、パラメータ追加時の考慮が不要
1ヶ月の根拠
- クレジットの月初リセットと同じサイクルで「今月のクレジットで見た動画は今月中は見られる」という感覚で自然
- 短縮(1〜2週間)しても収入は+10〜15%程度で、ユーザーのクレジット枯渇→離脱リスクの方が大きい
- 延長(無制限)するとリピート課金がなくなり収入減
プラン設計
月額プラン
| プラン | 月額 | クレジット/月 | 想定閲覧数(短い動画中心) | 広告 |
|---|---|---|---|---|
| Free | $0 | 50 | 約50本 | あり |
| Plus | $10/月 | 500 | 約300〜500本 | なし |
| Pro | $30/月 | 2,000 | 約1,000〜2,000本 | なし |
クレジット追加購入(Pro限定)
- Pro プラン限定で、月間クレジットを使い切った場合にクレジットを追加購入できる
- 100クレジット = $3(セルフサービス)
年間プラン(2ヶ月無料 ≈ 17%割引)
| プラン | 月額 | 年額 | 月換算 | クレジット/月 |
|---|---|---|---|---|
| Plus | $10 | $100/年 | $8.33 | 500 |
| Pro | $30 | $300/年 | $25 | 2,000 |
年間プランの割引率は業界標準の17%(2ヶ月無料相当)を採用。SaaS 100社の分析で最も多い割引率が15〜20%であり、ChatGPT Plus、GitHub Copilot、Spotify 等も同水準。年間契約は月額と比べて解約率が3〜6倍低く(月額: 月3〜7.5%、年間: 年5〜10%)、割引による収入減を解約率低下が上回る。
※ 年間プランの導入は MVP 後。ユーザーからの要望を確認してから実装する。
共通仕様
- チャンネルお気に入り: 無制限(アカウント登録が必要)
- クレジット繰越: なし(月初リセット)
- 広告: Freeのみ表示、Plus以上は非表示
Free プラン
- クレジット: 50/月(短い動画なら約50本分)
- 広告表示あり
- セマンティック検索: 利用可能(プリセット調整可)
- アカウント登録不要で利用可能(匿名ユーザーレコードを自動作成し、Cookieでクレジット管理。ログイン時にマージ。詳細は データ保存戦略 を参照)
- 登録すればお気に入り機能を利用可能
Plus プラン($10/月)
- クレジット: 500/月
- 広告なし
- セマンティック検索: 利用可能(プリセット調整可)
- 字幕CSV一括ダウンロード対応
- Google Auth ログインが必要
Pro プラン($30/月)
- クレジット: 2,000/月
- 広告なし
- セマンティック検索: 利用可能(プリセット調整可)
- 字幕CSV一括ダウンロード対応
- クレジット追加購入が可能(100クレジット = $3)
- YouTube編集者・切り抜き師向け
- Google Auth ログインが必要
廃止するもの
- リワード広告
- 日次検索回数制限(検索の実行は無料に変更)
- チャンネル登録の個数制限(無制限に変更)
対象ペルソナと推奨プラン
| ペルソナ | 使い方 | 推奨プラン |
|---|---|---|
| ライトユーザー | 気になる発言を検索して遊ぶ | Free / Plus |
| YouTuber | 自分のチャンネルの過去発言を検索し、回想ページ等を作る | Plus / Pro |
| 切り抜き師 | 対象YouTuberの「おもしろ発言集」「特定トピック言及動画」を特定する | Pro |
価格の根拠
- youtube-transcript.io の Plus プランが $10/月 → 同価格帯で Plus を設定
- $10 は「月約1,500円」で一般ユーザーにも心理的に許容しやすい
- Plus→Pro で1クレジットあたりの単価が下がる設計(Plus: $0.020、Pro: $0.015)で、ヘビーユーザーにアップグレードの動機を提供
- Pro 限定のクレジット追加購入(100cr=$3)で、月間上限を超えた利用にも対応
- $X.99 ではなくきりの良い金額を採用(SaaS の月額課金では心理的価格設定の効果が薄く、覚えやすさ・ブランドのすっきり感を優先)
広告収入の目安
前提: 広告RPM $2〜$5(エンタメ/テック系、中間値 $3)、ユーザー1人あたり月間30PV
※ Plus以上のユーザーには広告を表示しないため、無料ユーザーのPVのみが対象。 課金率(Plus 5% + Pro 2% = 7%)を考慮し、広告対象は全ユーザーの93%。
| フェーズ | ユーザー数 | 広告対象ユーザー | 広告収入目安 |
|---|---|---|---|
| 初期 | 〜1,000人 | 930人 | $84/月 |
| 成長期 | 〜10,000人 | 9,300人 | $837/月 |
| 軌道に乗った後 | 〜100,000人 | 93,000人 | $8,370/月 |
収益試算
前提
- Plus課金率: 5%、Pro課金率: 2%
- Plus月額: $10、Pro月額: $30
| ユーザー数 | Plus会員 | Plus収入 | Pro会員 | Pro収入 | 広告収入 | 合計(税前) |
|---|---|---|---|---|---|---|
| 100 | 5 | $50 | 2 | $60 | $8 | $118 |
| 1,000 | 50 | $500 | 20 | $600 | $84 | $1,184 |
| 10,000 | 500 | $5,000 | 200 | $6,000 | $837 | $11,837 |
| 100,000 | 5,000 | $50,000 | 2,000 | $60,000 | $8,370 | $118,370 |