安全扫描
OpenClaw
可疑
medium confidence该技能的工作流和指令与预约系统匹配,功能正常,但元数据不匹配和一些运营安全漏洞(公开Webhook、未声明的n8n凭据要求)存在不一致,安装前应验证。
评估建议
["验证作者/所有者:注册元数据(ownerId和版本)与_meta.json和SKILL.md不匹配。如果重要,请询问发布者哪个是权威的。","n8n凭据和范围:工作流需要Google Sheets OAuth2和SMTP凭据。仅授予最小Google范围(仅Sheets访问)并使用专用SMTP账户发送事务性电子邮件。","Webhook安全:默认公开的Webhook(booking/new和booking/confirm)。使用秘密令牌、IP限制或n8n身份验证保护它们,否则攻击者可能会发送垃圾预约或触发大规模电子邮件。","Sheet ID处理:Google Sheet ID在JSON文件中作为占位符嵌入。导入后,确保表格位于您控制的项目/账户中,并审查表格的共享设置——不要使用广泛共享的表格。","在阶段测试:将其导入n8n阶段实例,使用测试凭据,验证逻辑(时区、日期解析、重复处理)并确保没有意外的网络调用。","数据保护和合规:预约包含个人数据(姓名、电子邮件、电话号码)。在生产环境中使用前确认保留、访问控制和合规义务(例如HIPAA、GDPR)。如果无法验证所有者或来源,请将...详细分析 ▾
ℹ 用途与能力
工作流、SKILL.md和JSON文件实现了一致的预约预订系统(Webhook接收、Google Sheets存储、SMTP电子邮件、提醒、无预约处理、日报)。然而,元数据存在不一致:注册级的ownerId和版本与_meta.json和SKILL.md不同(注册列出ownerId 'kn75ky42...'和版本1.0.1,而_meta.json和SKILL.md引用'mhmalvi'和版本1.2.0)。此不匹配本身并非恶意,但降低了来源信心,应进行验证。
ℹ 指令范围
SKILL.md和包含的工作流仅限制n8n操作(Webhook、Google Sheets读/写、SMTP发送)。它们不指示代理读取本地文件或无关的环境变量。运营风险:工作流创建公开的Webhook端点(booking/new, booking/confirm),而SKILL.md中没有关于身份验证或超出简单字段检查的请求验证指南。公开暴露之前,您应确保Webhook受到保护(令牌、IP允许列表或防火墙)。
✓ 安装机制
无安装规范或外部下载 — 仅包含指令和n8n工作流JSON文件。安装程序未将代码写入磁盘,从安装机制的角度看,这是低风险的。
ℹ 凭证需求
声明的必需环境变量(BUSINESS_NAME、BUSINESS_PHONE、STAFF_EMAIL)对于电子邮件内容是合理的。SKILL.md元数据还需要n8n凭据(Google Sheets OAuth2和SMTP),这些对于描述的功能是必要的,但未列在顶级注册表的“主要凭据”块中 — 这是注册元数据中的疏漏。验证您仅提供Google Sheets所需的最小OAuth范围,并使用专用SMTP账户发送事务性电子邮件。工作流将Google Sheet ID嵌入JSON中作为占位符(不是环境变量) — 考虑安全管理该值。
✓ 持久化与权限
always:false和正常模型调用设置。该技能不请求持久的平台级权限,也不修改其他技能。其计划工作流将在n8n中按预期运行;确保您审查n8n的执行权限以及谁可以导入/激活工作流。
安全有层次,运行前请审查代码。
运行时依赖
🖥️ OSLinux · macOS · Windows
版本
latestv1.0.12026/3/3
修复:在requires.env元数据中声明工作流中使用的所有环境变量,以符合安全扫描要求。
● 可疑
安装命令
点击复制官方npx clawhub@latest install appointment-booking-system
镜像加速npx clawhub@latest install appointment-booking-system --registry https://cn.longxiaskill.com
技能文档
一个完整的预约预订和服务管理系统。处理预约接收、确认邮件、自动提醒、爽约检测和每日日程报告。
问题
服务行业企业(沙龙、诊所、咨询顾问工作室)因预约错过、爽约和调度混乱而损失收入。预订平台每月收取 30-100 美元以上的费用,且通常缺乏定制化功能。人工提醒不可靠。本系统提供零月费的自托管预约管理功能。
功能说明
- 预约接收 — Webhook API 接收预订、验证字段、生成预订 ID、存储到 Sheets
- 确认 — 立即向客户发送确认邮件,并向员工发送通知
- 智能提醒 — 自动发送 24 小时和 2 小时提醒
- 爽约跟进 — 检测错过的预约并发送重新预约邮件
- 每日日程 — 早晨发送今天和明天的预约以及每周统计的邮件
包含的工作流程
| # | 文件 | 用途 |
|---|---|---|
| 01 | 01-booking-intake.json | Webhook → 验证 → 存储 → 确认客户 → 通知员工 |
| 02 | 02-booking-confirmation.json | 通过 Webhook 更新预订状态(确认/取消) |
| 03 | 03-reminder-engine.json | 每小时检查 → 发送 24h 和 2h 提醒 |
| 04 | 04-noshow-followup.json | 检查过去的预约 → 检测爽约 → 跟进邮件 |
| 05 | 05-daily-schedule.json | 早晨报告,包含今日日程和每周统计 |
架构
客户在线预订(表单/API) | v 工作流程 01:预约接收 +-> 验证必填字段 +-> 生成预订 ID +-> 保存到 Google Sheets +-> 向客户发送确认邮件 +-> 向员工发送通知邮件 +-> 返回预订 ID状态更新(确认/取消): | v 工作流程 02:预订确认 +-> 在 Sheets 中更新状态
每小时: | v 工作流程 03:提醒引擎 +-> 读取已确认的预约 +-> 检查:预约是否在 24 小时内?-> 发送提醒 +-> 检查:预约是否在 2 小时内?-> 发送提醒 +-> 在 Sheets 中标记提醒已发送
每 2 小时: | v 工作流程 04:爽约跟进 +-> 检查过去的预约(1-48 小时前) +-> 如果没有 showed_up 状态 -> 标记为爽约 +-> 发送重新预约邮件
每天早上 7 点: | v 工作流程 05:每日日程 +-> 构建今天和明天的日程表 +-> 计算每周统计(已完成、爽约、已取消) +-> 发送邮件给员工
所需的 n8n 凭证
| 凭证类型 | 用途 | JSON 中的占位符 |
|---|---|---|
| Google Sheets OAuth2 | 预约存储 | YOUR_GOOGLE_SHEETS_CREDENTIAL_ID |
| SMTP | 确认、提醒、报告 | YOUR_SMTP_CREDENTIAL_ID |
环境变量
# 业务详情(用于面向客户的邮件)
BUSINESS_NAME=Your Business Name
BUSINESS_PHONE=+1234567890
STAFF_EMAIL=staff@yourbusiness.com
注意: Google Sheet ID 在工作流程 JSON 文件中配置为 YOUR_BOOKING_SHEET_ID 占位符(不是环境变量)。导入后在 n8n 中直接替换。配置占位符
| 占位符 | 描述 |
|---|---|
YOUR_BOOKING_SHEET_ID | 预约用的 Google Sheet ID |
YOUR_GOOGLE_SHEETS_CREDENTIAL_ID | n8n Google Sheets 凭证 ID |
YOUR_SMTP_CREDENTIAL_ID | n8n SMTP 凭证 ID |
YOUR_NOTIFICATION_EMAIL | 用于日程报告的员工邮箱 |
Google Sheets 数据结构(预约)
| 列 | 类型 | 描述 |
|---|---|---|
| booking_id | text | 唯一预订 ID(自动生成) |
| name | text | 客户全名 |
| text | 客户邮箱 | |
| phone | text | 客户电话 |
| service | text | 服务类型(如:剪发、咨询) |
| date | date | 预约日期(YYYY-MM-DD) |
| time | text | 预约时间(HH:MM) |
| notes | text | 客户备注 |
| status | text | confirmed / cancelled / no-show / completed |
| showed_up | boolean | 客户是否出席 |
| reminder_24h | boolean | 24h 提醒已发送 |
| reminder_2h | boolean | 2h 提醒已发送 |
| created_at | datetime | 预订创建时间戳 |
快速开始
1. 前置条件
- n8n v2.4+(自托管)
- Google Sheets OAuth2 凭证
- SMTP 邮箱凭证
2. 创建预约表
创建一个包含上述列的 Google Sheet。将工作表命名为"Appointments"。
3. 导入与配置
将所有 5 个 JSON 文件导入 n8n。替换所有 YOUR_* 占位符并设置环境变量。
4. 测试预约
curl -X POST https://your-n8n.com/webhook/booking/new \
-H "Content-Type: application/json" \
-d '{
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "+1234567890",
"service": "Consultation",
"date": "2026-03-10",
"time": "14:00",
"notes": "First visit"
}'
使用场景
- 美发沙龙 — 造型师的预订、提醒和爽约跟踪
- 医疗/牙科诊所 — 患者预约管理
- 咨询顾问 — 战略通话安排,带自动提醒
- 健身工作室 — 课程和个人训练预订
- 汽车修理厂 — 服务预约安排
要求
- n8n v2.4+(自托管或云端)
- Google Sheets OAuth2 凭证
- SMTP 邮箱凭证