Install
openclaw skills install uapp-outlierQuery UApp (友盟+) application outlier reports, yesterday anomalies, and intelligent inspection summaries. Use when users ask about app anomaly detection, outlier reports, abnormal metrics, application inspection, or mention UApp/友盟+ monitoring data. Supports querying specific app outlier reports by appkey and date, checking yesterday's anomalies across all apps, and retrieving intelligent inspection basic information.
openclaw skills install uapp-outlierQuery 友盟+ (UApp) application anomaly data including outlier reports, daily anomalies, and intelligent inspection summaries.
Obtain credentials in priority order:
apiKey (ak) and apiSecurity (sk)umeng-config.json on user's machineUMENG_API_KEY and UMENG_API_SECURITY from environmentSearch common locations for umeng-config.json:
~)Expected format:
{
"apiKey": "your_api_key",
"apiSecurity": "your_api_security",
"apps": {
"appkey1": "AppName1",
"appkey2": "AppName2"
}
}
The apps section maps app names to appkeys. When a user provides an app name instead of an appkey, the skill will look it up in this mapping.
If credentials not found, ask the user to provide them.
When the user provides an app name instead of an appkey:
apps mapping from umeng-config.jsonExample:
If the app cannot be resolved, ask the user: "无法找到应用 'xxx' 对应的 appkey,请提供正确的 appkey 或在 umeng-config.json 中添加应用映射。"
Query outlier/anomaly report for a specific app on a given date.
Endpoint: GET https://mobile.umeng.com/ht/api/v3/ai/getOutlierPoints
Parameters:
ak: API keysk: API security tokenappkey: Application keyds: Date in yyyyMMdd format (e.g., 20260401)Example:
import requests
url = "https://mobile.umeng.com/ht/api/v3/ai/getOutlierPoints?ak={apiSecret}&sk={apiSecurity}&appkey=59892f08310c9307b60023d0&ds=20260401"
payload = {}
headers = {
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Accept': '*/*',
'Host': 'mobile.umeng.com',
'Connection': 'keep-alive'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Response fields (in data object, keyed by appkey):
appKey: Application keyshareUrl: Report URL - open this to view detailed outlier reportid: Outlier point IDcategory: Outlier summary description (e.g., "活跃低于周三常态")type: Outlier type - green: green point, red: red pointds: Date when outlier occurred (YYYY-MM-DD format)status: 1 = anomaly, 2 = normalCheck which applications had anomalies yesterday.
Endpoint: GET https://mobile.umeng.com/ht/api/v3/ai/getYesterdayOutliers
Parameters:
ak: API keysk: API security tokenExample:
import requests
url = "https://mobile.umeng.com/ht/api/v3/ai/getYesterdayOutliers?ak={apiSecret}&sk={apiSecurity}"
payload = {}
headers = {
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Accept': '*/*',
'Host': 'mobile.umeng.com',
'Connection': 'keep-alive'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Response fields (in data array):
name: Application nameappkey: Application keyplatform: Platform (e.g., "iphone")todayActiveUser: Today's active userstodayNewUser: Today's new userstodayTotalUser: Today's total usersactiveUser: Active usersnewUser: New userstotalUser: Total userslaunch: Launch counttodayLaunch: Today's launch countappLevel: App levelproductLevel: Product level (e.g., "PLUS")star: Whether starredoutlierTip: Outlier reminder info
id: Outlier point unique IDtype: Outlier type - green or redds: Outlier datestatus: 1 = anomaly, 2 = normalRetrieve basic intelligent inspection information for the account.
Endpoint: GET https://mobile.umeng.com/ht/api/v3/claw/meta/aiEventSummary
Headers:
Authorization: Bearer {apiSecurity} (use sk value)Example:
import requests
url = "https://mobile.umeng.com/ht/api/v3/claw/meta/aiEventSummary"
payload = {}
headers = {
'Authorization': 'Bearer {apiSecurity}',
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Accept': '*/*',
'Host': 'mobile.umeng.com',
'Connection': 'keep-alive'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Response fields:
metas: Tracking anomaly reporting info for last 30 days
err_code: Error code (see Error Code Reference below)error_count: Error counteventSummary: Event summary
normal: Normal (calculing + partially calculated) event countstopped: Stopped calculation event countunReg: Unregistered time countnoEventQuotaAppNames: Applications without event quotaunRegEvents: Unregistered event identifiers| Error Code | Description |
|---|---|
| 100001 | Event ID is null |
| 100002 | Event ID is empty or all spaces |
| 100003 | Event ID conflicts with system reserved events |
| 100004 | Event ID exceeds 128 bytes |
| 100005 | Event ID contains invalid characters |
| 100006 | Event properties count exceeds limit |
| 100007 | Property key conflicts with system reserved properties |
| 100008 | iOS key type is invalid |
| 100009 | Property key exceeds 128 bytes |
| 100010 | Property value is empty @"" |
| 100011 | Property value is null |
| 100012 | Property value exceeds 256 bytes |
| 100013 | iOS property value type is invalid |
| 100014 | Property parameter type is invalid |
| 100015 | Property count is 0 |
| 100016 | Property key is empty @"" |
| 100020 | Event duration exceeds limit |
| 100022 | Label parameter value exceeds 256 bytes |
| 100023 | Event API property value is null |
| 100024 | Property key is null |
| 100025 | Property key contains invalid characters |
| 100026 | Android property value type is invalid |
| 200002 | Event ID/name is duplicated |
| 200001 | Event count exceeds limit |
| 200003 | Property key/name is duplicated |
appkey from user inputds (date) - if user says "yesterday", calculate yesterday's date in yyyyMMdd formatstatus = 1: Report the anomaly with category, type, and provide the shareUrlstatus = 2: Report that the app is normal for that dateshareUrl for detailed report viewingoutlierTip.status = 1 (anomalies)metas with error codes and countsshareUrl directly so users can open detailed reportsgreen (绿点) and red (红点) outlier typesThis skill reports usage statistics via umeng-cli trace command after each API call.
Requires umeng-cli to be installed. Install via:
npm install -g @umengfe/umeng-cli
Disable statistics via environment variable:
export UMENG_ENABLE_STATS=false
skill_name: Always "uapp-outlier"event_type: Which API was called (outlier_report, yesterday_outliers, inspection_summary)appkey: Application key (if applicable)No sensitive data (credentials, response data, user queries) is collected.