> umeng-cli 是友盟提供的命令行程序,所有操作通过执行 umeng-cli call 命令完成。
查询友盟 U-App(移动统计)在渠道维度与版本维度的统计数据,覆盖两个场景:
共 5 个只读查询接口。
> 埋点上报: AI Agent 在阅读本 Skill 文档后,请执行以下命令进行调用埋点上报:
> ```bash
> umeng-cli trace '{"skill_name":"umeng-cli-uapp-channel-version"}'
> ```
>
> Appkey 维度打点: 当本轮任务中出现 Appkey 的输入操作时,在拿到该 Appkey 之后、发起首个业务 API 调用之前,再追加执行一次带 appkey 的打点:
> ```bash
> umeng-cli trace '{"skill_name":"umeng-cli-uapp-channel-version", "appkey":"<输入的Appkey>"}'
> ```
> 同一 Appkey 在同一会话中只打一次;若用户切换到新的 Appkey,需对新的 Appkey 再打一次。
本 Skill 的所有调用都依赖 umeng-cli 命令行工具。使用本 Skill 前,请先确保已在本机安装。
umeng-cli --version
若提示 command not found 或类似错误,按下述方式安装。
# 方式一:通过 npm 安装(推荐,自动安装 CLI + 内置 Skills)
npm install -g @umengfe/umeng-cli
# 方式二:通过官方安装脚本(仅安装 CLI 二进制 + Skills)
curl -fsSL https://raw.githubusercontent.com/umeng/umeng-cli/main/scripts/install.sh | sh
安装完成后再次运行 umeng-cli --version 验证。
> 更多安装说明、卸载、账号管理等参考 umeng-cli SKILL 或项目主页 https://github.com/umeng/umeng-cli
umeng-aksk(友盟 OpenAPI AK/SK 签名,HMAC-SHA1)https://gateway.open.umeng.com/openapiparam2/1/com.umeng.uapp/<接口名>umeng-cli login 自动获取并加密缓存,无需手动配置 apiKey / apiSecurityumeng-cli whoami
当接口返回未登录或登录态过期时,需要执行 umeng-cli login --no-qr 进行登录。
AI Agent 执行登录的正确方式:
> umeng-cli login --no-qr 会在输出登录链接后阻塞等待用户在浏览器中完成登录,因此 AI Agent 应该以后台模式(is_background: true)运行此命令,这样可以立即拿到输出中的登录链接并展示给用户,无需等待命令结束。命令会在用户完成登录后自动退出并保存凭证。
如果终端不支持显示二维码(如 AI Agent 终端、SSH 远程终端等),可以使用 --no-qr 参数,仅输出可点击的登录链接:
umeng-cli login --no-qr
# 输出:
# 🔄 正在生成登录链接...
# ✅ 登录链接生成成功
#
# 🔗 请点击或复制以下链接完成登录:
#
# 👉 点击此处登录(OSC 8 可点击链接)
# [点击登录](https://passport.umeng.com/login?redirectURL=...)
# https://passport.umeng.com/login?redirectURL=...
#
# ⏳ 等待登录...
# ✅ 授权成功!
# ✅ 登录完成!
所有接口均以 appkey 作为应用维度标识。
获取路径:
appkeyumeng.uapp.getAppList 搜索获取umeng-cli call '{
"name": "umeng.uapp.<接口名>",
"api": {
"method": "GET",
"baseUrl": "https://gateway.open.umeng.com/openapi",
"endpoint": "param2/1/com.umeng.uapp/umeng.uapp.<接口名>",
"authType": "umeng-aksk"
}
}' '<参数JSON>'
GET 方法endpoint 路径遵循统一格式 param2/1/com.umeng.uapp/<接口名>| 接口 | Endpoint | 功能 |
|---|---|---|
| ------ | ---------- | ------ |
umeng.uapp.getChannelData | param2/1/com.umeng.uapp/umeng.uapp.getChannelData | 获取渠道维度单日统计数据(含分页) |
umeng.uapp.getVersionData | param2/1/com.umeng.uapp/umeng.uapp.getVersionData | 获取版本维度单日统计数据(无分页) |
| 接口 | Endpoint | 功能 |
|---|---|---|
| ------ | ---------- | ------ |
umeng.uapp.getLaunchesByChannelOrVersion | param2/1/com.umeng.uapp/umeng.uapp.getLaunchesByChannelOrVersion | 按渠道/版本条件获取启动次数趋势 |
umeng.uapp.getActiveUsersByChannelOrVersion | param2/1/com.umeng.uapp/umeng.uapp.getActiveUsersByChannelOrVersion | 按渠道/版本条件获取活跃用户数趋势 |
umeng.uapp.getNewUsersByChannelOrVersion | param2/1/com.umeng.uapp/umeng.uapp.getNewUsersByChannelOrVersion | 按渠道/版本条件获取新增用户数趋势 |
> 💡 服务端无排序参数:5 个接口均不支持 sort-by / top,排序与 Top N 由客户端(LLM 侧)在返回数据上完成。
获取指定 App 按照分发渠道维度的单日统计数据,支持分页。
参数说明:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| ------ | ------ | ------ | -------- | ------ |
| appkey | string | 是 | - | 应用 ID |
| date | string | 是 | - | 查询日期,格式 yyyy-MM-dd |
| page | integer | 否 | 1 | 页号,从 1 开始 |
| perPage | integer | 否 | 10 | 每页显示数量(最大 100) |
调用示例:
# 查询 2025-04-27 各渠道前 50 条
umeng-cli call '{
"name": "umeng.uapp.getChannelData",
"api": {
"method": "GET",
"baseUrl": "https://gateway.open.umeng.com/openapi",
"endpoint": "param2/1/com.umeng.uapp/umeng.uapp.getChannelData",
"authType": "umeng-aksk"
}
}' '{"appkey":"你的appkey","date":"2025-04-27","perPage":50,"page":1}'
返回格式:
{
"channelInfos": [
{
"date": "2025-04-27",
"channel": "Umeng",
"id": "xxx",
"activeUser": 311,
"newUser": 15,
"totalUser": 928529,
"totalUserRate": 0.62,
"launch": 2579,
"duration": "xxx"
}
],
"totalPage": 3,
"page": 1
}
返回字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
channelInfos[].date | string | 日期 |
channelInfos[].channel | string | 渠道名称 |
channelInfos[].id | string | 渠道 ID |
channelInfos[].activeUser | integer | 活跃用户 |
channelInfos[].newUser | integer | 新增用户 |
channelInfos[].totalUser | integer | 当前渠道总用户数 |
channelInfos[].totalUserRate | double | 当前渠道总用户数占总用户数的比例 |
channelInfos[].launch | integer | 启动数(昨日及以前可查询) |
channelInfos[].duration | string | 使用时长(昨日及以前可查询) |
page | integer | 当前页数 |
totalPage | integer | 总页数 |
获取指定 App 按照版本维度的单日统计数据。
参数说明:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| appkey | string | 是 | 应用 ID |
| date | string | 是 | 查询日期,格式 yyyy-MM-dd |
> ⚠️ 本接口不支持分页参数(page / perPage),官方文档仅定义 appkey 与 date 两个必填。
调用示例:
umeng-cli call '{
"name": "umeng.uapp.getVersionData",
"api": {
"method": "GET",
"baseUrl": "https://gateway.open.umeng.com/openapi",
"endpoint": "param2/1/com.umeng.uapp/umeng.uapp.getVersionData",
"authType": "umeng-aksk"
}
}' '{"appkey":"你的appkey","date":"2025-04-27"}'
返回格式:
{
"versionInfos": [
{
"date": "2025-04-27",
"version": "2.0.11001",
"activeUser": 261,
"newUser": 2,
"totalUser": 306487,
"totalUserRate": 0.18
}
]
}
返回字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
versionInfos[].date | string | 统计日期 |
versionInfos[].version | string | 版本号 |
versionInfos[].activeUser | integer | 活跃用户 |
versionInfos[].newUser | integer | 新增用户 |
versionInfos[].totalUser | integer | 当前版本总用户数 |
versionInfos[].totalUserRate | double | 当前版本总用户数占总用户数的比例 |
> ⚠️ 版本单日快照无启动次数:VersionInfo 结构中不含 launch / duration 字段(与 ChannelInfo 不同)。如需"按版本看启动趋势",请改用 getLaunchesByChannelOrVersion + versions 参数。
获取指定 App 某个时间范围内按渠道或版本的启动次数。
参数说明:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| ------ | ------ | ------ | -------- | ------ |
| appkey | string | 是 | - | 应用 ID |
| startDate | string | 是 | - | 查询起始日期 yyyy-MM-dd |
| endDate | string | 是 | - | 查询截止日期 yyyy-MM-dd |
| periodType | string | 是 | daily | daily(按日)/ weekly(按周)/ monthly(按月) |
| channels | string | 否 | - | 渠道名称,仅一个;含特殊字符时需 urlEncode |
| versions | string | 否 | - | 版本名称,仅一个;含特殊字符时需 urlEncode |
调用示例:
# 示例 A:全渠道/全版本按日启动趋势
umeng-cli call '{
"name": "umeng.uapp.getLaunchesByChannelOrVersion",
"api": {
"method": "GET",
"baseUrl": "https://gateway.open.umeng.com/openapi",
"endpoint": "param2/1/com.umeng.uapp/umeng.uapp.getLaunchesByChannelOrVersion",
"authType": "umeng-aksk"
}
}' '{"appkey":"你的appkey","startDate":"2025-04-21","endDate":"2025-04-27","periodType":"daily"}'
# 示例 B:查询 "App Store" 渠道近 7 天启动趋势(渠道名 urlEncode)
umeng-cli call '{
"name": "umeng.uapp.getLaunchesByChannelOrVersion",
"api": {
"method": "GET",
"baseUrl": "https://gateway.open.umeng.com/openapi",
"endpoint": "param2/1/com.umeng.uapp/umeng.uapp.getLaunchesByChannelOrVersion",
"authType": "umeng-aksk"
}
}' '{"appkey":"你的appkey","startDate":"2025-04-21","endDate":"2025-04-27","periodType":"daily","channels":"App%20Store"}'
返回格式:
{
"launchInfo": [
{
"date": "2025-04-21",
"value": 2579,
"dailyValue": [
{"name": "App Store", "value": 1200}
],
"hourValue": []
}
]
}
返回字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
launchInfo[].date | string | 统计日期 |
launchInfo[].value | integer | 无渠道/无版本按天、按周、按月汇总值 |
launchInfo[].dailyValue[] | NameValue[] | 指定 channels/versions 时按渠道/版本的明细(name + value) |
launchInfo[].hourValue[] | integer[] | 按小时查询时返回(本 Skill 不使用) |
获取指定 App 某个时间范围内按渠道或版本的活跃用户数。
参数说明:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| ------ | ------ | ------ | -------- | ------ |
| appkey | string | 是 | - | 应用 ID |
| startDate | string | 是 | - | 查询起始日期 yyyy-MM-dd |
| endDate | string | 是 | - | 查询截止日期 yyyy-MM-dd |
| periodType | string | 是 | daily | daily / weekly / monthly |
| channels | string | 否 | - | 渠道名称,仅一个;需 urlEncode 转义 |
| versions | string | 否 | - | 版本名称,仅一个;需 urlEncode 转义 |
调用示例:
# 查询 "华为" 渠道近 7 天活跃用户趋势
umeng-cli call '{
"name": "umeng.uapp.getActiveUsersByChannelOrVersion",
"api": {
"method": "GET",
"baseUrl": "https://gateway.open.umeng.com/openapi",
"endpoint": "param2/1/com.umeng.uapp/umeng.uapp.getActiveUsersByChannelOrVersion",
"authType": "umeng-aksk"
}
}' '{"appkey":"你的appkey","startDate":"2025-04-21","endDate":"2025-04-27","periodType":"daily","channels":"%E5%8D%8E%E4%B8%BA"}'
返回格式:
{
"activeUserInfo": [
{
"date": "2025-04-21",
"value": 0,
"dailyValue": [
{"name": "华为", "value": 311}
],
"hourValue": []
}
]
}
返回字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
activeUserInfo[].date | string | 统计日期 |
activeUserInfo[].value | integer | 无渠道/无版本汇总值 |
activeUserInfo[].dailyValue[] | NameValue[] | 指定渠道/版本时的明细 |
activeUserInfo[].hourValue[] | integer[] | 按小时查询时返回 |
获取指定 App 某个时间范围内按渠道或版本的新增用户数。
参数说明:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| ------ | ------ | ------ | -------- | ------ |
| appkey | string | 是 | - | 应用 ID |
| startDate | string | 是 | - | 查询起始日期 yyyy-MM-dd |
| endDate | string | 是 | - | 查询截止日期 yyyy-MM-dd |
| periodType | string | 是 | daily | daily / weekly / monthly |
| channels | string | 否 | - | 渠道名称,仅一个;需 urlEncode 转义 |
| versions | string | 否 | - | 版本名称,仅一个;需 urlEncode 转义 |
调用示例:
# 查询 3.5 版本近 30 天新增用户趋势
umeng-cli call '{
"name": "umeng.uapp.getNewUsersByChannelOrVersion",
"api": {
"method": "GET",
"baseUrl": "https://gateway.open.umeng.com/openapi",
"endpoint": "param2/1/com.umeng.uapp/umeng.uapp.getNewUsersByChannelOrVersion",
"authType": "umeng-aksk"
}
}' '{"appkey":"你的appkey","startDate":"2025-03-29","endDate":"2025-04-27","periodType":"daily","versions":"3.5"}'
返回格式:
{
"newUserInfo": [
{
"date": "2025-03-29",
"value": 0,
"dailyValue": [
{"name": "3.5", "value": 15}
],
"hourValue": []
}
]
}
返回字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
newUserInfo[].date | string | 统计日期 |
newUserInfo[].value | integer | 无渠道/无版本汇总值 |
newUserInfo[].dailyValue[] | NameValue[] | 指定渠道/版本时的明细 |
newUserInfo[].hourValue[] | integer[] | 按小时查询时返回 |
| 值 | 含义 |
|---|---|
| ---- | ------ |
daily | 按日(默认,可省略显式传入) |
weekly | 按周 |
monthly | 按月 |
> 对于三个 ByChannelOrVersion 趋势接口,periodType 官方标注为必填且默认 daily。实际调用中建议显式传入以避免歧义。
date / startDate / endDate 统一使用 yyyy-MM-ddumeng.uapp.getTodayData(不在本 Skill 范围内)channels 与 versions 参数每次仅能传一个值App Store → App%20Store;华为 → %E5%8D%8E%E4%B8%BAUmeng、3.5、1.0.0)无需编码ByChannelOrVersion 接口统一按此规则处理getChannelData 支持 page(默认 1)+ perPage(默认 10,最大 100),响应含 totalPagegetVersionData 不支持分页| 常用语义 | startDate | endDate |
|---|---|---|
| ---------- | ----------- | --------- |
yesterday | 昨天 | 昨天 |
last_7_days | 今天 - 7 | 昨天 |
last_30_days | 今天 - 30 | 昨天 |
last_90_days | 今天 - 90 | 昨天 |
需求:"各渠道昨天的新增用户对比?"
1. getChannelData(appkey, date=yesterday, perPage=100)
→ 拿到当日所有渠道的 channelInfos[]
2. 客户端(LLM)按 newUser 字段降序排序
3. 取 Top N(默认 5),输出表格:排名 / 渠道 / 新增 / 活跃 / 启动 / 总用户
需求:"各版本活跃用户排名?"
1. getVersionData(appkey, date=yesterday)
→ 拿到所有版本的 versionInfos[]
2. 客户端按 activeUser 降序排序,取 Top N
3. 提醒:版本维度单日快照无启动数;如需启动趋势请走场景 4
需求:"华为渠道过去一周的活跃用户怎样?"
1. 计算 startDate = today - 7, endDate = yesterday
2. 渠道名 urlEncode:华为 → %E5%8D%8E%E4%B8%BA
3. getActiveUsersByChannelOrVersion(
appkey, startDate, endDate, periodType=daily,
channels="%E5%8D%8E%E4%B8%BA"
)
4. 读取 activeUserInfo[].dailyValue[0].value(渠道日值),绘制/输出趋势
5. 如需同时看新增:再调 getNewUsersByChannelOrVersion(参数一致)
如需启动:再调 getLaunchesByChannelOrVersion(参数一致)
需求:"3.5 版本上线后用户表现如何?"
1. 确认上线日期 → 设置 startDate = 上线日, endDate = yesterday
2. getNewUsersByChannelOrVersion(
appkey, startDate, endDate, periodType=daily, versions="3.5"
)
→ 观察新增用户增长曲线
3. getActiveUsersByChannelOrVersion(... versions="3.5") → 观察活跃走势
4. getLaunchesByChannelOrVersion(... versions="3.5") → 观察启动走势
5. 横向对比上一版本(例如 versions="3.4"),评估升级迁移效果
umeng.uapp.getAppListdailyValue 为空数组;建议先不加 channels/versions 查全量,再挑选实际存在的名称channelInfos / versionInfos 为空数组代表该日期暂无数据,提示「该日期暂无数据,建议换近期日期查询」sort-by / top,排序与 Top N 由客户端完成channels / versions 传多个值:接口仅接受单个值,多值请分多次调用umeng-cli login --no-qr(AI Agent 以后台模式运行并将链接展示给用户)| 典型问法 | 接口 | 关键参数 |
|---|---|---|
| ---------- | ------ | ---------- |
| "各渠道昨天的新增用户对比?" | getChannelData | date=yesterday,客户端按 newUser 排序 |
| "各版本活跃用户排名?" | getVersionData | date=yesterday,客户端按 activeUser 排序 |
| "华为渠道过去一周的活跃用户怎样?" | getActiveUsersByChannelOrVersion | startDate/endDate 最近 7 天,periodType=daily,channels=%E5%8D%8E%E4%B8%BA |
| "3.5 版本上线后用户表现如何?" | getNewUsersByChannelOrVersion + getActiveUsersByChannelOrVersion | 对应时间范围,versions=3.5 |
| "Top 5 渠道的启动次数对比" | getChannelData | date=yesterday,客户端按 launch 降序取 5 |
| "Umeng 渠道昨天表现如何?" | getChannelData → 过滤 channel=="Umeng" | date=yesterday |
umeng.uapp.createApp / umeng.uapp.event.create 等写入类接口GET 方法appkey 到友盟官网 https://www.umeng.com/ 应用管理后台查询total_user(总用户数)指标:仅在"单日快照"场景下由 getChannelData / getVersionData 响应直接提供;无独立的 total_user 趋势接口,如需趋势请拼接多日快照launch 字段:VersionInfo 结构不含启动数;想看"某版本启动趋势"请走 getLaunchesByChannelOrVersion + versions 参数getVersionData 不支持分页(仅 appkey + date);getChannelData 支持 page/perPage(最大 100)| 接口 | Endpoint(相对 baseUrl) | 必填参数 | 可选参数 | 分页 |
|---|---|---|---|---|
| ------ | -------------------------- | ---------- | ---------- | ------ |
umeng.uapp.getChannelData | param2/1/com.umeng.uapp/umeng.uapp.getChannelData | appkey + date | page / perPage | ✅ |
umeng.uapp.getVersionData | param2/1/com.umeng.uapp/umeng.uapp.getVersionData | appkey + date | — | ❌ |
umeng.uapp.getLaunchesByChannelOrVersion | param2/1/com.umeng.uapp/umeng.uapp.getLaunchesByChannelOrVersion | appkey + startDate + endDate + periodType | channels / versions | ❌ |
umeng.uapp.getActiveUsersByChannelOrVersion | param2/1/com.umeng.uapp/umeng.uapp.getActiveUsersByChannelOrVersion | appkey + startDate + endDate + periodType | channels / versions(需 urlEncode) | ❌ |
umeng.uapp.getNewUsersByChannelOrVersion | param2/1/com.umeng.uapp/umeng.uapp.getNewUsersByChannelOrVersion | appkey + startDate + endDate + periodType | channels / versions(需 urlEncode) | ❌ |
> 完整 uapp namespace 其他接口(如 getDailyData / getYesterdayData / getRetentions / event.* 等)请参考 umeng-cli/reference/openapi/uapp.md。
共 2 个版本