v2.1 | 2026年4月5日 | ドラフト
| バージョン | 日付 | 変更内容 |
|---|---|---|
| 1.0 | 2026-04-01 | 初版作成 |
| 2.0 | 2026-04-04 | アーキテクチャ詳細(§7)追加、サービス一覧・費用感(§9)追加、画面一覧をモックアップ反映(§8)、4/1-4/3のIA変更(台本一覧ページ追加等)を反映。4/4モックアップ改修反映: 競合設定を1UI統合、台本生成本数プルダウン化・動画尺フリー入力・追加生成機能、レポート承認フロー(入稿待ち→保存済み→公開済み)、レポート入稿アーキテクチャ追加、運営管理画面をPOC向け3メニューに簡素化、ノウハウ管理追加、テスト期間中プラン・支払い非表示、生成上限テナント単位管理 |
| 2.1 | 2026-04-05 | 技術スタック確定(Python FastAPI + Next.js)、フェーズ別アーキテクチャ(Phase 1手動入稿/Phase 2 Bedrock自動化)、SES→SendGrid変更、不整合修正11件 |
広告代理店が動画広告のクリエイティブ分析と台本制作を行う際、以下の課題がある。
AIによる自動分析+台本生成パイプラインをSaaS化。
アドコンパスは、動画広告の競合分析・自社分析・台本生成をワンストップで提供するSaaS型Webサービスである。広告代理店およびブランド企業を対象とし、AI(AWS Bedrock経由のClaude)を活用して動画広告の分析レポートと台本を自動生成する。
MVPには以下を含む。
※ Stripe決済はPhase 2以降で実装。Phase 1ではテスト期間として手動請求。
本サービスは「運営側(自社)」と「利用企業側(クライアント)」の2軸で構成される。
| ロール | 権限 | 用途 |
|---|---|---|
| スーパー管理者 | 全機能・全クライアントのデータにアクセス可能。プラン設定・クレジット付与・アカウント作成/停止 | 経営層・事業責任者 |
| 運営オペレーター | 全クライアントの利用状況・分析結果の閲覧。手動でのクレジット調整・レポート再実行 | 運用チーム |
| ロール | 権限 | 用途 |
|---|---|---|
| 企業管理者 | 自社の全データにアクセス可能。ユーザー招待/削除、広告アカウント接続管理、プラン・支払い管理 | クライアント企業の責任者 |
| 一般ユーザー | 分析実行・台本生成・レポート閲覧のみ。管理系機能にはアクセス不可 | クライアント企業の担当者 |
運営管理画面(全クライアント横断)
└── クライアント企業A(テナント)
│ ├── 企業管理者ユーザー × N
│ ├── 一般ユーザー × N
│ ├── 広告アカウント接続 × N
│ ├── クレジット残量
│ └── 分析結果・台本データ
└── クライアント企業B(テナント)
├── ...
MVPで以下の全てに対応する。
SSOはクライアントBのような上場企業の導入時にセキュリティ要件として必須となる想定。
本システムは2フェーズで構築する。Phase 1ではフロント+管理画面+入稿APIのみを実装し、AI分析は人間がローカルのClaude Codeで実行して結果をAPIで投入する。Phase 2でAWS Bedrockによる自動分析パイプラインを実装し、完全自動化する。
┌─────────────────────────────────────────────────────────┐
│ ローカル(運営チーム) │
│ Claude Code → AI分析実行 → 結果JSON生成 │
└────────────────┬────────────────────────────────────────┘
│ 入稿API(REST)
▼
┌─────────────────────────────────────────────────────────┐
│ AWS │
│ │
│ ┌─────────────────────┐ ┌──────────────────────────┐ │
│ │ CloudFront + S3 │ │ API Gateway + Lambda(Py) │ │
│ │ Next.js フロント │ │ Web API │ │
│ │ ├── クライアント画面 │ │ ├── CRUD(レポート/テナント)│ │
│ │ └── 管理画面 │ │ ├── 入稿API │ │
│ └─────────────────────┘ │ ├── Stripe Webhook │ │
│ │ └── SendGrid通知 │ │
│ ┌──────────────────────┐ └──────────────────────────┘ │
│ │ RDS (PostgreSQL) │ │
│ │ テナント/ユーザー/ │ ┌──────────────────────────┐ │
│ │ レポート/分析結果 │ │ S3 │ │
│ │ Cognito(認証) │ │ 動画/画像/レポートデータ │ │
│ └──────────────────────┘ └──────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ SendGrid │ │ Apify │
│ メール通知 │ │ 競合広告収集 │
└──────────────┘ └──────────────────┘
Phase 1のポイント:
┌─────────────────────────────────────────────────────────┐
│ クライアント │
│ Next.js (S3 + CloudFront) │
│ ├── クライアント画面(ダッシュボード/レポート/台本/設定) │
│ └── 管理画面(レポート管理/ノウハウ/テナント) │
└────────────────┬────────────────────────────────────────┘
│ HTTPS
▼
┌─────────────────────────────────────────────────────────┐
│ API Gateway │
│ REST API(認証: Cognito JWT) │
└────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Lambda(Web API層 / Python FastAPI) │
│ CRUD / 認証 / 課金 / 通知 │
│ ├── テナント管理 │
│ ├── レポート一覧・詳細取得 │
│ ├── 入稿API(Phase 1から継続) │
│ ├── 分析ジョブ投入 ──────────┐ │
│ ├── Stripe Webhook受信 │ │
│ └── SendGrid通知 │ │
│ ※ 全てPython (FastAPI on Lambda) │
└───────────────────────────────┼──────────────────────────┘
│ SQS
▼
┌─────────────────────────────────────────────────────────┐
│ Step Functions(AIパイプライン) │
│ │
│ ┌──────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │Meta │──▶│動画DL │──▶│フレーム │──▶│AI分析 │ │
│ │API │ │+カット │ │分析 │ │(Bedrock)│ │
│ │データ │ │分割 │ │(Bedrock) │ │+台本生成│ │
│ │取得 │ │+Whisper │ │ │ │ │ │
│ └──────┘ └──────────┘ └──────────┘ └────┬────┘ │
│ │ │
│ ┌──────────┐ ┌──────────┐ │ │
│ │コンテ画像 │◀──│レポート │◀───────────────────┘ │
│ │生成 │──▶│組立+保存 │ │
│ │(Imagen) │ │(S3+RDS) │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ データ層 │
│ ├── RDS (PostgreSQL) : テナント/ユーザー/ジョブ/分析結果 │
│ ├── S3 : 動画/フレーム画像/レポートデータ │
│ └── Cognito : 認証基盤 │
└─────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
│ SendGrid │ │ Apify │ │ GCP Imagen │
│ メール通知 │ │ 競合広告収集 │ │ コンテ画像生成 │
└──────────────┘ └──────────────┘ └──────────────────┘
| レイヤー | 技術 | 備考 |
|---|---|---|
| フロントエンド | Next.js (React / TypeScript) | S3 + CloudFrontで配信 |
| バックエンド | Python (FastAPI) | Lambda + API Gateway。Phase 1/2で言語統一 |
| AIパイプライン | Step Functions + Lambda (Python) | Phase 2で実装。バックエンドと同一言語 |
| データベース | RDS PostgreSQL | マルチテナント(tenant_id分離) |
| ファイルストレージ | S3 | 動画、フレーム画像、レポート |
| 認証 | Cognito | SSO (SAML 2.0 / OIDC) + OAuth対応。エンタープライズ対応 |
| メール通知 | SendGrid | レポート公開通知、エラー通知 |
| CDN | CloudFront | フロントエンド配信 + S3オリジン |
| 決済 | Stripe | サブスクリプション + 従量課金(Phase 2以降) |
| AI分析 | AWS Bedrock (Claude) | Phase 2で自動化。モデルルーティングで最適化 |
| 画像生成 | GCP Imagen | コンテ画像 |
| スクレイピング | Apify | 競合広告収集(Meta広告ライブラリ、TikTok) |
Step 1: Meta APIデータ取得
└── 広告アカウントからキャンペーン・クリエイティブ・パフォーマンスデータを取得
Step 2: 自社動画ダウンロード + カット分割 + 音声抽出 + Whisper文字起こし
└── ffmpeg + PySceneDetect + faster-whisper
Step 3: 自社動画フレーム分析(Bedrock: Sonnet)
└── 各カットの3観点分析(レイアウト/訴求軸/CTA)
Step 4: 競合選定方針の決定(Bedrock: Sonnet)
└── 自社の課題に基づいて競合収集の方向性を決定
Step 5: 競合動画収集(Apify) + ダウンロード + カット分割 + Whisper
└── Meta広告ライブラリ + TikTok
Step 6: 競合動画フレーム分析(Bedrock: Sonnet)
└── 各カットの3観点分析
Step 7: 統合分析 + 台本生成(Bedrock: Opus)
└── 3観点評価テーブル + 学習ポイント + 台本3本×60秒
Step 8: レポート組立 + コンテ画像生成(GCP Imagen) + 保存(S3 + RDS)
└── レポートデータ保存、SendGridで完了通知送信
| 工程 | モデル | 理由 |
|---|---|---|
| データ取得・前処理 | コードのみ(AI不使用) | Meta API、Apify等のAPI呼び出し |
| 競合データ構造化 | Bedrock Haiku 4.5 | 低コスト、構造化タスクに十分 |
| 競合動画フレーム分析 | Bedrock Sonnet 4.6 | 画像理解+分析判断が必要 |
| 自社動画フレーム分析 | Bedrock Sonnet 4.6 | 同上 |
| 訴求分類・レポート生成 | Bedrock Sonnet 4.6 | 分析の統合判断 |
| 台本生成(最終仕上げ) | Bedrock Opus 4.6 | 最高品質のクリエイティブ出力 |
| コンテ画像生成 | GCP Imagen | 背景画像生成(英語プロンプト)+ Pillowで日本語テロップ合成 |
| # | 画面名 | ファイル名 | 概要 | 備考 |
|---|---|---|---|---|
| C-01 | ログイン | index.html | メール/パスワード、Google OAuth、SSO | |
| C-02 | ダッシュボード | dashboard.html | 最新の分析結果サマリー、通知、クレジット残量、次回定期分析タイミング | |
| C-03 | レポート一覧 | reports.html | 過去のレポート一覧・検索 | |
| C-04 | レポート作成 | report-create.html | 分析対象の選択、期間指定、競合指示(フリーテキスト)、台本生成条件を統合 | 旧「競合設定」画面を統合 |
| C-05 | レポート詳細 | report-detail.html | タブ構成: 概要(訴求別配信割合)→自社分析→競合分析→台本。台本の追加生成もここから | 旧「台本一覧」画面を統合 |
| C-06 | 台本生成 | (report-create.html内) | 参照データ選択、方向性入力、本数プルダウン(1〜10本)、動画尺フリー入力 | |
| C-07 | 広告アカウント設定 | ad-accounts.html | Meta広告アカウントの接続・管理 | |
| C-08 | ユーザー管理 | users.html | ユーザーの招待・削除・ロール変更(企業管理者のみ) | |
| C-09 | 設定 | settings.html | 通知設定(メール・Slack・ダッシュボード)、Slack Webhook設定 | |
| レポート詳細の「台本」タブに統合 | ||||
| テスト期間中は非表示 |
| # | 画面名 | ファイル名 | 概要 |
|---|---|---|---|
| A-01 | レポート管理(トップ) | admin/index.html | 入稿待ち/保存済み/公開済みの3タブ。レポート承認フローのハブ |
| A-02 | テナント一覧 | admin/tenants.html | 検索・フィルタ付きのテナント一覧 |
| A-03 | テナント詳細 | admin/tenant-detail.html | ユーザー、広告アカウント、プラン、クレジット残量、生成上限設定(数値入力)、利用履歴 |
| A-11 | レポート詳細・編集 | admin/report-review.html | セクション別テキストエリア(Markdown対応)+お客様プレビュー。「保存」「公開」ボタン |
| A-12 | ノウハウ管理 | admin/knowledge.html | Markdownエディタ風ナレッジベース。記事一覧+編集画面 |
| # | 画面名 | ファイル名 | 概要 | ステータス |
|---|---|---|---|---|
| — | 廃止(レポート管理に置換) | |||
| A-04 | プラン・価格設定 | admin/plans.html | テナントごとの月額・特別価格・初期費用の設定 | POC後 |
| テナント詳細に統合 | ||||
| A-06 | ジョブ管理 | admin/jobs.html | 分析・台本生成ジョブの一覧、ステータス、エラーログ | POC後(Coming Soon) |
| A-07 | 定期実行設定 | admin/schedules.html | 競合分析の実行スケジュール管理 | POC後 |
| A-08 | 原価レポート | admin/costs.html | テナント別・月次の原価内訳、APIトークン消費推移 | POC後 |
| A-09 | 請求管理 | admin/billing.html | Stripe連携の請求一覧、未払い検知 | POC後 |
| A-10 | 監査ログ | admin/audit.html | ログイン履歴、重要操作の記録 | POC後(Coming Soon) |
| # | サービス | 用途 | 月額費用(100アカウント時) | 登録時に必要な情報 | 優先度 |
|---|---|---|---|---|---|
| 1 | AWS | インフラ全部(RDS, Lambda, SQS, S3, Cognito, CloudFront, Bedrock) | ¥8,000〜25,000(インフラ)+ ¥30,000〜150,000(Bedrock) | 法人メール、クレカ、電話番号 | 最優先 |
| 2 | Apify | 競合広告スクレイピング(Meta広告ライブラリ、TikTok) | ¥7,000〜22,000($49〜149) | メール、クレカ | 最優先 |
| 3 | GCP | Imagen画像生成(コンテ画像) | ¥3,000〜7,000 | Googleアカウント、クレカ、請求先住所 | 最優先 |
| 4 | Stripe | クライアント向け決済基盤(サブスクリプション+追加クレジット) | 3.6%+¥40/決済(固定費なし) | 法人情報(登記、代表者、口座)、本人確認書類 | リリース時 |
| # | サービス | 用途 | 費用 | 備考 |
|---|---|---|---|---|
| 5 | Meta for Developers | 広告API(OAuth認証、データ取得) | 無料 | 法人ビジネスマネージャーに紐付け直し推奨 |
| 5b | SendGrid | メール通知(レポート公開通知等) | 無料〜$20/月(Free〜Essentials) | メール、ドメイン認証 |
| 6 | Slack App | Webhook通知 | 無料 | Incoming Webhookのみ |
| AWSサービス | 用途 | 月額費用(100アカウント時) |
|---|---|---|
| RDS (PostgreSQL) | メインDB | ¥2,000〜15,000(db.t4g.micro〜medium) |
| Lambda | Web API + AIパイプライン | ¥0〜7,000 |
| API Gateway | REST API エンドポイント | ¥500〜3,000 |
| S3 | フロント配信 + ファイルストレージ | ¥500〜3,000 |
| CloudFront | CDN | ¥500〜2,000 |
| SQS | ジョブキュー | ほぼ無料 |
| Cognito | 認証基盤 | 50,000 MAUまで無料 |
| Step Functions | AIパイプラインのワークフロー管理 | ¥500〜2,000 |
| Bedrock (Claude) | AI分析・台本生成 | ¥30,000〜150,000 |
| カテゴリ | 月額 |
|---|---|
| AWSインフラ(Bedrock除く) | ¥8,000〜25,000 |
| AWS Bedrock(Claude API) | ¥30,000〜150,000 |
| Apify | ¥7,000〜22,000 |
| GCP(Imagen) | ¥3,000〜7,000 |
| SendGrid | ¥0〜3,000 |
| Stripe手数料 | 売上の3.6%+¥40/件 |
| 合計(Stripe除く) | ¥48,000〜207,000 |
| 1アカウントあたり原価 | ¥480〜2,070 |
定価33,000円/月に対して原価率 1.5〜6.2%。目標の10%以下を達成。
| リスク | 影響 | 対策 |
|---|---|---|
| Claude API料金の値上げ | 原価率の悪化 | クレジット制でユーザーへの転嫁が可能な設計。プロンプトキャッシュ等の最適化余地を残す |
| 競合サービスの出現 | シェア喪失 | 先行者優位の確立。広告運用プロのノウハウが組み込まれた品質で差別化 |
| 大量アカウント導入時のインフラ負荷 | サービス品質低下 | SQSによるジョブキューイング、スケールアウト設計 |
| Meta広告APIの仕様変更 | データ取得不能 | API変更の監視、柔軟なデータ取得層の設計 |
目的: 最短でプロダクトをローンチし、実顧客でPMF検証する。
実装範囲:
実装しない範囲:
運用フロー:
初期クライアント: ロットネスト社(3〜5アカウント)でのトライアル
目的: AI分析を自動化し、運営の手動オペレーションを排除する。
| 用語 | 定義 |
|---|---|
| テナント | 本サービスを契約する1つの企業単位 |
| アカウント | テナント内で接続されたMeta広告アカウント |
| ユーザー | テナント内でサービスにログインする個人 |
| クレジット | デフォルト枠を超えて分析・生成を行うための追加利用権 |
| ジョブ | 1回の分析実行または台本生成のバッチ処理単位 |
| フレーム分析 | 動画を画像に分解し、各フレームのクリエイティブ内容を分析すること |
| 訴求タイプ | 動画の主な訴求軸の分類(価格訴求、機能訴求、感情訴求等) |
| # | 項目 | 決定内容 |
|---|---|---|
| 1 | バックエンド言語 | Python (FastAPI)。フロント(Next.js/TS)とバックエンド(Python)の2言語構成。OpenAPI経由で型共有 |
| 2 | AI利用方法 | AWS Bedrock(Phase 2で自動化。Phase 1はローカルClaude Code) |
| 3 | メール通知 | SendGrid(SESではなく) |
| 4 | インフラ方針 | AWS統一(エンタープライズ対応前提) |
| 5 | Phase 1の範囲 | フロント+入稿API+管理画面のみ。AI自動化はPhase 2 |
| # | 項目 | 選択肢 | 決定期限 |
|---|---|---|---|
| 1 | 認証基盤の詳細設計 | Cognito(安い・AWS統合)/ Auth0(UX良い) | 実装開始時 |
| 2 | Phase 1開発タイムライン | 2週間〜2ヶ月 | アーキテクチャレビュー後 |
| 3 | 入稿APIの仕様 | エンドポイント設計、認証方式、ペイロード形式 | POC実装開始時 |
| 4 | DB設計 | マルチテナントのテーブル設計(共有スキーマ+tenant_id vs スキーマ分離) | 実装開始時 |