← 返回
开发者工具 中文

appointment-scheduler

Automated appointment management for beauty salons, clinics, studios, and photo booths. Handles booking requests, calendar sync, conflict detection, reminder...
自动化预约管理,适用于美容沙龙、诊所、工作室、快照亭;处理预约请求、日程同步、冲突检测与提醒。
mupengi-bot mupengi-bot 来源
开发者工具 clawhub v1.0.0 1 版本 99923.9 Key: 无需
★ 0
Stars
📥 1,313
下载
💾 18
安装
1
版本
#latest

概述

Appointment Scheduler 📅

Automated appointment management system for service businesses.

Features

  1. 예약 접수 — Parse booking requests from DM/KakaoTalk/phone (text-converted)
  2. 캘린더 등록 — Auto-sync with Google Calendar / Naver Calendar
  3. 충돌 감지 — Prevent double-booking
  4. 리마인더 — Auto-notify customers 1 day before + 2 hours before
  5. 노쇼 관리 — Track no-shows and flag repeat offenders
  6. 대기 명단 — Auto-waitlist when fully booked + auto-notify on cancellation

Target Use Cases

  • 미용실 (Beauty Salons)
  • 병원 (Clinics)
  • 스튜디오 (Studios)
  • 포토부스 MUFI (Photo Booths)

Quick Start

1. Initialize Configuration

node <skill-dir>/scripts/init-config.js

This creates config/appointment-scheduler.json with:

  • Business hours
  • Service duration defaults
  • Calendar connection settings
  • Reminder timing preferences
  • No-show policy

2. Process Incoming Request

From text message:

node <skill-dir>/scripts/parse-booking.js --text "내일 오후 3시에 컷 예약 가능할까요? - 김철수 010-1234-5678"

From conversation context:

"고객이 예약 요청했어요: [message content]"

The skill will:

  1. Parse date/time, service type, customer name, contact
  2. Check calendar for conflicts
  3. If available → book + confirm
  4. If conflict → suggest alternatives or add to waitlist

3. Manual Booking

node <skill-dir>/scripts/book.js \
  --date "2026-02-20" \
  --time "15:00" \
  --duration 60 \
  --service "컷" \
  --customer "김철수" \
  --phone "010-1234-5678"

4. Check Schedule

# Today's appointments
node <skill-dir>/scripts/check-schedule.js --date today

# Specific date
node <skill-dir>/scripts/check-schedule.js --date 2026-02-20

# This week
node <skill-dir>/scripts/check-schedule.js --week

5. Send Reminders

Manual trigger:

node <skill-dir>/scripts/send-reminders.js

Auto-trigger via cron:

# Daily at 9:00 AM - send 1-day-before reminders
0 9 * * * node /path/to/skills/appointment-scheduler/scripts/send-reminders.js --type day-before

# Hourly - send 2-hour-before reminders
0 * * * * node /path/to/skills/appointment-scheduler/scripts/send-reminders.js --type hour-before

6. Handle No-Shows

# Mark customer as no-show
node <skill-dir>/scripts/mark-noshow.js --booking-id abc123

# Check no-show stats
node <skill-dir>/scripts/noshow-report.js

# Flag repeat offenders (3+ no-shows)
node <skill-dir>/scripts/noshow-report.js --flag-repeat

7. Waitlist Management

# Add to waitlist
node <skill-dir>/scripts/waitlist.js add \
  --date "2026-02-20" \
  --time "15:00" \
  --customer "이영희" \
  --phone "010-9999-8888"

# Check waitlist
node <skill-dir>/scripts/waitlist.js list --date 2026-02-20

# Notify waitlist on cancellation
node <skill-dir>/scripts/waitlist.js notify --booking-id abc123

Data Storage

Location: workspace/data/appointments/

data/appointments/
  bookings/
    2026-02-20.json          # Daily booking records
  waitlist/
    2026-02-20.json          # Daily waitlist
  noshow/
    history.json             # No-show records
    flagged-customers.json   # Repeat offenders
  reminders/
    sent.json                # Reminder delivery log

Calendar Integration

Google Calendar

  1. Enable Google Calendar API
  2. Download OAuth credentials → save as ~/.secrets/google-calendar-credentials.json
  3. First run will prompt browser auth
  4. Refresh token saved to ~/.secrets/google-calendar-token.json

Sync script:

node <skill-dir>/scripts/sync-google-calendar.js

Naver Calendar

Uses Naver Calendar API (if available) or browser automation fallback.

Config: Add Naver account to config/appointment-scheduler.json

Booking Request Parsing

The parser handles natural language like:

  • "내일 오후 3시 컷 예약"
  • "2월 20일 15:00 펌 가능할까요"
  • "다음주 월요일 오전 컷+염색"
  • "3시에 포토부스 예약 - 김철수 010-1234-5678"

Extracted fields:

  • Date (relative or absolute)
  • Time
  • Service type
  • Customer name
  • Contact (phone/email/username)
  • Special notes

Conflict Detection

Before confirming:

  1. Check existing bookings in date/time slot
  2. Calculate service duration overlap
  3. If conflict → suggest nearest available slot
  4. If fully booked → offer waitlist

Buffer time: Configurable in config (default: 10 min between appointments)

Reminder System

Default timing:

  • 1 day before at 9:00 AM — "내일 오후 3시 예약 있습니다"
  • 2 hours before — "2시간 후 예약 있습니다"

Delivery channels (auto-detect from customer contact):

  • Phone → SMS (via message tool)
  • Instagram → DM
  • KakaoTalk → Message

Customization: Edit timing in config/appointment-scheduler.json

No-Show Management

Tracking:

  • Mark as no-show if customer doesn't show up within 15 min grace period
  • Record in noshow/history.json
  • Count per customer

Auto-flag policy (default):

  • 3+ no-shows → flag customer
  • Flagged customers require deposit for future bookings

Query:

# Check customer history
node <skill-dir>/scripts/noshow-report.js --customer "김철수"

# Monthly stats
node <skill-dir>/scripts/noshow-report.js --month 2026-02

Waitlist Auto-Notify

When a booking is cancelled:

  1. Find waitlist entries for same date/time
  2. Auto-send notification: "예약 자리가 났습니다! 원하시면 예약 가능합니다"
  3. First-come-first-served → confirm via reply
  4. Auto-book if confirmed within 30 min

Voice Integration

Supports phone call → text → booking flow:

  1. Receive call transcript (via STT tool)
  2. Parse booking request
  3. Confirm availability
  4. Send SMS confirmation

Hook Integration

pre-hook: Before booking → check business hours, service availability

post-hook: After booking → send confirmation, update calendar, log event

conflict-hook: On conflict → trigger alternative suggestion or waitlist flow

Event Bus Integration

Location: events/appointment-YYYY-MM-DD.json

{
  "timestamp": "2026-02-18T15:30:00Z",
  "event": "booking_created",
  "booking_id": "abc123",
  "customer": "김철수",
  "date": "2026-02-20",
  "time": "15:00",
  "service": "컷"
}

Cron Setup

Recommended cron jobs:

# Send day-before reminders at 9 AM
0 9 * * * node /path/to/skills/appointment-scheduler/scripts/send-reminders.js --type day-before

# Send 2-hour reminders every hour
0 * * * * node /path/to/skills/appointment-scheduler/scripts/send-reminders.js --type hour-before

# Sync calendar every 30 min
*/30 * * * * node /path/to/skills/appointment-scheduler/scripts/sync-google-calendar.js

# Daily no-show report at 8 PM
0 20 * * * node /path/to/skills/appointment-scheduler/scripts/noshow-report.js --daily

Configuration Template

Location: config/appointment-scheduler.json

{
  "business_name": "MUFI 포토부스",
  "business_hours": {
    "monday": { "open": "10:00", "close": "20:00" },
    "tuesday": { "open": "10:00", "close": "20:00" },
    "wednesday": { "open": "10:00", "close": "20:00" },
    "thursday": { "open": "10:00", "close": "20:00" },
    "friday": { "open": "10:00", "close": "22:00" },
    "saturday": { "open": "10:00", "close": "22:00" },
    "sunday": { "open": "12:00", "close": "18:00" }
  },
  "services": {
    "포토촬영": { "duration": 30, "buffer": 10 },
    "컷": { "duration": 60, "buffer": 10 },
    "펌": { "duration": 120, "buffer": 15 },
    "염색": { "duration": 90, "buffer": 15 }
  },
  "reminders": {
    "day_before": { "enabled": true, "time": "09:00" },
    "hour_before": { "enabled": true, "hours": 2 }
  },
  "noshow_policy": {
    "grace_period_min": 15,
    "flag_threshold": 3,
    "require_deposit_when_flagged": true
  },
  "calendar": {
    "google": {
      "enabled": true,
      "calendar_id": "primary"
    },
    "naver": {
      "enabled": false
    }
  }
}

Troubleshooting

IssueSolution
-----------------
예약 파싱 실패Check parse-booking.js output, add custom patterns
캘린더 동기화 에러Verify OAuth credentials, check token expiry
리마인더 미발송Check cron job status, verify message tool config
중복 예약 발생Ensure conflict detection enabled, check buffer time
대기 명단 알림 실패Check customer contact info, verify message channel

Advanced Usage

Custom Service Types

Edit config/appointment-scheduler.json:

"services": {
  "신규서비스": { "duration": 45, "buffer": 10 }
}

Block Off Time

# Mark time slot as unavailable
node <skill-dir>/scripts/block-time.js \
  --date "2026-02-20" \
  --start "12:00" \
  --end "13:00" \
  --reason "점심시간"

Bulk Import

# Import from CSV
node <skill-dir>/scripts/import-bookings.js --file bookings.csv

Export Reports

# Monthly booking report
node <skill-dir>/scripts/export-report.js --month 2026-02 --format json

# No-show analysis
node <skill-dir>/scripts/noshow-report.js --month 2026-02 --export csv

Learned Lessons

  • Natural language parsing accuracy: ~85% for Korean date/time expressions
  • Reminder delivery rate: 95%+ via Instagram DM, 80%+ via SMS
  • No-show rate reduced by 40% after implementing 1-day-before reminders
  • Waitlist auto-notify increases booking fill rate by 25%

> 🐧 Built by 무펭이무펭이즘(Mupengism) 생태계 스킬

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-29 06:18 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

business-ops

Discord

steipete
当需要通过discord工具控制Discord时使用:发送消息、添加反应、发布或上传表情包、上传表情、创建投票、管理帖子/置顶/搜索、获取权限或成员/角色/频道信息,或在Discord私信或频道中处理管理操作。
★ 77 📥 37,857
ai-agent

learning-engine

mupengi-bot
自动分析错误和成功模式,并在技能中体现
★ 0 📥 3,471
business-ops

Calendar

ndcccccc
日历管理与日程安排。创建事件、管理会议,并实现多日历平台同步。
★ 7 📥 23,001