メインコンテンツへスキップ
見出し画像

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.ts

    interface 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: ゼロからの再起動!沖縄スマホ修理屋の天才プログラマー」

    判定エンジンは、ここまでで動きます。この先は、その結果を「人に見せたくなる診断」に変えるプロンプトとコードを、そのまま載せています。

    あなたへのおすすめ