IVYXON
記事一覧に戻る
ワークフロー中級🧪 Recipe

Discordで毎朝「今日やること」教えてほしいんだけど、どうすりゃいい?

Googleカレンダーとタスクから当日の優先度をLLMに判断させて、DiscordにDM配信する秘書Botの作り方を紹介するよ。

2026年6月1日7分で読めます

「今日マジで何やればいいんだっけ?」って毎朝思わない?膨大なタスクリストやカレンダー見てると、それだけで疲れるんだよな。そんなときに「これだけやれば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で、replyactions[]のキーは必須」みたいに、具体的に構造を制約すると安定するよ。Bot側でも、受け取ったJSONを厳しくバリデーションするコードを書いてもらうと安心だね。

これで君も、優秀なDiscord秘書Botを手に入れて、毎朝「今日やること」に悩まされない日々を送れるはずだよ。やってみて!