siluzan-tso-cli 1.1.60 → 1.1.61-beta.1

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
@@ -43,7 +43,7 @@ HTML 报告模板外部资源:**ECharts** 统一使用 `https://staticpn.siluz
43
43
  在**用户的目标项目根目录**执行(根据用户使用的助手选择 `--ai`):
44
44
 
45
45
  ```bash
46
- npm install -g siluzan-tso-cli
46
+ npm install -g siluzan-tso-cli@beta
47
47
  siluzan-tso init --ai cursor # 写入 Cursor(默认)
48
48
  siluzan-tso init --ai cursor,claude # 同时写入多个平台
49
49
  siluzan-tso init --ai all # 写入所有支持的平台
@@ -51,6 +51,7 @@ siluzan-tso init -d /path/to/skills # 写入自定义目录
51
51
  siluzan-tso init --force # 强制覆盖已存在文件
52
52
  ```
53
53
 
54
+ > **注意**:当前为测试版(1.1.61-beta.1),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
54
55
 
55
56
  | 助手 | 建议 `--ai` |
56
57
  | ----------------------- | ------------------------------------ |
package/dist/index.js CHANGED
@@ -4051,7 +4051,7 @@ var DEFAULT_API_BASE;
4051
4051
  var init_defaults = __esm({
4052
4052
  "src/config/defaults.ts"() {
4053
4053
  "use strict";
4054
- DEFAULT_API_BASE = "https://tso-api.siluzan.com";
4054
+ DEFAULT_API_BASE = "https://tso-api-ci.siluzan.com";
4055
4055
  }
4056
4056
  });
4057
4057
 
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "slug": "siluzan-tso",
3
- "version": "1.1.60",
4
- "publishedAt": 1793183498287
3
+ "version": "1.1.61-beta.1",
4
+ "publishedAt": 1793256524212
5
5
  }
@@ -170,7 +170,7 @@ siluzan-tso account-history --start 2026-03-01 --end 2026-03-31 --json-out ./sna
170
170
  | 状态 | 含义 | 下一步操作 |
171
171
  | ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
172
172
  | `Pending` | 审核中 | 等待,可反复运行此命令轮询;审核周期因媒体而异 |
173
- | `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google`;Yandex 当前没有对应充值界面) |
173
+ | `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google`;Yandex 当前没有对应充值界面) |
174
174
  | `Rejected` | 被拒 | 查看 `--json-out` 落盘中的 `reason` 字段了解拒绝原因;修改资料后重新提交;若原因不明,引导用户联系丝路赞客服 |
175
175
 
176
176
  ---
@@ -490,7 +490,7 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
490
490
 
491
491
  | 功能 | 媒体 | 网页路径 |
492
492
  | --------------------------------------- | ------ | ------------------------------------------------- |
493
- | **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts` |
493
+ | **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www-ci.siluzan.com/v3/foreign_trade/tso/manageAccounts` |
494
494
 
495
495
  **Agent 建议话术**:
496
496
 
@@ -499,5 +499,5 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
499
499
  siluzan-tso config show # 查看 webUrl 字段
500
500
 
501
501
  # 账户激活(Google)→ 引导至账户管理页
502
- # https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts
502
+ # https://www-ci.siluzan.com/v3/foreign_trade/tso/manageAccounts
503
503
  ```
@@ -126,7 +126,7 @@ siluzan-tso config show
126
126
 
127
127
  ### 充值页链接(按媒体 × 类型)
128
128
 
129
- 链接模式:`https://www.siluzan.com/v3/foreign_trade/tso/recharge/<page>?mediaType=<mediaType>`;丝路赞钱包:`https://www.siluzan.com/v3/foreign_trade/tso/recharge/siluzanWallet`(无媒体参数)。
129
+ 链接模式:`https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/<page>?mediaType=<mediaType>`;丝路赞钱包:`https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/siluzanWallet`(无媒体参数)。
130
130
 
131
131
  | 充值类型 | `<page>` | 支持媒体(`mediaType` 参数) |
132
132
  | ------------------------- | --------------------- | ------------------------------------------- |
@@ -1,6 +1,6 @@
1
1
  # 各媒体开户
2
2
 
3
- > 网页链接:`https://www.siluzan.com/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`
3
+ > 网页链接:`https://www-ci.siluzan.com/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`
4
4
  > 多命令串联见 `references/core/workflows.md` § 流程一。
5
5
 
6
6
  ## Contents
@@ -65,7 +65,7 @@ siluzan-tso open-account google-wizard
65
65
 
66
66
  ```bash
67
67
  siluzan-tso account-history -m Google
68
- # 审核通过后:config show → https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
68
+ # 审核通过后:config show → https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
69
69
  ```
70
70
 
71
71
  ---
@@ -214,6 +214,8 @@ const data = d.record ?? d.items; // record 非空=汇总维度;否则=列表
214
214
 
215
215
  `items[]` 每行额外包含:`conversionsValue`、`conversionsValuePerCost`(`spend ≤ 0` 时为 0)、`campaignTargetCpaYuan`、`maximizeConversionsTargetCpaYuan`、`manualCpcEnhancedCpcEnabled`、`percentCpcEnhancedCpcEnabled`。所有金额字段(`*Yuan` 后缀)已统一为元,可直接展示,无需换算。
216
216
 
217
+ 账户级转化价值 / 单转化价值 / ROAS 只对 `items[]` 汇总:`Σ conversionsValue`、`Σ conversionsValue / Σ conversions`、`Σ conversionsValue / Σ spend`。禁止对行上 `conversionsValuePerCost` 再平均。`overview` 的 `currentPeriod` / `previousPeriod` **没有** `conversionsValue`。上期这三项另拉等长上一周期的 `campaigns` 再同样汇总(窗口见 `report-templates/google-period-report-excel.md`),禁止留空或用本期估算。
218
+
217
219
  | 字段 | 含义 |
218
220
  | ------------------------------------- | ------------------------------------------------ |
219
221
  | `campaignStatus` / `campaignStatusV2` | 网关原始枚举(`Enabled` / `Paused` / `Removed`) |
@@ -1,6 +1,6 @@
1
1
  # rag:知识库检索(TSO 广告投放辅助)
2
2
 
3
- 知识库管理页面在 https://www.siluzan.com/knowledge-base/
3
+ 知识库管理页面在 https://www-ci.siluzan.com/knowledge-base/
4
4
 
5
5
  为 **广告投放、账户分析、拓词、诊断报告** 等 TSO 业务提供**企业已入库**的产品、行业、客户背景事实依据。
6
6
 
@@ -190,9 +190,9 @@ siluzan-tso report push receive-emails -m Google [--json-out ./snap]
190
190
 
191
191
  | 媒体 | 报告类型 | URL 模板 |
192
192
  | ------ | ---------------- | ----------------------------------------------------------- |
193
- | Google | 日报(Daily) | `https://www.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
194
- | Google | 小时报(Hourly) | `https://www.siluzan.com/media-report/hour/{entityId}?culture=zh-CN` |
195
- | TikTok | 日报 | `https://www.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
193
+ | Google | 日报(Daily) | `https://www-ci.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
194
+ | Google | 小时报(Hourly) | `https://www-ci.siluzan.com/media-report/hour/{entityId}?culture=zh-CN` |
195
+ | TikTok | 日报 | `https://www-ci.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
196
196
 
197
197
  `entityId` 来自 `siluzan-tso report list --json-out ./snap` 中每条记录的 `entityId` 字段。
198
198
 
@@ -205,8 +205,8 @@ siluzan-tso report list -m Google --json-out ./snap
205
205
 
206
206
  # 第二步:查看 webUrl
207
207
  siluzan-tso config show
208
- # webUrl: https://www.siluzan.com
208
+ # webUrl: https://www-ci.siluzan.com
209
209
 
210
210
  # 第三步:拼接链接(Google 日报)
211
- # https://www.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
211
+ # https://www-ci.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
212
212
  ```
@@ -81,7 +81,7 @@
81
81
  - **步骤**:
82
82
  1. **账户核验**:`list-accounts -m Google -k <mediaCustomerId> --json-out <dir>`;无记录则停止并告知用户。
83
83
  2. 确认时间范围;区间 > 3 个月时分段(季度/月)。
84
- 3. **拉数**:用户已指定 Sheet/维度 → 只拉对应 `--sections`(见 `google-period-report-excel.md` 映射表);未指定 → 按 `google-period-report.md` 默认 9 个拉数维(含 `audience`、`negative-keywords`),并可并行追问可选追加。
84
+ 3. **拉数**:用户已指定 Sheet/维度 → 只拉对应 `--sections`(见 `google-period-report-excel.md` 映射表);未指定 → 按 `google-period-report.md` 默认 9 个拉数维(含 `audience`、`negative-keywords`),并可并行追问可选追加。终稿要「转化价值 / 单转化价值 / ROAS」的上期时,再按 excel 规格拉等长上期 `--sections campaigns` 后汇总,禁止把这三格留成「—」。
85
85
  4. **门禁**:对每个 section Read `<section>-<accountId>_*.outline.txt` 后再写脚本。
86
86
  5. 脚本读盘写 `google-period-report.json`(`meta` + `narrative`,`meta.lang` 跟本轮语言);用户要 **Excel** → Agent 脚本写 xlsx(**禁止**宿主第三方 xlsx Skill;**无** CLI excel 子命令;表头跟 `meta.lang`)。
87
87
  6. 默认 HTML:`google-analysis render --data ./google-period-report.json --snapshot-dir ./snap-google --out ./google-period-report.html --lang <zh|en>`。须含账户概览、投放趋势、Top 关键词/系列/地区/受众分布、当前否词名单、优化建议。
@@ -10,7 +10,7 @@
10
10
  ## 安装 CLI
11
11
 
12
12
  ```bash
13
- npm install -g siluzan-tso-cli
13
+ npm install -g siluzan-tso-cli@beta
14
14
  ```
15
15
 
16
16
  ---
@@ -64,7 +64,7 @@ siluzan-tso config set --api-key <Key> # 或 config 直接写入
64
64
  siluzan-tso config set --token <Token> # 备用:设置 JWT Token
65
65
  ```
66
66
 
67
- API Key 获取入口:`https://www.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
67
+ API Key 获取入口:`https://www-ci.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
68
68
 
69
69
  ```bash
70
70
  # 第 1 步:让用户报出手机号后,立刻发码(命令立即返回,不会等待输入)
@@ -127,9 +127,9 @@ siluzan-tso config show
127
127
 
128
128
  ```
129
129
  构建环境 : production
130
- apiBaseUrl : https://tso-api.siluzan.com
131
- googleApiUrl : https://googleapi.mysiluzan.com
132
- webUrl : https://www.siluzan.com
130
+ apiBaseUrl : https://tso-api-ci.siluzan.com
131
+ googleApiUrl : https://googleapi-ci.mysiluzan.com
132
+ webUrl : https://www-ci.siluzan.com
133
133
  apiKey : abcd****1234
134
134
  ```
135
135
 
@@ -6,7 +6,7 @@
6
6
  siluzan-tso config show # 取 webUrl
7
7
  ```
8
8
 
9
- 首页地址:`https://www.siluzan.com/v3/foreign_trade/tso/home`
9
+ 首页地址:`https://www-ci.siluzan.com/v3/foreign_trade/tso/home`
10
10
 
11
11
  ---
12
12
 
@@ -25,7 +25,7 @@ siluzan-tso config show # 取 webUrl
25
25
 
26
26
  ## 推荐话术
27
27
 
28
- 1. **「和首页一样的总览」** → 打开 `https://www.siluzan.com/v3/foreign_trade/tso/home`。
28
+ 1. **「和首页一样的总览」** → 打开 `https://www-ci.siluzan.com/v3/foreign_trade/tso/home`。
29
29
  2. **「某个 Google 账户昨天花了多少」** → `list-accounts -m Google` + `stats -m Google -a <id>`。
30
30
  3. **「有待充值账户」** → 说明聚合数据在首页;CLI 可 `list-accounts` + `balance` 逐户排查,或引导充值页。
31
31
 
@@ -65,7 +65,7 @@ siluzan-tso google-analysis -a <id> --start <S> --end <E> --json-out ./snap-p4 \
65
65
 
66
66
  | 维度 | ❌ 禁止猜 | ✅ outline 真实字段 |
67
67
  | ----------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
68
- | `overview` | `currentPeriod.activeDays`、`previousPeriod.activeDays`、`currentPeriod.averageDailyCost` | `record.activeDays`、`record.averageDailyCost`(只在 **record 根**;period 块没有。上期这两字段接口不返回;要环比另拉上期 `daily-metrics` 数 `spend>0` 天数) |
68
+ | `overview` | `currentPeriod.activeDays`、`previousPeriod.activeDays`、`currentPeriod.averageDailyCost`、`*.conversionsValue` | `record.activeDays`、`record.averageDailyCost`(只在 **record 根**。上期活跃天数另拉上期 `daily-metrics` 数 `spend>0` 天数)。period 块没有转化价值,见「转化价值环比」 |
69
69
  | `keywords` | `keywordText`、`status`、`matchType`(单独作展示列) | `keyword`、`userStatus`、`keywordMatchTypeZh`(或 `keywordMatchType`) |
70
70
  | `search-terms` | `query` | `searchTermText`;匹配类型用 `matchTypeZh`;状态用 `queryTargetingStatusZh` |
71
71
  | `geographic` | `geoName`、`countryCriterionIdName` | `countryOrRegion`、`countryNameZh`、`countryCode` |
@@ -78,6 +78,50 @@ siluzan-tso google-analysis -a <id> --start <S> --end <E> --json-out ./snap-p4 \
78
78
 
79
79
  ---
80
80
 
81
+ ## 转化价值环比(核心指标必做)
82
+
83
+ `overview.currentPeriod` / `previousPeriod` **没有** `conversionsValue`。账户级「转化价值 / 单转化价值 / ROAS」只从 **`campaigns` 的 `items[]`** 汇总。消耗、点击、转化次数、CTR、CPC、CPA 的环比仍读 overview 的 `previousPeriod`。
84
+
85
+ 终稿核心指标(或等价的本期 vs 上期表)出现这三行时,**必须**再拉等长上期的 `campaigns`,两期用同一公式。上期这三格禁止写成「—」,也禁止用本期去估。
86
+
87
+ **上期窗口**(与 Web `calcPrePeriodTimeRange` 相同,含首尾):
88
+
89
+ - 本期天数 `N = end − start + 1`(日历日)
90
+ - 上期结束 = 本期开始的前一天;上期开始 = 上期结束再往前 `N − 1` 天
91
+ - 例:本期 `2026-10-16` ~ `2026-10-28`(13 天)→ 上期 `2026-10-03` ~ `2026-10-15`
92
+
93
+ ```bash
94
+ mkdir -p ./snap-p4-prev
95
+ siluzan-tso google-analysis -a <id> --start <prevStart> --end <prevEnd> \
96
+ --sections campaigns --json-out ./snap-p4-prev
97
+ ```
98
+
99
+ 落盘后先 Read 上期 `campaigns-*.outline.txt`,再在脚本里读 `items[]`:
100
+
101
+ ```javascript
102
+ const sum = (rows, key) => rows.reduce((a, r) => a + (Number(r[key]) || 0), 0);
103
+ function valueKpis(items) {
104
+ const value = sum(items, "conversionsValue");
105
+ const conversions = sum(items, "conversions");
106
+ const spend = sum(items, "spend");
107
+ return {
108
+ conversionsValue: value,
109
+ // 单转化价值;转化次数为 0 时单元格写「—」
110
+ valuePerConversion: conversions > 0 ? value / conversions : null,
111
+ // ROAS;花费为 0 时单元格写「—」
112
+ roas: spend > 0 ? value / spend : null,
113
+ };
114
+ }
115
+ ```
116
+
117
+ 禁止对行上的 `conversionsValuePerCost` 再平均(那是行级「转化价值/费用」,不是账户 ROAS)。
118
+
119
+ 关键词、搜索词、设备、每日趋势的 outline 若没有 `conversionsValue`,该列写「该维度未返回」,禁止把系列转化价值摊进去。上期 `campaigns` 拉数失败时,这三格写明原因,不要留空。
120
+
121
+ 英文终稿表头:转化价值 → Conversion value,单转化价值 → Value / conversion,ROAS 保持 ROAS。
122
+
123
+ ---
124
+
81
125
  ## 禁止的数据探查方式
82
126
 
83
127
  写 Excel 脚本**之前**,不得用以下方式「预览」业务 JSON(与 `agent-conventions.md`、`tips.md` 一致):
@@ -115,6 +159,7 @@ siluzan-tso google-analysis -a <id> --start <S> --end <E> --json-out ./snap-p4 \
115
159
  - [ ] 脚本 stdout 打印的 `itemCount` 与 Excel 数据行数一致(±合计行)
116
160
  - [ ] 全部 ID 列为文本(非数字类型 / 无科学计数法)
117
161
  - [ ] 未使用第三方 xlsx Skill 替代本 Skill 拉数与字段口径
162
+ - [ ] 核心指标若有转化价值 / 单转化价值 / ROAS:上期来自等长区间的 `campaigns` 汇总,不是 overview,也不是「—」
118
163
 
119
164
  ---
120
165
 
@@ -49,7 +49,7 @@ siluzan-tso google-analysis render \
49
49
  **Excel 分支**(用户明确要 xlsx 时):
50
50
 
51
51
  1. 步骤 1~2 与 HTML 流程相同(拉数 → 分析)。
52
- 2. 改为 Agent 执行 node/python 脚本按 `google-period-report-excel.md` 写出 `.xlsx`(先读齐 `*.outline.txt`)。
52
+ 2. 改为 Agent 执行 node/python 脚本按 `google-period-report-excel.md` 写出 `.xlsx`(先读齐 `*.outline.txt`)。核心指标的上期转化价值 / 单转化价值 / ROAS 按该文「转化价值环比」再拉等长上期 `campaigns` 后汇总。
53
53
  3. **不要**调用 `google-analysis render`(除非用户同时要 HTML + Excel)。
54
54
  4. **禁止**假设存在 `siluzan-tso … excel` 子命令。
55
55
 
@@ -65,7 +65,7 @@ siluzan-tso google-analysis -a <id> --start <S> --end <E> --json-out ./snap-p4 \
65
65
 
66
66
  | 维度 | ❌ 禁止猜 | ✅ outline 真实字段 |
67
67
  | ----------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
68
- | `overview` | `currentPeriod.activeDays`、`previousPeriod.activeDays`、`currentPeriod.averageDailyCost` | `record.activeDays`、`record.averageDailyCost`(只在 **record 根**;period 块没有。上期这两字段接口不返回;要环比另拉上期 `daily-metrics` 数 `spend>0` 天数) |
68
+ | `overview` | `currentPeriod.activeDays`、`previousPeriod.activeDays`、`currentPeriod.averageDailyCost`、`*.conversionsValue` | `record.activeDays`、`record.averageDailyCost`(只在 **record 根**。上期活跃天数另拉上期 `daily-metrics` 数 `spend>0` 天数)。period 块没有转化价值,见「转化价值环比」 |
69
69
  | `keywords` | `keywordText`、`status`、`matchType`(单独作展示列) | `keyword`、`userStatus`、`keywordMatchTypeZh`(或 `keywordMatchType`) |
70
70
  | `search-terms` | `query` | `searchTermText`;匹配类型用 `matchTypeZh`;状态用 `queryTargetingStatusZh` |
71
71
  | `geographic` | `geoName`、`countryCriterionIdName` | `countryOrRegion`、`countryNameZh`、`countryCode` |
@@ -78,6 +78,50 @@ siluzan-tso google-analysis -a <id> --start <S> --end <E> --json-out ./snap-p4 \
78
78
 
79
79
  ---
80
80
 
81
+ ## 转化价值环比(核心指标必做)
82
+
83
+ `overview.currentPeriod` / `previousPeriod` **没有** `conversionsValue`。账户级「转化价值 / 单转化价值 / ROAS」只从 **`campaigns` 的 `items[]`** 汇总。消耗、点击、转化次数、CTR、CPC、CPA 的环比仍读 overview 的 `previousPeriod`。
84
+
85
+ 终稿核心指标(或等价的本期 vs 上期表)出现这三行时,**必须**再拉等长上期的 `campaigns`,两期用同一公式。上期这三格禁止写成「—」,也禁止用本期去估。
86
+
87
+ **上期窗口**(与 Web `calcPrePeriodTimeRange` 相同,含首尾):
88
+
89
+ - 本期天数 `N = end − start + 1`(日历日)
90
+ - 上期结束 = 本期开始的前一天;上期开始 = 上期结束再往前 `N − 1` 天
91
+ - 例:本期 `2026-10-16` ~ `2026-10-28`(13 天)→ 上期 `2026-10-03` ~ `2026-10-15`
92
+
93
+ ```bash
94
+ mkdir -p ./snap-p4-prev
95
+ siluzan-tso google-analysis -a <id> --start <prevStart> --end <prevEnd> \
96
+ --sections campaigns --json-out ./snap-p4-prev
97
+ ```
98
+
99
+ 落盘后先 Read 上期 `campaigns-*.outline.txt`,再在脚本里读 `items[]`:
100
+
101
+ ```javascript
102
+ const sum = (rows, key) => rows.reduce((a, r) => a + (Number(r[key]) || 0), 0);
103
+ function valueKpis(items) {
104
+ const value = sum(items, "conversionsValue");
105
+ const conversions = sum(items, "conversions");
106
+ const spend = sum(items, "spend");
107
+ return {
108
+ conversionsValue: value,
109
+ // 单转化价值;转化次数为 0 时单元格写「—」
110
+ valuePerConversion: conversions > 0 ? value / conversions : null,
111
+ // ROAS;花费为 0 时单元格写「—」
112
+ roas: spend > 0 ? value / spend : null,
113
+ };
114
+ }
115
+ ```
116
+
117
+ 禁止对行上的 `conversionsValuePerCost` 再平均(那是行级「转化价值/费用」,不是账户 ROAS)。
118
+
119
+ 关键词、搜索词、设备、每日趋势的 outline 若没有 `conversionsValue`,该列写「该维度未返回」,禁止把系列转化价值摊进去。上期 `campaigns` 拉数失败时,这三格写明原因,不要留空。
120
+
121
+ 英文终稿表头:转化价值 → Conversion value,单转化价值 → Value / conversion,ROAS 保持 ROAS。
122
+
123
+ ---
124
+
81
125
  ## 禁止的数据探查方式
82
126
 
83
127
  写 Excel 脚本**之前**,不得用以下方式「预览」业务 JSON(与 `agent-conventions.md`、`tips.md` 一致):
@@ -115,6 +159,7 @@ siluzan-tso google-analysis -a <id> --start <S> --end <E> --json-out ./snap-p4 \
115
159
  - [ ] 脚本 stdout 打印的 `itemCount` 与 Excel 数据行数一致(±合计行)
116
160
  - [ ] 全部 ID 列为文本(非数字类型 / 无科学计数法)
117
161
  - [ ] 未使用第三方 xlsx Skill 替代本 Skill 拉数与字段口径
162
+ - [ ] 核心指标若有转化价值 / 单转化价值 / ROAS:上期来自等长区间的 `campaigns` 汇总,不是 overview,也不是「—」
118
163
 
119
164
  ---
120
165
 
@@ -49,7 +49,7 @@ siluzan-tso google-analysis render \
49
49
  **Excel 分支**(用户明确要 xlsx 时):
50
50
 
51
51
  1. 步骤 1~2 与 HTML 流程相同(拉数 → 分析)。
52
- 2. 改为 Agent 执行 node/python 脚本按 `google-period-report-excel.md` 写出 `.xlsx`(先读齐 `*.outline.txt`)。
52
+ 2. 改为 Agent 执行 node/python 脚本按 `google-period-report-excel.md` 写出 `.xlsx`(先读齐 `*.outline.txt`)。核心指标的上期转化价值 / 单转化价值 / ROAS 按该文「转化价值环比」再拉等长上期 `campaigns` 后汇总。
53
53
  3. **不要**调用 `google-analysis render`(除非用户同时要 HTML + Excel)。
54
54
  4. **禁止**假设存在 `siluzan-tso … excel` 子命令。
55
55
 
@@ -9,11 +9,11 @@ $ErrorActionPreference = 'Stop'
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  $PKG_NAME = 'siluzan-tso-cli'
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- $PKG_VERSION = '1.1.60'
12
+ $PKG_VERSION = '1.1.61-beta.1'
13
13
  $CLI_BIN = 'siluzan-tso'
14
14
  $SKILL_LABEL = 'Siluzan TSO'
15
- $INSTALL_CMD = 'npm install -g siluzan-tso-cli'
16
- $WEB_BASE = 'https://www.siluzan.com'
15
+ $INSTALL_CMD = 'npm install -g siluzan-tso-cli@beta'
16
+ $WEB_BASE = 'https://www-ci.siluzan.com'
17
17
 
18
18
  # -- Constants ----------------------------------------------------------------
19
19
  $NODE_MAJOR_MIN = 18
@@ -9,11 +9,11 @@ set -euo pipefail
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  readonly PKG_NAME="siluzan-tso-cli"
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- readonly PKG_VERSION="1.1.60"
12
+ readonly PKG_VERSION="1.1.61-beta.1"
13
13
  readonly CLI_BIN="siluzan-tso"
14
14
  readonly SKILL_LABEL="Siluzan TSO"
15
- readonly INSTALL_CMD="npm install -g siluzan-tso-cli"
16
- readonly WEB_BASE="https://www.siluzan.com"
15
+ readonly INSTALL_CMD="npm install -g siluzan-tso-cli@beta"
16
+ readonly WEB_BASE="https://www-ci.siluzan.com"
17
17
 
18
18
  # -- Constants ----------------------------------------------------------------
19
19
  readonly NODE_MAJOR_MIN=18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-tso-cli",
3
- "version": "1.1.60",
3
+ "version": "1.1.61-beta.1",
4
4
  "description": "Siluzan 广告账户管理 CLI — 查询账户、余额、消耗数据,管理绑定关系与充值。",
5
5
  "keywords": [
6
6
  "ad-account",