以前、7年分の育児記録がやっと使える情報になった話を書きました。
Google KeepからObsidianに移行して、眠っていた記録がようやく動き出した、という話です。
あれからさらに進化しました。
このニュースレターを読んでいる方は、すでにAIを活用している方も多いと思います。「それ、もうやってる」かもしれません。それはそれで嬉しいんですが、まだという方の参考になれば。
見てください、これを。
[スクショ①:Discord画面 — 質問と回答]
「長女が初めて自転車に乗れたの、いつだっけ?」とDiscordに入力しました。
数秒後、答えが返ってきました。
「2021/5/3(小1):◯◯ちゃん・△△ちゃんと野川に行き、その後「自転車でみんなで移動」という記録あり。この時点では普通に乗れていた様子です。」
Obsidianに移行してあった7年分の記録の中から、Claude Codeが探してくれました。
どうですか。
今日構築したばかりのシステムで、もう記憶力ゼロの私が、全部覚えている人になりました。
前回からの課題:Linuxとスマホの同期
スマホからも見られるようにしたかったわけですが、実際にはLinux環境ということもあり、rsyncやSSHトンネル等も試しましたが、どれもしっくり来ませんでした。
設定が手間だったり、スマホ側の動作が不安定だったり。
「見たいときにサッと見られる」という状態には、なかなかなれませんでした。
そこで発想を変えました。
「スマホでVaultを開く」のをやめる。必要な情報だけDiscordで取り出せればいい。
これが、今回のシステムを作るきっかけになりました。
Substackを読んでいて気づいた
Substackのニュースレターを読んでいると、Discordを活用している事例が増えていました。
コミュニティ、勉強会、個人の情報管理。
「Discord、チャンネルで話題を分けられるじゃないか。」
夫婦2人だけのDiscordサーバーを作りました。
チャンネルを作りました:#日記、#療育、#相談、#メール、#ニュース。
そこにBotを繋げました。
何を作ったか
構成はこんな感じです。
[構成図:discord_system_diagram.png]
スマホ(Discord)
↓
Python Bot(メッセージを受け取って振り分け)
↓
Claude Code CLI(Vaultを読み書き・判断・整形)
↓
Obsidian Vault(ローカルに保存されたMarkdownファイル群)
PythonでBotのコードを書いて、Claude Code CLIをサブプロセスとして呼び出しています。
Claude Codeというのは、ざっくり言うと「自分のパソコンの中で動くAI」です。
ChatGPTのようにブラウザで質問するのではなく、ターミナルから呼び出せて、パソコン内のファイルを直接読んだり書いたりしてくれます。
いちいち内容をコピペしてAIに貼り付ける必要がない、というのが最大の違いです。
「日記を書いて」「記録を検索して」という指示を文章で渡すと、
Claude CodeがObsidian Vault内のファイルを自律的に読んで・書いて・まとめてくれます。
重要なポイントはAPIキー不要なことです。
Claude Codeのサブスクリプション(月$20)の中で動く。
OpenAI APIを別で契約する必要がありませんでした。
ちょっと呪文みたいですが、コードの核心部分はこれだけです:
python
proc = await asyncio.create_subprocess_exec(
"claude",
"--print", "--dangerously-skip-permissions",
"--output-format", "text",
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
cwd=vault_path, # Vaultを作業ディレクトリに設定
)
stdout, _ = await proc.communicate(input=task.encode())
cwd=vault_path でObsidian VaultをClaude Codeの作業ディレクトリに指定しているので、
相対パスでVault内のファイルを自由に読み書きしてくれます。
コマンド一覧
| コマンド | 機能 |
|---|---|
| !日記 [内容] | 整形してVaultに追記保存 |
| !療育 [内容] | 療育記録。3件超で月次サマリーを自動生成 |
| !検索 [質問] | Vault全体から回答(冒頭の「いつだっけ?」がこれ) |
| !相談 [悩み] | 過去記録を参照しながら育児相談に答える |
| !引き継ぎ [受診先] | 病院・療育センターへの引き継ぎシートを自動生成 |
| !メール | Gmail未読を優先度フィルタリング付きで要約 |
| !予定 | Googleカレンダーの今後1週間 |
| !おはよう | メール+予定のまとめ(毎朝8時に自動投稿) |
| !週次サマリー | 今週の育児まとめ(毎週日曜21時に自動投稿) |
| 画像を送るだけ | 写真日記として保存。Claude Codeが内容を読んで文章を生成 |
! なしのメッセージも自然言語で処理されます。
「今月の療育、どんな感じだった?」と送れば、Vaultを読んで答えてくれます。
22時のまとめ機能
一番気に入っているのはこれです。
毎晩22時に、その日に書いた日記を読んで、1本の文章にまとめ直してくれます。
私が「次女が音読の宿題、一人で最後まで読めてた」と書いた。
夫が「長女が帰ってきてすぐ自分から宿題始めてた」と書いた。
22時になると、こんな感じにまとまります:
今日は次女が音読の宿題を最後まで一人でやり遂げました。つっかえながらも諦めずに読んでいて、終わったあとの顔が誇らしそうでした。長女は学校から帰るなりランドセルを置いて宿題を始めていたようで、自分でペースをつかんできた気がします。
2行のメモが、ちゃんとした一日の記録になりました。
[スクショ②:まとめ後の日記のDiscord画面]
この仕組みのポイントは2つあります。
1つ目は、夫婦それぞれの視点が統合されること。
私が気づいたこと、夫が気づいたこと、それぞれ別々に投稿すれば、Claude Codeが一本の記録にまとめてくれます。どちらかが忘れていても、もう片方が補ってくれる。育児記録が「片方の日記」ではなく「家族の記録」になります。
2つ目は、DiscordでもObsidianでも見られること。
スマホではDiscordに話しかければすぐ答えが返ってくる。PCではObsidianで時系列に並んだ記録を読み返せる。同じデータを2つのインターフェースで使えるのが地味に便利です。
写真日記
写真をDiscordに投げると、日記になります。
Claude Codeが画像を読んで、「長女が机に向かって教科書を広げています。窓から夕日が差し込んでいます。」のように文章を生成してくれます。
Obsidianには ![[2026-05-24_001.jpg]] 形式でリンクが保存されるので、
PCでVaultを開いたときも写真と日記を一緒に見返せます。
GmailとGoogleカレンダーも繋げた
毎朝8時に「おはようメッセージ」が来ます。
- 未読メールの要約(療育・病院・学校関連を優先度高めに)
- 今週の予定
Googleカレンダーに療育・学校行事・病院をまとめて入れているので、
Discordを開くだけで一週間の流れが把握できるようになりました。
Geminiニュースも流すようにした
毎朝Gemini CLIでAI・技術系のニュースを収集して、Discordの #ニュース チャンネルに流しています。
「これ試したいな」と思ったことがあれば、!メモ [アイデア] でObsidian Vaultに投げ込まれます。
夜にそのメモを見て、実装してみる。
育児以外にも使える構成です
この仕組み、育児記録として作りましたが、構成自体はどんな用途にも転用できます。
- チームの日報・議事録をDiscordに投げてObsidianで管理する
- 個人の学習メモをDiscordから記録してナレッジベースに蓄積する
- プロジェクトの進捗をDiscordで報告しながら自動でドキュメント化する
「Discord × Claude Code × Obsidian」の組み合わせは、メンバーが複数いて、かつ記録を後で参照・検索したい用途に広く使えます。
「自分専用秘書AIを作る」と比べると
少し前に「自分専用の秘書AIを作る」というのがOpenCrawで流行っていました。
いくつか読みましたが、けっこう大がかりな構成で。
API複数契約して、ベクターDBを立てて、クラウドに置いて……。
Claude Codeのサブスクリプションの中に、全部入っていました。
それが今の結論です。
【おまけ】ここから下はオタクの早口です
興味のある方だけどうぞ。セットアップの概要を書いておきます。
必要なもの:
- Discord Bot(Developer Portal で作成)
- Message Content Intentを有効化するのを忘れずに
- ALLOWED_USERSには数字のユーザーID(!myid コマンドで取得できるようにしておくと便利)
- Python 3.13以上(audioop-lts==0.2.1 が追加で必要)
- Claude Codeのサブスクリプション
- Obsidian Vault(ローカルのどこかに)
- Google Cloud Console(Gmail・Calendar連携する場合)
- 個人アカウントは、OAuth同意画面の「テストユーザー」に自分のアドレスを追加しないと403エラーが出ます
ファイル構成:
discord_agent/
├── bot.py
├── utils/
│ └── claude_runner.py # Claude Code呼び出し
├── handlers/
│ ├── diary.py # 日記・まとめ
│ ├── therapy.py # 療育記録
│ ├── search.py # 検索
│ ├── consultation.py # 育児相談
│ └── handover.py # 引き継ぎシート
├── integrations/
│ ├── gmail.py
│ └── gcal.py
├── .env # Botトークン・Vault pathなど
└── requirements.txt
requirements.txt:
discord.py==2.3.2
audioop-lts==0.2.1
python-dotenv==1.0.1
apscheduler==3.10.4
google-api-python-client==2.190.0
google-auth-httplib2==0.2.0
google-auth-oauthlib==1.2.1
常時起動の設定(OSによって異なります):
| OS | 方法 |
|---|---|
| Linux(systemd) | /etc/systemd/system/discord-agent.service に登録 |
| Mac | launchd(~/Library/LaunchAgents/)に plist を置く |
| Windows | タスクスケジューラ、または WSL2 上で Linux と同様に設定 |
Linux の例(systemd):
```ini
[Unit]
Description=Discord AI Agent
[Service]
ExecStart=/usr/bin/python /path/to/discord_agent/bot.py
Restart=on-failure
RestartSec=10
User=yourname
[Install]
WantedBy=multi-user.target
```
コードは記事内の構成を参考に組んでいただくか、気になる方はコメントかDMでご連絡ください。
……はい、早口おわり! 深呼吸しますね。
構築した日に使えた、というのが一番の感想
Keep時代、記録した内容を見返したのは数えるほどでした。
「記録すること」が目的で、「使うこと」ができていなかった。
今日構築して、今日から「聞く」感覚で使えています。
「あの日どうだったっけ」をDiscordに投げれば答えが返ってくる。
Linuxでスマホとの同期をなんとかしようとしていた時間は何だったのか、と思いますが、
「必要な情報だけDiscordで取り出す」という発想の転換で全部解決しました。
夫婦で同じBotを使っているので、私が知らなかった夫目線の記録も残っています。
それが週次サマリーに混ざってくるのが、予想外に良かったです。
育児って二人でやっているのに、記録はどちらか片方の主観だけになりがちです。
2人分の「今日気づいたこと」が一つの記録になる仕組み、個人的にはここが一番の成果です。
育児記録を自動化・システム化するなんて、という違和感はあると思います。
「もっと手書きで残せばいいじゃないか」というのも分かります。
でも手書きで残せなかったから、7年分がKeepに眠ったままだったんですよね。
使える記録になってはじめて、意味があると思っています。
次回は、Ghosttyというターミナルエミュレータへの偏愛を語ります。
こういう感じで、日々の課題をシステムで殴って解決しています。
気になることがあればお気軽にどうぞ。
ママゴトラボについて
ASDの子育て・AI活用・ライティング・プログラム制作について発信しています。
ホームページでは、サービス紹介やブログ記事もまとめています。
👉 https://mamagotolab.com
ライティング・ツール制作・プロジェクトマネジメント支援のご依頼はCoconalaからお気軽にどうぞ。
👉 https://coconala.com/users/5986442
記事執筆・自動化ツール、お気軽にご相談ください
ブログ記事のライティングや、GAS・Pythonを使った小さな自動化ツールの制作もお受けしています。まずは気軽にメッセージをどうぞ。
ココナラで相談する →