Skip to content

タイアップ案件モニタリングツール(本番稼働中)

Notifications You must be signed in to change notification settings

STATSSeri/tieup_watch

Repository files navigation

TieUp Watch

インフルエンサー タイアップ投稿 自動まとめサービス

ブランド企業のマーケティング担当者が、競合ブランドのインフルエンサータイアップ投稿を横断的に検索・分析できるWebサービスです。

技術スタック

レイヤー 技術 選定理由
フロントエンド Next.js 16 (App Router) SSR/SSGでSEO対策、React Server Componentsで高速化
バックエンド Next.js API Routes フロントエンドと統合、Vercelとの親和性
DB Supabase (PostgreSQL) RLS対応、リアルタイム、管理画面付き
認証 Supabase Auth メール/Google認証、JWTベース
AI分類 Claude API (Anthropic) 投稿内容の分析・ブランド分類・トーン分析
スタイリング Tailwind CSS v4 ユーティリティファースト、高速開発
アイコン Lucide React 軽量・一貫性のあるアイコンセット
ホスティング Vercel Next.jsネイティブ対応、Cron Jobs

セットアップ

1. 依存関係のインストール

npm install

2. 環境変数の設定

.env.local.example をコピーして .env.local を作成し、各APIキーを設定:

cp .env.local.example .env.local

必要な環境変数:

変数名 説明 必須
NEXT_PUBLIC_SUPABASE_URL Supabaseプロジェクト URL DB接続時
NEXT_PUBLIC_SUPABASE_ANON_KEY Supabase匿名キー DB接続時
SUPABASE_SERVICE_ROLE_KEY Supabaseサービスロールキー Worker実行時
INSTAGRAM_ACCESS_TOKEN Instagram Graph APIトークン Instagram収集時
INSTAGRAM_BUSINESS_ACCOUNT_ID Instagramビジネスアカウント ID Instagram収集時
YOUTUBE_API_KEY YouTube Data API v3 キー YouTube収集時
ANTHROPIC_API_KEY Anthropic Claude API キー AI分類時
CRON_SECRET Cronエンドポイントの認証シークレット 定期収集時

3. データベースの初期化

Supabaseプロジェクトを作成し、マイグレーションを実行:

# Supabase CLIでマイグレーション実行
supabase db push

# またはSQL Editorで直接実行:
# supabase/migrations/001_initial_schema.sql

# ブランドマスターデータのシード
supabase db seed  # supabase/seed.sql を実行

4. ブランドマスターデータの生成

Excelファイルからシードデータを生成:

npx tsx scripts/seed-brands.ts

これにより以下が生成されます:

  • supabase/seed.sql - DB投入用SQLファイル
  • src/lib/brand-master.json - フロントエンド用JSONファイル

5. 開発サーバーの起動

npm run dev

http://localhost:3000 でアクセス可能です。

プロジェクト構成

src/
├── app/                     # Next.js App Router
│   ├── page.tsx             # ダッシュボード(トップページ)
│   ├── brands/              # ブランド検索・詳細
│   ├── posts/               # 投稿詳細
│   ├── influencers/         # インフルエンサー一覧・詳細
│   ├── auth/                # 認証(ログイン・サインアップ)
│   └── api/                 # API Routes
│       ├── posts/           # 投稿一覧API
│       ├── brands/          # ブランド検索API
│       ├── collect/         # データ収集トリガー
│       └── cron/            # 定期収集Cronエンドポイント
├── components/              # UIコンポーネント
│   ├── layout/              # Header, Sidebar
│   ├── dashboard/           # PostCard, StatsOverview
│   └── ui/                  # Badge等の共通UI
├── lib/                     # ライブラリ・ユーティリティ
│   ├── supabase/            # Supabaseクライアント
│   ├── collectors/          # Instagram/YouTube収集ロジック
│   ├── ai/                  # Claude API分類
│   ├── utils/               # フォーマット等
│   ├── mock-data.ts         # テスト用モックデータ
│   └── brand-master.json    # ブランドマスターデータ
├── types/                   # TypeScript型定義
└── middleware.ts             # 認証ミドルウェア

supabase/
├── migrations/              # DBマイグレーション
│   └── 001_initial_schema.sql
└── seed.sql                 # ブランドマスターシードデータ

scripts/
└── seed-brands.ts           # Excel→SQLシード生成スクリプト

docs/
├── TieUpWatch_Claude_Code_Instructions.md  # 実装指示書
└── TieUpWatch_Brand_Master.xlsx            # ブランドマスターExcel

データ収集の仕組み

収集パイプライン

  1. Instagram: Graph API (Hashtag Search) で #PR #ad #タイアップ 等を検索
  2. YouTube: Data API v3 で PR関連キーワードの動画を検索
  3. ルールベース一次判定: ハッシュタグ・キャプションのパターンマッチでスコアリング
  4. Claude API二次判定: ブランド特定・カテゴリ分類・トーン分析
  5. DB保存: Supabaseに投稿データ+AI分析結果を保存

手動収集の実行

# Instagram
curl -X POST http://localhost:3000/api/collect/instagram \
  -H "Authorization: Bearer YOUR_CRON_SECRET"

# YouTube
curl -X POST http://localhost:3000/api/collect/youtube \
  -H "Authorization: Bearer YOUR_CRON_SECRET"

定期収集(Cron)

Vercelデプロイ時、vercel.json で設定された6時間ごとの定期収集が自動実行されます。

Vercelへのデプロイ

# Vercel CLIでデプロイ
npx vercel

# 本番デプロイ
npx vercel --prod

Vercelダッシュボードで以下の環境変数を設定してください:

  • 上記「環境変数の設定」セクションの全変数

ライセンス

Proprietary - Stats Corporation

About

タイアップ案件モニタリングツール(本番稼働中)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors