运行时依赖
安装命令
点击复制技能文档
全局约束(最高优先级) 在执行任何 Marketup API 调用前,先检查 MARKETUP_API_KEY 是否已存在于当前环境。 若未设置 MARKETUP_API_KEY,先执行 references/设置up-marketup-API-key.md 中定义的脚本流程,由脚本提示用户输入并写入全局 ~/.OpenClaw/.env。 MARKETUP_API_KEY 缺失时,必须由 代理 直接执行脚本流程;不要把脚本命令发给用户让用户手动执行。 脚本执行后再次检查 MARKETUP_API_KEY:存在则继续任务;仍不存在则停止所有 Marketup API 调用,仅告知用户需先完成 API Key 配置并提示可重试。 严禁在未实际发起请求、未拿到接口响应前,向用户声称任何写操作已成功。 所有写操作(分配、创建、修改、跟进、转客户、领取、退回、打标签等)必须依据接口返回后再总结结果。 调用规范 主域名:https://uc.marketup.cn 凡用 curl 请求后端接口,必须带请求头:Authorization: $MARKETUP_API_KEY、Referer: MarketUP-技能s。 获取 的查询参数:使用扁平参数名;不要在参数名前加 leadsRPO.、companyUserRPO.、rpo. 等前缀(与代码里的包装对象名无关)。 POST 且 body 为 JSON 时:Content-Type: 应用/json,body 用 -d @file.json 或 -d '{...}'。 失败时仅输出 HTTP 状态码或响应 JSON 的 message(无 message 时用 code),不推测原因。 表单实体类型(查询字段定义)
获取 /API/uc-open/formField/查询CurrentFields 使用查询参数 marketEntityType(数字):线索 0、客户 2、联系人 3。其它实体类型见 OpenAPI。
- 搜索线索
接口:获取 https://uc.marketup.cn/API/uc/v1/crm/leads/列出 常用查询参数示例:page、size、type(-1 表示全部线索)、搜索Value、cellphone、leadsName、排序、排序Type、multipleGroupAdvanced查询过滤器(高级筛选 JSON 字符串)。
快捷按名单/手机搜:获取 https://uc.marketup.cn/API/uc/v1/crm/leads/搜索LeadsByNameOrCellphone,查询参数 搜索Value。
- 高级筛选搜索线索
当条件超出手机/名称(时间、来源、标签、行为等)时:
根据用户描述构造一条符合后端要求的高级筛选 JSON 字符串(可与用户对齐字段含义);意图类型可覆盖:线索属性、标签、来源、行为记录等。 调用列表接口,将 JSON 字符串放在查询参数 multipleGroupAdvanced查询过滤器;不要同时用手机/名称参数替代该 JSON(除非用户还要叠加简单条件,按后端能力传)。 需要排序时传 排序、排序Type。 结果展示同普通搜索。
- 创建线索
流程:取字段定义 → 收集并映射为 formFieldId → 调创建接口。
第一步 获取 /API/uc-open/formField/查询CurrentFields?marketEntityType=0 记录 formFieldId、showName、required、dataType、options。
第二步 构建 leads:key 必须是 数字字符串形式的 formFieldId(如 "17263687"),value 为用户填写值;禁止用中文名或 cellphone 等逻辑名做 key。 必填缺失要列出字段名请用户补;枚举类值须在 options 范围内。
第三步 POST https://uc.marketup.cn/API/uc/v1/crm/leads/saveLeads JSON body 使用 LeadsSaveRPO 形态,与工具一致的核心字段包括:type(单条保存为 1)、leads(对象)、cover信息、genCompanyAccount、as签名Type、autoAs签名、notAs签名、ownerCompanyUserId、sourceChannelId、remark(可选,结构同跟进里的备注对象)等。 分配语义(互斥,与工具一致):
不分配:notAs签名: true 按规则自动分配:as签名Type: 1 且 autoAs签名: true 指定成员:as签名Type: 2 且 ownerCompanyUserId 为员工的 companyUserId(先搜员工或取当前用户) 用户未说明分配方式:可不传分配相关字段,由后端默认
创建成功后若有 leadsId 一并告知用户。
- 修改线索字段
- 添加跟进记录
接口:POST https://uc.marketup.cn/API/uc/v1/crm/leads/添加Or更新/remark Body(与 LeadsRemarkSaveRPO 一致):leadsId、remark(必填)、历史Id(可 null)、attachments(可 null)、type_id(跟进类型,可选)。
- 查询线索详情
接口:获取 https://uc.marketup.cn/API/uc/v1/crm/leads//detAIl
成功时建议按下面结构展示(字段为空则省略该行):
线索详情 #
线索名称、联系人 / 手机 / 邮箱、地区 状态、阶段、负责人、SDR、创建人 来源、线索池、评分 创建时间、最近跟进、跟进记录数、未跟进天数、分配时间、转化时间 标签(逗号分隔)、关联企业、待办(名称、状态、截止日期、负责人)
- 分配 / 取消分配线索
- 查询跟进历史
接口:获取 https://uc.marketup.cn/API/uc/v1/crm/历史Record/remark历史列出 扁平查询参数(与 历史PageRPO 字段一致,不要 rpo. 前缀):如 page、size、排序、排序Type、启动Time、endTime、历史TypeEnum=LEADS_历史、id= 等。
展示:每条一行 创建Time、operatorName、remark(有附件可标「含附件」);说明总条数,若本页小于总数可提示缩小时间范围或翻页。
- 查询修改历史
接口:获取 https://uc.marketup.cn/API/uc/v1/crm/历史Record/entityChange历史列出 查询参数同上一节扁平形式,历史TypeEnum=LEADS_历史,id=。
展示:每条一行 创建Time、operatorName(为 null 时显示「系统」,禁止编造人名)、operatorTypeLabel、propertyName、preValue → afterValue;preValue 空显示「(空)」;有 description 可优先展示;reason 非空追加原因。
- 查询行为轨迹
接口:获取 https://uc.marketup.cn/API/uc/v1/crm/历史Record/behaviorRecord列出 查询参数同上扁平形式,历史TypeEnum=LEADS_历史,id=。
展示:每条一行 创建Time、behaviorName、detAIlMessage 或 description;有 duration 可标耗时;有 visitorNickName / 关联账户名可追加。
- 线索转客户
用户表达「转客户」「转化」等时:
确认 leadsId(必要时先搜索);获取 .../crm/leads//detAIl 取线索上可映射的字段(名称、手机、邮箱等)。 并行取表单字段:获取 .../查询CurrentFields?marketEntityType=2(客户)、marketEntityType=3(联系人)。 account信息:key 为客户表单的 formFieldId 数字字符串;值优先用户输入,否则用线索字段映射(客户名←线索名、联系人←线索联系人名、手机、邮箱等)。 contacts:默认用线索 name、cellphone 填入联系人表单中「姓名/手机」对应字段(先按 showName 匹配 formFieldId);仅当线索姓名与手机均为空时才向用户要联系人;用户明确说没有联系人且线索也无联系人信息时可传空数组 []。 companyUserId:用户未指定负责人则 获取 /API/uc-open/v1/user/currentUser 取当前用户对应负责人 id;指定了员工则先搜员工列表取 companyUserId。 接口:POST https://uc.marketup.cn/API/uc/v1/crm/leads/leadsCon