关于 booking-notify
booking-notify 是用于 Cal.com 预约变更通知的技能,面向需要跟踪日程的用户。它通过定时 Telegram 同步和可选的 Pushover 实时告警提供双渠道通知。
主要功能
- 01定时发送 Telegram HTML 通知
- 02Pushover 实时告警
- 03检测预约新增、取消和改期
- 04保存状态并用断路器处理 API 错误
适用场景
- 01查看预约新增、取消和改期
- 02接收即将开始的预约提醒
- 03通过 Pushover 接收紧急预约告警
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill booking-notify安装后在 Claude Code 中输入/booking-notify确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/evolution-log.mdnotification-templates.mdpushover-setup.mdsync-config.mdwebhook-relay.md详细介绍
预订通知(双通道)
通过两个通道自动发送预订通知:
| 通道 | 发送方式 | 格式 | 使用场景 |
|---|---|---|---|
| Telegram | 定时 | HTML | 交互式命令、每日日报、搜索 |
| Pushover | 实时 | 纯文本 | 使用自定义声音(dune)的紧急提醒 |
自我改进技能:本技能会在使用过程中不断改进。如果说明有误、参数发生偏移,或需要使用变通方案,请立即修正此文件,不要拖延。仅针对真实且可复现的问题进行更新。
强制预检
步骤 1:检查同步脚本是否存在
ls -la "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/calcom-commander/scripts/sync.ts" 2>/dev/null || echo "SCRIPT_NOT_FOUND"
步骤 2:验证环境(必需)
echo "CALCOM_OP_UUID: ${CALCOM_OP_UUID:-NOT_SET}"
echo "TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN:+SET}"
echo "TELEGRAM_CHAT_ID: ${TELEGRAM_CHAT_ID:-NOT_SET}"
echo "HAIKU_MODEL: ${HAIKU_MODEL:-NOT_SET}"
所有项都必须为 SET。 如果任何一项为 NOT_SET,请先运行设置命令。
步骤 3:验证 Pushover(可选)
echo "PUSHOVER_APP_TOKEN: ${PUSHOVER_APP_TOKEN:+SET}"
echo "PUSHOVER_USER_KEY: ${PUSHOVER_USER_KEY:+SET}"
echo "PUSHOVER_SOUND: ${PUSHOVER_SOUND:-dune}"
echo "WEBHOOK_RELAY_URL: ${WEBHOOK_RELAY_URL:-NOT_SET}"
如果为 NOT_SET:Pushover 为可选项。仅使用 Telegram 仍可正常运行。若要启用,请参阅 pushover-setup.md。
步骤 4:验证 Cal.com CLI 二进制文件
ls -la "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/calcom-commander/scripts/calcom-cli/calcom" 2>/dev/null || echo "BINARY_NOT_FOUND"
如果为 BINARY_NOT_FOUND:请构建:
cd "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/calcom-commander/scripts/calcom-cli" && bun install && bun run build
通知通道
Telegram(定时同步)
通过 launchd 每 6 小时轮询一次。发送 HTML 格式的消息,内容包括:
| 类别 | 示例 |
|---|---|
| NEW BOOKING | 安排了新的面试、预约了新的咨询 |
| CANCELLATION | 参与者取消预订、主持人取消预订 |
| UPCOMING | 预订将在 1 小时后开始、今日安排 |
| RESCHEDULED | 预订改到新的时间、日期已更改 |
Pushover(实时 Webhook)
通过 Cloud Run Webhook 中继服务即时发送通知:
| 事件 | 优先级 | 声音 | 需要确认? |
|---|---|---|---|
| 新预订 | 2(紧急) | dune | 是 |
| 改期 | 2(紧急) | dune | 是 |
| 取消 | 0(普通) | dune | 否 |
Webhook 中继服务
Webhook 中继服务是一个轻量级 Cloud Run 服务,用于将 Cal.com Webhook 转发到 Pushover。部署说明请参阅 webhook-relay.md。
手动运行
cd ~/gh/<org>/<automation-repo> && bun run "$HOME/.claude/plugins/marketplaces/cc-skills/plugins/calcom-commander/scripts/sync.ts"
同步行为
- 从 Cal.com API 获取预订信息(最近 6 小时的时间范围)
- 与上次记录的状态进行比较(基于文件)
- 检测新预订、取消和改期
- 针对每项变更发送 Telegram 通知(HTML)
- 如果已配置凭据,则发送 Pushover 通知(纯文本)
- 更新状态文件,供下次同步周期使用
- API 出错时,断路器可防止故障连锁扩散
环境配置(无关环境的接线方式)
脚本读取普通环境变量。对于 launchd 守护进程,请将变量放入 ~/gh/<org>/<automation-repo>/.env.launchd(由启动脚本加载);交互式使用时,请在 shell 中导出这些变量:
# Required (Telegram)
export CALCOM_OP_UUID='<1password-uuid>'
export TELEGRAM_BOT_TOKEN='<bot-token>'
export TELEGRAM_CHAT_ID='<chat-id>'
# Optional (Pushover dual-channel)
export PUSHOVER_APP_TOKEN='<pushover-app-token>'
export PUSHOVER_USER_KEY='<pushover-user-key>'
export PUSHOVER_SOUND='dune'
export WEBHOOK_RELAY_URL='https://calcom-pushover-webhook-XXXXX.us-central1.run.app/'
参考资料
- notification-templates.md — 双通道消息模板
- pushover-setup.md — Pushover 凭据设置指南
- webhook-relay.md — Webhook 中继服务的部署与管理
- sync-config.md — 同步间隔与状态管理
变更后检查清单
- YAML frontmatter 有效(描述中不含冒号)
- 触发关键词为最新
- 路径模式使用 $HOME,而非硬编码路径
- 已验证 Pushover 优雅降级(无 Pushover 凭据时仍可运行)
执行后反思
此技能完成后,请在结束任务前进行反思:
- 确认位置。——编辑前,找到此 SKILL.md 的规范路径。
- 哪里失败了?——修复导致问题的指令。
- 哪些做得比预期更好?——将其列为推荐做法。
- 哪里偏离了?——修复任何与实际情况不符的脚本、参考资料或依赖项。
- 记录下来。——在演进日志中记录触发原因、修复内容和证据。
不要推迟。下一次调用会继承你留下的一切。
评论
支持 Markdown