Discordに「おはよう通知」を作ったら、思った以上に使えた話
何が起きたか
毎朝、今日やることを把握するのに5分くらいかかってた。ブログの在庫は?X承認待ちは何件?昨夜エラー出た?——全部バラバラのファイルやターミナルを見ないとわからなかった。それを1通のDiscord通知に集約しようと試みた。
環境
- macOS(MacBook Pro M5)
- Python + Discord Bot(
01_Scripts/discord_bot/bot.py) - launchd で定時実行
- Claude Code(Sonnet)で設計・実装
実際に試したこと
最初は「毎朝ダッシュボード送ってくれ」とだけ指示した。Claudeが実装して送信テスト。Discordに届いたのがこれ:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
☀️ 04/19 (日) おはようございます
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 今すぐやること
📌 X承認待ちが12件あります → !xapprove で確認
📌 YouTubeの在庫が空です → /youtube-mbti で台本を生成
📌 エラーが発生しています → 下のエラー欄を確認
📦 コンテンツ在庫
🟢 ブルースカイ 39件
🟢 X(エックス) 22件 うち承認済み 12件、未承認 10件
🟢 note 41件
🟢 ブログ 17件
🔴 YouTube 0件
⚠️ 昨夜のエラー(1件)
• KDP:ブラウザ操作がタイムアウト → KDPのページを手動で確認推奨
━━━━━━━
在庫数、承認待ち件数、前夜のエラーが1画面に収まってる。「今すぐやること」セクションが条件付きで出るのが地味に便利で、YouTubeが0件のときだけ台本生成を促す通知が出る。
次に、ポスト内容についてフィードバックした。「専門用語が多すぎてわかりにくい。自分が実際に支持したこと・やったことをベースにできないか」という話をした。スクリーンショットを添えて見せたら、問題がすぐ共有できた。
解決までの実際の手順
通知の設計でポイントになったのは「在庫ゼロのときだけ警告を出す」という条件分岐。実装は quick_status.sh から各キューのカウントを取得して、しきい値以下なら📌を追加する形。
items = []
if youtube_count == 0:
items.append("📌 YouTubeの在庫が空です → /youtube-mbti で台本を生成")
if x_pending > 0:
items.append(f"📌 X承認待ちが{x_pending}件あります → !xapprove で確認")
if has_errors:
items.append("📌 エラーが発生しています → 下のエラー欄を確認")
エラーセクションは前夜のログから自動取得。KDPのタイムアウトが出てたのは、Brave CDPが落ちてた日で、ログに「ブラウザ操作がタイムアウト」と残ってたのをそのまま表示してる。
ポスト文体の修正は、「僕がやったこと・感じたこと」を入力のベースにする方向で調整した。生成AIの出力をそのまま使うんじゃなく、作業ログや実測値を素材にして書かせるフローに変える話になった。
試してわかったこと
毎朝1通届くだけで、「今日の優先度」が決まるスピードが変わった。在庫が見えてると、「今日台本書かないとまずい」が自然にわかる。
専門用語問題は、Claudeが生成したポストがどうしても「AIエンジニアが書いた文章」になりがちで、実体験を混ぜないと読み手には伝わらないという話。ログや会話を入力にすると、具体性が出やすい。
KDPのエラー通知は、Braveが起動してないと毎回タイムアウトになるパターンで、これは通知で気づいて翌朝確認できた。
まとめ
Discord朝通知に在庫・承認待ち・エラーを集約したら、毎朝の確認作業が1通で完結するようになった。
ポスト生成は専門用語より実体験ベースの入力にしたほうが読まれやすい文章になる。
エラー通知は出て終わりじゃなくて、翌朝「手動確認推奨」まで書いておくと実際に動ける。