Install
openclaw skills install mingdata-dmp-auth明日DMP API凭证管理和统一API调用网关。负责AK/SK凭证的配置、验证和管理,提供统一的API签名生成和HTTP请求封装,作为所有明日DMP技能(人群圈选、人群洞察、人群投放等)的API调用基础设施。
openclaw skills install mingdata-dmp-auth本技能是明日DMP技能体系的核心基础设施,提供两大核心功能:
┌─────────────────────────────────────────────────────────────┐
│ 明日DMP技能体系 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 人群圈选技能 │ │ 人群洞察技能 │ │ 人群投放技能 │ │
│ │ │ │ │ │ │ │
│ │ 业务脚本 │ │ 业务脚本 │ │ 业务脚本 │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ └─────────────────┼─────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────┐ │
│ │ mingdata-dmp-auth │ │
│ │ (鉴权技能) │ │
│ ├────────────────────────┤ │
│ │ • 凭证管理 │ │
│ │ • 签名生成 │ │
│ │ • HTTP请求封装 │ │
│ │ • 错误处理 │ │
│ └────────┬───────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────┐ │
│ │ 明日DMP开放平台API │ │
│ └────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
功能:引导用户配置Access Key和Secret Key
使用方式:
python setup_credentials.py
交互流程:
~/.mingdata_dmp_credentials退出码:
功能:提供统一的API签名生成和HTTP请求封装
使用方式:
python minri_dmp_api.py <endpoint> <request_body_json>
参数说明:
endpoint:API路径(如/audience/manage/list)request_body_json:请求体JSON字符串示例:
# 查询人群列表
python minri_dmp_api.py /audience/manage/list '{"current":1,"pageSize":10}'
# 创建组合人群
python minri_dmp_api.py /audience/manage/combine/create '{"name":"测试人群","trackType":"MOBILE","idTypes":["MD5_IDFA"],"data":[...]}'
核心功能:
凭证加载:
~/.mingdata_dmp_credentials读取AK/SK签名生成:
MD5(timestamp + randStr + secret_key)HTTP请求:
BASE_URL + endpoint + ?ts=<>&randStr=<>&accessKey=<>&sign=<>Content-Type: application/json; charset=UTF-8错误处理:
退出码说明:
业务技能在调用API前会检查本技能是否已安装:
auth_skill_path = Path.home() / ".skills" / "mingdata-dmp-auth" / "scripts" / "minri_dmp_api.py"
if not auth_skill_path.exists():
print("未找到鉴权技能,请先安装mingdata-dmp-auth技能")
sys.exit(3)
优势:
配置方法:
# 设置环境变量(推荐使用 DMP_AK 和 DMP_SK)
export DMP_AK="your_access_key_here"
export DMP_SK="your_secret_key_here"
代码中使用:
import os
# AK 和 SK 通过环境变量注入,不会在此文件中硬写明文
AK = os.environ["DMP_AK"]
SK = os.environ["DMP_SK"]
永久配置(可选):
将环境变量添加到 ~/.bashrc 或 ~/.zshrc:
echo 'export DMP_AK="your_access_key_here"' >> ~/.bashrc
echo 'export DMP_SK="your_secret_key_here"' >> ~/.bashrc
source ~/.bashrc
凭证文件位置:~/.mingdata_credentials 或 workspace/.mingdata_credentials
凭证文件格式:
{
"access_key": "your_access_key_here",
"secret_key": "your_secret_key_here"
}
配置方法:
python scripts/minri_dmp_api.py save-credentials <access_key> <secret_key>
系统按以下优先级加载凭证:
| 优先级 | 方式 | 环境变量/路径 | 跨对话共享 |
|---|---|---|---|
| 1 | 环境变量(推荐) | DMP_AK, DMP_SK | ✅ 是 |
| 2 | 环境变量(兼容) | MINGDATA_ACCESS_KEY, MINGDATA_SECRET_KEY | ✅ 是 |
| 3 | 文件存储 | ~/.mingdata_credentials | ❌ 否 |
.开头的隐藏文件,避免误操作申请入口:
申请步骤:
安全提示:
用户:帮我圈选一个人群
↓
业务技能检测到凭证不存在
↓
业务技能:检测到您尚未配置明日DMP凭证,正在调用鉴权技能...
↓
鉴权技能:展示凭证申请指引,引导用户输入AK/SK
↓
用户:输入Access Key和Secret Key
↓
鉴权技能:凭证配置成功
↓
业务技能:继续执行人群圈选任务
用户:查询人群列表
↓
业务技能调用鉴权技能的minri_dmp_api.py
↓
鉴权技能:加载凭证 → 生成签名 → 发送HTTP请求
↓
明日DMP API:返回人群列表数据
↓
鉴权技能:输出结果,退出码0
↓
业务技能:展示人群列表给用户
用户:创建人群
↓
业务技能调用鉴权技能的minri_dmp_api.py
↓
鉴权技能:加载凭证 → 生成签名 → 发送HTTP请求
↓
明日DMP API:返回401认证失败
↓
鉴权技能:输出错误信息,退出码4
↓
业务技能:检测到认证失败,引导用户重新配置凭证
↓
用户:重新输入Access Key和Secret Key
↓
业务技能:重试创建人群任务
https://open.mingdata.com/api/open-apiContent-Type: application/json; charset=UTF-8def generate_signature(timestamp, rand_str, secret_key):
"""
签名算法:32位大写MD5(timestamp + randStr + secret_key)
Args:
timestamp: 10位秒级时间戳
rand_str: 4位随机数
secret_key: SK密钥
Returns:
str: 32位大写MD5签名
"""
sign_str = f"{timestamp}{rand_str}{secret_key}"
return hashlib.md5(sign_str.encode()).hexdigest().upper()
完整URL格式:
https://open.mingdata.com/api/open-api{endpoint}?ts={timestamp}&randStr={rand_str}&accessKey={access_key}&sign={sign}
示例:
https://open.mingdata.com/api/open-api/audience/manage/list?ts=1234567890&randStr=5678&accessKey=a1b2c3d4...&sign=A1B2C3D4...
A:直接运行python setup_credentials.py,输入新的Access Key和Secret Key即可覆盖旧凭证。
A:业务技能会自动检测凭证缺失,并引导您重新配置。您也可以手动运行python setup_credentials.py。
A:不需要。所有明日DMP技能共享同一份凭证(~/.mingdata_dmp_credentials),只需配置一次。
A:运行任意明日DMP业务技能(如查询人群列表),如果返回认证失败,说明凭证无效,需要重新配置。
A:可以。您可以直接调用scripts/minri_dmp_api.py脚本测试API调用,但通常建议通过业务技能(人群圈选、人群洞察等)使用。