takakusagi.dev
作品一覧に戻る

Works

claude-slack-bot

Slack 上で Claude と会話しながら、kibunlog への記録などの個人タスクを進められる自作 bot。日常運用しています。

Tech Stack

  • Python 3.12
  • Anthropic SDK
  • Slack Bolt
  • systemd
claude-slack-bot のスクリーンショット

どんなもの?

Slack 上で Claude と対話しながら、自分の日常タスクを進めるための bot です。 日々の記録 (kibunlog 連携)、ちょっとした調べもの、長めの相談まで、Slack のチャンネルから自然に依頼できるようにしています。

動作の様子

Slack のチャンネルでメンションして話しかけると、状況に応じてフォーム入力や自由文での会話ができます。

bot とのやり取りの様子
Slack 上のフォーム入力 UI

なぜ作ったか

普段の作業の起点が Slack に集中していたので、AI とのやり取りも同じ場所でできた方がスムーズだと考えたのが始まりです。 既製のサービスを使うのではなく自作したのは、自分専用に挙動を調整したかったから (応答スタイル、利用できるツール、保存先のデータベースなど) です。

構成

claude-slack-bot の構成図。Slack からのメンションを bot.py が受け、Anthropic API で応答を生成、kibunlog API で記録/参照を行う。会話履歴は conversation_store に永続化される。
  • 自宅 Debian サーバー上で systemd ユーザーサービス として常駐
  • チャンネル単位で挙動を切り替える channel_config.json
  • 機能を features/ 配下に分割し、追加しやすい構造

工夫したこと

  • 会話履歴を JSON で永続化する conversation_store を自前で書き、文脈を引き継いだまま再起動できるようにしました
  • kibunlog API を呼び出す薄いクライアントを用意し、Slack 上のメッセージから直接 kibunlog に記録できるようにしています
  • systemd の WatchdogSec を使ったプロセス監視で、落ちても自動復帰します

ソースコードについて

リポジトリには個人的なコンテキストや設定が混在しているため、現時点では非公開で運用しています。 動作の様子や構成について気になる点があれば、お気軽にお問い合わせください。