Install
openclaw skills install @thcjp/pipedrive-toolkit-freeopenclaw skills install @thcjp/pipedrive-toolkit-free通过API驱动AI Agent查询Pipedrive销售数据,实现商机、联系人、组织和活动的快速检索。免费版提供只读查询功能,满足销售日常信息获取需求。
Pipedrive是一款专注于销售流程管理的CRM工具,但在命令行集成和自动化查询场景下,直接调用API需要处理OAuth认证和Token刷新等复杂逻辑。本Skill通过API代理服务管理OAuth认证,让AI Agent能够通过简单的API调用查询销售数据。
免费版聚焦只读查询能力,提供商机、联系人、组织、活动和管道的列表与搜索功能,适合销售人员快速获取客户和商机信息。
| 能力模块 | 免费版支持 | 说明 |
|---|---|---|
| 商机查询 | 支持 | 列表、详情、搜索 |
| 联系人查询 | 支持 | 列表、详情、搜索 |
| 组织查询 | 支持 | 列表、详情 |
| 活动查询 | 支持 | 列表、详情 |
| 管道查询 | 支持 | 列表、详情 |
| 阶段查询 | 支持 | 列表、详情 |
| 备注查询 | 支持 | 列表 |
| 用户信息 | 支持 | 当前用户信息 |
| 商机创建 | 不支持 | 专业版提供 |
| 数据更新 | 不支持 | 专业版提供 |
| 数据删除 | 不支持 | 专业版提供 |
| 批量操作 | 不支持 | 专业版提供 |
| 连接管理 | 不支持 | 专业版提供 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Pipedrive、销售数据的免费工、支持商机、联系人、组织的查询与搜索、工具免费版是一款、面向销售数据管理、的命令行辅助、Skill、Agent、能够通过、API、中的商机、组织和活动数据、实现销售信息的快、速检索和展示、核心能力、商机列表与搜索、联系人查询、组织查询、活动列表、管道与阶段查看、当前用户信息、Use、when、模型调用、智能对话、LLM、应用时使用、不适用于需要、确定性的关键决策等。销售人员在外出途中通过AI Agent快速查询当前open状态的商机列表,了解跟进优先级。
通过姓名或邮箱搜索联系人信息,快速获取客户背景和历史活动记录。
查看所有销售管道和阶段分布,了解整体销售漏斗状态。
# 设置API代理服务的API Key
export MATON_API_KEY="your_api_key_here"
# 1. 列出所有open商机
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/deals?status=open')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 2. 搜索联系人
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/persons/search?term=john')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 3. 查看管道列表
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/pipelines')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
所有请求通过API代理服务转发到Pipedrive API,代理自动注入OAuth Token:
基础URL: https://api.maton.ai/pipedrive/{原生API路径}
认证头: Authorization: Bearer $MATON_API_KEY
# 列出所有商机
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/deals')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 按状态过滤
# status: open, won, lost, deleted, all_not_deleted
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/deals?status=open&limit=50')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 查看指定商机详情
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/deals/123')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 搜索商机
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/deals/search?term=enterprise')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# 列出联系人
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/persons?limit=50')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 查看联系人详情
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/persons/123')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 搜索联系人
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/persons/search?term=john')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# 列出组织
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/organizations')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 查看组织详情
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/organizations/456')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# 列出活动
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/activities')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 按类型过滤活动
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/activities?type=call')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 按完成状态过滤
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/activities?done=0')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# 列出所有管道
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/pipelines')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# ...
# 列出阶段(按管道过滤)
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/stages?pipeline_id=1')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
# 使用start和limit参数分页
python -c "
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/pipedrive/api/v1/deals?start=0&limit=50&sort=add_time%20DESC')
req.add_header('Authorization', f'Bearer {os.environ[\"MATON_API_KEY\"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
"
| 参数 | 适用资源 | 说明 |
|---|---|---|
status | deals | 过滤状态:open/won/lost/deleted/all_not_deleted |
filter_id | deals, persons | 使用已保存的过滤器ID |
stage_id | deals | 按阶段过滤 |
user_id | deals, activities | 按用户过滤 |
type | activities | 活动类型:call/meeting/task/email |
done | activities | 完成状态:0(未完成)/1(已完成) |
start | 所有列表 | 分页起始位置(默认0) |
limit | 所有列表 | 每页数量(默认100) |
sort | 所有列表 | 排序字段和方向(如add_time DESC) |
status=open过滤,避免返回大量已关闭数据。/search?term=关键词快速定位特定商机或联系人,比遍历列表更高效。start和limit分页,每页建议50-100条,避免响应超时。done=0过滤未完成项,聚焦当前需要处理的任务。jq等工具进行字段提取和格式化。检查MATON_API_KEY环境变量是否正确设置。执行echo $MATON_API_KEY确认值不为空。API Key可在代理服务设置页面获取。
需要先创建Pipedrive OAuth连接。在代理服务管理页面创建连接并完成OAuth授权流程。免费版仅支持查询,连接管理需在网页端操作。
Pipedrive的资源ID是整数类型。在API调用中直接使用数字(如/deals/123),无需引号包裹。
每个账户的请求速率限制为10次/秒。批量查询时注意控制请求频率,避免触发429错误。
URL中包含fields[]或sort[]等括号时,使用curl -g禁用通配符解析。或直接使用Python的urllib方式调用。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| API代理服务 | 在线服务 | 必需 | 注册账户并获取API Key |
| Pipedrive账户 | 在线账户 | 必需 | 在Pipedrive官网注册 |
| Pipedrive OAuth连接 | 认证连接 | 必需 | 在代理服务中创建 |
| Python | 运行时 | 必需 | 系统通常自带或从官网安装 |
| LLM API | API | 必需 | 由Agent平台内置LLM提供 |
MATON_API_KEY环境变量配置.env文件中(已加入.gitignore)本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:pipedrive-toolkit-pro
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "Pipedrive工具(免费版)处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "pipedrivekit"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}