siluzan-tso-cli 1.1.22-beta.7 → 1.1.22-beta.8

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
@@ -51,7 +51,7 @@ siluzan-tso init -d /path/to/skills # 写入自定义目录
51
51
  siluzan-tso init --force # 强制覆盖已存在文件
52
52
  ```
53
53
 
54
- > **注意**:当前为测试版(1.1.22-beta.7),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
54
+ > **注意**:当前为测试版(1.1.22-beta.8),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
55
55
 
56
56
  | 助手 | 建议 `--ai` |
57
57
  | ----------------------- | ------------------------------------ |
package/dist/index.js CHANGED
@@ -100525,6 +100525,12 @@ function annotateZhFields(payload, section) {
100525
100525
  case "search-terms": {
100526
100526
  const rows = payload.data;
100527
100527
  annotateArrayRows(rows, "matchType", "matchTypeZh", MATCH_TYPE_DICT);
100528
+ annotateArrayRows(
100529
+ rows,
100530
+ "queryTargetingStatus",
100531
+ "queryTargetingStatusZh",
100532
+ QUERY_TARGETING_STATUS_ZH
100533
+ );
100528
100534
  break;
100529
100535
  }
100530
100536
  case "campaign-geo":
@@ -100541,7 +100547,7 @@ function annotateZhFields(payload, section) {
100541
100547
  }
100542
100548
  return payload;
100543
100549
  }
100544
- var MATCH_TYPE_DICT, GEO_DICT, CITY_DICT, ISO_ZH_DICT;
100550
+ var MATCH_TYPE_DICT, GEO_DICT, CITY_DICT, ISO_ZH_DICT, QUERY_TARGETING_STATUS_ZH;
100545
100551
  var init_translate_fields = __esm({
100546
100552
  "src/commands/google-analysis/translate-fields.ts"() {
100547
100553
  "use strict";
@@ -100552,6 +100558,14 @@ var init_translate_fields = __esm({
100552
100558
  GEO_DICT = geo_en2zh_default;
100553
100559
  CITY_DICT = city_to_country_default.byName ?? {};
100554
100560
  ISO_ZH_DICT = city_to_country_default.isoToZh ?? {};
100561
+ QUERY_TARGETING_STATUS_ZH = {
100562
+ Added: "\u5DF2\u6DFB\u52A0",
100563
+ Excluded: "\u5DF2\u6392\u9664",
100564
+ None: "\u90FD\u6CA1\u6709",
100565
+ AddedExcluded: "\u5DF2\u6DFB\u52A0/\u5DF2\u6392\u9664",
100566
+ UNSPECIFIED: "\u90FD\u6CA1\u6709",
100567
+ UNKNOWN: "\u90FD\u6CA1\u6709"
100568
+ };
100555
100569
  }
100556
100570
  });
100557
100571
 
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "slug": "siluzan-tso",
3
- "version": "1.1.22-beta.7",
4
- "publishedAt": 1779875063502
3
+ "version": "1.1.22-beta.8",
4
+ "publishedAt": 1779877965585
5
5
  }
@@ -138,7 +138,7 @@ siluzan-tso google-analysis -a <id> --exclude materials,gold-account --json-out
138
138
  | ------------------------ | --------------------------------------------------------------------------------------------------- |
139
139
  | `overview` | 总览(实时,可查当天;当天高消耗账号排行首选) |
140
140
  | `keywords` | 关键词;默认 `costGreater=0`(仅有消耗)、`limit=0`(不封顶)、`orderByCost=true`;可用 `--limit` 限制 Top N |
141
- | `search-terms` | 搜索词;默认 `limit=0`(不封顶)、`orderByCost=true`;落盘前过滤 `spend>0`;可用 `--limit` 限制 Top N |
141
+ | `search-terms` | 搜索词;默认 `limit=0`(不封顶)、`orderByCost=true`;落盘前过滤 `spend>0`;含 `queryTargetingStatus` / `queryTargetingStatusZh`(已添加/已排除/都没有);可用 `--limit` 限制 Top N |
142
142
  | `campaigns` | 广告系列 |
143
143
  | `campaign-hour` | 系列按小时(根为 JSON 数组) |
144
144
  | `ads` | 广告;与 `ad list` 同源 |
@@ -204,6 +204,7 @@ CLI 在落盘前为以下维度自动补「中文译名字段」(**原英文
204
204
  | -------------- | ------------------ | -------------------- | --------------------------------------------------------------- |
205
205
  | `keywords` | `keywordMatchType` | `keywordMatchTypeZh` | `match-type-en2zh.json`(覆盖 `BROAD/PHRASE/EXACT` 大小写写法) |
206
206
  | `search-terms` | `matchType` | `matchTypeZh` | `match-type-en2zh.json` |
207
+ | `search-terms` | `queryTargetingStatus` | `queryTargetingStatusZh` | 网关 `Added`→已添加、`Excluded`→已排除、`None`→都没有(写 Excel「已添加/已排除」列用此字段) |
207
208
  | `campaign-geo` | `countryOrRegion` | `countryOrRegionZh` | `geo-en2zh.json`(覆盖 105 个国家/地区) |
208
209
  | `geo-matched` | `countryOrRegion` | `countryOrRegionZh` | `geo-en2zh.json` |
209
210
  | `campaign-geo-matched` | `countryOrRegion` | `countryOrRegionZh` | `geo-en2zh.json` |
@@ -247,7 +247,7 @@
247
247
 
248
248
  ### 8.3 搜索词洞察
249
249
 
250
- 列:搜索词、展示、点击、点击率、转化、转化率、每次转化费用
250
+ 列:搜索词、**已添加/已排除**(`queryTargetingStatusZh`)、展示、点击、点击率、转化、转化率、每次转化费用
251
251
 
252
252
  - **数据分析** / **优化建议**:`fullSearchTerms.analysis`、`fullSearchTerms.suggestions`
253
253
 
@@ -443,7 +443,7 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
443
443
  | R1 | `搜索字词--TOP100` |
444
444
  | R2 | `<S> - <E>`(如 `2026年4月1日 - 2026年4月30日` 等中文区间) |
445
445
  | R3(A→Q,17 列) | `搜索字词` \| `搜索字词匹配类型` \| `已添加/已排除` \| `广告系列` \| `广告组` \| `搜索广告关键字` \| `点击次数` \| `展示次数` \| `点击率` \| `货币代码` \| `平均每次点击费用` \| `费用` \| `绝对页首展示次数百分比` \| `页首展示次数百分比` \| `转化次数` \| `每次转化费用` \| `转化率` |
446
- | R4… | 读 `search-terms-*.json`(`data[]`):`searchTermText` / `matchTypeZh` / **`已添加/已排除`**(若 JSON 字段不存在则填 `—`,**禁止**臆造)/ `campaignName` / `adGroupName` / `keywordText`(关键字)/ 数值字段;`货币代码` 来自 `list-accounts` 同账户 `currencyCode` |
446
+ | R4… | 读 `search-terms-*.json`(`data[]`):`searchTermText` / `matchTypeZh` / **`queryTargetingStatusZh`**(已添加/已排除/都没有;网关字段 `queryTargetingStatus`)/ `campaignName` / `adGroupName` / `keywordText` / 数值字段;`货币代码` 来自 `list-accounts` 同账户 `currencyCode` |
447
447
 
448
448
  按 `费用` 降序前 100。
449
449
 
@@ -453,8 +453,8 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
453
453
 
454
454
  | # | 洞察类别 | 内容(每条引用本 Sheet 具体数字) |
455
455
  | --- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
456
- | 1 | **未添加但高转化搜索词**(候选加为关键词) | `已添加/已排除` "已添加" 且 `转化次数` ≥ `{阈值}` 的搜索词,按转化降序前 10;阈值取本期搜索词转化中位数 |
457
- | 2 | **已添加但 0 转化高消耗搜索词**(候选加为否定关键词) | `已添加/已排除` = "已添加" 且 `转化次数` = 0 且 `费用` > `¥{阈值}` 的搜索词,按消耗降序前 10;阈值取本期搜索词消耗 P75 |
456
+ | 1 | **未添加但高转化搜索词**(候选加为关键词) | `queryTargetingStatusZh` = "都没有" 且 `转化次数` ≥ `{阈值}`,按转化降序前 10;阈值取本期搜索词转化中位数 |
457
+ | 2 | **已添加但 0 转化高消耗搜索词**(候选加为否定关键词) | `queryTargetingStatusZh` = "已添加" 且 `转化次数` = 0 且 `费用` > `¥{阈值}`,按消耗降序前 10;阈值取本期搜索词消耗 P75 |
458
458
  | 3 | **无关搜索词**(意图偏离候选) | 基于 `搜索字词` 文本扫描,标出与广告组 / 关键字 主题明显不符的词(如"工厂"系列出现"价格便宜""免费""教程"等),前 5;**仅展示**,**不**自动判定,由运营会上拍板 |
459
459
  | 4 | **匹配方式分布** | `Broad`:`{n_b}` 个、占消耗 `{p_b}%`;`Phrase`:`{n_p}` 个、占消耗 `{p_p}%`;`Exact`:`{n_e}` 个、占消耗 `{p_e}%` |
460
460
  | 5 | **页首展示低 / 高消耗搜索词**(仅当 `页首展示次数百分比` 字段可用) | 列 `费用` Top20 中 `页首展示次数百分比` < 50% 的搜索词,前 5;提示"花了钱但很少展示到页首,出价/质量得分待优化" |
@@ -30,7 +30,7 @@
30
30
  | ------------- | ----------------------------------------------- | ------------------------------------------------------------ |
31
31
  | 系列按小时 | `google-analysis --sections campaign-hour` | `campaign-hour`;根为 JSON 数组,含 `date`/`hour`/消耗与效果 |
32
32
  | 受众分布 | `google-analysis --sections audience` | 可分 `SystemDefined` / `UserDefined` |
33
- | 搜索词报告 | `google-analysis --sections search-terms` | 高消耗搜索词与关键词匹配关系 |
33
+ | 搜索词报告 | `google-analysis --sections search-terms` | 高消耗搜索词;`queryTargetingStatusZh` 列(已添加/已排除/都没有) |
34
34
  | 广告创意表现 | `google-analysis --sections ads` | 广告标题/类型/到达网址 |
35
35
  | 附加信息 | `google-analysis --sections extensions` | 附加链接/电话/宣传信息等状态 |
36
36
  | 图片/视频素材 | `google-analysis --sections materials` | 图片 + 视频合并视图 |
@@ -148,7 +148,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
148
148
  | R1 | `搜索字词报告` |
149
149
  | R2 | 统计区间 |
150
150
  | R3(A→N,14 列) | `搜索字词` \| `匹配类型` \| `已添加/已排除` \| `广告系列` \| `广告组` \| `关键字` \| `展示次数` \| `点击次数` \| `点击率` \| `平均每次点击费用` \| `费用` \| `转化次数` \| `每次转化费用` \| `转化率` |
151
- | R4… | `search-terms-*.json`:`已添加/已排除` JSON 无此枚举则留空或填「—」,禁止臆造;`ctr` / `conversionRate` 已归一,直接写入 |
151
+ | R4… | `search-terms-*.json`:`queryTargetingStatusZh`(`Added`→已添加、`Excluded`→已排除、`None`→都没有);无该字段时读 `queryTargetingStatus` 按上表映射,仍无则「—」;`ctr` / `conversionRate` 已归一,直接写入 |
152
152
 
153
153
  ---
154
154
 
@@ -9,7 +9,7 @@ $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.22-beta.7'
12
+ $PKG_VERSION = '1.1.22-beta.8'
13
13
  $CLI_BIN = 'siluzan-tso'
14
14
  $SKILL_LABEL = 'Siluzan TSO'
15
15
  $INSTALL_CMD = 'npm install -g siluzan-tso-cli@beta'
@@ -9,7 +9,7 @@ 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.22-beta.7"
12
+ readonly PKG_VERSION="1.1.22-beta.8"
13
13
  readonly CLI_BIN="siluzan-tso"
14
14
  readonly SKILL_LABEL="Siluzan TSO"
15
15
  readonly INSTALL_CMD="npm install -g siluzan-tso-cli@beta"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-tso-cli",
3
- "version": "1.1.22-beta.7",
3
+ "version": "1.1.22-beta.8",
4
4
  "description": "Siluzan 广告账户管理 CLI — 查询账户、余额、消耗数据,管理绑定关系与充值。",
5
5
  "keywords": [
6
6
  "ad-account",