Skip to content
··1分で読めます

DIALOGUE:AIポッドキャストジェネレーターをゼロから構築する(そして多くのことを学ぶ)

コンテンツが作成される前に形を整えられるAIポッドキャストジェネレーターを構築しました。通勤中にAIがWikipediaを読み上げるだけなのにはうんざりしていたからです。

きっかけ:なぜポッドキャストジェネレーターを構築するのか?

実はこういうことなんです — 私はポッドキャストが大好きです。渋滞の中であまりにも多くの時間を過ごす者として(通勤の皆さん、こんにちは!)、ずっと思っていました:気になるトピックについてポッドキャストを生成できたらどうだろう?退屈なAI音声がWikipediaを読み上げるのではなく、AIホスト同士の本当に魅力的な会話として。

それに正直に言うと、いくつかの小さなプロジェクトを構築してコーディングの旅について書いた後、もっと大きなものに挑戦したかったのです。新しいテクノロジーを学ぶきっかけになり、もしかしたら他の人にも役立つものを作れるかもしれないと。 :P

DIALOGUEとは?

DIALOGUEは、AIを使ってプロフェッショナルなポッドキャストを生成する初期段階(アルファフェーズ)のアプリケーションです。トピックを入力すれば — 「2025年のFRBの決定と市場への影響」でも「初心者のための量子コンピューティング入門」でも — 複数のAI音声が実際の会話をする完全な20分以上のポッドキャストが生成されます。

ChatGPTに記事を読み上げてもらうのとの違いは:

  • インタラクティブなアウトライン審査: これがゲームチェンジャーです。リサーチやライティングが始まる前に、提案されたアウトラインを確認し、まさに望み通りに形を整えられます
  • リサーチベースのコンテンツ: 検索エンジンを使用して事実と最新情報をリサーチします
  • 自然な対話: Claude Sonnet 4が会話形式のスクリプトを作成します
  • 複数の音声: 異なるホストの個性を持つ高品質なニューラルボイス

トピックから完成した音声ファイルまで全体のプロセスは約10分。人間なら数時間から数日かかるものとしてはなかなかのものです!

テックスタック:サーバーレスの冒険(進化した)

さて、技術的な詳細に入りましょう(私のお気に入りの部分です!)。DIALOGUEを支えているものは:

フロントエンド

- Next.js 15 + React 19: 最新かつ最高のものを使いたかったため

- TypeScript: ランタイムエラーに何度も痛い目に遭った結果

- Tailwind CSS: デザインの達人ではない者にとってスタイリングがずっと簡単に

- Supabase JSクライアント: 認証とリアルタイム更新用(これはゲームチェンジャーでした)

バックエンド(現在 - GCP)

- Cloud Run: 自動スケーリング付きの10以上のコンテナ化されたPythonマイクロサービス

- Cloud Workflows: プレフィードバック(アウトライン)とポストフィードバック(生成)のワークフローをオーケストレーション

- Cloud Storage: CDN配信付きの音声ファイルストレージ

- API Gateway: CORSと認証付きのシングルエントリーポイント

- Supabase: Row Level SecurityとEdge Functions付きのPostgreSQLデータベース

*注意:元々はAWS Lambda/Step Functions上に構築されましたが、2025年7月にGCPに移行し、パフォーマンスの向上と音声生成の92%コスト削減を実現しました。*

AIサービス

- Claude 4.0 Sonnet: JSON信頼性のためtemperature 0でのスクリプト生成(直接Anthropic API)

- Perplexity AI: 各セグメントのリサーチとファクトチェック

- OpenAI TTS: 自然な会話のための高品質ニューラルボイス

- コンテンツモデレーション: Anthropicの組み込みセーフティチェック

主要機能とユーザージャーニー

ユーザーの視点からの動作は以下の通りです:

1. トピックを入力: シンプルなテキスト入力、凝ったものは何もなし

2. AIがアウトラインを生成: 約1分で提案された構成とセグメントが表示されます

3. ポッドキャストを確認・形成: ここがDIALOGUEの真価を発揮するところです!以下のことができます:

- フォーカスを変更(「もっと初心者向けにして」)

- 不足しているコンテキストを追加(「2025年の最新の動向を含めて」)

- セグメントの削除や修正(「セグメント3の技術用語をスキップして」)

- AIが意図を誤解した場合に完全に方向を変更

4. 完全なポッドキャストを生成: アウトラインを承認すると、生成に約6-10分

5. ダウンロードして楽しむ: 通勤用のMP3ファイルが準備完了

裏側ではもっと多くのことが行われています:

- トピックをセグメントに分割

- リソース集約型の操作の前にあなたの承認を待つ(不要なコンテンツにクレジットを無駄にしません!)

- 特定のクエリで各セグメントをリサーチ

- 2人のAIホスト間の自然な対話を作成

- エラーをグレースフルに処理(問題が起きたらクレジットを返金)

- 何が起きているか分かるリアルタイム進捗更新

良いこと、難しかったこと、「やばい」瞬間

良いこと

- アウトライン審査機能: ユーザーは生成開始前にポッドキャストを形作れることを気に入っています。AIプロデューサーとの会話のようです!

- 直接Supabaseクエリへの切り替えで10倍のパフォーマンス改善(450ms → 45ms)

- 即座のユーザーサインアップ: アトミックEdge Functionsで3分の遅延バグを修正(500ms未満に)

- 生成失敗時のデータベーストリガーによる自動クレジット返金

- 実際に動作するリアルタイム更新(Supabaseのおかげです!)

- GCP移行後の音声生成で92%のコスト削減

- Lambdaレガシーコード除去後のクリーンなデータベースファーストアーキテクチャ

難しかったこと(現在は解決済み!)

- AWS Lambdaのレイヤー地獄: インポートエラー、250MBサイズ制限(GCP移行で解決)

- JWTセキュリティ移行: 後方互換性を維持しながらHS256からP-256にアップグレード

- AI温度設定: Claude 0.7ではJSON生成が30%の確率で無効(temperature 0で修正)

- WebSocketメモリリーク: Reactコンポーネントが1時間あたり50MBリーク(RealtimeManagerで修正)

- データベース競合状態: レプリケーションラグで新規ユーザーが3分待ち(アトミック操作で修正)

- クレジットシステムの複雑さ: デュアルクレジットからシングルタイプに簡素化

「やばい」瞬間

- 重要なワークフローデータを間違った場所に保存してしまったとき

- 謎のブラウザエラーが自分のコードがリソースを使い果たしていたことに気づいたとき

- 定期監査中にセキュリティ脆弱性を発見したとき(すべて修正済み!)

学んだこと(ネタバレ:たくさん)

このプロジェクトは私をコンフォートゾーンの外に大きく押し出し、多くのことを学びました:

1. ユーザーコントロールが重要: アウトライン審査機能は元のデザインにはありませんでしたが、最も重要な機能になりました。メイン生成プロセスが始まる前にユーザーがコンテンツの方向を決められることで、時間、クレジット、フラストレーションが節約されます

2. シンプルに始め、必要に応じて移行: AWS Lambdaから始めましたが複雑さの壁にぶつかりました。Cloud Runへの移行ですべてが解決しました

3. 直接データベースクエリの方が速い: 10倍のパフォーマンス改善は不要なAPIレイヤーを排除したことで得られました

4. AIコストは積み上がる: 1つのポッドキャストに複数のAIサービスを実行するには慎重なコスト管理が必要です

5. ユーザーエクスペリエンスが重要: 進捗表示と予想時間の追加で大きな違いが生まれました

6. セキュリティに「完了」はない: 定期的な監査で思いもよらなかった問題が明らかになりました

7. Infrastructure as Codeには落とし穴がある: SAMの癖から多くを学びました(SSMParameterReadPolicyが余分なスラッシュを追加するなど!)

8. クラウド移行は驚くほど速い: AIペアプログラミングで、AWSからGCPへの移行をたった1日で完了しました!

現在のステータスと今後

DIALOGUEは公開中です!新規ユーザー向けに2つの無料クレジットがあるアルファフェーズです。

価格設定については — 正直に言うと、これにはかなり長い間悩みました。各ポッドキャストの生成には実際のコストがかかります(スクリプト用のClaude APIコール、リサーチ用のPerplexity、音声合成用のOpenAI — すぐに積み上がります)。コストをおおよそカバーし小さなマージンを持つクレジットパックに落ち着きました:Starterは$4.99で4ポッドキャスト、Proは$9.99で9本、Bulkは$19.99で18本です。実際の使用パターンについてもっと学ぶにつれて調整するかもしれませんが、今のところフェアだと感じています。技術的な理由で生成が失敗した場合、クレジットは自動的に返金されます — 私のバグに対してお金を取りません :P

試してみませんか?

ぜひ試してみてください!podcast.chandlernguyen.comにアクセスして、最初のAIポッドキャストを作成してください。最初の2本は無料なので、損することはありません。

注意:まだアルファ版なので壊れることがあるかもしれません。でも、それも楽しみの一部ですよね?問題があれば、アプリ内にフィードバック機能が組み込まれています(ログインユーザーのみ — スパム問題の後に追加しなければなりませんでした)。

最後に

DIALOGUEの構築は、私が取り組んだ中で最もチャレンジングでやりがいのあるプロジェクトの一つでした。AWS Lambda関数からReactコンポーネント、AIプロンプトエンジニアリングまで、学んできたすべてを組み合わせ、予想外のクラウド移行の旅にまで発展しました。

最も驚いた発見は?先ほど述べたアウトライン審査のステップです。当初、ユーザーはトピックを入力してポッドキャストを受け取るだけを望むと思っていました。しかしテスト中に、メインの生成プロセスが始まる前にユーザーに方向性のコントロールを与えることがすべての違いを生むと気づきました。ツールをブラックボックスから協調的なAIアシスタントに変えるのです。この同じ洞察 — AI実行の上に人間のクリエイティブディレクションを — は、後にSwiftを知らずにDIALOGUEのネイティブiOSアプリを構築したときの中心的な教訓になりました。

完璧ですか?いいえ。役に立ちますか?そう思います!少なくとも、信じられないほどの学習の旅でしたし、ここからどこに向かうか楽しみです。

何についてポッドキャストを作りたいですか?本当に知りたいです — メッセージを送るか自分で試してみてください。コンテンツを形作りガイドする機能があれば、AI生成ポッドキャストがまさにあなたが探していたものかもしれません。 :P

よろしくお願いします、Chandler

技術的な深掘りをお望みなら? 全ての旅をフォローしてください:

続きを読む

私の歩み
つながる
言語
設定