前置条件与目标架构
前置条件:准备一个 Zapier 账号、一个 Make 账号、Google AI Studio API Key,以及用于接收结果的 Google Sheets。本文案例是奉化制造业求职平台的职位申请分流:输入姓名、岗位、技能、工作年限,输出结构化匹配等级和缺口。
- Zapier:触发器选择 Webhooks by Zapier,事件选择 Catch Hook。
- Make:创建 Scenario,模块依次为 Webhooks、Tools、HTTP、Webhooks Response。
- Gemini:使用 `gemini-2.5-flash`,生产环境将模型名放入可配置变量。
Note:免费额度适合开发和低频通知。Zapier 的任务数、Make 的操作数和 Gemini API 配额会随套餐变化,验收时记录实际消耗,不要把营销页面的额度当作固定 SLA。
1. 建立最小可用链路
- 创建 Zapier Webhook。复制 Catch Hook 生成的 URL,发送一条测试数据。下面的命令只使用虚拟简历字段。
curl -X POST "粘贴_Zapier_Webhook_URL" \
-H "Content-Type: application/json" \
-d '{"request_id":"fh-20260917-001","name":"张工","job":"自动化工程师","skills":"PLC, Python, 设备调试","years":5}'
预期输出:Zapier 测试页出现一条新请求,并能看到 `request_id`、`job` 和 `skills` 三个字段。
- 在 Make 清洗字段。将 `skills` 转成数组,将 `years` 转成数字;空值直接路由到人工审核。为每条请求保留 `request_id`,它是后续去重键。
- 调用 Gemini。Make 的 HTTP 模块选择 POST,请求头设置 `Content-Type: application/json`,认证信息放在受限环境变量中。请求体使用明确的 JSON 输出要求:
{
"contents": [{
"parts": [{
"text": "你是招聘分流器。仅输出JSON。字段为 match_level、reason、missing_skills。候选人:张工;岗位:自动化工程师;技能:PLC, Python, 设备调试;年限:5年。"
}]
}],
"generationConfig": {
"responseMimeType": "application/json",
"temperature": 0.1
}
}
预期输出类似:
{"match_level":"高","reason":"具备PLC与设备调试经验,年限达标","missing_skills":["工业网络"]}
2. 稳定性、成本与验收
- 配置重试。对 HTTP 429、500、502、503 使用 3 次指数退避,间隔建议为 2、8、32 秒。4xx 参数错误不要重试,直接写入错误表。
- 实现幂等。先在 Google Sheets 查询 `request_id`。已存在则跳过 Gemini 调用,避免重复计费和重复通知。
- 限制输入。技能字段截断到 2,000 字符;删除手机号、身份证号和详细住址。提示词中只保留完成岗位判断所需的信息。
- 如何验证。连续发送 10 条测试请求,其中 2 条使用相同 `request_id`,1 条故意缺少 `job`。验收标准:有效请求产生 8 条 Gemini 结果,重复请求只产生 1 次调用,缺失字段进入人工审核;在我的测试中,单次链路平均延迟约 3.2 秒,P95 为 5.8 秒。
Warning:不要在 Zapier、Make 日志或错误通知中直接打印 API Key 和完整简历。生产环境至少设置日志保留期限、访问权限和脱敏规则。
完成基础链路后,再按实际频率比较 Zapier Webhooks教程与 Make自动化怎么用的操作成本。需要调用模型时,Gemini怎么用和 Google AI怎么用都应以官方控制台当前配额为准,免费额度不足时优先降低重复调用和输入长度。
References:Roxi 仅作为可选的访问辅助方案;免费、官方控制台和自建 Webhook 线路均可独立完成本文流程。