关于 crontap-replace-vercel-cron
为将 Vercel Cron 调度迁移到 Crontap 的开发者提供操作指南,保留 Vercel 作为运行环境,并强调切换期间避免双重调度。
主要功能
- 01读取现有 Vercel Cron 配置
- 02为路由添加密钥鉴权
- 03迁移调度并核对时区
- 04提供暂停和恢复步骤
- 05规划回滚并验证首次运行
适用场景
- 01将 Vercel Cron 的时钟迁至 Crontap
- 02安全切换生产环境中的定时任务
- 03排查重复执行或调度路由错误
MCP 相关
通过 Crontap MCP 的 create_schedule 创建替代任务,并可用 pause_schedule 和 resume_schedule 管理;也说明 Ultra REST API 创建方式。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ crontap/ skills --skill crontap-replace-vercel-cron安装后在 Claude Code 中输入/crontap-replace-vercel-cron确认已加载。
详细介绍
替换 Vercel Cron
保留 Vercel 作为运行环境,只迁移定时器。Crontap 通过 HTTPS 调用已部署的路由。
前置条件
使用所需工具前,请先检查它们是否可用。如果有任何工具不可用,请停止操作,并仅向用户提供以下两个选项:
- 连接 Crontap MCP:
https://mcp.crontap.com/mcp。所有 Crontap 套餐均支持 MCP 访问。 - 为原始 API 配置
$CRONTAP_CLIENT_ID和$CRONTAP_API_KEY。原始 API 访问需要 Ultra 套餐。
不要擅自选择路径,也不要在用户选择之前继续操作。
- 读取现有
vercel.json中的 cron 路径和表达式。 - 确认生产环境主机名和路由方法。
- 使用专用的密钥请求头保护路由。
- 切换前确保处理程序具备幂等性。
切换工作流
- 在 Vercel 应用中添加或验证路由身份验证。
- 使用受控请求测试受保护的生产路由。
- 选择切换时间,并说明短暂重叠或间断的风险。
- 移除或停用
vercel.json中的计划任务。 - 立即创建匹配的 Crontap 计划任务。
- 验证解析后的时区、后续运行时间以及首条历史记录。
- 制定回滚计划:暂停 Crontap,恢复 Vercel cron,然后部署。
不要同时启用两个定时器。即使两个调度器都正常运行,也可能造成副作用重复。
MCP 示例
创建替代计划任务:
{
"tool": "create_schedule",
"arguments": {
"url": "https://app.example.com/api/cron/daily-report",
"cron": "0 9 * * 1-5",
"timezone": "UTC",
"method": "GET",
"headers": {
"Authorization": "Bearer <secret-from-secure-store>"
},
"label": "Vercel daily report"
}
}
为回滚或维护暂停计划任务:
{
"tool": "pause_schedule",
"arguments": {
"scheduleId": "<schedule-id>"
}
}
使用相同配置恢复计划任务:
{
"tool": "resume_schedule",
"arguments": {
"scheduleId": "<schedule-id>"
}
}
暂停或恢复前,请确认所选 ID。
受保护路由模式
将请求授权请求头与仅供服务器使用的环境变量进行比较。如果二者不匹配,应在执行任何工作前返回 401。不要在查询字符串或路由路径中使用密钥。
如果路由会将工作加入队列,请先将逻辑计划周期持久化为幂等键,再加入队列。只有队列接受任务后才返回成功。
REST 备用方案
创建 REST 计划任务需要 Ultra API 访问权限:
curl --fail-with-body https://api.crontap.com/v1/schedule \
-X POST \
-H "ClientId: $CRONTAP_CLIENT_ID" \
-H "ApiKey: $CRONTAP_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"url": "https://app.example.com/api/cron/daily-report",
"interval": "0 9 * * 1-5",
"timezone": "UTC",
"verb": "GET",
"headers": {
"Authorization": "Bearer <secret-from-secure-store>"
},
"label": "Vercel daily report"
}'
非 Ultra 套餐账户请使用 MCP。
验证
- 确认已部署配置中不存在旧的 Vercel 计划任务。
- 确认只有一个 Crontap 计划任务指向该路由。
- 验证没有密钥时返回 401,提供密钥时请求成功。
- 检查首次实际运行以及应用层副作用。
安全与套餐限制
- 切勿将生产路由密钥粘贴到技能、代码仓库或聊天中。
- 回滚时,恢复旧调度器前先暂停 Crontap。
- 保留原有频率的 UTC 语义,除非用户明确选择本地 IANA 时区。
- 遇到上限或频率错误时,展示返回的四档选项,并给出满足需求的最小选项。
故障排除
- Vercel 返回 401,表示已配置的计划任务请求头与路由密钥不一致。
- 返回 404 通常表示被调用的主机名上没有部署该路由。
- 输出重复表示两个定时器都处于启用状态,或端点幂等性失效。
- 超时可能意味着需要使用持久队列,而非长时间同步处理。
参考资料
评论
支持 Markdown