关于 crontap-ai-built-apps
面向在应用构建器中开发应用的用户,指导为已部署应用创建定时 HTTP 作业。重点涵盖受保护端点、幂等处理、Crontap 调度与运行验证。
主要功能
- 01规划定时操作与持久化副作用
- 02构建带密钥保护的 HTTP 端点
- 03使用 Crontap 创建定时任务
- 04配置心跳以监测漏执行
- 05检查调度记录与应用日志
适用场景
- 01为每日报告设置定时投递
- 02防止重复请求产生重复副作用
- 03验证部署端点的授权与运行结果
MCP 相关
通过 Crontap MCP 创建心跳和 HTTP 调度;也可使用需 Ultra 权限的原始 API。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ crontap/ skills --skill crontap-ai-built-apps安装后在 Claude Code 中输入/crontap-ai-built-apps确认已加载。
详细介绍
AI 构建应用的定期任务
已部署的应用必须提供 HTTP 端点。Crontap 负责计时并调用该端点。构建器聊天用于创建代码,而不是作为定期提示词的生产运行时。
前置条件
使用所需工具前,请检查它们是否可用。如果缺少任何工具,请停止操作,并只向用户提供以下两个选项:
- 连接 Crontap MCP:
https://mcp.crontap.com/mcp。所有 Crontap 套餐均支持 MCP 访问。 - 为原始 API 配置
$CRONTAP_CLIENT_ID和$CRONTAP_API_KEY。原始 API 访问需要 Ultra。
在用户选择之前,不要擅自选择路径或继续操作。
- 确认构建器已部署的服务或函数运行时。
- 定义一项范围明确的定期操作及其持久副作用。
- 添加仅限服务端使用的 cron 密钥和幂等性存储。
- 确认生产环境 URL 和 IANA 时区。
构建器提示词
根据应用的框架调整此提示词:
Create a POST /api/jobs/daily-report endpoint. Before any work, compare the
Authorization bearer value with the server-only CRON_SECRET environment
variable and return 401 on mismatch. Persist an idempotency key for the current
logical reporting day before creating side effects. Queue long work durably.
Return JSON with a bounded status and no secrets. Add tests for unauthorized,
first-run, and duplicate-run behavior.
检查生成的代码。确认密钥比对和幂等性处理发生在服务端,而非浏览器代码中。
工作流
- 在构建器中生成并检查受保护的端点。
- 部署端点并进行授权和未授权测试。
- 可以选择创建心跳,以独立记录运行情况。
- 使用受保护的端点创建计划任务。
- 在 Crontap 和应用日志中检查首次运行情况。
MCP 示例
如果需要监控任务是否漏跑,请先创建心跳:
{
"tool": "create_heartbeat",
"arguments": {
"name": "Daily report delivery",
"periodMinutes": 1440,
"graceMinutes": 30
}
}
安全地保存返回的 ping URL。可以将其连接到计划任务结果 Webhook,也可以在部署的端点完成持久化操作后调用它。
创建 HTTP 计划任务:
{
"tool": "create_schedule",
"arguments": {
"url": "https://app.example.com/api/jobs/daily-report",
"text": "every day at 08:00",
"timezone": "America/New_York",
"method": "POST",
"headers": {
"Authorization": "Bearer <cron-secret-from-secure-store>",
"Content-Type": "application/json"
},
"body": {
"source": "crontap"
},
"label": "AI-built app daily report"
}
}
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/jobs/daily-report",
"interval": "0 8 * * *",
"timezone": "America/New_York",
"verb": "POST",
"headers": {
"Authorization": "Bearer <cron-secret-from-secure-store>",
"Content-Type": "application/json"
},
"data": {"source": "crontap"},
"label": "AI-built app daily report"
}'
对于已连接的非 Ultra 账户,请使用 MCP。
验证
- 确认端点位于服务端,且未经身份验证时无法访问。
- 确认同一逻辑周期内的重复请求只会产生一次副作用。
- 验证 Crontap 的首次运行情况及对应的应用记录。
- 如果使用心跳,请分别验证成功和明确失败的路径。
安全与套餐限制
- 切勿将 cron 密钥或心跳 URL 放入客户端环境变量中。
- 避免安排预览或开发环境的部署 URL。
- Crontap 不会保持构建器会话打开,也不会发起提示词。
- 如果创建任务时触及上限或频率下限,请提供返回的四档选项以及最小可行选项。
故障排除
- 404 通常意味着构建器没有部署服务端路由。
- 401 表示已部署环境与 Crontap 使用的密钥不同。
- 平台休眠或冷启动可能导致超时。请将耗时较长的工作持久排队。
- 副作用重复表示端点的幂等性边界不完整。
参考资料
评论
支持 Markdown