diff --git a/haoxian_kataichi/skills/L1-geo-html-screen-diff/SKILL.md b/haoxian_kataichi/skills/L1-geo-html-screen-diff/SKILL.md
index eb25f26..bb678fd 100644
--- a/haoxian_kataichi/skills/L1-geo-html-screen-diff/SKILL.md
+++ b/haoxian_kataichi/skills/L1-geo-html-screen-diff/SKILL.md
@@ -1,13 +1,14 @@
---
name: l1-geo-html-screen-diff
description: >-
- Compare an L1 project GEO HTML report with the haoxian geo-monitor page
+ Compare an L1 project GEO HTML report with the haoxian/hisense geo-monitor page
(level=project) by on-screen names, percentages, copy, and source-title
- order, then write a numbered test report. Supports one URL pair or a JSON
- batch of project_id, html_url, and url. Use when the user asks for an L1
- or 项目级 diff of HTML vs 平台, geo-monitor, 露出率, 前三率, 中正面率, 分平台,
- 露出排行, AI 认知词云, 信源内容类型, 信源发布时间, 媒体类型, 媒体名称,
- 关联信源, 引用信源榜, 画面值, 批量, or a project-level numerical test report.
+ order, then write a numbered test report. Supports Katechi and Hisense KPI
+ profiles, one URL pair or a JSON batch of project_id, html_url, and url. Use
+ when the user asks for an L1 or 项目级 diff of HTML vs 平台, geo-monitor,
+ 海信, 卡泰驰, 露出率, 前三率, 中正面率, 分平台, 露出排行, AI 认知词云,
+ 信源内容类型, 信源发布时间, 媒体类型, 媒体名称, 关联信源, 引用信源榜,
+ 画面值, 批量, diagnosis, or a project-level numerical test report.
---
# L1 HTML 与平台画面对照
@@ -16,6 +17,39 @@ description: >-
计算、接口、排序细则见 [reference.md](reference.md)。示例只说明参数怎么传,见 [examples.md](examples.md)。示例 JSON 见 [batch.example.json](batch.example.json)。不要把示例里的地址、日期、目录和 JSON 当成默认值。
+## 企业口径
+
+不同企业监测 KPI 字段与画面规则不同。先按本次 `platform_url` / 登录企业判定口径,再跑 12 项。不要把卡泰驰的字段假设套到海信上。
+
+| 判定 | 卡泰驰(默认) | 海信集团 |
+|---|---|---|
+| 识别 | `haoxian.cemeta.cn`,产线含卡泰驰等 | `geo.hisense.com`,或产线/line 含「海信」,或认证企业「海信」 |
+| 常见 `reportType` | `monitor` | `diagnosis` 或 `monitor`(以 URL 为准) |
+| 第 3 / 4 项 KPI | 3 卡:露出率、前三率、正面率 | **固定 5 卡**(见下「海信 L1 KPI 五卡」);第 4 项与第 3 项同五项、分平台。`diagnosis` 无多期趋势时用各平台 `self` 最新点 |
+| 第 5 项排行 | 综合榜 = 本品 `summary.avg_exposure_rate` + `core_competitors` | 默认比 **品牌级**(有「品牌级/产品级」时)。平台 competitor 只取 `kind=brand`,禁止把 `kind=product` 机型行挤进 Top 10。HTML 按画面 `_buildLeaderboardRows`(本品 + `core_competitors`,`groupByBrand` 取最大露出率)。**并列露出率名次对调不算第 5.2 失败**,表里注明并列即可 |
+| 第 9 项媒体类型 | HTML 去「其他/未知」后按剩余重算占比 | HTML `media_category.value` 常为**次数**(正值和 ≫100)。占比分母用**全部正值之和(含「其他」)**,再与平台已印百分数比;「其他」仍不进入 HTML 前 10 名单 |
+| 批次号 | 从 batch 接口 `l1CrawlBatchIds` 解析 | batch 列表可能为空;可按 `HISENSE-HIST-{project}-{YYYYMMDD}-D`(电视诊断)等已验证模式解析,仍以接口返回为准 |
+
+### 海信 L1 KPI 五卡
+
+海信集团 L1 **都会有品牌露出率**。第 3、4 项按这五张卡比,不要只比卡泰驰的三项。文案约定(写法不同不算失败):
+
+| # | 平台画面 | HTML 画面(常见) | HTML `DATA`(综合) | 平台 snapshot |
+|---|---|---|---|---|
+| 1 | 品牌露出率 | 品牌露出率(或 DATA 有值;模板未印卡时仍比数值) | `brand.overall.brand_level_exposure_rate`;分平台 `platforms.*.self.brand_exposure_rate` | `brand_exposure_rate` |
+| 2 | 指定露出词露出率 | **露出率** | `brand.summary.avg_exposure_rate`;分平台 `self.exposure_rate` | `exposure_rate` |
+| 3 | 首位率 / 前三率 / 前五率(产线不同) | 同左,由 `meta.position_metric` 决定 | `first`→`avg_first_position_rate`;`top3`→`avg_top3_rate`;`top5`→`avg_top5_rate`;分平台对应 `first_position_rate` / `top3_rate` / `top5_rate` | 同名字段;`first` 可用 `top1_rate` |
+| 4 | 中正面率 | **中正面提及率** | `brand.summary.avg_positive_mention_rate`;分平台 `self.positive_mention_rate` | `positive_rate` |
+| 5 | 商品链接露出率 | 商品链接露出率 | `brand.summary.product_link`(`!= null` 才出卡;有值必比) | `product_link_rate` |
+
+**品牌露出率圆整(海信)**:走「海信画面百分比」规则(1 位小数相等或差 0.1)。若画面印整数,按整数四舍五入后相等也通过。
+
+**海信画面百分比(含 AI 露出情况监测 KPI 等)**:平台看板显示 **1 位小数**;与 HTML 数值先各自四舍五入到 1 位小数再比——**相等,或相差 0.1 个百分点,判定一致**。不要用更严的 0.05 去卡海信。卡泰驰仍按下文通用 0.05。
+
+**指定露出词露出率 = HTML「露出率」= `avg_exposure_rate`**,不要和品牌露出率对倒。品牌露出率只用 `brand_level_exposure_rate` / `brand_exposure_rate`。
+
+海信细则与接口字段见 [reference.md](reference.md)「海信集团」。卡泰驰示例见 [examples.md](examples.md);海信批量示例用 `batch_海信电视0905诊断.json`,不要把其中项目号当默认值。
+
## 参数
两种入口。共享参数缺了就停下来问。不要沿用上次对话、示例或本文件里的地址、日期和目录。用户同时给了单条地址和 JSON 时,以 JSON 为准,按数组逐项做,不要只做消息里那一条。
@@ -54,12 +88,25 @@ description: >-
用户原文,按这个对照,不要改映射:
+**卡泰驰(默认 3 卡)**
+
- 露出率:HTML「平均露出率」= 平台「指定露出词露出率」
- 前三率:HTML「平均前三率」= 平台「前三率」
- 正面提及率:HTML「平均正面提及率」= 平台「中正面率」
- HTML「各平台核心指标趋势」露出率 = 平台「指定露出词露出率 · 分平台」
- HTML「各平台核心指标趋势」前三率 = 平台「前三率 · 分平台」
- HTML「各平台核心指标趋势」正面提及率 = 平台「中正面率 · 分平台」
+
+**海信(固定 5 卡,见「海信 L1 KPI 五卡」)**
+
+- 品牌露出率:HTML `brand_level_exposure_rate` / 分平台 `brand_exposure_rate` = 平台「品牌露出率」(1 位小数四舍五入后相等或差 0.1 即通过;整数展示另按整数圆整)
+- 指定露出词露出率:HTML「露出率」`avg_exposure_rate` = 平台「指定露出词露出率」
+- 首位率/前三率/前五率:按 `meta.position_metric` = 平台同名卡
+- 中正面率:HTML「中正面提及率」= 平台「中正面率」
+- 商品链接露出率:HTML「商品链接露出率」= 平台「商品链接露出率」
+
+**共用板块**
+
- HTML「行业露出率排行榜」= 平台「露出排行 · 各平台明细」
- HTML「AI 回答关键词」= 平台「AI 认知词云」
- HTML「AI 回答正面关键词」= 平台「AI 认知词云」下的正面词
@@ -83,12 +130,12 @@ HTML「综合」= 平台「全平台」。这是约定,不算第 2 项失败
1. 确认两个 URL 能否打开,截图进报告。
2. 七个 AI 平台选项是否相同。HTML 里面综合 = 全平台,通义 = 通义千问,元宝 = 腾讯元宝,文心 = 百度文心
-3. 各选项的露出率、前三率、正面率是否相同。
-4. 各选项上,趋势露出率 / 前三率 / 正面提及率是否等于平台分平台三项。
-5. HTML「行业露出率排行榜」= 平台「露出排行 · 各平台明细」。平台这一张表同时列出各选项,不要切换平台选项。只比各自 Top 10。三步都要做,任一步不同则该项测试失败❌。
- 1. 综合的平均露出率 = 平台全平台列的平均露出率。
- 2. HTML 综合排名品牌 Top 10 = 平台全平台排名品牌 Top 10。名次和品牌名都要相同,名称逐字相同。第 11 名及以后不比。**两边都按平均露出率从高到低取 Top 10,不要用接口 `rank` 当名次**(`rank` 可能是灌数防撞号,画面实际按露出率排)。
- 3. 这 10 个品牌在 HTML 的 DeepSeek、豆包、通义、元宝、文心、Kimi 上的平均露出率,等于平台同一张表里对应列。列对应为通义=通义千问,元宝=腾讯元宝,文心=百度文心。未露出时 HTML 为空、平台为「-」,不算不同。差超过 0.05 算不同。
+3. 各选项的 KPI 卡是否相同。**卡泰驰**:露出率、前三率、正面率。**海信**:五卡(品牌露出率、指定露出词露出率↔HTML露出率、首位/前三/前五、中正面率↔中正面提及率、商品链接露出率),见「海信 L1 KPI 五卡」。
+4. 各选项上,分平台 KPI 是否等于平台分平台对应项。卡泰驰为趋势最后一点的三项;海信为与第 3 项相同的五卡(`diagnosis` 无多期时用 `self` 最新点)。
+5. HTML「行业露出率排行榜」= 平台「露出排行 · 各平台明细」。平台这一张表同时列出各选项,不要切换平台选项。只比各自 Top 10。三步都要做,任一步不同则该项测试失败❌。海信默认品牌级,平台只比 `kind=brand`(见「企业口径」)。
+ 1. 综合的平均露出率 = 平台全平台列的平均露出率(**按 Top 10 同名比**,不要只按下标对齐)。
+ 2. HTML 综合排名品牌 Top 10 = 平台全平台排名品牌 Top 10。名次和品牌名都要相同,名称逐字相同。第 11 名及以后不比。**两边都按平均露出率从高到低取 Top 10,不要用接口 `rank` 当名次**(`rank` 可能是灌数防撞号,画面实际按露出率排)。**海信:露出率并列时名次对调不算本步失败**。
+ 3. 这 10 个品牌在 HTML 的 DeepSeek、豆包、通义、元宝、文心、Kimi 上的平均露出率,等于平台同一张表里对应列。列对应为通义=通义千问,元宝=腾讯元宝,文心=百度文心。未露出时 HTML 为空、平台为「-」,不算不同。卡泰驰差超过 0.05 算不同;**海信按 1 位小数四舍五入后相等或差 0.1 算相同**。
6. 正面关键词、负面关键词。词云不随 AI 平台切换,七个选项同一套。下面三组文案是约定,写法不同不算失败:
1. HTML「AI 回答关键词」= 平台「AI 认知词云」
2. HTML「AI 回答正面关键词」= 平台「正面词」
@@ -96,14 +143,16 @@ HTML「综合」= 平台「全平台」。这是约定,不算第 2 项失败
正面词还要比图片素材:HTML 词云图画出来的词,和平台正面词图画出来的词,词条相同才算相同。不比词的大小、颜色和摆放位置。有负面词时比词条,不比空态文案。
7. 各选项的信源内容类型是否相同。占比优先用接口/HTML 已印的百分数字段;仅当 `value` 明显是次数时才按正值之和重算。不要把已是百分比的 `value` 再除一次(会造 0.1 点假失败)。
8. 各选项的信源发布时间是否相同。占比口径与第 7 项相同。
-9. 各选项的媒体类型:占比和展示名称,只取前 10。
+9. 各选项的媒体类型:占比和展示名称,只取前 10。海信 HTML 为次数时,分母含「其他」(见「企业口径」)。
10. 各选项的媒体名称:占比和展示名称,只取前 10。
11. 各选项的关联信源:标题、渠道、被引次数,只取前 30。不比序号。
12. 各选项的关联信源:标题内容,以及序号上展示的标题是否相同。只取前 30。
数据不同时给出平台和 HTML 的对比。每个平台都要输出:同名但百分比不同的名称、HTML 画面值、平台画面值。没有这种差异的平台写「画面上同名占比无差异」,不要省略该平台。露出率若同名百分比相同,写条数,不要把相同行展开成差异表。第 5 项只比 Top 10,名次或品牌名不同要展开,不能只写条数。第 11 名及以后不报。
-差超过 0.05 个点才算不同。0.05 是百分点,不是相对误差。两边按 1 位小数比,最小能看出来的差别是 0.1。13.80% 和 13.8% 差是 0,判相同。
+差超过 0.05 个点才算不同(**卡泰驰**)。0.05 是百分点,不是相对误差。两边按 1 位小数比,最小能看出来的差别是 0.1。13.80% 和 13.8% 差是 0,判相同。
+
+**海信**:平台看板为 1 位小数时,与 HTML 四舍五入到 1 位后**相等或相差 0.1** 判定一致(例如 12.3 与 12.4 通过;12.3 与 12.5 不通过)。详见「海信画面百分比」。
## 只在一边展示
diff --git a/haoxian_kataichi/skills/L1-geo-html-screen-diff/batch_海信电视0905诊断.json b/haoxian_kataichi/skills/L1-geo-html-screen-diff/batch_海信电视0905诊断.json
new file mode 100644
index 0000000..267b6eb
--- /dev/null
+++ b/haoxian_kataichi/skills/L1-geo-html-screen-diff/batch_海信电视0905诊断.json
@@ -0,0 +1,107 @@
+[
+ {
+ "project_id": 1596,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/c9c38431-793c-4c8b-b115-0895d13211f4.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1596"
+ },
+ {
+ "project_id": 1597,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/349f74ed-98b4-4f85-b2d1-e66ccf703bf6.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1597"
+ },
+ {
+ "project_id": 1598,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/d03310bb-c933-48d5-8ea4-5c6ab389487f.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1598"
+ },
+ {
+ "project_id": 1599,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/f63aa510-1c49-4886-8474-8d2920fb9d2e.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1599"
+ },
+ {
+ "project_id": 1600,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/c9e9c38c-50b7-49cf-9a39-452b47d2c9ca.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1600"
+ },
+ {
+ "project_id": 1601,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/13f4399b-cdeb-42cd-b53e-782b53246775.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1601"
+ },
+ {
+ "project_id": 1602,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/86634efc-beec-4ed7-b1e0-a051ad5382fa.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1602"
+ },
+ {
+ "project_id": 1603,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/5e2ab3af-43d0-4e47-a8c4-454717421511.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1603"
+ },
+ {
+ "project_id": 1604,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/38b0f107-2ab6-4270-8573-c0d879bea18b.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1604"
+ },
+ {
+ "project_id": 1605,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/a63f275b-622b-4ab8-8949-66973e7fe446.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1605"
+ },
+ {
+ "project_id": 1606,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/76716762-bcfe-4c74-9612-9fe3a7e9a82e.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1606"
+ },
+ {
+ "project_id": 1607,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/865c5144-db85-482d-89bb-fc093c6893f4.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1607"
+ },
+ {
+ "project_id": 1608,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/57f31d21-5bd1-4912-b02a-0643cc291c18.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1608"
+ },
+ {
+ "project_id": 1609,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/1df85901-eae1-4fd7-9185-e92e604b07fc.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1609"
+ },
+ {
+ "project_id": 1610,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/4bf41649-7983-407e-98fa-95c40cc1be41.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1610"
+ },
+ {
+ "project_id": 1611,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/9a8b86a9-4308-4b7a-b799-26199551025d.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1611"
+ },
+ {
+ "project_id": 1612,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/047b0bad-c0ee-43b7-b7ea-9628ac0afe66.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1612"
+ },
+ {
+ "project_id": 1613,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/3b4f38cf-f5ad-4a29-8c12-fdd2151e4a89.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1613"
+ },
+ {
+ "project_id": 1614,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/a9288dc5-219f-4d61-907c-d0db6714c26f.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1614"
+ },
+ {
+ "project_id": 1615,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/f0a10168-159c-46ae-8428-8664e88d85b7.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1615"
+ },
+ {
+ "project_id": 1616,
+ "html_url": "https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/0c5178e5-1522-47b4-9d8e-f436345c9c0d.html",
+ "url": "https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1616"
+ }
+]
diff --git a/haoxian_kataichi/skills/L1-geo-html-screen-diff/examples.md b/haoxian_kataichi/skills/L1-geo-html-screen-diff/examples.md
index 4618f77..fa88cfd 100644
--- a/haoxian_kataichi/skills/L1-geo-html-screen-diff/examples.md
+++ b/haoxian_kataichi/skills/L1-geo-html-screen-diff/examples.md
@@ -26,3 +26,32 @@ report_dir: /test/灌数/卡泰驰/项目级/monitor-0920-test
```
按数组顺序逐项做完 12 项。每项单独编号,例如 `测试报告-1-1169.md`、`测试报告-1-1170.md`。同一项目已有 `测试报告-N-{project}.md` 时,只给该项编号加 1。消息里如果还写了一条 url地址和 html地址,仍以 JSON 为准,不要只做那一条。
+
+## 海信集团(诊断 / geo.hisense.com)
+
+海信与卡泰驰 KPI 口径不同,见 [SKILL.md](SKILL.md)「企业口径」与 [reference.md](reference.md)「海信集团」。下面只示范怎么传参。
+
+### 单条(电视诊断)
+
+```text
+platform_url: https://geo.hisense.com/geo-monitor?batchDate=2026-09-05&reportType=diagnosis&level=project&line=%E6%B5%B7%E4%BF%A1::%E7%94%B5%E8%A7%86&project=1609
+html_url: https://cemeta-resource-1313090634.cos.ap-beijing.myqcloud.com/workflow/1df85901-eae1-4fd7-9185-e92e604b07fc.html
+platform_period: 9月 W36
+html_monitor_date: 2026-09-05
+report_dir: /test/haoxian-script/haoxian_kataichi/skills/L1-geo-html-screen-diff/海信电视/diagnosis-0905-test
+```
+
+执行时:企业=海信,`reportType=diagnosis`,第 3/4 项按 **五卡**(品牌露出率 + 指定露出词露出率↔HTML露出率 + 首位/前三/前五 + 中正面 + 商品链接);排行默认品牌级且平台 competitor 只取 `kind=brand`;媒体类型按次数分母含「其他」换算。
+
+### 批量
+
+地址对在 [batch_海信电视0905诊断.json](batch_海信电视0905诊断.json)。
+
+```text
+batch_json: /test/haoxian-script/haoxian_kataichi/skills/L1-geo-html-screen-diff/batch_海信电视0905诊断.json
+platform_period: 9月 W36
+html_monitor_date: 2026-09-05
+report_dir: /test/haoxian-script/haoxian_kataichi/skills/L1-geo-html-screen-diff/海信电视/diagnosis-0905-test
+```
+
+不要把该 JSON 里的 `project_id` / 日期当成其他批次的默认值。
diff --git a/haoxian_kataichi/skills/L1-geo-html-screen-diff/reference.md b/haoxian_kataichi/skills/L1-geo-html-screen-diff/reference.md
index cb6fd5d..39bf8af 100644
--- a/haoxian_kataichi/skills/L1-geo-html-screen-diff/reference.md
+++ b/haoxian_kataichi/skills/L1-geo-html-screen-diff/reference.md
@@ -6,23 +6,77 @@
HTML 从 `var DATA` 读。L1 报告用 `brand`(`mode=simple` 时没有品牌/产品切换)。综合用 `brand.summary`、`brand.tmc_aggregate`、`brand.source_top30`、`brand.core_competitors`、`brand.wordcloud`。单个 AI 平台用 `brand.platforms[key]`。
-平台是 L1,不是 L3。`project` 从 `platform_url` 取。
+平台是 L1,不是 L3。`project` 从 `platform_url` 取。`reportType` 取自 URL(`monitor` / `diagnosis`),请求里原样传递,不要写死成 `monitor`。
-1. 用当次登录会话打 `resource-api.cemeta.cn`。
-2. `GET /api/geo_label/project/batch?companyId={companyId}&reportType=monitor`,用 URL 里的 `batchDate` 找到对应项,再按 `project` 取 `l1CrawlBatchIds[].batchId`。
-3. `GET /api/geo-monitor/metrics/l1?table={table}&batchIds={batchId}&projectId={project}&reportType=monitor`。`table` 用 `snapshot`、`competitor`、`tmc`。信源再加 `&platform={平台值}`,`table=source`。
+1. 用当次登录会话打 `resource-api.cemeta.cn`(海信门户 `geo.hisense.com` 的数据也可走同一 resource-api;登录账号用认证注册表「海信」)。
+2. `GET /api/geo_label/project/batch?companyId={companyId}&reportType={reportType}`,用 URL 里的 `batchDate` 找到对应项,再按 `project` 取 `l1CrawlBatchIds[].batchId`。
+3. `GET /api/geo-monitor/metrics/l1?table={table}&batchIds={batchId}&projectId={project}&reportType={reportType}`。`table` 用 `snapshot`、`competitor`、`tmc`。信源再加 `&platform={平台值}`,`table=source`。
4. 词云:`GET /api/geo-monitor/projects/{project}/wordcloud?batchId={batchId}&sentiment=all`。这个接口不按 AI 平台拆。HTML 词云也是写死综合,七个选项同一套词。
登录账号从项目认证注册表取,跟本次企业走。不要把手机号、密码、token 写进报告。
+## 海信集团
+
+与卡泰驰的差异只写在这里;执行海信批次时必须按本节,不要沿用卡泰驰假设。
+
+### 识别与批次
+
+- URL 主机 `geo.hisense.com`,或 `line` 含「海信」,或 `companyId=13`。
+- `reportType=diagnosis` 时,`/geo_label/project/batch` 可能返回空列表。此时用已验证的 crawlBatchId 模式补齐,例如电视诊断:`HISENSE-HIST-{projectId}-{YYYYMMDD}-D`(`YYYYMMDD` 来自 `batchDate`)。用 `table=snapshot` 拉一行校验;`rows` 为空则停下来问,不要编造别的前缀。
+- 商显等产线可能是 `HISENSE-SX-HIST-...`;以实际 `crawlBatchId` 为准。
+
+### KPI 字段(第 3 / 4 项)
+
+海信 L1 **固定五卡**,都会有品牌露出率。
+
+| 平台卡 | HTML 画面名 | HTML 综合字段 | HTML 分平台 | snapshot |
+|---|---|---|---|---|
+| 品牌露出率 | 品牌露出率 | `overall.brand_level_exposure_rate` | `self.brand_exposure_rate` | `brand_exposure_rate` |
+| 指定露出词露出率 | **露出率** | `summary.avg_exposure_rate` | `self.exposure_rate` | `exposure_rate` |
+| 首位率 / 前三率 / 前五率 | 同左 | 由 `meta.position_metric`:`first`→`avg_first_position_rate`,`top3`→`avg_top3_rate`,`top5`→`avg_top5_rate` | `first_position_rate` / `top3_rate` / `top5_rate` | `first` 优先 `first_position_rate`,否则 `top1_rate`;`top3`/`top5` 用同名 rate;**不要**在比首位率时误用 `position_rate`(常为产线当前展示的前三/前五) |
+| 中正面率 | **中正面提及率** | `summary.avg_positive_mention_rate` | `self.positive_mention_rate` | `positive_rate` |
+| 商品链接露出率 | 商品链接露出率 | `summary.product_link` | 综合卡有值则比;分平台以 snapshot 该平台 `product_link_rate` 为准(HTML self 无单独卡时只报综合) | `product_link_rate` |
+
+**海信画面百分比(AI 露出情况监测等)**:平台看板显示 1 位小数。判定:
+
+1. HTML 与平台值都先四舍五入到 **1 位小数**(`round(x + 1e-9, 1)`)。
+2. 圆整后**相等**,或**相差 0.1** 个百分点 → 判定一致(通过)。
+3. 相差 ≥ 0.2 → 不同。
+4. **品牌露出率**额外:若平台印整数,两边按整数四舍五入后相等也通过。
+5. 本条适用于海信第 3/4 项五卡、第 5 项露出率、第 7–10 项占比等所有「平台 1 位小数」百分比对照;**不要**对海信用卡泰驰的 0.05 阈值。
+
+**禁止混比**:不要把 `brand_level_exposure_rate`(品牌露出率)当成「露出率 / 指定露出词露出率」。
+**指定露出词露出率 = HTML「露出率」= `avg_exposure_rate`**(已确认)。
+
+`diagnosis` 第 4 项:无多期趋势时,各平台 `self` 最新点对 snapshot 分平台;综合覆盖六个平台的上述五项(商品链接按上表)。
+
+`cal_data_json` 若提供,结构与 HTML `brand`/`meta` 同源,可作离线核对,但必须与本次 `html_url` 同题;题目不一致时以 HTML `var DATA` 为准。
+
+### 第 5 项排行(品牌级默认)
+
+- HTML 常有「品牌级 / 产品级」。默认比品牌级。产品级用 `core_product_competitors` / `product_ranking`,只有用户明确要求产品级时才切。
+- 平台 `competitor` 行带 `kind`:`brand` | `product`。品牌级对照**只保留 `kind=brand`**。混入 `product` 会把「海信E7S Pro」「创维 75A3F」等机型挤进 Top 10,造成假失败。
+- HTML 综合品牌榜与画面一致:本品名 + `summary.avg_exposure_rate`,再合并 `core_competitors`(跳过露出率为 0 的集团兄弟占位),同名取最大露出率后降序,取 Top 10。
+- 第 5.1:按 **Top 10 交集的同名露出率**比,不要只按名次下标硬对齐(并列时下标会对错行)。
+- 第 5.2:名次与品牌名通常要一致;**露出率在 0.05 内并列时,名次对调不算失败**,报告注明「并列换位」。
+- 第 5.3:分平台用 HTML `industry_ranking` 对平台同品牌 `kind=brand` 行。
+
+### 媒体类型(第 9 项)
+
+- 海信 HTML `tmc_aggregate.media_category` / 各平台 `citation.media_category` 的 `value` 经常是次数(正值和远大于 100),平台接口 `value` 已是百分数。
+- 画面占比:`value / 本组全部正值之和 × 100`,**分母含「其他」「未知」**,再去掉「其他」「未知」后取前 10 与平台比。若先剔除再重算,会造出 0.1~1 点假差异(如 32.3% vs 32.1%)。
+
## 画面百分比
-保留 1 位小数。差超过 0.05 个点才算不同。
+保留 1 位小数。
+
+- **卡泰驰**:差超过 0.05 个点才算不同。
+- **海信**:平台看板 1 位小数 vs HTML 四舍五入到 1 位后,**相等或相差 0.1** 判定一致(见上文「海信画面百分比」)。
- 露出率、前三率、正面率、排行榜露出率:页面直接印的字段。HTML `fmt` 对非 0、非 100 印两位小数,平台印一位。比数值,不比小数位数。
-- 分平台:HTML 趋势序列最后一个监测日的点,对平台该平台 snapshot 的 `exposure_rate`、`top3_rate`、`positive_rate`。综合要覆盖六个平台的这三个点。
+- 分平台:**卡泰驰** HTML 趋势序列最后一个监测日的点,对平台该平台 snapshot 的 `exposure_rate`、`top3_rate`、`positive_rate`。综合要覆盖六个平台的这三个点。**海信**见「KPI 字段(第 3 / 4 项)」五卡;`diagnosis` 用 `self` 最新点。
- 信源内容类型、信源发布时间:图例最多 8 条,按值从高到低;发布时间去掉名为「无时间」的项。**先看 `value` 是不是已经是百分比**:本组正值之和落在约 99~101.5(或每条都在 0~100 且之和≈100)时,**直接用 `value` 当画面占比**,不要再做 `value / 正值之和 × 100`。只有 `value` 明显是次数/频次(之和远大于 100,或单条远大于 100)时,才用 `value / 正值之和 × 100`。库里已是百分数时再除一次会造出 0.1 点假差异(如 52.1% vs 52%),那种差异不算失败。
-- 媒体类型:HTML 方块去掉「其他」「未知」,再按剩余 `value` 之和重算。平台条形图按值从高到低取前 10;这 10 条 `value` 之和 ≤ 101.5 时直接印 `value`,否则 `value / 该和 × 100`。
+- 媒体类型:HTML 方块去掉「其他」「未知」,再按剩余 `value` 之和重算(**卡泰驰**)。平台条形图按值从高到低取前 10;这 10 条 `value` 之和 ≤ 101.5 时直接印 `value`,否则 `value / 该和 × 100`。**海信**见上文「媒体类型(第 9 项)」:次数分母含「其他」。
- 媒体名称:HTML 没有占比字段,为 `value / 本组 value 之和 × 100`,去掉「其他」「未知」后取前 10。平台与媒体类型同一条形图规则。
## 排行榜
@@ -31,14 +85,18 @@ HTML 从 `var DATA` 读。L1 报告用 `brand`(`mode=simple` 时没有品牌/
平台全平台列是平均露出率。其余列是 DeepSeek、豆包、通义千问、腾讯元宝、百度文心、Kimi。某品牌在某选项没有露出时,HTML 为空,平台格子是「-」,这不算不同。
-HTML 综合榜 = 本品(`summary.avg_exposure_rate` + 本品名)与 `core_competitors` **合并后**按平均露出率降序,再取 Top 10。分平台用 `brand.platforms[key].industry_ranking`。画面名称截断后对不上(「车」对「车300」)算名称不同。
+**卡泰驰**:HTML 综合榜 = 本品(`summary.avg_exposure_rate` + 本品名)与 `core_competitors` **合并后**按平均露出率降序,再取 Top 10。分平台用 `brand.platforms[key].industry_ranking`。
-**排序口径(防假失败)**:两边 Top 10 顺序都按**平均露出率从高到低**对齐画面,再取前 10。不要用接口 `rank` 字段当画面名次——`rank` 可能是灌数防撞号,和露出排行画面不一致。露出率相同则按两边各自画面已印出的先后;若按露出率排完后名次与品牌名一致,第 5.2 步判相同,不要因 `rank` 对调判失败。
+**海信**:见上文「海信集团 · 第 5 项」。默认品牌级;平台只取 `kind=brand`;第 5.1 按同名比露出率;第 5.2 允许并列露出率名次对调。
+
+画面名称截断后对不上(「车」对「车300」)算名称不同。第 5 项不适用「名称写法不同但百分比相同」那条例外,品牌名必须逐字相同(并列换位除外)。
+
+**排序口径(防假失败)**:两边 Top 10 顺序都按**平均露出率从高到低**对齐画面,再取前 10。不要用接口 `rank` 字段当画面名次——`rank` 可能是灌数防撞号,和露出排行画面不一致。露出率相同则按两边各自画面已印出的先后;海信在并列时名次对调不判第 5.2 失败。
三步都要做,任一步不同则第 5 项测试失败❌:
-1. 综合平均露出率对平台全平台列。差超过 0.05 算不同。
-2. 综合 Top 10 的名次和品牌名,对平台全平台 Top 10。名称逐字相同。两边名单都先按露出率降序再比。
+1. 综合平均露出率对平台全平台列(同名比)。海信按 1 位小数四舍五入后相等或差 0.1;卡泰驰差超过 0.05 算不同。
+2. 综合 Top 10 的名次和品牌名,对平台全平台 Top 10。名称逐字相同;海信并列换位除外。
3. 这 10 个品牌在 DeepSeek、豆包、通义、元宝、文心、Kimi 上的露出率,对平台对应列。通义对通义千问,元宝对腾讯元宝,文心对百度文心。
## 词云