Discord
役割分担
自動取込の本線には使わない
Discord は 人との入出力チャネル、自動は Tunnel + メール。 Grafana / PostgreSQL 向けに構造化データをそのまま入れたいことと、 Discord 文面パースを本線にすると経路が脆いことが理由。
| 向き | 用途 | MVP |
|---|---|---|
| 自宅 → Discord | 厳し目フィードバック、確認、週次レビュー | 必須 |
| Discord → 自宅 | 手動追加(テキスト / 画像)、訂正、取消。DM も可 | 必須 |
| PayPay 自動取込の主経路 | 使わない(Tunnel 直 POST を正とする) | — |
チャンネル案
| チャンネル | 用途 |
|---|---|
#finance |
AI からの厳し目通知・確認返信 |
#finance-inbox |
手動入力(テキスト / 画像 / スクショ) |
#finance-imports(任意) |
週次 CSV 添付 |
最初は #finance 1本でも可。混ざってきたら inbox を分ける。
DM でも会話できる(Bot と共通サーバにいるユーザーから)。
手動追加
テキスト
例:
スタバ 680 食費
現金で電車 200
さっきの取消
給料 280000
このままで(今月予算を確定・未割当は別枠貯金へ)
貯金 60000 食費 70000 にして
家賃を 80000 にして(固定費マスタ)
月末締め(変動の実残を別枠貯金へ)
別枠貯金いくら
欲しいもの Switch 35000
旅行で 80000、期限は 2026-09-30
カテゴリを日用品に直して
支出を保存すると、返信の末尾に 【変動の残り】(変動枠・該当分類・食費の今日/週目安)が付く。
月初は draft の予算案(給与→固定貯金→固定費→変動枠)が出る。「このままで」で確定。
詳細は 月次予算。
Bot が受信 → Gemini で抽出 → 検証 → PG 保存 → 厳し目で確認返信。
画像・添付(推奨 UX)
よしなに添付して投げる。
| 添付例 | 期待する処理 |
|---|---|
| PayPay / クレカの明細スクショ | 金額・店名・日時を抽出 |
| レシート写真 | 合計金額を優先抽出(明細行は取れればボーナス) |
| 家計メモの写真 | 読める範囲で支出化 |
| CSV ファイル | 週次取込扱い(画像解析ではない) |
フロー:
Discord に画像(+ 任意の一言)
→ Bot が添付を取得
→ raw(画像URL/バイナリメタ)を保存
→ Gemini Vision で構造化抽出
→ プログラム検証
→ PG 保存
→ 「記録した。今日あと ¥…」と返信
テキストと画像が両方ある場合は、テキストをヒント(カテゴリ指定など)として使う。
Bot 要件
- Bot + Gateway: Discord → 自宅(メッセージ / 添付の受信)に必要。外向き WebSocket なので自宅の inbound 公開は不要
- Message Content Intent: 本文読み取りに必要
- 添付読み取り権限
MVP から Bot を使う(手動入力・画像があるため)。Webhook のみでは Discord→自宅ができない。
カテゴリについて
PayPay 自動経路と同様、多くの通知からは商品内訳は取れない。
一方で レシート画像で明細が読めるとき は line_items に内訳を保存する。
読めないスクショは合計・店名・日時が中心。
加えて、店種 + 時間帯から 場面(夕食 / 遊び など) を occasion として推定する。
カテゴリは Gemini 推定、またはユーザーが一言で指定・訂正。
例: 画像添付 + 日用品 のメッセージ。
やらないこと
- PayPay 自動通知の本線を Discord Webhook 経由にする(Tunnel を本線に維持)
- 認証なしで誰でも投稿できる公開 Webhook を取り込み唯一の入口にする