Fitbit APIで取得した直近一週間分の睡眠データを、Gemini APIを利用して分析し、パーソナライズされた睡眠レポートを生成してメールで送信するNode.js製のコマンドラインツールです。
アクセストークンの有効期限が切れている場合は、自動的にリフレッシュトークンを使用して新しいアクセストークンを取得し、.envファイルを更新します。
- 睡眠データの取得: 直近一週間分の睡眠データをFitbit APIから取得します。
- AIによるレポート生成: 取得した睡眠データをGemini APIに渡し、分析に基づいたレポートを生成します。
- メール送信: 生成されたHTML形式のレポートをGmail経由で指定したアドレスに送信します。
- アクセストークンの自動更新: Fitbitのアクセストークンが期限切れの場合、自動で更新します。
- TypeScript: 型安全なコードで開発されています。
- Node.js (v24.11.0 以上を推奨)
- Fitbit アプリケーションのクライアントIDとクライアントシークレット
- Google AI Studioで発行したGemini APIキー
- Gmailのアプリパスワード
-
このリポジトリをクローンします。
git clone https://github.com/your-username/fitbit-sleep-report.git cd fitbit-sleep-report -
依存関係をインストールします。
npm install
-
.env.exampleファイルをコピーして.envファイルを作成します。cp .env.example .env
-
.envファイルを編集して、必要な情報を設定します。CLIENT_ID: あなたの Fitbit アプリケーションのクライアントIDCLIENT_SECRET: あなたの Fitbit アプリケーションのクライアントシークレットACCESS_TOKEN: Fitbit APIへのアクセストークンREFRESH_TOKEN: アクセストークンを更新するためのリフレッシュトークンGEMINI_API_KEY: あなたのGemini APIキーSEND_EMAIL: レポートの送信元・送信先となるGmailアドレスGOOGLE_APP_PASSWORD: 上記GmailのアプリパスワードBORN_YEAR: 誕生年(レポートの精度向上のため)SEX: 性別(レポートの精度向上のため)
注意:
ACCESS_TOKENとREFRESH_TOKENは、Fitbit の OAuth 2.0 認証フローを通じて初回取得する必要があります。GOOGLE_APP_PASSWORDは通常のGoogleアカウントのパスワードではなく、2段階認証を設定した上で発行される16桁の「アプリパスワード」です。
-
TypeScript をコンパイルします。
npm run build
-
スクリプトを実行します。
npm start
または、開発モードで直接 TypeScript を実行することも可能です。
npm run dev
実行すると、コンソールに進捗が出力され、処理が完了すると指定したメールアドレスに睡眠レポートが届きます。
このプロジェクトは ISC ライセンスの下で公開されています。