前回はClaude.aiでバーチャル秘書を構築してみました。実際に使っていくうちに次のように思うことでしょう。
「毎朝、本日のスケジュール、TODO、天気・ニュース、をまとめたブリーフィングを確認したいけど、毎回Claude.aiにアクセスするのは面倒…」
バーチャル秘書が自動的に毎朝指定した時間にSlackに送ってくれたら便利です。
その場合、手順は前回と比べて面倒になりますが、Slack ワークフロービルダーとClaude APIの組み合わせで解決できます。
本記事では、毎朝7時にSlackの指定チャンネルへ自動でブリーフィングを送信する仕組みを、ゼロから構築する手順を解説します。Google Cloud Functionsの無料枠を活用するため、ランニングコストはほぼ0円で運用可能です。
仕組みの全体像
| コンポーネント | 役割 | 費用 |
|---|---|---|
| Slack ワークフロービルダー | 毎朝7時にWebhookを叩くスケジューラー | 無料(Slackプランによる) |
| Google Cloud Functions | Claude APIを呼び出す中継サーバー | 無料(月200万req以内) |
| Claude API | 天気・ニュースを調べてブリーフィングを生成 | 従量課金(1回約0.5〜2円) |
| Slack Incoming Webhook | #donnaチャンネルへメッセージを投稿 | 無料 |
STEP 1:Slack App を作成し Webhook URL を取得する
まず、ClaudeからSlackにメッセージを送るための「出口」を作ります。Slack の Incoming Webhook 機能を使います。
① Slack App を新規作成する
- api.slack.com/apps にアクセスし、「Create New App」をクリック
- 「From scratch」を選択
- App Name に
Donna Briefingと入力し、送信先ワークスペースを選択して「Create App」
② Incoming Webhooks を有効化する
- App 管理画面の左メニューから「Incoming Webhooks」を開く
- 「Activate Incoming Webhooks」のトグルを ON にする
- 「Add New Webhook to Workspace」をクリック
- チャンネル選択画面で #donna を選択し「許可する」
- 生成された Webhook URL をコピーして保管する
STEP 2:Claude API キーを取得する
次に、ブリーフィングを生成する「頭脳」となる Claude API のキーを取得します。
API キーの発行手順
- console.anthropic.com にアクセスしてログイン(アカウントがなければ新規登録)
- 左メニューの「API Keys」を開く
- 「Create Key」をクリックし、名前(例:
donna-briefing)を入力 - 表示されたキー(
sk-ant-...)をコピーして安全な場所に保存する
STEP 3:Google Cloud Functions でバックエンドを作る
Slackのスケジューラーから呼び出されると、Claude APIを叩いてブリーフィングを生成し、Slackに送信する「中継サーバー」をGoogle Cloud Functionsで作ります。
① Google Cloud Console の設定
console.cloud.google.com/functions にアクセスし、「関数を作成」をクリック。以下の通り設定します。
- 関数名:
donnaBriefing - リージョン:
asia-northeast1(東京・レイテンシ最小) - トリガー:HTTP
- 認証:未認証の呼び出しを許可
- ランタイム:Node.js 20
② 環境変数を設定する
「変数、ネットワーク、詳細設定」タブを開き、以下の環境変数を追加します。
CLAUDE_API_KEY = sk-ant-xxxxxxxxxxxxxxxx
SLACK_WEBHOOK_URL = https://hooks.slack.com/services/T.../B.../xxx
③ index.js — メインコードを貼り付ける
javascript
// Donna Morning Briefing — Cloud Function
const fetch = require('node-fetch');
exports.donnaBriefing = async (req, res) => {
const CLAUDE_KEY = process.env.CLAUDE_API_KEY;
const WEBHOOK = process.env.SLACK_WEBHOOK_URL;
// 日本時間の今日の日付を取得
const jst = new Intl.DateTimeFormat('ja-JP', {
timeZone: 'Asia/Tokyo',
year: 'numeric', month: 'long',
day: 'numeric', weekday: 'long'
}).format(new Date());
// Claude API を呼び出してブリーフィングを生成
const claudeRes = await fetch(
'https://api.anthropic.com/v1/messages',
{
method: 'POST',
headers: {
'x-api-key': CLAUDE_KEY,
'anthropic-version': '2023-06-01',
'content-type': 'application/json'
},
body: JSON.stringify({
model: 'claude-sonnet-4-20250514',
max_tokens: 1500,
system: `あなたは私の秘書です。
毎朝、#xxxxxxチャンネルに送るブリーフィングを
Slack mrkdwn形式で生成してください。
天気(#市町村名を記入)・ニュース3件・注意事項を含めること。
絵文字を使い明るいトーンで書いてください。`,
messages: [{
role: 'user',
content: `今日は${jst}です。
web_searchで最新の天気とニュースを調べて
ブリーフィングを生成してください。`
}],
tools: [{
type: 'web_search_20250305',
name: 'web_search'
}]
})
}
);
const data = await claudeRes.json();
// テキストブロックのみ抽出(tool_useブロックを除外)
const message = data.content
.filter(b => b.type === 'text')
.map(b => b.text)
.join('\n');
// Slack Incoming Webhook に POST
await fetch(WEBHOOK, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text: message })
});
res.status(200).send('OK');
};
④ package.json
json
{
"name": "donna-briefing",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"node-fetch": "^2.7.0"
}
}
入力後、「デプロイ」をクリック。デプロイ完了後に表示される関数のURLをコピーしておきます。次のステップで使います。
STEP 4:Slack ワークフロービルダーで自動送信を設定する
① ワークフローを新規作成する
- Slackのサイドバーで「ワークフロー」をクリック
- 「新規ワークフロー」→「スクラッチから作成」を選択
- ワークフロー名に
秘書毎朝ブリーフィングと入力
② トリガーを「スケジュール」に設定する
- トリガー選択画面で「スケジュール」を選択
- 繰り返し:「毎日」
- 時刻:7:00 AM(タイムゾーン:Asia/Tokyo)
③ ステップ「Webhook を送信」を追加する
- 「ステップを追加」→「Webhook を送信」を選択
- URL:STEP 3 でコピーした Cloud Functions の URL を貼り付け
- メソッド:POST / Content-Type:application/json
- Request body:
{}(空のJSON) - 「保存」→「公開する」をクリック
STEP 5:動作確認とカスタマイズ
① Google Cloud Console を開く
console.cloud.google.com/functions にアクセスし、作成した関数 donnaBriefing をクリックします。
② 「テスト」タブを開く
関数の詳細ページ上部のタブから「テスト」を選択します。
③ テストを実行する
「トリガー イベントを設定」欄はそのまま空({})でOKです。画面下部の「関数をテスト」ボタンをクリックするだけです。
④ 結果を確認する
指定したSlackのチャンネルを開いてブリーフィングが届いていることを確認してください
画面右側の「出力」欄に OK と表示されれば成功です
カスタマイズのアイデア
システムプロンプト(system の文字列)を変更するだけで、内容を自由にカスタマイズできます。
- 📅 Google Calendar 連携:Calendar APIを追加して「今日の予定」を含める
- 📰 業界ニュースの絞り込み:「IT・AI関連ニュースを優先してください」と追加
- 🌤️ 複数地点の天気:「渋谷と仙台の天気を含めてください」と指定
- 💹 為替・株価:「USD/JPY レートと日経平均も含めてください」と追加
まとめ
| 作業 | 所要時間 |
|---|---|
| STEP 1:Slack App & Webhook 設定 | 約5分 |
| STEP 2:Claude APIキー取得 | 約3分 |
| STEP 3:Cloud Functions デプロイ | 約15分 |
| STEP 4:Slack ワークフロー設定 | 約5分 |
| 合計 | 約30分 |
一度設定してしまえば、あとは毎朝7時に自動でブリーフィングが届きます。システムプロンプトを調整するだけで内容を自由にカスタマイズできるので、ぜひ自分のワークフローに合わせてアレンジしてみてください。


コメント