はじめに
ゼミや部活の議事録を毎回手書きするのが面倒すぎて、
録音するだけでAIが自動生成するWebサービスを個人開発しました。
しゃべメモ → https://minutes-ai-liart.vercel.app
登録不要でデモが試せます → https://minutes-ai-liart.vercel.app/demo
技術スタック
| 項目 | 技術 |
|---|---|
| フロントエンド | Next.js 16 (App Router) |
| 認証 | Supabase Auth(Google OAuth) |
| DB | Supabase (PostgreSQL) |
| 文字起こし | Groq API(Whisper large-v3) |
| 議事録生成 | Anthropic Claude API |
| 決済 | Stripe |
| デプロイ | Vercel |
アーキテクチャ概要
ブラウザ録音 or ファイルアップロード
↓
/api/transcribe(Groq Whisper large-v3)
↓
文字起こしテキスト
↓
/api/summarize(Claude claude-sonnet-4-6)
↓
テンプレート別議事録
↓
Supabase に保存 → URL共有
工夫した点
Groq を選んだ理由
OpenAI Whisper API と比較して Groq の推論速度は約10倍速いです。
5分の音声が数十秒で文字起こしできるため、UXが大幅に向上しました。
用途別プロンプト設計
同じ文字起こしテキストでも、渡すテンプレートによって出力が変わります。
const TEMPLATES = {
general: '## 議事録\n\n### 討議内容\n### 決定事項\n### 次のアクション',
seminar: '## ゼミ議事録\n\n### 発表者・テーマ\n### 討議・フィードバック\n### 次回の課題',
club: '## 部活動議事録\n\n### 活動報告\n### 連絡事項\n### 次回の予定',
}
認証設計(@supabase/ssr)
Middleware でセッション管理し、/dashboard と /api/* を保護しています。
// middleware.ts
const { data: { user } } = await supabase.auth.getUser()
if (protectedPaths.some(p => pathname.startsWith(p)) && !user) {
return NextResponse.redirect(new URL('/login', request.url))
}
アクションアイテム自動抽出
議事録から「誰が・何を・いつまで」をClaude Haikuで構造化抽出します。
Haikuを使うことでコストを抑えつつ高速に処理できます。
// claude-haiku-4-5 でアクションアイテムをJSON抽出
{ "task": "テストデータ評価", "assignee": "鈴木", "deadline": "来週水曜" }
---
料金設計
- 無料: 全機能(汎用テンプレート)使い放題
- 個人Pro ¥300/月: 全テンプレート + カスタム対応
- チーム ¥650/月: チーム共有・複数人利用
Stripe + Supabase の subscriptions テーブルで管理しています。
---
使ってみてください
ログイン不要のデモページを用意しています。
https://minutes-ai-liart.vercel.app/demo
ゼミ・部活・社内会議など議事録が必要な場面でぜひ。
フィードバックは X(@あなたのID)またはコメントで歓迎です。