- AI 技能
- 人工智能
【免费下载链接】marketingskills
Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering.
导读
本文是 marketingskills 开源仓库中 Zapier 集成文档 的深度展开,围绕"AI Agent 如何通过 Zapier 直接调用 8000+ 应用的 Action"这一核心主题,完整覆盖 SDK 快速上手、CLI 命令、Zaps 遗留 API、Webhook 触发与营销自动化编排四大能力路径。读完本文,你将掌握:如何为 Agent 配置 Zapier 凭据、如何用 TypeScript SDK 在代码中发送 Slack 消息、创建 HubSpot 联系人、管理 Zap 启停,以及如何在无代码场景下用 Webhook 串联表单、CRM 与邮件序列,让 AI Agent 成为真正能落地的营销自动化执行者。
Zapier 在 Agent 生态中的定位
Zapier 是连接 8000+ 应用的工作流自动化平台。对 AI Agent 而言,其核心价值在于:通过 Zapier 官方 SDK,Agent 可以直接调用任意已连接应用的 Action,而无需为每个应用单独实现 OAuth 流程或逆向工程其 API。这意味着一次登录、一套 SDK,即可覆盖营销技术栈中的绝大部分工具。
在 marketingskills 仓库中,Zapier 被登记于 工具注册表(Automation 分类),并作为跨工具自动化的"胶水层"被 revops 技能 引用——当需要打通 CRM、邮件、Slack 等系统时,Zapier 是官方推荐的集成路径。其能力矩阵如下:
| 集成 | 可用 | 说明 |
|---|---|---|
| API | ✓ | 用于 Zaps、任务和 Webhook 的 REST API |
| MCP | ✓ | 通过 Zapier MCP server 提供 |
| CLI | ✓ | @zapier/zapier-sdk-cli用于应用发现与类型生成 |
| SDK | ✓ | @zapier/zapier-sdk—— 覆盖 8000+ 应用集成的 TypeScript SDK |
仓库还为只想要"零依赖单文件工具"的场景提供了原生 zapier.js CLI——一个无需npm install、直接node tools/clis/zapier.js即可运行的 Node 18+ 脚本,专门封装 Zaps 管理与 Webhook 发送,与官方 SDK 形成互补。
认证:两套体系,两种场景
遗留 API(Zaps 管理)
管理 Zap 本身(列出、启停、查看任务历史)走 Zapier 遗留 REST API,认证方式极简:
- 类型:API Key
- 请求头:
X-API-Key: {api_key} - 获取方式:Zapier 账户的 Settings > API
在 zapier.js CLI 中,该 Key 通过环境变量ZAPIER_API_KEY注入,缺失时 CLI 会立即报错退出(错误信息为ZAPIER_API_KEY environment variable required),且所有请求统一携带X-API-Key头与Content-Type: application/json。这与 CLI 通用约定 一致——凭据绝不硬编码进脚本,全部来自环境变量。
SDK 认证
TypeScript SDK 提供两种认证模式:
开发环境——浏览器登录:
npx zapier-sdk login该命令会拉起浏览器完成授权,适合本地开发时快速建立与账户的连接。
生产环境——服务端部署:
- Client Credentials:推荐方式,以环境变量形式存储(如
ZAPIER_CLIENT_ID、ZAPIER_CLIENT_SECRET) - 直接令牌:设置
ZAPIER_CREDENTIALS环境变量
⚠️ 重要边界:浏览器登录只在本地生效。任何服务端部署(包括 Agent 以服务形式运行时)都必须使用 Client Credentials 或直接令牌,否则认证会在非本机环境中失败。
SDK 快速上手
安装
npm install @zapier/zapier-sdk npm install -D @zapier/zapier-sdk-cli @types/node typescript npm pkg set type=module三条命令分别完成:运行时 SDK 安装、CLI 与 TypeScript 类型支持安装(devDependencies)、以及将项目标记为 ESM 模块(type=module),这是使用import语法的前提。
初始化
import { createZapierSdk } from "@zapier/zapier-sdk"; const zapier = createZapierSdk();createZapierSdk()返回 SDK 实例,后续所有连接发现、Action 调用都从该实例发起。
CLI 命令:从探索到类型生成
官方 SDK CLI 是 Agent 的"侦察工具",四步走即可从零定位到可调用的 Action:
| 命令 | 用途 |
|---|---|
npx zapier-sdk login | 认证(仅开发环境) |
npx zapier-sdk list-apps --search "query" | 搜索可用的应用 |
npx zapier-sdk list-actions APP_KEY | 列出指定应用可用的 Action |
npx zapier-sdk add [app-key] | 生成该应用的 TypeScript 类型 |
典型工作流:先用list-apps --search "hubspot"确认应用存在并获得 APP_KEY,再用list-actions查看其暴露的 Action,最后add hubspot生成类型,即可在代码中获得完整的类型提示与参数校验。
SDK 方法一览
| 方法 | 用途 |
|---|---|
zapier.listConnections() | 列出所有已认证的应用连接 |
zapier.findFirstConnection() | 查找特定连接 |
zapier.runAction() | 在已连接应用上执行 Action |
zapier.apps.slack() | App 代理模式,提供更干净的调用语法 |
zapier.fetch() | 自定义认证 API 调用(绕过预构建 Action) |
其中zapier.apps.<app>()代理模式是日常主力——它把"找到连接 + 调用 Action"两步压缩为一个语义化的调用,代码可读性最佳。
示例一:发送 Slack 消息
import { createZapierSdk } from "@zapier/zapier-sdk"; const zapier = createZapierSdk(); const slack = await zapier.apps.slack(); await slack.sendChannelMessage({ channel: "#marketing", message: "Campaign launched!" });示例二:创建 HubSpot 联系人
const hubspot = await zapier.apps.hubspot(); await hubspot.createContact({ email: "lead@example.com", firstName: "Jane", lastName: "Doe" });注意两个示例中无需显式指定连接——SDK 会基于账户中已认证的连接自动路由;若存在多个连接,可先用findFirstConnection()指定目标。
分页:处理大数据集
runAction返回的是单次结果,面对大批量数据(如同步数千条联系人)应使用.items()迭代器:
const contacts = await hubspot.listContacts({ maxItems: 100 }); for await (const contact of contacts.items()) { console.log(contact.email); }maxItems限制最大拉取条数,for await异步迭代器按需逐条消费,内存占用可控。
治理提醒(Governance)
zapier.fetch()这类自定义 API 调用不受组织的 App/Action 限制策略约束。若你的组织有治理要求(例如仅允许特定应用、特定 Action 被使用),应优先使用预构建 Action,而不是绕过限制的裸调用。
Zaps 遗留 API:程序化管理工作流
当 Agent 需要管理 Zap 本身(而非调用业务应用)时,使用遗留 REST API,Base URL 为https://api.zapier.com/v1:
列出 Zap
GET https://api.zapier.com/v1/zaps获取 Zap 详情
GET https://api.zapier.com/v1/zaps/{zap_id}启停 Zap
POST https://api.zapier.com/v1/zaps/{zap_id}/on POST https://api.zapier.com/v1/zaps/{zap_id}/off查看任务历史
GET https://api.zapier.com/v1/zaps/{zap_id}/tasks获取账户信息
GET https://api.zapier.com/v1/profiles/me仓库自带的 zapier.js CLI 将这些端点封装为统一的{tool} <resource> <action> [options]命令模式(见 CLI 通用约定):
| 命令 | 对应端点 | 必填参数 |
|---|---|---|
node tools/clis/zapier.js zaps list | GET /zaps | 无 |
node tools/clis/zapier.js zaps get --id <zap_id> | GET /zaps/{id} | --id |
node tools/clis/zapier.js zaps on --id <zap_id> | POST /zaps/{id}/on | --id |
node tools/clis/zapier.js zaps off --id <zap_id> | POST /zaps/{id}/off | --id |
node tools/clis/zapier.js tasks list --zap-id <zap_id> | GET /zaps/{id}/tasks | --zap-id |
node tools/clis/zapier.js profile me | GET /profiles/me | 无 |
该 CLI 支持--dry-run模式:所有请求会以掩码***隐藏凭据并输出_dry_run: true标记,便于在真实发送前预览请求内容(实现细节见源码)。输出统一为 JSON 到 stdout,可直接| jq管道处理。
Webhook 触发:无代码工作流的入口
Webhook 是"从你的应用向 Zapier 推数据"的通道,有两种常见形态:
Catch Hook(接收数据)
在 Zapier 中创建 "Webhooks by Zapier" Trigger 后,会获得一个 Catch Hook URL,向它 POST JSON 即可触发 Zap:
POST https://hooks.zapier.com/hooks/catch/{webhook_id}/ { "event": "user.created", "user_id": "123", "email": "user@example.com" }从应用向 Zapier 发数据(最常用)
POST https://hooks.zapier.com/hooks/catch/{account_id}/{hook_id}/ { "name": "John Doe", "email": "john@example.com", "plan": "pro" }在 zapier.js CLI 中对应hooks send子命令:node tools/clis/zapier.js hooks send --url https://hooks.zapier.com/hooks/catch/... --data '{"email":"a@b.com"}'。源码对输入做了三层校验——--url必填且必须以https://开头、--data必填且必须是合法 JSON——任一不满足即返回错误提示,避免把坏请求发到生产 Zap。
Webhook 载荷结构规范
发送给 Zapier 的数据应组织为扁平 JSON(不要嵌套对象),便于 Zapier 的映射界面直接读取字段:
{ "customer_name": "John Doe", "customer_email": "john@example.com", "plan_name": "Pro", "plan_price": 99, "signup_date": "2024-01-15" }扁平化的好处:每个字段在 Zap 编辑器中直接以{{customer_name}}形式可用,无需处理嵌套路径,也避免字段名歧义。
常见营销自动化编排
用 SDK(Agent 推荐路径)
Agent 可以在一次任务中编排多应用联动,以下代码片段展示了"新线索进 CRM → 通知收入团队 → 进入邮件序列"的完整链路:
// Lead capture to CRM const hubspot = await zapier.apps.hubspot(); await hubspot.createContact({ email, firstName, lastName }); // New customer notification const slack = await zapier.apps.slack(); await slack.sendChannelMessage({ channel: "#revenue", message: `New customer: ${email}` }); // Add to email sequence const customerio = await zapier.apps.customerio(); await customerio.createOrUpdatePerson({ email, plan: "pro" });这套模式尤其适合 AI Agent:一次对话即可完成"感知 → 决策 → 多系统执行",且每步都有类型保障。在 marketingskills 中,此类自动化与 revops 技能(线索生命周期管理)和 emails 技能(邮件序列设计)天然互补。
用 Zap(无代码路径)
不需要 Agent 的常驻自动化(always-on automation)用 Zap 即可:
- Typeform → Zapier → HubSpot(线索捕获)
- Stripe → Zapier → Slack(新客户告警)
- 表单提交 → Zapier → Customer.io(邮件序列)
- 新评价 → Zapier → Slack(社会证明)
- 新推荐 → Zapier → 电子表格 + Slack(推荐追踪)
关键概念速查
- Zap—— 自动化工作流(无代码)
- SDK—— 对 8000+ 应用集成的程序化访问
- Trigger—— 启动 Zap 的事件
- Action—— Zap 或 SDK 执行的任务
- Task—— 单次 Action 执行
- Connection—— 与应用之间的已认证连接(在 Zaps 与 SDK 之间共享)
最后一行的 Connection 概念值得强调:你在 Zapier 网页端建立的连接,SDK 可直接复用,反之亦然。这意味着"用无代码 Zap 验证流程,用 SDK 固化到 Agent"可以无缝切换,不必重复授权。
何时选择哪种方式
| 场景 | 推荐 |
|---|---|
| AI Agent 需要直接与任意应用交互(发消息、建记录、同步数据) | SDK |
| 需要无代码的常驻自动化 | Zaps |
| 从自己的应用触发工作流 | Webhooks |
| 程序化管理 Zap | API |
速率限制
- API:每分钟 100 次请求
- SDK:按每个已连接应用各自限速
- Task:按套餐等级限流
设计 Agent 任务时,需为大批量同步预留节流逻辑(如分批 + 退避重试),避免触发限流导致任务中断。
关联技能
Zapier 自动化在营销场景中最常配合以下市场技能使用,可在仓库中进一步查阅:
- emails —— 邮件序列与生命周期邮件,配合 Customer.io 等触发类 Action
- analytics —— 事件跟踪与测量,配合 Webhook 上报事件
- referrals —— 推荐/联盟计划,配合推荐追踪 Zap
- revops —— 收入运营与线索生命周期,直接引用本集成作为跨工具自动化方案
- AI 技能
- 人工智能
【免费下载链接】marketingskills
Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering.
相关推荐
Cal.diy 与 Zapier 集成实战指南:用 8000+ 应用自动化你的日程调度工作流
Cal.diy 与 Zapier 集成实战指南:用 8000+ 应用自动化你的日程调度工作流 Cal.diy(本项目仓库)内置了与 Zapier 的官方集成:用
后端前端企业应用LinkedIn Ads 集成指南:面向 AI Agent 的 Marketing API 操作全解(marketing skills 仓库实战)
LinkedIn Ads 集成指南:面向 AI Agent 的 Marketing API 操作全解(marketing skills 仓库实战) 导读 本文以
AI 技能人工智能Marketing Skills 中的 Browserbase 集成:面向 AI Agent 的 Headless 浏览器服务实战指南
Marketing Skills 中的 Browserbase 集成:面向 AI Agent 的 Headless 浏览器服务实战指南 Browserbase
AI 技能人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考