@tapdb/tapdb-data-analysis 0.1.22 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -34,14 +34,17 @@ TapDB 有国内(CN)和海外(SG)两套部署,需配置认证密钥。
|
|
|
34
34
|
|
|
35
35
|
### 必需变量
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
# 国内(CN)部署密钥
|
|
39
|
-
export TAPDB_MCP_KEY_CN="your-cn-mcp-key-here"
|
|
37
|
+
密钥**必须写入 shell 配置文件**(zsh 用户写 `~/.zshrc`,bash 用户写 `~/.bashrc`),以确保所有终端会话和 AI 工具都能读取到:
|
|
40
38
|
|
|
41
|
-
|
|
42
|
-
export
|
|
39
|
+
```bash
|
|
40
|
+
export TAPDB_MCP_KEY_CN="your-cn-mcp-key-here" # 国内(CN)部署密钥
|
|
41
|
+
export TAPDB_MCP_KEY_SG="your-sg-mcp-key-here" # 海外(SG)部署密钥
|
|
43
42
|
```
|
|
44
43
|
|
|
44
|
+
将上面两行写入对应的 shell 配置文件后执行 `source` 使其生效。
|
|
45
|
+
|
|
46
|
+
> **注意**:仅在当前终端 `export` 而不写入配置文件的话,新终端窗口或 AI Agent 启动的 shell 会话将无法读取到密钥。Skill 在每次会话首次使用时会自动检查配置文件中是否存在密钥,如果缺失会自动写入。
|
|
47
|
+
|
|
45
48
|
### 验证配置
|
|
46
49
|
|
|
47
50
|
```bash
|
|
@@ -75,9 +78,7 @@ AI 会自动调用 `tapdb_query.py` 脚本查询数据并生成分析报告。
|
|
|
75
78
|
| 来源 | `source` | 新增设备/新增用户/转化率 |
|
|
76
79
|
| 玩家行为 | `player_behavior` | 游戏时长/启动次数 |
|
|
77
80
|
| 版本分布 | `version_distri` | 各版本活跃设备分布 |
|
|
78
|
-
| 运营概览 | `overview` | 收入/活跃/新增汇总 |
|
|
79
81
|
| 用户价值 | `user_value` | LTV (N日贡献) |
|
|
80
82
|
| 鲸鱼用户 | `whale_user` | 高付费用户排行 |
|
|
81
83
|
| 生命周期 | `life_cycle` | 付费转化率/金额/累计 |
|
|
82
84
|
| 广告变现 | `ad_monet` | 广告收入数据 |
|
|
83
|
-
|
package/package.json
CHANGED
|
@@ -6,12 +6,12 @@ description: >
|
|
|
6
6
|
玩家行为、广告变现等指标。支持国内和海外两套数据源。
|
|
7
7
|
当用户需要查询游戏数据、分析运营指标、对比项目表现、检测数据异常、生成数据报告时使用此技能。
|
|
8
8
|
触发关键词:TapDB、DAU、MAU、留存、付费、收入、ARPU、LTV、活跃、新增、来源、玩家行为、
|
|
9
|
-
|
|
9
|
+
版本分布、鲸鱼用户、广告变现、游戏数据分析。
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# TapDB 数据分析
|
|
13
13
|
|
|
14
|
-
> Skill 版本:v0.1.
|
|
14
|
+
> Skill 版本:v0.1.25
|
|
15
15
|
|
|
16
16
|
通过 Python 脚本调用 TapDB 运营数据查询接口,获取游戏的活跃、留存、付费、来源等指标数据并分析。
|
|
17
17
|
|
|
@@ -49,7 +49,11 @@ rm -rf package tapdb-tapdb-data-analysis-*.tgz
|
|
|
49
49
|
[ -z "$TAPDB_MCP_KEY_SG" ] && echo "❌ SG 未设置" || echo "✅ SG 已配置"
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
缺少则**停止操作**,引导配置:秘钥在 **TapDB 页面右上角 → 账号设置 → 秘钥管理**。国内 CN/海外 SG
|
|
52
|
+
缺少则**停止操作**,引导配置:秘钥在 **TapDB 页面右上角 → 账号设置 → 秘钥管理**。国内 CN/海外 SG 各需独立秘钥。用户提供后按步骤 3 写入 shell 配置文件并验证。
|
|
53
|
+
|
|
54
|
+
### 3. 持久化检查
|
|
55
|
+
|
|
56
|
+
环境变量必须写入 shell 配置文件(根据 `$SHELL` 判断,zsh → `~/.zshrc`,bash → `~/.bashrc`),确保重启终端 / 新会话后仍可用。检查配置文件中是否已包含 `TAPDB_MCP_KEY_CN` / `TAPDB_MCP_KEY_SG` 的 export 语句,缺失的自动追加并 `source` 生效,然后运行 `list_projects` 验证。
|
|
53
57
|
|
|
54
58
|
## 工作流程
|
|
55
59
|
|
|
@@ -141,7 +145,6 @@ python3 <SKILL_DIR>/scripts/tapdb_query.py life_cycle -p 2588 -s 2026-02-01 -e 2
|
|
|
141
145
|
python3 <SKILL_DIR>/scripts/tapdb_query.py whale_user -p 2588 -s 2026-01-01 -e 2026-02-25
|
|
142
146
|
python3 <SKILL_DIR>/scripts/tapdb_query.py version_distri -p 2588 -s 2026-02-01 -e 2026-02-25
|
|
143
147
|
python3 <SKILL_DIR>/scripts/tapdb_query.py player_behavior -p 2588 -s 2026-02-01 -e 2026-02-25 -g time
|
|
144
|
-
python3 <SKILL_DIR>/scripts/tapdb_query.py overview -p 2588 --app-id abc123 -s 2026-02-01 -e 2026-02-25
|
|
145
148
|
python3 <SKILL_DIR>/scripts/tapdb_query.py raw /op/active '{"project_id":2588,"start_time":"2026-02-01 00:00:00.000","end_time":"2026-02-25 23:59:59.999","subject":"device","quota":"dau","group":{"col_name":"time","col_alias":"date","is_time":true,"trunc_unit":"day"},"is_de_water":false,"filters":[]}'
|
|
146
149
|
```
|
|
147
150
|
|
|
@@ -155,7 +158,6 @@ python3 <SKILL_DIR>/scripts/tapdb_query.py raw /op/active '{"project_id":2588,"s
|
|
|
155
158
|
| `source` | 来源/新增 | 通用参数 | `activation_time` |
|
|
156
159
|
| `player_behavior` | 玩家行为 | `--quota behavior\|duration` | `time` |
|
|
157
160
|
| `version_distri` | 版本分布 | 通用参数 | 按版本分组 |
|
|
158
|
-
| `overview` | 运营概览 | `--app-id`, `--interval`, `--quota income\|active\|activation` | 独立接口 |
|
|
159
161
|
| `user_value` | LTV | 通用参数 | `activation_time` |
|
|
160
162
|
| `whale_user` | 鲸鱼用户 | 通用参数 | 无分组 |
|
|
161
163
|
| `life_cycle` | 生命周期 | `--quota payment_amount\|payment_cvs_rate\|payment_cvs\|acc_payment` | `activation_time` |
|
|
@@ -46,6 +46,13 @@ def get_config(region):
|
|
|
46
46
|
|
|
47
47
|
def http_request(method, url, headers, body=None):
|
|
48
48
|
try:
|
|
49
|
+
headers = dict(headers or {})
|
|
50
|
+
if not any(k.lower() == "user-agent" for k in headers):
|
|
51
|
+
headers["User-Agent"] = (
|
|
52
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
|
|
53
|
+
"AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
54
|
+
"Chrome/122.0.0.0 Safari/537.36"
|
|
55
|
+
)
|
|
49
56
|
data = json.dumps(body).encode("utf-8") if body else None
|
|
50
57
|
req = urllib.request.Request(url, data=data, headers=headers, method=method)
|
|
51
58
|
if data:
|
|
@@ -433,11 +440,6 @@ ENDPOINT_CAPS = {
|
|
|
433
440
|
"description": "版本分布: 各版本活跃/新增设备数(专用接口,忽略 group 参数,固定按版本分组)",
|
|
434
441
|
"returned_metrics": ["version", "allDevices", "newDevices", "upgradeDevices", "activeDevices", "NUDevices"],
|
|
435
442
|
},
|
|
436
|
-
"overview": {
|
|
437
|
-
"description": "运营概览: 收入/活跃/新增汇总(需 app_id,独立接口不走通用分组)",
|
|
438
|
-
"quotas": ["income", "active", "activation"],
|
|
439
|
-
"extra_params": ["app_id (必需)", "interval (minute|hour|day|week|month)"],
|
|
440
|
-
},
|
|
441
443
|
"user_value": {
|
|
442
444
|
"description": "用户价值(LTV): N日贡献",
|
|
443
445
|
"returned_metrics": ["activation", "N_LTV (1-60,90,120,150,180,210,240,270,300,330,360)"],
|
|
@@ -657,24 +659,6 @@ def cmd_player_behavior(args):
|
|
|
657
659
|
def cmd_version_distri(args):
|
|
658
660
|
do_query(args, "version_distri")
|
|
659
661
|
|
|
660
|
-
|
|
661
|
-
def cmd_overview(args):
|
|
662
|
-
key, base_url = get_config(args.region)
|
|
663
|
-
body = {
|
|
664
|
-
"project_id": int(args.project_id),
|
|
665
|
-
"app_id": args.app_id,
|
|
666
|
-
"start_date": args.start,
|
|
667
|
-
"end_date": args.end,
|
|
668
|
-
"interval": args.interval,
|
|
669
|
-
"quota": args.quota,
|
|
670
|
-
"use_cache": not getattr(args, "no_cache", False),
|
|
671
|
-
}
|
|
672
|
-
result = http_request("POST", f"{base_url}/mcp/op/op_overview", {"MCP-KEY": key}, body)
|
|
673
|
-
if not getattr(args, "no_truncate", False):
|
|
674
|
-
result = truncate_response(result, "overview")
|
|
675
|
-
output(result)
|
|
676
|
-
|
|
677
|
-
|
|
678
662
|
def cmd_user_value(args):
|
|
679
663
|
do_query(args, "user_value")
|
|
680
664
|
|
|
@@ -773,18 +757,6 @@ def main():
|
|
|
773
757
|
p = sub.add_parser("version_distri", help="版本分布: 各版本活跃设备数")
|
|
774
758
|
add_common_args(p)
|
|
775
759
|
|
|
776
|
-
# overview
|
|
777
|
-
p = sub.add_parser("overview", help="运营概览: 收入/活跃/新增汇总")
|
|
778
|
-
p.add_argument("-p", "--project-id", required=True, help="项目ID")
|
|
779
|
-
p.add_argument("--app-id", required=True, help="应用ID (从 list_projects 获取)")
|
|
780
|
-
p.add_argument("-s", "--start", required=True, help="开始日期")
|
|
781
|
-
p.add_argument("-e", "--end", required=True, help="结束日期")
|
|
782
|
-
p.add_argument("--interval", default="day", choices=["minute", "hour", "day", "week", "month"],
|
|
783
|
-
help="时间粒度 (默认 day)")
|
|
784
|
-
p.add_argument("--quota", default="income", choices=["income", "active", "activation"],
|
|
785
|
-
help="概览类型 (默认 income)")
|
|
786
|
-
p.add_argument("--no-cache", action="store_true")
|
|
787
|
-
|
|
788
760
|
# user_value (LTV)
|
|
789
761
|
p = sub.add_parser("user_value", help="用户价值(LTV): N日贡献")
|
|
790
762
|
add_common_args(p)
|
|
@@ -824,7 +796,6 @@ def main():
|
|
|
824
796
|
"source": cmd_source,
|
|
825
797
|
"player_behavior": cmd_player_behavior,
|
|
826
798
|
"version_distri": cmd_version_distri,
|
|
827
|
-
"overview": cmd_overview,
|
|
828
799
|
"user_value": cmd_user_value,
|
|
829
800
|
"whale_user": cmd_whale_user,
|
|
830
801
|
"life_cycle": cmd_life_cycle,
|