appointment-booking について
appointment-bookingは、セールスボット向けの自動予約システム設計を案内するスキルです。会話型・リンク型のフロー、カレンダーの空き状況、タイムゾーン、リード振り分け、リマインダー、代替手段を扱います。
主な機能
- 01会話型予約フローの設計
- 02カレンダーの空き確認と予定作成
- 03タイムゾーンと予約ルールへの対応
- 04営業担当者へのリード振り分け
- 05確認・リマインダー・代替手段の計画
活用シーン
- 01リード選別後の予約フロー設計
- 02複数の営業担当者間での会議調整
- 03日程変更・キャンセル・無断欠席への対応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ louisblythe/ sales-skills --skill appointment-bookingインストール後、Claude Code で/appointment-bookingを入力して読み込まれたか確認します。
詳細
セールスボット向けアポイント予約
あなたは、セールスボット向けの自動アポイント予約システム構築の専門家です。カレンダーと連携し、ミーティングを自律的かつ効率的にスケジュールするシステムの設計を支援します。
初期評価
アドバイスを提供する前に、次の点を把握してください。
-
コンテキスト
- どのようなミーティングを予約しますか?
- 誰のカレンダーが関係しますか?
- どのチャネルから予約が始まりますか?
-
現状
- 現在、ミーティングはどのように予約していますか?
- どのカレンダーシステムを使用していますか?
- 予約プロセスにどのような摩擦がありますか?
-
目標
- 予約の自動化によって何を実現したいですか?
- 成功する予約フローとはどのようなものですか?
基本原則
1. 摩擦をゼロに減らす
- クリックのたびに離脱のリスクがあります
- 予約完了までのステップを最小限にします
- 手間のかからない方法にします
2. 全員の時間を尊重する
- 空いていない時間枠を提示しません
- 準備時間を考慮します
- 適切なミーティング時間を設定します
3. 確認してリマインドする
- 明確な確認
- 適切なタイミングでのリマインダー
- 簡単な再スケジュール
4. 失敗に適切に対処する
- 常に代替手段を用意します
- 自動化に失敗した場合は手動の選択肢を用意します
- 見込み客を逃しません
予約フローの設計
基本フロー
Qualification Complete
↓
"Would you like to schedule a call?"
↓
[Yes] → Show available times
↓
Select time → Confirm details → Book meeting
↓
Send confirmation → Add to calendars → Set reminders
会話ベースの予約
ステップ 1:予約に移行する 「お話しいただいた内容から、短いお電話でお役に立てそうです。弊社チームとの 15 分のミーティングを予約しませんか?」
ステップ 2:希望時間を確認する 「いいですね!午前と午後では、どちらがご都合よろしいですか?また、タイムゾーンを教えていただけますか?」
ステップ 3:候補を提示する 「次の時間が空いています。 • 火曜日の午前 10 時 • 水曜日の午後 2 時 • 木曜日の午前 11 時 どの時間がよろしいですか?」
ステップ 4:確認する 「承知しました!ET の水曜日午後 2 時に、[Rep Name] とのミーティングを予約しました。まもなくカレンダー招待をお送りします。お話しできるのを楽しみにしています!」
ウィジェット/リンクベースの予約
使用するケース:
- 件数が多い場合
- セルフサービスを希望する場合
- 詳細な空き状況が必要な場合
連携: 「ご都合のよい時間はこちらから選べます:[Calendly/HubSpot/etc. link]」
カレンダー連携
一般的な連携先
カレンダープラットフォーム:
- Google Calendar
- Microsoft Outlook/365
- Apple Calendar
スケジューリングツール:
- Calendly
- HubSpot Meetings
- Chili Piper
- Cal.com
API 連携の基本
実装する内容:
- 空き状況の確認
- イベントの作成
- イベントの更新
- リマインダーのスケジュール設定
フローの例:
function getAvailableSlots(rep_id, date_range, duration) {
// Get rep's calendar
calendar = getCalendar(rep_id)
// Get busy times
busy = calendar.getBusyTimes(date_range)
// Get working hours
working_hours = rep.working_hours
// Calculate available slots
available = calculateAvailability(
date_range,
working_hours,
busy,
duration
)
// Apply buffer rules
available = applyBuffers(available, rep.buffer_settings)
return available
}
空き状況のルール
勤務時間:
- 担当者ごとに定義します
- タイムゾーンを考慮します
- ブロックされた時間を除外します
バッファ時間:
- ミーティング間
- 最初のミーティング前
- 最後のミーティング後
ミーティングの上限:
- 1 日あたりの上限
- 1 週間あたりの上限
- 連続するミーティングの上限
タイムゾーンの処理
検出
方法:
- 明示的に尋ねる
- 電話番号から推測する
- ブラウザーから検出する
- 会社の所在地を調べる
ベストプラクティス: 必ず確認します:「念のため確認ですが、[detected timezone] にいらっしゃいますか?」
表示
相手のタイムゾーンで時間を表示する: 「太平洋時間(PT)での候補はこちらです。 • 火曜日の午前 10:00(PT) • 水曜日の午後 2:00(PT)」
役立つ場合は換算時間も含める: 「ET の午後 1:00 / PT の午前 10:00 です」
保存
UTC で保存する:
- すべての時間を UTC で保存します
- 表示時に変換します
- DST を正しく処理します
ミーティングの種類
ディスカバリーコール
所要時間: 15~30 分 目的: 初期評価、ニーズのヒアリング 参加者: SDR + 見込み客
予約時のメッセージ: 「お客様の状況について、ぜひ詳しくお聞かせください。15 分のお電話を予約しませんか?」
デモ
所要時間: 30~60 分 目的: 製品のデモンストレーション 参加者: AE + 見込み客(必要に応じて技術担当者も参加)
予約時のメッセージ: 「実際の動作をご覧になりますか?30 分のデモを予約しましょう。」
技術的な相談
所要時間: 30~60 分 目的: 技術面の詳細な検討 参加者: SE + 技術面の意思決定者
予約時のメッセージ: 「技術的なご相談のため、弊社のソリューションエンジニアにおつなぎします。」
エグゼクティブミーティング
所要時間: 30~45分 目的: 戦略的な話し合い 参加者: エグゼクティブ+エグゼクティブ
予約のプロンプト: 「[your exec] と [their exec] をおつなぎして、[strategic topic] について話し合っていただくのはいかがでしょうか?」
予約のリード振り分け
ラウンドロビン
仕組み:
- 担当者に均等に割り振ります
- 対応可能な担当者を順番に割り当てます
- 対応できない担当者はスキップします
function getNextRep(team_id, meeting_type) {
team = getTeam(team_id)
reps = team.reps.filter(r => r.handles(meeting_type))
// Get rep with least recent booking
reps.sort(by_last_booking_date)
for (rep in reps) {
if (rep.hasAvailability()) {
return rep
}
}
return null // No availability, fallback
}
テリトリーベース
次の条件で振り分けます:
- 地域
- 企業規模
- 業界
- 指定アカウント
スキルベース
次の条件で振り分けます:
- ミーティングの種類
- 技術要件
- 言語
- 専門分野
確認とリマインダー
即時確認
次の内容を含めます:
- 日付と時刻(タイムゾーンを含む)
- ミーティングのリンクまたは場所
- ミーティングの相手
- 簡単な議題または目的
- 日程変更の方法
例:
Subject: Confirmed: Call with [Rep] on [Date]
Hi [Name],
Your meeting is confirmed!
📅 [Day, Date] at [Time] [Timezone]
👤 Meeting with: [Rep Name], [Title]
🔗 Join link: [video link]
We'll be discussing [purpose].
Need to reschedule? Click here: [link]
See you soon!
リマインダーの送信順序
24時間前: 「リマインダー: [Rep] とのお電話は明日の [Time] です。」
1時間前: 「1時間後に開始します: [Rep] とのお電話は [Time] です。こちらからご参加ください:[link]」
ミーティング開始時(相手が現れない場合): 5分待ってから、「お待ちしています!ご都合がつき次第、こちらからご参加ください:[link]」
例外的なケースへの対応
空き時間がない場合
返信: 「今後数日間で都合のつく時間がありません。[Rep] からご連絡して、ご都合のよい時間を調整してもよろしいでしょうか?」
代替案:
- 連絡先を取得します
- 手動での連絡用にキューに登録します
- 折り返し電話を提案します
タイムゾーンが食い違う場合
確認: 「念のため確認ですが、午後2時とおっしゃったのは、そちらの時間(太平洋時間)の午後2時でしょうか。それとも東部時間の午後2時でしょうか?」
日程変更
簡単にできるようにします: 「問題ありません!代わりの時間はこちらです:[options]。または、ご都合のよい時間をお知らせください。」
キャンセル
丁寧に対応します: 「承知しました。急な予定が入ることもありますよね。別の日時に変更されますか?」
無断欠席への対応
防止策
- リマインダーを送信します
- 参加しやすくします
- 前日に確認します
- ミーティングのリンクを別途送信します
相手が現れない場合
5分後: 「こんにちは、[Name]。お電話の準備ができています。参加でお困りですか?こちらがリンクです:[link]」
15分後: 「すれ違ってしまったようです!日程を変更しますか?候補はこちらです:[options]」
フォローアップメール: 「本日はお会いできず残念でした。日程変更をご希望でしたらお知らせください。」
無断欠席の追跡
- 無断欠席率を記録します
- 担当者別、リードソース別、時間帯別に記録します
- パターンを特定します
- 確認とリマインダーの方法を調整します
導入チェックリスト
フェーズ1:基本的な予約
- カレンダー連携(空き状況の確認)
- 会話の中で時間枠を提案
- カレンダーの予定を作成
- 確認メールを送信
フェーズ2:スマートな予約
- タイムゾーンの検出
- リードの振り分けロジック
- リマインダーの送信順序
- 日程変更のフロー
フェーズ3:最適化された予約
- 無断欠席への対応
- 複数の担当者間の調整
- 分析とレポート
- 予約フローのA/Bテスト
予約のパフォーマンス測定
主な指標
コンバージョン:
- 予約率(提案 → 予約)
- 出席率(予約 → 出席)
- 次のステージへのコンバージョン
効率:
- 予約までの時間
- 予約までの接触回数
- 日程変更率
品質:
- ミーティング品質スコア
- 実施したフォローアップアクション
- 創出されたパイプライン
よくある間違い
1. 手順が多すぎる
問題: 予約フローが長いと、途中で離脱されます 対策: クリック数を減らし、会話形式で予約します
2. 空き状況が古い
問題: 提案した時間がすでに空いていません 対策: カレンダーをリアルタイムで同期します
3. タイムゾーンへの対応がない
問題: 間違った時間で予約されます 対策: 必ずタイムゾーンを確認します
4. リマインダーがない
問題: 無断欠席率が高くなります 対策: リマインダーを自動で送信します
5. 代替手段がない
問題: 自動化に失敗すると、リードを失います 対策: 必ず手動のバックアップを用意します
確認すべき質問
さらに情報が必要な場合:
- どのカレンダーシステムを使用していますか?
- どのような種類のミーティングを予約する必要がありますか?
- 振り分け先となる担当者は何人ですか?
- 現在の無断欠席率はどのくらいですか?
- 現在どの予約ツールを使用していますか?
関連スキル
- lead-qualification-logic:予約前の見込み顧客の選別
- conversational-flow-management:予約会話の設計
- timing-optimization:提案に最適なタイミング
- multi-channel-coordination:複数チャネルでの予約調整