首页龙虾技能列表 › Zoho Recruit — 零工招聘管理集成

Zoho Recruit — 零工招聘管理集成

v1.0.3

Zoho Recruit API 集成,通过 Maton 网关管理 OAuth。用于读取、创建、更新或搜索招聘数据(候选人、职位、面试、申请等)。需要网络访问和有效的 Maton API 密钥。

3· 11,887·5 当前·7 累计·💬 3
by @byungkyu·MIT-0
下载技能包
License
MIT-0
最后更新
2026/2/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
medium confidence
该技能的要求和指令与其声明的目的相符(通过 Maton 网关集成 Zoho Recruit),主要风险在于招聘数据通过外部网关(maton.ai)传输,必须信任该服务和其 API 密钥处理。
评估建议
该技能内部一致,做了它声称的事情:通过 Maton 网关与 Zoho Recruit 通信,需要 MATON_API_KEY。安装前,请验证您信任 maton.ai(它将代理您的 Zoho 数据和 OAuth 令牌)。...
详细分析 ▾
用途与能力
技能名称/描述(Zoho Recruit 集成)与其要求一致:网络访问和 Maton API 密钥。
指令范围
SKILL.md 只指示向 Maton 控制的端点发送 HTTP 请求和如何管理 OAuth 连接;
安装机制
没有安装规格或代码被提供(仅指令),因此安装过程中没有写入磁盘或下载内容。
凭证需求
仅需要环境变量 MATON_API_KEY,这对于基于网关的集成是合理的。
持久化与权限
技能不请求 always:true 且仅限用户调用;它不尝试修改其他技能或全局代理设置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.32026/2/6

添加了 clawdbot 元数据(包括表情符号和所需环境变量详细信息)到技能配置中,没有改变技能逻辑或 API 使用。

● 无害

安装命令 点击复制

官方npx clawhub@latest install zoho-recruit
镜像加速npx clawhub@latest install zoho-recruit --registry https://www.longxiaskill.com

技能文档

通过托管 OAuth 认证访问 Zoho Recruit API。使用完整的 CRUD 操作管理候选人、职位空缺、面试、申请和招聘工作流程。

快速开始

# 列出所有候选人
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates?per_page=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

基础 URL

https://gateway.maton.ai/zoho-recruit/{native-api-path}

{native-api-path} 替换为实际的 Zoho Recruit API 端点路径。网关会将请求代理到 recruit.zoho.com 并自动注入您的 OAuth token。

认证

所有请求都需要在 Authorization 头中包含 Maton API 密钥:

Authorization: Bearer $MATON_API_KEY

环境变量: 将您的 API 密钥设置为 MATON_API_KEY

export MATON_API_KEY="YOUR_API_KEY"

获取 API 密钥

连接管理

https://ctrl.maton.ai 管理您的 Zoho Recruit OAuth 连接。

列出连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=zoho-recruit&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

创建连接

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'zoho-recruit'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

获取连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "connection": {
    "connection_id": "0c9fa9b1-80b6-4caa-afc2-8629fe4d9661",
    "status": "ACTIVE",
    "creation_time": "2026-02-06T07:48:59.474215Z",
    "last_updated_time": "2026-02-06T07:57:52.950167Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "zoho-recruit",
    "metadata": {}
  }
}

在浏览器中打开返回的 url 以完成 OAuth 授权。

删除连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

指定连接

如果您有多个 Zoho Recruit 连接,请使用 Maton-Connection 头指定要使用的连接:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '0c9fa9b1-80b6-4caa-afc2-8629fe4d9661')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

如果省略,网关将使用默认(最早的)活动连接。

API 参考

模块

列出所有模块

获取 Zoho Recruit 账户中所有可用模块的列表。

GET /zoho-recruit/recruit/v2/settings/modules

示例:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/settings/modules')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

候选人

列出候选人

GET /zoho-recruit/recruit/v2/Candidates

查询参数:

参数类型默认值描述
fieldsstring-逗号分隔的字段 API 名称
sort_orderstring-ascdesc
sort_bystring-排序的字段 API 名称
convertedstring-truefalseboth
approvedstring-truefalseboth
pageinteger1页码
per_pageinteger200每页记录数(最大 200)
示例:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates?per_page=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "data": [
    {
      "id": "846336000000552208",
      "First_Name": "Christina",
      "Last_Name": "Palaskas",
      "Email": "c.palaskas@example.com",
      "Candidate_Status": "Converted - Employee",
      "Current_Employer": "Chandlers",
      "Current_Job_Title": "Technical Consultant",
      "Experience_in_Years": 3,
      "Skill_Set": "Communication, Presentation, Customer service",
      "Candidate_Owner": {
        "name": "Byungkyu Park",
        "id": "846336000000549541"
      }
    }
  ],
  "info": {
    "per_page": 10,
    "count": 1,
    "page": 1,
    "more_records": false
  }
}

根据 ID 获取候选人

GET /zoho-recruit/recruit/v2/Candidates/{record_id}

示例:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates/846336000000552208')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

搜索候选人

GET /zoho-recruit/recruit/v2/Candidates/search?criteria={criteria}

查询参数:

参数类型描述
criteriastring搜索条件(例如 (Last_Name:contains:Smith)
emailstring按邮箱搜索
phonestring按电话搜索
wordstring全局单词搜索
pageinteger页码
per_pageinteger每页记录数
搜索操作符:
  • 文本:equalsnot_equalstarts_withends_withcontainsnot_containsin
  • 日期/数字:equalsnot_equalgreater_thanless_thangreater_equalless_equalbetween

示例:

python <<'EOF'
import urllib.request, os, json
import urllib.parse
criteria = urllib.parse.quote('(Candidate_Status:equals:Active)')
req = urllib.request.Request(f'https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates/search?criteria={criteria}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

创建候选人

POST /zoho-recruit/recruit/v2/Candidates
Content-Type: application/json

{ "data": [ { "First_Name": "John", "Last_Name": "Doe", "Email": "john.doe@example.com", "Phone": "555-123-4567", "Current_Job_Title": "Software Engineer" } ] }

示例:

python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "data": [{
        "First_Name": "John",
        "Last_Name": "Doe",
        "Email": "john.doe@example.com",
        "Phone": "555-123-4567"
    }]
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "data": [
    {
      "code": "SUCCESS",
      "status": "success",
      "message": "record added",
      "details": {
        "id": "846336000000600001",
        "Created_Time": "2026-02-06T10:00:00-08:00",
        "Created_By": {
          "name": "User Name",
          "id": "846336000000549541"
        }
      }
    }
  ]
}

更新候选人

PUT /zoho-recruit/recruit/v2/Candidates/{record_id}
Content-Type: application/json

{ "data": [ { "Current_Job_Title": "Senior Software Engineer" } ] }

示例:

python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    "data": [{
        "Current_Job_Title": "Senior Software Engineer"
    }]
}).encode()
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates/846336000000552208', data=data, method='PUT')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

删除候选人

DELETE /zoho-recruit/recruit/v2/Candidates?ids={record_id1},{record_id2}

职位空缺

列出职位空缺

GET /zoho-recruit/recruit/v2/Job_Openings

示例:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Job_Openings?per_page=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "data": [
    {
      "id": "846336000000552093",
      "Posting_Title": "Senior Accountant (Sample)",
      "Job_Opening_Status": "Waiting for approval",
      "Date_Opened": "2026-01-21",
      "Target_Date": "2026-02-20",
      "Industry": "Accounting",
      "City": "Tallahassee",
      "No_of_Candidates_Hired": 0,
      "No_of_Candidates_Associated": 0
    }
  ],
  "info": {
    "per_page": 10,
    "count": 1,
    "page": 1,
    "more_records": false
  }
}

根据 ID 获取职位空缺

GET /zoho-recruit/recruit/v2/Job_Openings/{record_id}

创建职位空缺

POST /zoho-recruit/recruit/v2/Job_Openings
Content-Type: application/json

{ "data": [ { "Posting_Title": "Software Engineer", "Job_Opening_Status": "In-progress", "Date_Opened": "2026-02-01", "Target_Date": "2026-03-01" } ] }

更新职位空缺

PUT /zoho-recruit/recruit/v2/Job_Openings/{record_id}
Content-Type: application/json

删除职位空缺

DELETE /zoho-recruit/recruit/v2/Job_Openings?ids={record_id1},{record_id2}

面试

列出面试

GET /zoho-recruit/recruit/v2/Interviews

示例:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Interviews?per_page=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

根据 ID 获取面试

GET /zoho-recruit/recruit/v2/Interviews/{record_id}

创建面试

POST /zoho-recruit/recruit/v2/Interviews
Content-Type: application/json

{ "data": [ { "Interview_Name": "Technical Interview", "Candidate_Name": {"id": "846336000000552208"}, "Posting_Title": {"id": "846336000000552093"}, "Start_DateTime": "2026-02-10T10:00:00-08:00", "End_DateTime": "2026-02-10T11:00:00-08:00" } ] }

部门

列出部门

GET /zoho-recruit/recruit/v2/Departments

示例:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/zoho-recruit/recruit/v2/Departments?per_page=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

申请

列出申请

GET /zoho-recruit/recruit/v2/Applications

通用记录操作

所有模块都支持相同的 CRUD 操作:

# 列出记录
GET /zoho-recruit/recruit/v2/{module_api_name}

# 根据 ID 获取记录 GET /zoho-recruit/recruit/v2/{module_api_name}/{record_id}

# 创建记录 POST /zoho-recruit/recruit/v2/{module_api_name}

# 更新记录 PUT /zoho-recruit/recruit/v2/{module_api_name}/{record_id}

# 删除记录 DELETE /zoho-recruit/recruit/v2/{module_api_name}?ids={id1},{id2}

# 搜索记录 GET /zoho-recruit/recruit/v2/{module_api_name}/search?criteria={criteria}

可用模块

模块API 名称描述
CandidatesCandidates职位候选人
Job OpeningsJob_Openings空缺职位
ApplicationsApplications职位申请
InterviewsInterviews已安排的面试
DepartmentsDepartments公司部门
ClientsClients客户公司
ContactsContacts联系人
CampaignsCampaigns招聘活动
ReferralsReferrals员工推荐
TasksTasks待办事项
EventsEvents日历事件
VendorsVendors外部供应商

分页

Zoho Recruit 使用基于页码的分页:

GET /zoho-recruit/recruit/v2/{module_api_name}?page=1&per_page=200
  • page: 页码(默认:1)
  • per_page: 每页记录数(默认:200,最大:200)

响应包含分页信息:

{
  "data": [...],
  "info": {
    "per_page": 200,
    "count": 50,
    "page": 1,
    "more_records": false
  }
}

代码示例

JavaScript

const response = await fetch(
  'https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates?per_page=10',
  {
    headers: {
      'Authorization': Bearer ${process.env.MATON_API_KEY}
    }
  }
);
const data = await response.json();

Python

import os
import requests

response = requests.get( 'https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates', headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}, params={'per_page': 10} ) data = response.json()

注意事项

  • 记录 ID 是数字字符串(例如 846336000000552208
  • GET 请求最多 200 条记录
  • POST/PUT 请求最多 100 条记录
  • DELETE 请求最多 100 条记录
  • 模块 API 名称区分大小写(例如 Job_Openings,不是 job_openings
  • Last_Name 对于候选人是必填字段
  • 日期格式:yyyy-MM-dd
  • DateTime 格式:yyyy-MM-ddTHH:mm:ss±HH:mm(ISO 8601)
  • 查找字段使用包含 id 和可选 name 的 JSON 对象
  • 重要:使用 curl 命令时,当 URL 包含特殊字符时使用 curl -g
  • 重要:当将 curl 输出通过管道传递给 jq 或其他命令时,$MATON_API_KEY 等环境变量在某些 shell 环境中可能无法正确展开

错误处理

状态码含义
400缺少 Zoho Recruit 连接或无效请求
401无效或缺少 Maton API 密钥
429请求速率受限
4xx/5xxZoho Recruit API 的直通错误

常见错误码

代码描述
INVALID_DATA无效字段值
MANDATORY_NOT_FOUND必填字段缺失
DUPLICATE_DATA检测到重复记录
INVALID_MODULE无效模块 API 名称
NO_PERMISSION权限不足

故障排除:API 密钥问题

  • 检查是否设置了 MATON_API_KEY 环境变量:
echo $MATON_API_KEY
  • 通过列出连接验证 API 密钥是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

故障排除:无效应用名称

  • 确保您的 URL 路径以 zoho-recruit 开头。例如:
  • 正确:https://gateway.maton.ai/zoho-recruit/recruit/v2/Candidates
  • 错误:https://gateway.maton.ai/recruit/v2/Candidates

资源

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务