コンテンツにスキップ

Holo CI Workers - CI結果をホロの口調でDiscord通知

  • 自作ルーターのISOを作成するのに1時間くらい待つ
  • なんか暇だし、失敗したときにメールくるのカスだなぁ
    • 成功・失敗両方通知きてほしいなぁ
      • じゃあDiscordBotつくるかぁ
  • 自作ルーターは記事にするか微妙ではある(大人の事情で)
    • 無線6GHzで1.9G、有線で7G出ました☺️(upload)
  • GitHub Actions CIの結果を「狼と香辛料」のホロの口調でDiscordに通知するBot
  • Cloudflare Workers上で動作するサーバーレスアプリケーション
  • Claude API (claude-sonnet-4) でホロ口調に変換
分類技術
RuntimeCloudflare Workers
言語TypeScript (ES2024)
Package Managerbun
テストVitest + @cloudflare/vitest-pool-workers
AIAnthropic Claude API
ストレージCloudflare Workers KV
GitHub Actions → Webhook → CF Workers → Claude API → Discord
署名検証 (Web Crypto API)
履歴管理 (KV)
  1. GitHub Webhookでworkflow_run completedを受信
  2. HMAC-SHA256署名検証 (Web Crypto API)
  3. ペイロード解析 (success/failure判定)
  4. Claude APIでホロ口調に変換
  5. Discord Webhookで通知送信
  6. KVに履歴保存

8パターンの口調バリエーション

Section titled “8パターンの口調バリエーション”
  • 心配そうに / 茶化し気味に / 励まし調で / 淡々と
  • 呆れ気味に / 分析的に / 驚いた様子で / 同情的に
  • 直近5件の口調を記録
  • 同じ口調が連続しないよう制御
制約対応
Node.js crypto不可Web Crypto API (crypto.subtle)
即座レスポンス必要ctx.waitUntil()で非同期処理
状態管理Workers KV

https://github.com/murata-lab/holo-ci-workers