MyDigitalButler

個人AIアシスタント基盤

GoPythonTypeScriptGCPCloudflare WorkersTerraformGeminiGroq

MyDigitalButler — 個人用AIアシスタント

Google Cloud と Cloudflare で動く個人用のAIシステム。Obsidianと統合し、複数のAIを束ねて毎日自動で動き続けています。


概要

毎朝の挨拶、RSS要約、ブックマーク整理、健康データ同期、AIとの対話。日常を支える機能を 20以上の独立した小さなサービス に分けて実装し、決まった時刻に自動で走らせています。

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

  1. 機能ごとに独立したサーバーレス構成 — 各機能を小さなサービスに分割し、定期ジョブはGo、AI処理や画像解析はPythonと使い分けています
  2. 複数AIの統一窓口 — Groq と Gemini を束ね、ひとつが止まっても別のAIへ自動で切り替わります
  3. Obsidianとの循環 — Obsidian ⇄ GitHub ⇄ ストレージ ⇄ データベースの多層同期で、生活ログと知識を残しています

主な機能

毎日動くもの

機能時刻内容
デイリーチェックイン07:30天気・カレンダー・前日の振り返りを朝イチでSlackへ通知
気圧アラート毎時気圧の低下を検知して頭痛予防の通知
過去の今日08:00同じ日付の過去日記をリマインド
RSS処理8:00 / 12:30 / 18:30技術ブログを巡回して要約し、Slack と Obsidian へ
日次振り返り22:00Slackの会話ログをMarkdownの日記に変換して保存

RSS要約のSlack通知

巡回した技術ブログをAIが要約し、重要度を10段階でスコアリングしてSlackへ通知する

AIによる自律処理

Slackから話しかけると、その日の記録を整理して返す。用途に応じてモードが切り替わる

ヘルスケア・運用


技術スタック

実行環境

LLM / AI

ストレージ

IaC / 運用

外部連携: Slack Events API / Google Calendar API / GitHub API / SerpAPI / Secret Manager


アーキテクチャ

functions/                 GCP Cloud Run マイクロサービス群
├── slack_event_handler/   [Python] メインSlack Bot・RAG
├── daily_checkin_go/      [Go] 朝の挨拶
├── daily_reflection_go/   [Go] 日次振り返り
├── process_rss_go/        [Go] RSS処理
├── knowledge_graph_builder/  [Python] ナレッジグラフ生成
├── bookmark_enricher/     [Python] ブックマーク要約
└── ...(計20以上)

cloudflare/                Cloudflare Workers 移行版
├── scheduler-worker/      cron で全ジョブの時刻を統合管理
├── daily-checkin/ daily-reflection/ weekly-report/ process-rss/ ...
└── MIGRATION_ROADMAP.md   移行計画

IaC/                       Terraform 定義
agents/                    Claude Code 開発支援エージェント設定
scripts/                   運用・デプロイ用スクリプト

朝のデータフロー

スケジューラ → daily-checkin
  ├─ Google Calendar API(祝日・予定)
  ├─ GCS(前日の日記要約)
  ├─ Firestore(健康サマリー)
  └─ Gemini(挨拶メッセージ生成)
        → Slack通知
  08:00 → 過去の今日 / RSS朝版 を順次配信

技術的な見どころ