Skip to content

feat(seo): /r/{job_id} 网页 title 与面包屑加入检测模型#2

Open
canarybyte wants to merge 1 commit into
mainfrom
feat/seo-result-title-include-model
Open

feat(seo): /r/{job_id} 网页 title 与面包屑加入检测模型#2
canarybyte wants to merge 1 commit into
mainfrom
feat/seo-result-title-include-model

Conversation

@canarybyte
Copy link
Copy Markdown
Owner

背景

每份 `/r/{job_id}` 报告页都是公开 indexable landing page,但当前同一中转站下所有报告共享一个 title:

www.fucheers.top OpenAI 中转站检测:91/100 存在风险 | Veridrop

不同模型的报告(`gpt-5.5` / `gpt-5.4-mini` / `gpt-4o`)title 一字不差,Google 直接判定为重复页去重 → 长尾搜索(「XX 站测 gpt-5.5 怎么样」)全部 sink 到一个 canonical url,索引面塌成一份。

改动

1. Title 注入模型(`web/server.py` `_seo_meta_for_report`)

- {domain} {proto_label} 中转站检测:{score:.0f}/100 {verdict_zh} | Veridrop
+ {domain} {proto_label} 中转站 {model} 检测:{score:.0f}/100 {verdict_zh} | Veridrop

无 model 的边界情况(legacy 报告 / probe 失败)保留原模板,避免出现 "中转站 检测" 双空格痕迹

2. 面包屑末尾段用模型名(`web/templates/result.html`)

- 首页 › 红黑榜 › www.fucheers.top › 报告 #MOd_d0vJ
+ 首页 › 红黑榜 › www.fucheers.top › gpt-5.5

没有 `target_model` 时仍回退到 `报告 #{job_id}`,跟旧报告兼容。

效果

  • 每份报告 title 唯一,Google 视为独立 indexable page
  • og:title 同步带 model,分享卡片直接展示测的是什么模型
  • 面包屑跨报告导航时一眼看出模型,UX 也好

测试

`tests/test_seo_meta.py` 新增 5 个用例:

用例 断言
`test_seo_title_includes_target_model` 标题含 domain + protocol + model + 评分 + 判定
`test_seo_title_falls_back_when_target_model_missing` 空 model 不留双空格痕迹
`test_seo_title_distinct_per_model_same_relay` 同域名不同 model 三种 title 互不相同(SEO 反 dedupe 核心)
`test_seo_title_respects_155_char_cap` 长 dated snapshot 不超 155 字符
`test_seo_description_still_mentions_model` description 仍提及 model(防回归)

完整 248/248 通过。

部署

本 PR 跟 #1 互不冲突,合并顺序无所谓。

之前同一中转站下所有报告共享同一个 title:
  「www.fucheers.top OpenAI 中转站检测:91/100 存在风险 | Veridrop」

不同模型的报告(gpt-5.5 vs gpt-5.4-mini vs gpt-4o)title 一字不差,
Google 直接当成重复页面去重,长尾流量(「XX 站测 gpt-5.5 怎么样」)
全部 sink 到一个 canonical 上,索引面缩成一份。

改动:
- web/server.py _seo_meta_for_report:title 模板插入 target_model
  「{domain} OpenAI 中转站 gpt-5.5 检测:91/100 存在风险 | Veridrop」
  无 model 时退回原文,避免出现 "中转站  检测" 双空格痕迹
- web/templates/result.html 面包屑末尾段:
  从「报告 #{job_id}」改为「{target_model}」
  没有 target_model 时仍回退到「报告 #{job_id}」

效果:
- 每份报告 title 唯一,Google 视为独立 indexable page
- 面包屑文字在跨报告导航时也能立刻看出测的是哪个模型
- 报告分享卡片(og_title 同 seo_title)也直接带模型名

测试:tests/test_seo_meta.py 5 个用例覆盖:
- 标题含 model
- 空 model 回退不留空格痕迹
- 同域名不同 model 标题相互区分(SEO 反 dedupe 核心断言)
- 长 dated snapshot 不超 155 字符
- 描述仍提及 model(防回归)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants