Claude Haiku 4.5でSNSデータからAI性格診断を実装した話
プロフィールリンクサービスmyna.meに、Claude Haiku 4.5を使ってユーザーの複数SNSアカウントのデータから6軸パーソナリティ分析を行うAI性格診断機能を実装しました。 アーキテクチャ設計、プロンプトエンジニアリング、バリデーション、コスト最適化戦略を詳しく共有。実際に本番環境で稼働する機能として、アイデアから本番までの貴重な完全実装記録です。
Claude Haiku 4.5でSNSデータからAI性格診断を実装した話 Claude Haiku 4.5でSNSデータからAI性格診断を実装した話 プロフィールリンクサービスmyna.meに、Claude Haiku 4.5を使ったAI性格診断機能を実装しました。 ユーザーが接続した複数のSNSアカウントから投稿データを収集し、AIが6軸のパーソナリティ分析を行う機能です。この記事では、実装のアーキテクチャ、プロンプト設計、バリデーション、コスト最適化について解説します。 myna.meは「全リンクが本人認証済み」のプロフィールリンクサービスです。OAuth認証や認証コードで接続されたSNSアカウントのみがプロフィールに表示されるため、なりすましを防止できます。 現在、X(Twitter)・GitHub・YouTube・Facebook・Qiita・Bluesky・Mastodon・LINE・Zenn・noteなど11プラットフォームに対応しています。 (Twitter, GitHub, YouTube, Facebook, Qiita, Mastodon, Bluesky, Zenn, note) Claude Haiku 4.5でNLP推論 処理の流れはシンプルですが、9つのプラットフォームAPIとの統合、LLMの出力バリデーション、クールダウン管理など、実装上の工夫がいくつかあります。 AI性格診断の精度を上げるため、ユーザーが接続した最大9つのプラットフォームからデータを収集します。 1. OAuthトークン経由(6プラットフォーム) OAuth認証で取得したアクセストークンを使い、各プラットフォームのAPIからデータを取得します。 2. パブリックAPI経由(3プラットフォーム) OAuthトークンを持たないプラットフォームはパブリックAPIを利用します。 AT Protocol (app.bsky.feed.getAuthorFeed) zenn.dev/api/articles?username=xxx note.com/api/v2/creators/xxx // 各プラットフォームのデータ収集を並列実行 const results = await Promise.allSettled([ fetchTwitterData(accounts), fetchGitHubData(accounts), fetchYouTubeData(accounts), // 失敗したプラットフォームは無視して続行 const successfulData = results .filter((r): r is PromiseFulfilledResult => r.status === 'fulfilled' && r.value !== null ここで重要なのは Promise.allSettled を使うことです。Promise.all だと1つのAPIが失敗しただけで全体が失敗しますが、allSettled なら取得できたデータだけで診断を進められます。 SNSデータだけでなく、myna.me上のプロフィール情報もコンテキストとして活用します。 bio / bioEn: 自己紹介文(日英) Trust Score: 信頼性スコア(0-100) これにより、SNS投稿だけでは見えないユーザーの全体像をAIに伝えることができます。 AI性格診断の品質を左右するのがプロンプト設計です。構造化されたプロンプトでJSON出力を強制し、6軸のスコアリングを安定させます。 オリジナルコンテンツの割合、多様なトピック const systemPrompt = `You are a personality analyst AI. Analyze the user's social media data and provide a 6-axis personality assessment. - Return ONLY valid JSON, no markdown - All scores must be integers between 0-100 - Provide analysis in the user's language`; ${platformDataSummary}
myna.me Profile Context - Subtitle:
${subtitle} - Trust Score: ${trustScore}/100 - Connected Platforms: ${platformCount} - Timeline Entries: ${timelineCount}
Required Output
Format "creativity": , "sociability": , "analytical": , "leadership": , "expertise": , "expressiveness": "summary": " ", "strengths": [" ", " ", " "], "style": " " モデル選択: なぜClaude Haiku 4.5か Claude Haiku 4.5を選んだ理由は明確です。 コスト: Sonnetの約1/5のコストで、ユーザーごとの診断コストを数円に抑えられる 速度: 応答が速いため、UXが良い(診断結果の待ち時間が短い) 十分な精度: 性格診断のような「正解が一つではない」タスクでは、Haikuの出力品質で十分 Claude Haiku 4.5のモデルID: claude-haiku-4-5-20251001