--- name: l1-geo-html-screen-diff description: >- Compare an L1 project GEO HTML report with the haoxian 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. --- # L1 HTML 与平台画面对照 对照 L1 项目监测 HTML 与监测页。只比映射板块上写出来的名称、百分比和指定文案。除第 12 项外,不比位置、颜色、条形图还是方块。 计算、接口、排序细则见 [reference.md](reference.md)。示例只说明参数怎么传,见 [examples.md](examples.md)。示例 JSON 见 [batch.example.json](batch.example.json)。不要把示例里的地址、日期、目录和 JSON 当成默认值。 ## 参数 两种入口。共享参数缺了就停下来问。不要沿用上次对话、示例或本文件里的地址、日期和目录。用户同时给了单条地址和 JSON 时,以 JSON 为准,按数组逐项做,不要只做消息里那一条。 ### 单条 | 参数 | 用户怎么叫 | 用途 | |---|---|---| | `platform_url` | url地址 | 监测页完整 URL,含 `batchDate`、`level=project`、`project` | | `html_url` | html地址 | 历史 HTML 完整 URL,有版本参数时原样使用 | | `platform_period` | url日期 | 平台监测周期,如 `9月w38`。只核对页面日期文案 | | `html_monitor_date` | html日期 | HTML 监测日期,如 `2026-09-15`。只核对页面日期文案 | | `report_dir` | 测试报告目录 | 绝对路径。报告只写在这个目录下 | ### 批量 用户给 JSON 数组,或给 JSON 文件路径。没给地址、也没给 JSON,就停下来问。数组为空也停下来问。 每一项三个字段: | 字段 | 用途 | |---|---| | `project_id` | 项目 id。必须等于该项 `url` 查询参数 `project` | | `html_url` | 该项历史 HTML,当作 `html_url` | | `url` | 该项监测页,当作 `platform_url` | `platform_period`、`html_monitor_date`、`report_dir` 仍由用户本次给出,整批共用。不要从示例 JSON 补这三个。 `project_id` 和 `url` 里的 `project` 不一致时,停下来问,不要改 URL 去凑。按数组顺序逐项做完 12 项。一项失败不跳过其余项。每项单独编号、单独报告。 用户给定的日期对应关系不是差异。不要因为一边是日期、一边是周次就判失败。 `batchDate`、公司、批次号、`project` 从本次 `platform_url` 和当次登录会话解析。不要写死批次号、公司号、手机号或密码,也不要把凭据写进报告。 ## 板块对应 用户原文,按这个对照,不要改映射: - 露出率:HTML「平均露出率」= 平台「指定露出词露出率」 - 前三率:HTML「平均前三率」= 平台「前三率」 - 正面提及率:HTML「平均正面提及率」= 平台「中正面率」 - HTML「各平台核心指标趋势」露出率 = 平台「指定露出词露出率 · 分平台」 - HTML「各平台核心指标趋势」前三率 = 平台「前三率 · 分平台」 - HTML「各平台核心指标趋势」正面提及率 = 平台「中正面率 · 分平台」 - HTML「行业露出率排行榜」= 平台「露出排行 · 各平台明细」 - HTML「AI 回答关键词」= 平台「AI 认知词云」 - HTML「AI 回答正面关键词」= 平台「AI 认知词云」下的正面词 - HTML「AI 回答负面关键词」= 平台「AI 认知词云」下的负面词 - HTML「信源内容类型分布」= 平台「TMC 信源分析」下的信源内容类型 - HTML「信源发布时间分布」= 平台「TMC 信源分析」下的信源发布时间 - HTML「媒体类型」= 平台「媒体类型」 - HTML「媒体名称」= 平台「媒体名称」 - HTML「关联信源」= 平台「该问题的引用信源榜」 - HTML 标题 = 平台信源标题 - HTML 信源 = 平台渠道 - HTML 占比这一列的对照口径 = 平台被引次数。不要把占比百分数和次数当成同一个画面字段 HTML「综合」= 平台「全平台」。这是约定,不算第 2 项失败。 平台选项:综合、DeepSeek、豆包、通义、元宝、文心、Kimi。接口值:`ALL`、`deepseek`、`doubao`、`qwen`、`yuanbao`、`baidu_wenxin`、`kimi`。 ## 测试范围 12 项都要做。每一项标题写成 `测试通过✅` 或 `测试失败❌`,不要只写相同或不同。 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 算不同。 6. 正面关键词、负面关键词。词云不随 AI 平台切换,七个选项同一套。下面三组文案是约定,写法不同不算失败: 1. HTML「AI 回答关键词」= 平台「AI 认知词云」 2. HTML「AI 回答正面关键词」= 平台「正面词」 3. HTML「未监测到负面词」= 平台「中正面率100%,暂无负面词」 正面词还要比图片素材:HTML 词云图画出来的词,和平台正面词图画出来的词,词条相同才算相同。不比词的大小、颜色和摆放位置。有负面词时比词条,不比空态文案。 7. 各选项的信源内容类型是否相同。占比优先用接口/HTML 已印的百分数字段;仅当 `value` 明显是次数时才按正值之和重算。不要把已是百分比的 `value` 再除一次(会造 0.1 点假失败)。 8. 各选项的信源发布时间是否相同。占比口径与第 7 项相同。 9. 各选项的媒体类型:占比和展示名称,只取前 10。 10. 各选项的媒体名称:占比和展示名称,只取前 10。 11. 各选项的关联信源:标题、渠道、被引次数,只取前 30。不比序号。 12. 各选项的关联信源:标题内容,以及序号上展示的标题是否相同。只取前 30。 数据不同时给出平台和 HTML 的对比。每个平台都要输出:同名但百分比不同的名称、HTML 画面值、平台画面值。没有这种差异的平台写「画面上同名占比无差异」,不要省略该平台。露出率若同名百分比相同,写条数,不要把相同行展开成差异表。第 5 项只比 Top 10,名次或品牌名不同要展开,不能只写条数。第 11 名及以后不报。 差超过 0.05 个点才算不同。0.05 是百分点,不是相对误差。两边按 1 位小数比,最小能看出来的差别是 0.1。13.80% 和 13.8% 差是 0,判相同。 ## 只在一边展示 不要写成两张互不对照的「仅 HTML / 仅平台」名单。改成对照表,写清原因。 - 同一条、只是名称写法不同、百分比相同:一行写 HTML 画面名、平台画面名、百分比。例如 HTML「车」、平台「车300」。第 5 项不适用这条例外,品牌名必须逐字相同。 - 一边因为 Top 10 或 Top 30 没印出来:写「前 10 之外,未印」或「前 30 之外,未印」,不要说成数值算错。第 5 项只比 Top 10,第 11 名及以后不报。 - HTML 不画「其他」,平台前 10 有「其他」:单独一张表写各平台的平台画面值。若没有把 HTML 的名称挤出前 10,写明没有「仅 HTML」的类型。 - 选项文案不同(通义 / 通义千问,元宝 / 腾讯元宝,文心 / 百度文心):放进第 2 项对照表。综合 = 全平台不记失败。其余写法不同则第 2 项为测试失败❌。 - 平台多出来、且没有出现在本次对照画面里的字段,不报。 媒体类型、媒体名称只在前 10 条里判缺失。第 11 条及以后不报。 ## 报告文件 目录不存在就创建。 项目 id 取本次该项 `platform_url` 的 `project` 参数,记为 `project`。批量时每一项各自取,不要共用上一项的 id。 在 `report_dir` 里找已有的 `测试报告-N-{project}.md`,只计本次这个 `project`。下一个编号是这些文件里最大 N 加 1。该项目还没有则从 1 开始。`测试报告.md`、`测试报告-N.md` 和其他项目 id 的文件不算本次编号。批量里各项互不影响编号。 写成 `{report_dir}/测试报告-{id}-{project}.md`。截图放在 `{report_dir}/shots-{id}-{project}/`,报告里用相对路径 `shots-{id}-{project}/文件名`。不要覆盖已有报告,不要写到 `report_dir` 以外。 文件开头先给结论:一致,或不完全一致。然后是 12 项结论表,每项一个结果:`测试通过✅` 或 `测试失败❌`。 写完后在回复里给出报告的绝对路径。批量时按 JSON 顺序逐项给结论和绝对路径。对话里只保留结论和路径,同名差异表以该文件为准。文件里的日期、URL、保存目录用本次参数,不要留示例值。