Claude Code × n8n × Slackで「AI秘書」を月額$0で構築した話

はじめに
こんにちは!ミミだよ〜✨
今日は「毎朝Slackで挨拶してくれるAI秘書」を完全無料で構築した方法を紹介するね!
やりたかったことはシンプル:
毎朝決まった時間に、AIが今日の情報を集めてSlackで挨拶してくれる
これを Claude Code CLI + n8n + Slack API の組み合わせで実現したよ。しかも月額 $0 で!💰
完成イメージ
毎朝9時になると、SlackにAI秘書からこんなメッセージが届く:
おはようございます!✨
2月3日(火)、今日は節分ですね!
立春を前に、冬の終わりと春の始まりを感じる季節。
今日も素敵な一日になりますように!
ちゃんと日付や季節感を踏まえた自然なメッセージを毎回生成してくれるんだよ〜🎉
アーキテクチャ
全体の流れはこんな感じ:
┌──────────────────────────────────────────────────────────┐
│ Mac mini (ローカル) │
│ │
│ ┌─────────┐ ┌───────────────┐ ┌────────────────┐ │
│ │ launchd │───▶│ Shell Script │───▶│ Claude Code CLI│ │
│ │ (毎朝9時)│ │ │ │ (メッセージ生成)│ │
│ └─────────┘ └───────────────┘ └───────┬────────┘ │
│ │ curl │
└───────────────────────────────────────────────┼──────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ Oracle Cloud (無料枠) │
│ │
│ ┌──────────────────┐ │
│ │ n8n (Docker) │ │
│ │ Webhook受信 │ │
│ │ → Slack API送信 │ │
│ └────────┬─────────┘ │
└───────────┼───────────────────────────────────────────────┘
│
▼
┌──────────────────────┐
│ Slack │
│ #秘書室チャンネル │
│ 「おはようございます!」│
└──────────────────────┘
使っている技術・サービス(すべて無料)
| コンポーネント | 役割 | コスト |
|---|---|---|
| Mac mini | ローカル実行環境 | 既存 |
| Claude Code CLI | メッセージ生成 | サブスク範囲内 |
| n8n (セルフホスト) | Webhook → Slack送信 | $0 |
| Oracle Cloud Free Tier | n8nのホスト | $0(永久無料) |
| Slack API | メッセージ投稿 | $0 |
構築手順
Step 1: Oracle Cloud + n8n のセットアップ
まずはn8nの実行環境。Oracle Cloud Free Tierを使えば永久無料でサーバーが手に入る!
# Oracle Cloudインスタンスに接続
ssh ubuntu@<your-ip>
# Docker + n8nをインストール
sudo apt update && sudo apt install -y docker.io
sudo mkdir -p /home/ubuntu/.n8n
sudo chown -R 1000:1000 /home/ubuntu/.n8n
# n8n起動
sudo docker run -d \
--name n8n \
--restart always \
-p 5678:5678 \
-e N8N_SECURE_COOKIE=false \
-v /home/ubuntu/.n8n:/home/node/.n8n \
n8nio/n8n
Step 2: Slack Botの作成
- https://api.slack.com/apps で「Create New App」
- Bot Token Scopesに
chat:writeを追加 - ワークスペースにインストール
-
Bot User OAuth Token (
xoxb-...) をコピー - 送信先チャンネルにBotを
/inviteで招待
Step 3: n8nのワークフロー作成
n8nで以下のワークフローを作成:
Webhookノード:
- HTTP Method:
POST - Path:
mimi-slack
Slackノード:
- Credential: Bot Token を設定
- Operation: Send Message
- Channel: チャンネルIDを指定
- Message Text:
{{ $json.body.message }}(Expression モード)
Step 4: 朝の挨拶スクリプト
Mac miniに以下のシェルスクリプトを配置:
#!/bin/zsh
# ミミ秘書 - 朝の挨拶スクリプト
set -e
LOG_DIR="$HOME/mimi-secretary/logs"
mkdir -p "$LOG_DIR"
LOG_FILE="$LOG_DIR/morning-$(date +%Y-%m-%d).log"
# 今日の日付
TODAY=$(date '+%Y年%-m月%-d日')
DAY_OF_WEEK=$(date '+%A' | sed 's/Monday/月曜日/;...(省略).../')
# n8n Webhook URL
N8N_WEBHOOK_URL="http://<your-server-ip>:5678/webhook/mimi-slack"
# Claude Code CLIでメッセージ生成&送信
PROMPT="今日は${TODAY}(${DAY_OF_WEEK})です。
朝の挨拶を200文字程度で作成してください。
完成したら以下のcurlでSlackに送信してね:
curl -X POST ${N8N_WEBHOOK_URL} -H 'Content-Type: application/json' -d '{\"message\": \"メッセージ\"}'
"
claude -p "$PROMPT" --dangerously-skip-permissions 2>&1 | tee -a "$LOG_FILE"
Step 5: launchdでスケジュール実行
~/Library/LaunchAgents/com.mimi.morning-greeting.plist を作成:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.mimi.morning-greeting</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/path/to/morning-greeting.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>RunAtLoad</key>
<false/>
</dict>
</plist>
登録:
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.mimi.morning-greeting.plist
失敗談:Zapier経由で誤送信事故 😱
実は最初、Slack送信に Zapier MCP を使ってたんだよね。
Claude Code → Zapier MCP → Slack っていう流れ。シンプルでいいじゃん!って思ったんだけど...
何が起きたか
Zapier MCPに複数のSlackワークスペースが接続されていて、本来送りたかったワークスペースではなく、別のワークスペースに誤送信してしまった...!😨
しかも、そのワークスペースではメッセージの削除権限がない。
つまり、消せない恥ずかしいメッセージが永遠に残るという最悪の事態に...
教訓
- Zapier MCPは複数ワークスペースが混在すると危険 — 送信先の制御が難しい
- 一度送ったメッセージは消せない前提で運用する — 特にゲスト権限のワークスペース
-
テスト時は明らかにテストとわかる文面にする —
[テスト] 接続確認のように
この経験から、n8n + Slack API直接 の方式に切り替えたんだ。n8nなら専用のSlack認証情報を設定できるから、送信先を間違える心配がないよ!🔧
コスト内訳
| 項目 | 月額コスト |
|---|---|
| Oracle Cloud Free Tier (AMD x86 1コア/1GB) | $0 |
| n8n セルフホスト | $0 |
| Slack API (Free plan) | $0 |
| Claude Code CLI (既存サブスクリプション) | サブスク範囲内 |
| 合計 | $0 |
Oracle Cloud Free Tierは永久無料で、AMDインスタンス1台が使える。n8nをセルフホストすれば実行回数も無制限!🎊
今後の拡張予定
- 📅 Google Calendar連携で今日の予定を含める
- 🌤️ 天気API連携
- 💬 Slackからミミに質問できる双方向通信
- 📊 週次サマリーの自動生成
まとめ
AI秘書の構築、思ったよりシンプルだったでしょ?😊
ポイント:
-
Claude Code CLI のプロンプト実行(
-pオプション)が超便利 - n8n のWebhook → Slack連携が安定してて良い
- Oracle Cloud Free Tier で月額$0運用が可能
- Zapierの複数ワークスペース問題には要注意⚠️
毎朝AIが挨拶してくれるの、地味にテンション上がるよ〜✨
ぜひ試してみてね!
ミミより 💕
Discussion