「今日マジで何やればいいんだっけ?」って毎朝思わない?膨大なタスクリストやカレンダー見てると、それだけで疲れるんだよな。そんなときに「これだけやればOK!」って教えてくれる秘書がいたら最高じゃん?
はい、作れるんだよ、Claude Codeで。しかもめちゃくちゃカンタン。Googleカレンダーとタスクの情報見て、LLMが優先度を判断して、毎朝DiscordのDMに「今日のやること」を届けてくれる秘書Bot。俺もこれで運用してるから、実録ベースで紹介するね。
一番雑な投げ方
まずは一番シンプルに、骨格だけ作らせてみよう。
Discordで毎朝「今日やること」をDMしてくれる秘書Bot作って。
これだけで動く。Claude CodeはまずBotのベースコードと、DiscordへのDM送信、定期実行の仕組みを提案してくれるはずだよ。
もうちょい具体的に投げるパターン
これだけだとただ情報を並べるだけだから、もうちょい具体的に「秘書」っぽく使えるように指示を足していこう。
パターン1: カレンダーとタスクの連携指示を追加
「今日のやること」を判断させるには、当然その元になる情報が必要になる。
Discordで毎朝「今日やること」をDMしてくれる秘書Bot作って。
GoogleカレンダーとGoogle Tasksの情報も見て、今日の予定を判断してDMに流してほしい。
こう投げると、Google Calendar APIとGoogle Tasks APIの連携方法や、それらの情報を取得するコードまで含めて提案してくれるよ。認証周りの設定とかもちゃんと教えてくれる。
パターン2: ペルソナと出力形式の指示を追加
ただ情報を見せるだけじゃなくて、親しみやすい秘書っぽい口調で、かつ重要なことをわかりやすく伝えてほしいよね。
Discordで毎朝「今日やること」をDMしてくれる秘書Bot作って。
GoogleカレンダーとGoogle Tasksの情報も見て、今日の予定を判断してDMに流してほしい。
秘書のペルソナは「親しみカジュアルな秘書」。タメ口ベースだけど「〇〇さん」と呼ぶ。
朝のDMは以下のような形式でお願い。
---
おはよう、〇〇さん!
今日の予定チェックしたよ。会議2つ、作業時間は午後3時間。
🎯 今日これだけやれば大丈夫:
→ T-15 提案資料(月曜期限)
午前中にやっちゃおう。午後フリーになるから。
⏸ これは明日でいい:
・T-12 見積もり — 水曜だしまだ平気
・T-18 レビュー — 急ぎじゃないよ
⚠️ T-21、昨日期限だった!
月曜に回す? それとも今日やっちゃう?
あんまり詰め込まないでね。いい週末にしましょ。
---
出力のサンプルを渡すと、LLMがそのトーンとフォーマットに合わせてくれる。これ大事。Claude Codeは、このフォーマットに合うようにLLMへのプロンプトを調整してくれるし、場合によってはJSONでの構造化出力を提案してくれることもあるよ。
パターン3: コストと技術スタックの指定
運用コストも意識したいし、普段使い慣れてる技術スタックがあればそれを指定しちゃおう。
Discordで毎朝「今日やること」をDMしてくれる秘書Bot作って。
GoogleカレンダーとGoogle Tasksの情報も見て、今日の予定を判断してDMに流してほしい。
LLMはGroqの無料枠を使いたい。Fly.ioで運用する想定で、TypeScriptで実装してほしい。
これで、コード生成の際にGroq APIを考慮した実装や、Fly.ioへのデプロイを見据えたDockerfileや設定ファイルまで提案してくれるはず。TypeScriptで実装されるから、その後の改修もラクだよ。
実践例 / 実録
俺が実際にどうやってこの秘書Botを動かしてるか、実録ベースで話すね。
最初は「Discord Bot作って」ってだけClaude Codeに投げたんだ。そしたらBotの基本的な構成と、メッセージ送信の仕組みをサクッと出してくれた。
次に「Google CalendarとTasksの連携頼むわ」って追加指示。すると、OAuth認証とかAPIの呼び出し方とか、結構面倒な部分も自動で組み込んでくれたから、APIのドキュメントと睨めっこする手間が省けたのはデカい。
そんで一番大事なのが「秘書っぽく話してほしいんだよね。具体的にはこれこれこう」って、さっきのサンプルみたいに出力イメージを伝えたら、マジでその通りのトーンで話し始めたんだ。朝になるとDiscordのDMに「おはよう、倫太郎さん!今日の予定チェックしたよ。」ってメッセージが届くわけ。
しかもただ予定を羅列するだけじゃなくて、ちゃんと「🎯 今日これだけやれば大丈夫:」「⏸ これは明日でいい:」「⚠️ T-21、昨日期限だった!」って感じで、優先度を判断して提案してくれるんだよ。これ、めちゃくちゃ助かる。マジで秘書なんだ。
この裏側では、buildPlan()みたいな関数で、タスクやカレンダーイベントをTypeScript側でフィルタリング・選別してる。LLMはあくまで「紬節で言語化」するだけだから、LLMが暴走して変なタスク決めるとか、そういう心配もなし。
結局、Fly.ioのホスティング費用とGroqの無料枠だけで動いてて、月2〜3ドルくらいしかかかってない。これはやらない理由ないでしょ。
つまずきポイント
実際に運用してみて、いくつか「あー、ここかー!」ってなったところがあったから、共有しとくね。
ハマりどころ1: LLMのトークン制限
最初はCalendarとTasksの情報を全部LLMにぶち込もうとして、トークンオーバーになったんだ。タスクが無限にあるわけだから、そりゃそうだ。
対処法: 「dueDate <= today + 7」みたいに、今日のタスクと、直近1週間くらいのタスクだけをフィルタリングしてLLMに渡すようにしたよ。Claude Codeに「LLMに渡す前に、直近のタスクとイベントだけフィルタリングして」って投げると、そのフィルタリング処理もいい感じに書いてくれる。全部見せる必要はなくて、「判断に必要な情報」だけを厳選して渡すのがポイントだね。
ハマりどころ2: LLMの出力フォーマットの不安定さ
「JSONで出力して」って言っても、たまにJSONが崩れたり、余計な説明文が入ったりすることがあったんだ。これだとBotがうまくパースできないから困る。
対処法: Claude Codeに「LLMの出力はresponse_format: { type: 'json_object' }を設定してJSONを強制して」って指示したり、さらに「最終的な出力はJSONで、replyとactions[]のキーは必須」みたいに、具体的に構造を制約すると安定するよ。Bot側でも、受け取ったJSONを厳しくバリデーションするコードを書いてもらうと安心だね。
これで君も、優秀なDiscord秘書Botを手に入れて、毎朝「今日やること」に悩まされない日々を送れるはずだよ。やってみて!