Gorisan(ゴリさん)

関西弁AIパーソナルトレーナー LINE Bot

GoGeminiCloud RunLINE Messaging APIFirestore

Gorisan(ゴリさん)— 関西弁AIパーソナルトレーナー

「筋肉は裏切らへん!」熱血・関西弁のAIトレーナーが、食事写真の解析から運動記録、応援メッセージまでを担当するLINE Botです。友人と2人で使っていて、お互いの記録が相手への応援通知になります。


概要

「AIに叱られる」のではなく「アニキに褒められる」体験を目指したダイエット支援Botです。

スモールステップ、全肯定、完璧主義をやめる。こうした行動科学の考え方をキャラクター設計に落とし込み、とにかく記録のハードルを下げることを最優先にしました。

設計の軸は3つあります。

  1. 入力のハードルをなくす — 食事は写真1枚、体重や歩数は「62.5kg」「5000歩歩いた」といった普通の文章でOK。専用のフォームやコマンドを覚える必要がありません
  2. キャラクターと行動科学 — 「スクワット1回でOK」「休むのも勇気やで」など、0を1にすることを称賛する姿勢をプロンプトで一貫させています
  3. 2人で続ける仕組み — 片方が記録するともう一方へ応援メッセージが飛び、3日記録がないと心配メッセージが届きます

主な機能

対話機能

機能内容
食事画像の解析写真を送るとGeminiがメニューを推定し、カロリーとPFCバランスを算出。時間帯も考慮する
テキストでの食事記録「カツ丼食べた」だけで記録。「親子丼やった」と訂正すれば即座に再計算
自然文からの記録文章の意図をAIが読み取って数値を取り出し保存。体重・歩数・筋トレに対応
グラフ生成直近30日の体重と歩数の推移を画像で返信
相談への回答筋トレ方法などの相談に、Google検索で裏付けを取りながら回答
ゴールの自動切替目標体重の達成を検知するとダイエットモードから筋トレモードへ移行し、メニューも差し替え

Apple Healthからの自動記録

Apple Healthのデータが届くと自動で記録し、ゴリさんが関西弁で反応する

自動で動く機能

機能トリガー内容
タスク通知毎朝7時今日やることをリマインド
サボり検知毎日11時3日間記録がないユーザーへ心配メッセージ
マイルストーン体重記録時「-2kg達成」などの節目を検知して祝福
週次レビュー日曜21時1週間の体重・歩数・食事を総括
月次チャレンジ月初 / 月末月ごとの目標設定と達成判定
日記への反映ヘルスデータ着信時Apple Watch経由のデータが届いたらObsidianの日記へ転記

週次レビュー

日曜21時に届く週次レビュー。体重・歩数・筋トレを集計し、最後にひとこと添える

ソーシャル機能


技術スタック


アーキテクチャ

gorisan_go/                      1つのCloud Runサービスとして稼働
├── main.go                      ルーティング・定時実行の受け口
├── line_handler.go / client     LINEの受信・返信・プッシュ送信
├── intent_classifier.go         文章が何の記録かをAIで判定
├── feature_food_analyzer.go     食事画像の解析
├── feature_food_text.go         テキストでの食事記録・訂正
├── feature_workout.go           筋トレの記録
├── feature_mutual_motivation.go 相互奮起通知
├── feature_rag.go               相談への回答
├── feature_chart.go / report    グラフ生成・各種レポート
├── cron_*.go                    サボり検知 / 週次 / 月次 / 日記反映
├── user_service.go              複数ユーザーの管理
└── onboarding_handler.go        初回セットアップ

相互奮起通知のデータフロー

友人がLINEで「今日3000歩」と送信
  → AIが歩数の記録と判定して数値を取り出す
  → データベースに保存し、本人へ即返信
  → 裏側で並行して、相手へ応援メッセージを送信

技術的な見どころ