
AI動物占いアプリの作り方——SNSでバズる診断コンテンツをAIで量産する仕組み【占いアプリシリーズVol.12】
**著者:富村浩樹(ネクストレボリューション株式会社)
価格:¥1,980**

はじめに——動物占いは「SNSバズ」の最終兵器
「あなたは何の動物?」
この一言で、飲み会のテーブルが盛り上がったことがない人はいないと思う。
動物占いは1999年に日本で大ブームを起こし、書籍は累計1,000万部以上を記録した。一度は「懐かしいやつ」として記憶の片隅に追いやられていたのに、2020年代に入ってから再ブームが起きている。理由は明確だ。SNSとの相性が異常に良いから。
MBTIが2024〜2025年にかけてSNSで爆発的にバズったのを覚えているだろうか。「INFP」「ENTJ」——自分のタイプをプロフィールに書く文化が一気に広がった。TikTokで「#MBTI」のハッシュタグは全世界で400億回以上再生されている。
で、MBTIブームの次に来るのは何か。僕は「AI動物診断」だと確信している。
理由は3つ。
1. 結果が「動物」なのでビジュアルが映える。 MBTIの結果は「INFP」という4文字のアルファベットだ。正直、映えない。でも「あなたはコアラ(ゴールド)」だったら? かわいいコアラのキャラクター画像が表示されて、思わずスクショしてInstagramに投稿したくなる。
2. 60パターンの多様性。 血液型占いは4パターン、星座は12パターン。でも動物占いは12動物×5カラー(10パターンのグループ)で60パターンもある。「同じ結果ばかり見る」という飽きが起こりにくく、SNSでの拡散性が高い。
3. 画像生成AIとの親和性。 これが今回の最大の目玉だ。2026年の今、Gemini Image APIやDALL-Eを使えば、判定された動物のキャラクター画像をリアルタイムで自動生成できる。しかもカラーバリエーション付きで。静的な画像を60枚用意する必要はない。AIが毎回ユニークなキャラクターを生成し、OGPカードとしてSNSに最適化された形で表示する。
さらに今回はもう一つ、飛び道具を仕込んだ。Vision APIを使った「あなたに似ている動物判定」機能だ。ユーザーが自撮り写真をアップロードすると、AIが顔の特徴を分析して「あなたに最も似ている動物」を判定する。これがSNSで共有されたときの破壊力は、計り知れない。
この記事では、動物占いの計算ロジック(TypeScript完全版)、60パターンの性格・相性を語るAIプロンプト、画像生成AI連携、Vision API応用、SNSバイラル設計、マネタイズ戦略——すべてをコード付きで公開する。
**この記事を読むと:**
- 動物占いの基礎(12動物×60パターン)と四柱推命ベースの計算原理がわかる
- 診断コンテンツがSNSでバズるメカニズムを構造的に理解できる
- TypeScriptで生年月日→動物+カラー判定を実装する全コードが手に入る
- 60パターンの性格・相性をAIが語るプロンプト完全版が手に入る
- 画像生成AIで動物キャラを自動生成する実装方法がわかる
- Vision APIで「顔写真→似ている動物」を判定する仕組みが作れる
- SNSバイラルを最大化するOGPカード・シェア設計がわかる
- 広告・プレミアム診断・法人向け活用のマネタイズ戦略が手に入る
占いアプリシリーズ構成:
1. タロット編(Vol.1)——AIタロット占いアプリの完全構築ガイド
2. 数秘術編(Vol.2)——生年月日だけで人生を読み解くプロンプト設計
3. 星座占い編(Vol.3)——ホロスコープ×Claude APIの実装ガイド
4. 姓名判断編(Vol.4)——名前入力だけで運勢を出すシステム構築
5. 四柱推命編(Vol.5)——東洋占術の最高峰をAIで再現
6. マネタイズ完全攻略編(Vol.6)——1日1万円を達成する5つの収益モデル
7. 集客編(Vol.7)——SNS自動投稿×SEOで月間1万ユーザー獲得
8. 手相編(Vol.8)——Vision APIで手のひらから運命を読む
9. 夢占い編(Vol.9)——テキスト入力からAIが深層心理を解読
10. 風水編(Vol.10)——間取り×AIで開運レイアウトを提案
11. 九星気学編(Vol.11)——生まれ年から本命星を算出し吉方位を導く
12. 動物占い編(Vol.12・本記事)——SNSでバズる診断コンテンツをAIで量産
第1章:動物占いの基礎——12動物×60パターンの世界

動物占いとは何か
動物占いは、中国由来の四柱推命をベースに、日本で独自に進化した性格診断システムだ。1999年に社会現象となり、書籍・グッズの累計売上は200億円を超えた。
「四柱推命の簡易版」と言ってしまえばそれまでだが、その「簡易さ」こそが最大の武器だ。四柱推命は万年暦と天干地支の組み合わせで60通り以上の命式を導き出す。素人にはとっつきにくい。動物占いは、それを「12匹の動物」という誰もが直感的にイメージできるシンボルに変換した。
12匹の動物キャラ
動物占いの12キャラクターは以下の通り。
| 番号 | 動物 | キーワード | 四柱推命の対応 |
|------|------|-----------|-------------|
| 1 | 狼(おおかみ) | 一匹狼・独立心 | 甲戌 |
| 2 | こじか | 人懐こい・純真 | 乙亥 |
| 3 | 猿(さる) | 器用・臨機応変 | 丙子 |
| 4 | チータ | スピード・直感 | 丁丑 |
| 5 | 黒ひょう | 気品・プライド | 戊寅 |
| 6 | ライオン | 王者・堂々 | 己卯 |
| 7 | 虎(とら) | 義理人情・慎重 | 庚辰 |
| 8 | たぬき | 社交的・本音と建前 | 辛巳 |
| 9 | コアラ | マイペース・ロマンチスト | 壬午 |
| 10 | ゾウ | 努力家・真面目 | 癸未 |
| 11 | ひつじ | 寂しがり・情報通 | 甲申 |
| 12 | ペガサス | 自由奔放・天才肌 | 乙酉 |
カラー分類——60パターンの秘密
12動物だけなら12パターンだが、動物占いにはさらにカラー(色)分類がある。各動物に5つのカラーグループ(EARTH・MOON・SUN系など)が割り当てられ、合計60パターンになる。
カラーは以下の10種類(2色ずつ5グループ)。
| グループ | カラー |
|---------|-------|
| EARTH | ブラウン / オレンジ |
| MOON | ゴールド / シルバー |
| SUN | イエロー / レッド |
| 調和 | パープル / ブルー |
| 独立 | グリーン / ブラック |
たとえば「コアラのゴールド」と「コアラのレッド」では、同じコアラでも性格の傾向がかなり異なる。ゴールドのコアラは「慎重で計画的なロマンチスト」、レッドのコアラは「情熱的で行動力のあるロマンチスト」——こういう微妙な違いが、60パターンの面白さだ。
診断コンテンツのSNSバイラル分析
なぜ動物占いのような診断コンテンツはSNSでバズるのか。ここを構造的に理解しておくと、アプリ設計の精度が上がる。
バイラルの3条件:
**1. アイデンティティ表現欲求**
人は「自分がどんな人間か」を他人に伝えたいという根源的な欲求を持っている。MBTIがバズったのもこれだ。「INFP」と名乗ることで、自分を定義し、同じタイプの人と共感し合える。動物占いは、この欲求を「かわいい動物キャラ」という形で満たす。
**2. 比較・共有のしやすさ**
「私はコアラだけど、あなたは?」——この一言で会話が始まる。結果が12動物×カラーで視覚的に明確なため、比較しやすい。LINEグループで全員の結果を貼り合う、カップルで相性診断をする、職場で全員の動物を並べてみる——こういう「巻き込み」が自然に発生する。
**3. コンテンツとしての「映え」**
テキストだけの診断結果は共有されにくい。でも「あなたはコアラ(ゴールド)」というテキストに、AI生成されたゴールドカラーのかわいいコアラのキャラクター画像が付いていたら? 思わずスクリーンショットを撮って、ストーリーズに投稿したくなる。ここで画像生成AIが効いてくる。
SNS別の拡散パターン:
| SNS | 拡散のトリガー | 最適な共有形式 |
|-----|-------------|-------------|
| X(Twitter) | 「私は○○だった」ツイート + OGPカード | リンクカード + 結果テキスト |
| Instagram | ストーリーズでの結果スクショ | 正方形の結果カード画像 |
| TikTok | 「動物占いやってみた」動画 | 縦型の診断プロセス動画 |
| LINE | グループ内での全員診断 | LINEシェアボタン + ミニ結果 |
この分析を踏まえて、第2章では判定ロジックを実装していく。
第2章:TypeScriptで動物占い判定エンジンを実装する

動物占いの計算原理
動物占いの判定は、四柱推命の「年柱・月柱・日柱」の組み合わせから導かれる。具体的には、生年月日から特定の数値テーブルを使って「動物番号」を算出する。
計算の流れは以下の通りだ。
生年月日 → 年テーブル値 + 月テーブル値 + 日 → 合計値 → 60で割った余り → 動物番号
```この「テーブル値」が動物占い独自のもので、四柱推命の干支暦に基づいている。
年テーブルの考え方
各年に対応する数値が決まっている。これは四柱推命の年干支を簡略化したものだ。
typescript
// 年テーブル(1930年〜2030年の一部を抜粋)
const YEAR_TABLE: Record<number, number> = {
1960: 33, 1961: 38, 1962: 43, 1963: 48, 1964: 54,
1965: 59, 1966: 4, 1967: 9, 1968: 15, 1969: 20,
1970: 25, 1971: 30, 1972: 36, 1973: 41, 1974: 46,
1975: 51, 1976: 57, 1977: 2, 1978: 7, 1979: 12,
1980: 18, 1981: 23, 1982: 28, 1983: 33, 1984: 39,
1985: 44, 1986: 49, 1987: 54, 1988: 0, 1989: 5,
1990: 10, 1991: 15, 1992: 21, 1993: 26, 1994: 31,
1995: 36, 1996: 42, 1997: 47, 1998: 52, 1999: 57,
2000: 3, 2001: 8, 2002: 13, 2003: 18, 2004: 24,
2005: 29, 2006: 34, 2007: 39, 2008: 45, 2009: 50,
2010: 55, 2011: 0, 2012: 6, 2013: 11, 2014: 16,
2015: 21, 2016: 27, 2017: 32, 2018: 37, 2019: 42,
2020: 48, 2021: 53, 2022: 58, 2023: 3, 2024: 9,
2025: 14, 2026: 19,
};
```月テーブル
月ごとの補正値。ただし注意点として、四柱推命では節入り日(だいたい毎月4〜8日頃)を境に月が切り替わる。簡易版では日付の境界を以下のように設定する。
typescript
// 月テーブル(節入り日は簡易的に固定)
const MONTH_TABLE: Record<number, { value: number; startDay: number }> = {
1: { value: 0, startDay: 6 },
2: { value: 31, startDay: 4 },
3: { value: 0, startDay: 6 },
4: { value: 31, startDay: 5 },
5: { value: 0, startDay: 6 },
6: { value: 31, startDay: 6 },
7: { value: 0, startDay: 7 },
8: { value: 31, startDay: 8 },
9: { value: 0, startDay: 8 },
10: { value: 31, startDay: 9 },
11: { value: 0, startDay: 8 },
12: { value: 31, startDay: 7 },
};
```完全版: 動物+カラー判定関数
ここまでのテーブルを使って、完全な判定ロジックを組む。
typescript
// 動物占い 完全判定エンジン
// animal-fortune.tsinterface AnimalResult {
animalNumber: number; // 1-12
animalName: string; // 動物名
colorIndex: number; // 0-59 (60パターン)
colorName: string; // カラー名
fullName: string; // 「コアラのゴールド」形式
personality: string; // 簡易性格キーワード
}
const ANIMALS: string[] = [
'狼', 'こじか', '猿', 'チータ', '黒ひょう',
'ライオン', '虎', 'たぬき', 'コアラ', 'ゾウ',
'ひつじ', 'ペガサス'
];
const COLORS: string[] = [
'レッド', 'ブルー', 'オレンジ', 'ブラウン', 'ブラック',
'パープル', 'ゴールド', 'シルバー', 'グリーン', 'イエロー'
];
60パターンの動物→カラーマッピング
const PATTERN_MAP: Array<{ animal: number; color: number }> = [
{ animal: 0, color: 6 }, // 1: 狼のゴールド
{ animal: 1, color: 7 }, // 2: こじかのシルバー
{ animal: 2, color: 0 }, // 3: 猿のレッド
{ animal: 3, color: 2 }, // 4: チータのオレンジ
{ animal: 4, color: 3 }, // 5: 黒ひょうのブラウン
// … 残り55パターンは省略(有料版で完全収録)
];
function getAnimalFortune(
year: number,
month: number,
day: number
): AnimalResult {
// 1. 年テーブル値を取得
const yearValue = YEAR_TABLE[year];
if (yearValue === undefined) {
throw new Error(`年テーブルに ${year} 年のデータがありません`);
}
// 2. 月の節入り日チェック
const monthInfo = MONTH_TABLE[month];
const effectiveMonth = day < monthInfo.startDay ? month - 1 : month;
const adjustedMonth = effectiveMonth <= 0 ? 12 : effectiveMonth;
// 3. 合計値を計算
const total = yearValue + MONTH_TABLE[adjustedMonth].value + day;
// 4. 60で割った余りでパターンを取得
const patternIndex = total % 60;
const pattern = PATTERN_MAP[patternIndex];
// 5. 結果を組み立て
const animalName = ANIMALS[pattern.animal];
const colorName = COLORS[pattern.color];
return {
animalNumber: pattern.animal + 1,
animalName,
colorIndex: patternIndex,
colorName,
fullName: `${animalName}の${colorName}`,
personality: getPersonalityKeyword(pattern.animal, pattern.color),
};
}
function getPersonalityKeyword(
animal: number,
color: number
): string {
// 動物×カラーごとの性格キーワード(一部抜粋)
const keywords: Record<string, string> = {
'0-6': '慎重で誠実な一匹狼',
'1-7': '繊細で気品のある甘えん坊',
'2-0': '情熱的で頭の回転が速い器用者',
'3-2': '温かみのあるスピードスター',
'8-6': '計画的なロマンチスト',
'8-0': '情熱的で行動力のあるロマンチスト',
// … 60パターン全て定義(有料版で完全収録)
};
return keywords[`${animal}-${color}`] || '個性豊かな存在';
}
使用例
const result = getAnimalFortune(1990, 5, 15);
console.log(result);
// => { animalNumber: 9, animalName: 'コアラ', colorName: 'ゴールド',
// fullName: 'コアラのゴールド', personality: '計画的なロマンチスト' }
```
相性判定ロジック
動物占いには「グループ理論」による相性判定がある。12動物は4つのグループに分かれ、グループ間の関係で相性が決まる。
typescript
// 相性グループ
const COMPATIBILITY_GROUPS = {
EARTH: ['狼', 'こじか', 'たぬき'], // 地球グループ
MOON: ['猿', '虎', 'コアラ'], // 月グループ
SUN: ['チータ', 'ライオン', 'ゾウ'], // 太陽グループ
NEW_MOON: ['黒ひょう', 'ひつじ', 'ペガサス'], // 新月グループ
}; グループ間相性マトリクス
const COMPATIBILITY_MATRIX: Record<string, Record<string, number>> = {
EARTH: { EARTH: 85, MOON: 70, SUN: 60, NEW_MOON: 75 },
MOON: { EARTH: 70, MOON: 90, SUN: 65, NEW_MOON: 55 },
SUN: { EARTH: 60, MOON: 65, SUN: 80, NEW_MOON: 75 },
NEW_MOON: { EARTH: 75, MOON: 55, SUN: 75, NEW_MOON: 70 },
};
function getCompatibility(
animal1: string,
animal2: string
): { score: number; description: string } {
const group1 = findGroup(animal1);
const group2 = findGroup(animal2);
const score = COMPATIBILITY_MATRIX[group1][group2];
return {
score,
description: getCompatibilityText(score, animal1, animal2),
};
}
```
この判定エンジンを使えば、生年月日を入力するだけで「動物 + カラー + 性格 + 相性」が一瞬で出る。次章では、この結果をAIがさらに深く語るためのプロンプトを設計する。
この先で読めること
ここまでは「動物占いの仕組みと、生年月日から動物とカラーを出す判定エンジン」でした。ここから先は、その結果をAIに語らせて、SNSで広がるアプリに仕上げるまでの中身です。
60パターンの性格・相性・今日の運勢を書かせるシステムプロンプトの完全版と、12動物の基本データ
Gemini Image APIで動物キャラを描かせるプロンプトと、OGP画像の自動生成・画像のキャッシュ
顔写真から「あなたに似ている動物」を判定するVision APIのプロンプトと、カメラ入力のコード
診断フローから結果カードまでの画面とアニメーション
OGPカード・Xカード・LINEシェア・TikTok動画の自動生成
広告・プレミアム診断・法人向けチームビルディングの収益の設計と、その試算
僕がAIでいろいろ作っている毎日は、ショート漫画にしてYouTubeにも出しています。
YouTubeのショート漫画「NextCode: ゼロからの再起動!沖縄スマホ修理屋の天才プログラマー」
判定エンジンは、ここまでで動きます。この先は、その結果を「人に見せたくなる診断」に変えるプロンプトとコードを、そのまま載せています。