Record verified FNA SEO release and repair health smoke test

This commit is contained in:
Codex 2026-10-31 15:59:07 +08:00
parent 7c11ca77bc
commit fa2bc2dafe
6 changed files with 191 additions and 57 deletions

View File

@ -66,10 +66,12 @@ ## 2 当前文章登记
| cfw-linux-legacy | 211 / Linux | Clash Verge Rev 使用教程:Linux 安装、订阅与代理设置 | `/a/m174.html` | [verge-linux.md](tutorials/verge-linux.md);本地API版本5 | Linux桌面入门;#install 包格式与架构,#import 订阅,#terminal 单条curl代理验证;不适用于无桌面的服务器 | | cfw-linux-legacy | 211 / Linux | Clash Verge Rev 使用教程:Linux 安装、订阅与代理设置 | `/a/m174.html` | [verge-linux.md](tutorials/verge-linux.md);本地API版本5 | Linux桌面入门;#install 包格式与架构,#import 订阅,#terminal 单条curl代理验证;不适用于无桌面的服务器 |
| system-proxy-vs-tun | 365 / 综合教程 | 系统代理和 TUN 有什么区别?接管范围、使用选择与排错 | `/a/system-proxy-vs-tun.html` | [system-proxy-tun.md](tutorials/system-proxy-tun.md);本地API版本1 | 桌面代理接管与出口选择;`#choose` 场景选择、`#switch` 切换检查、`#troubleshoot` 排错;三张流程图 | | system-proxy-vs-tun | 365 / 综合教程 | 系统代理和 TUN 有什么区别?接管范围、使用选择与排错 | `/a/system-proxy-vs-tun.html` | [system-proxy-tun.md](tutorials/system-proxy-tun.md);本地API版本1 | 桌面代理接管与出口选择;`#choose` 场景选择、`#switch` 切换检查、`#troubleshoot` 排错;三张流程图 |
这里只登记长期编辑内容及值得复用的稳定资源说明,不逐条收录日更节点或账号文章。稳定入口为 `/freenode`(公开免费节点)、`/client`(入门)、`/advanced`(综合教程);平台入口和名称修改另按项目路由核对,不从名称自行拼接。 这里只登记长期编辑内容及值得复用的稳定资源说明,不逐条收录日更节点或账号文章。稳定入口为 `/`(当前免费节点)、`/freenode`(历史分享归档)、`/client`(入门)、`/advanced`(综合教程);平台入口和名称修改另按项目路由核对,不从名称自行拼接。
2026-10-29部署边界更新:上表10篇已通过本站API迁移到独立test并经用户确认后切到正式cfn,旧URL保留;生产发布以预览实际正文冻结再发布,未用test整库覆盖。test和生产的临时编辑密钥均在迁移后删除,接口默认关闭;后续本地写作继续使用本地API,正式编辑按明确任务与生产绑定启用。实际部署及验收统一见[发布记录](../maintenance/RELEASE_PREFLIGHT_2026-10-28.md#正式切换2026-10-29),上表ID仍为本地ID。 2026-10-29部署边界更新:上表10篇已通过本站API迁移到独立test并经用户确认后切到正式cfn,旧URL保留;生产发布以预览实际正文冻结再发布,未用test整库覆盖。test和生产的临时编辑密钥均在迁移后删除,接口默认关闭;后续本地写作继续使用本地API,正式编辑按明确任务与生产绑定启用。实际部署及验收统一见[发布记录](../maintenance/RELEASE_PREFLIGHT_2026-10-28.md#正式切换2026-10-29),上表ID仍为本地ID。
2026-10-31 SEO发布后,新稿获取当前免费资源优先链接 `/`;需要历史记录时链接 `/freenode`。下表保留旧文实际内链事实,旧栏目仍正常可用,不因入口规则变化虚报旧文正文已改;后续相关编辑时按内容用途维护。
## 3 已有文章关系 ## 3 已有文章关系
以下为2026-10-28从本地数据库正文提取并核对源文件的**实际内链**,不是建议列表。箭头表示正文中有从来源到目标的链接;入向关系从本表反查,不另存一份容易失步的反向清单。 以下为2026-10-28从本地数据库正文提取并核对源文件的**实际内链**,不是建议列表。箭头表示正文中有从来源到目标的链接;入向关系从本表反查,不另存一份容易失步的反向清单。

View File

@ -7,7 +7,11 @@ # 编辑文章 IndexNow
- `editorial:indexnow-retry`挂接原Laravel调度,每5分钟检查一次,单次最多10个到期回执,防重叠;退避从5分钟递增,最大24小时。定时任务运行在FNA业务服务器,以原nginx身份执行,白色机仅SSH跳板。 - `editorial:indexnow-retry`挂接原Laravel调度,每5分钟检查一次,单次最多10个到期回执,防重叠;退避从5分钟递增,最大24小时。定时任务运行在FNA业务服务器,以原nginx身份执行,白色机仅SSH跳板。
- 已done的通知不重复调用;同一发布UUID重放不重发文章。网络结果未知或提交后进程崩溃可能重复通知同一URL,按至少一次投递处理,不能承诺第三方只收到一次。每次重试都重新确认文章仍公开、栏目启用且可索引。 - 已done的通知不重复调用;同一发布UUID重放不重发文章。网络结果未知或提交后进程崩溃可能重复通知同一URL,按至少一次投递处理,不能承诺第三方只收到一次。每次重试都重新确认文章仍公开、栏目启用且可索引。
- 内容未变、已撤下、不再允许索引时跳过;旧版本中没有IndexNow状态的历史发布回执不自动补推。暂时禁用不会丢弃已pending状态。 - 内容未变、已撤下、不再允许索引时跳过;旧版本中没有IndexNow状态的历史发布回执不自动补推。暂时禁用不会丢弃已pending状态。
- 仅推送同一站点的规范文章地址;app.url、editorial.base_url、app.site_code必须一致,不跟随重定向,不从文章输入指定外部推送目标。 - 仅推送同一站点的规范文章及其相关有效栏目地址;app.url、editorial.base_url、app.site_code必须一致,不跟随重定向,不从文章输入指定外部推送目标。
## SEO整体升级后的现行合同
2026-10-31随 `7c11ca77` 保留原编辑发布回执,并在实质更新通知中追加所属栏目/父栏目;日更资源改为通知稳定首页和栏目,新增持久出站队列及业务服务器重试,取消旧接收器无差别直推快照。首页及9个栏目真实通知返回200,旧回执不变。完整实现、边界及恢复点统一见[SEO实施记录](SEO_IMPLEMENTATION_2026-10-31.md);下面较早发布记录仅描述各自批次。
## 2026-10-31已部署与验证 ## 2026-10-31已部署与验证

View File

@ -2,6 +2,8 @@ # FNA_V3 SEO 实施与发布 · 2026-10-31
用户授权:落实已讨论方案,并全权优化 FNA_V3 SEO。范围为正式 cfn 的增量;开发初始基线 `77f9b09c58b46ef2bbe0882ec89194bf25aa82cd`;上线前发现HN广告并行发布,最终基线改为 `a820755e7e914180178e6928f73d5b42b0b24c86`,4个并行文件均不在本批覆盖范围,经白色机到 VPS-003 `/www/wwwroot/clashfreenode-new.com`。本地隔离工作副本 `output/seo-20261031/stage`。本文件是实现和本批验收唯一正文,36项总状态仍在 [SEO_PLAN](SEO_PLAN.md)。 用户授权:落实已讨论方案,并全权优化 FNA_V3 SEO。范围为正式 cfn 的增量;开发初始基线 `77f9b09c58b46ef2bbe0882ec89194bf25aa82cd`;上线前发现HN广告并行发布,最终基线改为 `a820755e7e914180178e6928f73d5b42b0b24c86`,4个并行文件均不在本批覆盖范围,经白色机到 VPS-003 `/www/wwwroot/clashfreenode-new.com`。本地隔离工作副本 `output/seo-20261031/stage`。本文件是实现和本批验收唯一正文,36项总状态仍在 [SEO_PLAN](SEO_PLAN.md)。
搜索渠道按用户此前与雷欧确认的 Yandex / Bing 优先,保留通用搜索兼容;两者均支持本批采用的规范URL、sitemap与IndexNow。依据:[Bing指南](https://www.bing.com/webmasters/help/webmaster-guidelines-30fba23a)、[Yandex IndexNow](https://www.yandex.com/support/webmaster/en/indexing-options/index-now.html)、[IndexNow协议](https://www.indexnow.org/documentation)(2026-10-31核对)。
## 当前实现 ## 当前实现
- 首页 `/` 使用稳定标题/H1、WebSite、独立 canonical,显示最近可用记录全文及真实记录时间;明确零结果或失败不顶替上次记录,无可展示记录返回503/Retry-After。`/freenode` 是带历史说明的分页归档。旧的 `/?page=N` 定向到对应归档页;首页不是分页第一页。 - 首页 `/` 使用稳定标题/H1、WebSite、独立 canonical,显示最近可用记录全文及真实记录时间;明确零结果或失败不顶替上次记录,无可展示记录返回503/Retry-After。`/freenode` 是带历史说明的分页归档。旧的 `/?page=N` 定向到对应归档页;首页不是分页第一页。
@ -20,9 +22,10 @@ ## 当前实现
## 验证 ## 验证
- 独立SQLite、冻结时钟和HTTP替身,62项业务测试523断言通过,无警告(APP_URL显式提供)。包含原编辑发布/重试、插画交付与独立副本、年度点赞、新URL/可见性/时间/清理/IndexNow合同。未往业务库插入测试文章。 - 独立SQLite、冻结时钟和HTTP替身,62项业务测试523断言通过,无警告(APP_URL显式提供)。包含原编辑发布/重试、插画交付与独立副本、年度点赞、新URL/可见性/时间/清理/IndexNow合同。未往业务库插入测试文章。
- 本地工作区最终整套64项/527断言通过,无警告。旧Laravel示例测试在未建表时访问首页,修正为独立健康入口启动及noindex检查;首页内容已有完整隔离数据测试。生产派生版本原62项/523断言通过,且本地/生产广告差异分别保留。
- Vite正式构建通过;JS gzip约80.25KB,主题CSS gzip141.79KB。仅性能体积基线,不是线上CWV成绩;未重写框架。 - Vite正式构建通过;JS gzip约80.25KB,主题CSS gzip141.79KB。仅性能体积基线,不是线上CWV成绩;未重写框架。
- 临时回环合成数据浏览器:从第2页滚动到第3页,26条且26个唯一ID、末页无next;390/320宽无横向溢出,菜单展开/键盘Escape;禁用JS仍有下一页链接。临时浏览器设置已复原。该验收不是生产页面验收。 - 临时回环合成数据浏览器:从第2页滚动到第3页,26条且26个唯一ID、末页无next;390/320宽无横向溢出,菜单展开/键盘Escape;禁用JS仍有下一页链接。临时浏览器设置已复原。该验收不是生产页面验收。
- 生产验收与精确提交、恢复点见本文件发布记录;尚未发布时不能以以上本地证据代替。 - 本地固定入口 `fna-v3.loc` 首页、免费节点第2页、Windows栏目均200,canonical使用本地域名,非生产统一noindex/nofollow。生产验收与精确提交、恢复点见下节。
## 保留边界与后续证据 ## 保留边界与后续证据
@ -38,4 +41,13 @@ ## 回滚合同
## 发布记录 ## 发布记录
状态:本地实现及验收已完成,正在准备Git发布;尚未切换正式实例。 状态:**本批技术优化已Git提交、推送并部署正式cfn,服务器侧验收通过**。功能提交 `7c11ca77bcad5880ee0d50610f05419d40e18d46`,分支 `codex/fna-seo-20261031`,最终基线 `a820755e7e914180178e6928f73d5b42b0b24c86`;后续只同步本批文档与健康检查测试,不改运行代码。脱敏证据见 [发布回执](SEO_RELEASE_2026-10-31.json)。
- 189篇文章逐项HTTP200、规范地址、index/noindex、Article结构化数据及OG地址通过;全部核心字段、ID、日期、配图和旧编辑发布回执哈希保持。35个sitemap目标逐项200、自引用canonical、index/follow,无重复。原28项中的首页仅统一尾斜杠,原文章地址无移除,新增7个有效栏目。
- 正式首页独立WebSite身份与最近可用文章一致;合法第2页及实际第3页HTML链接通过,非法父路径、无效/越界/重复分页均404。HTTP首页一跳301到HTTPS,HTTPS证书校验成功;XML、robots、CSS/JS状态及MIME通过。只存在已登记主域Nginx server_name,未为验收猜测www别名。
- 编辑公网API保持关闭,调试路由404;原和新增IndexNow调度均在业务服务器存在。2026-10-31 15:52:55北京时间,由新持久队列通知首页及9个栏目共10个URL,回执done、1次、HTTP200;仅证明已接收,不代表已抓取、已收录或排名提升。未修改旧发布回执或补推历史文章。
- 保留刚上线的HN广告调整、生产生成标签模板及data.ms、public/images/editorial并行目录。未改变DNS、邮件、Resource或其他实例;本地保留其DPL/FUC/HN组合广告差异,没有将本地其他未发布修改带上线。
- 第一次切换因验收把首页尾斜杠变化当成URL丢失而自动回滚,已核实只有该等价变化;严格保留其他URL差异检查后再次切换成功。最终维护窗口1.34秒,维护标记已撤。未重启共享FPM,只定点失效本站PHP文件OPcache。
- 私有恢复点:VPS-003 `/root/backups/cfn-seo-20261031/`,包含Git bundle、整库一致性备份、环境、Nginx、旧构建、前后状态、回滚失败原因与实际验收。新增SEO列与出站表为追加迁移,本地171篇原行旧字段保持;生产不回灌整库。
已完成服务器侧验收,未做线上页面验收。搜索平台报告、设备实机和真实用户性能不因这次技术发布自动完成;分项状态在SEO_PLAN。

View File

@ -1,10 +1,10 @@
> 2026-10-31最新状态:已完成本批技术实现和本地验收,正式发布进行中。实现、限制及精确发布证据见 [SEO实施记录](SEO_IMPLEMENTATION_2026-10-31.md)。原审计的“未实施/未发布”仅描述其当时状态。 > 2026-10-31最新状态:本批技术实现已发布正式cfn,189篇服务器侧验收通过、原数据保持;sitemap 35项,IndexNow首页/栏目通知HTTP200。实现、限制及精确发布证据见 [SEO实施记录](SEO_IMPLEMENTATION_2026-10-31.md)。原审计的“未实施/未发布”仅描述其当时状态。
# FNA_V3 SEO 优化建议与执行清单 # FNA_V3 SEO 优化建议与执行清单
评估日期:2026-10-22,Asia/Shanghai。状态:**分析与建议文档已完成;SEO-001 的部署定位已由用户确认,配置改造尚未实施;SEO-020 于2026-10-27完成本地教程正文更新,设备实测及生产验收未做,D02首页最新免费节点全文展示于2026-10-27本地完成,其余项目按分项记录;2026-10-31已发布编辑文章IndexNow通知与两个教程栏目sitemap(见SEO-013/033)**。本文件是后续 SEO 工作的唯一执行清单;按 `SEO-001` 至 `SEO-036` 跟踪,实施后在本文件更新结果,不另建重复的“最新版计划”。 初始评估:2026-10-22,Asia/Shanghai;执行状态更新:2026-10-31。**本批技术优化已正式部署,24项按当前技术范围完成,12项仍有分项或长期证据缺口。** 本文件是唯一执行清单;下方审计证据保留原日期与原采样值,当前状态看第5节和[实施记录](SEO_IMPLEMENTATION_2026-10-31.md),不把旧审计的“未发布”当作当前状态。
本轮依据当前代码、当前本地数据库、重新取得的 HTTP 响应及受限浏览器检查形成结论。网站源码、样式和业务数据未作修改。当前三款 DPL 广告属于已存在的实现,纳入分析基准并保留。网站仍在独立本地副本中开发;用户随后确认未来替换现有 cfn,并支持同一套代码部署多个同类站点,ClashFreeNode 为主力站,尚未实际部署或迁移。 初始审计依据当时本地代码、数据库、HTTP及受限浏览器形成,只读未改站;当时的DPL广告纳入基准。cfn已于2026-10-29正式切换,本批SEO于2026-10-31增量部署,具体上线范围不从初始快照推断。
**最优先的工作是让有价值的内容拥有唯一、稳定、可发现的地址,并让页面真实兑现搜索结果中的承诺。** 当前主要问题集中于重复 URL、分页发现路径、内容生命周期和资源质量;仅增加标题、关键词或结构化数据不能解决这些问题。现有 Laravel Blade 已能在首次 HTML 响应中输出文章正文,没有证据表明必须改用另一套框架或全面重写网站。 **最优先的工作是让有价值的内容拥有唯一、稳定、可发现的地址,并让页面真实兑现搜索结果中的承诺。** 当前主要问题集中于重复 URL、分页发现路径、内容生命周期和资源质量;仅增加标题、关键词或结构化数据不能解决这些问题。现有 Laravel Blade 已能在首次 HTML 响应中输出文章正文,没有证据表明必须改用另一套框架或全面重写网站。
@ -26,9 +26,9 @@ ## 1 如何阅读和执行
证据等级:**已确认**指本轮代码、数据或响应直接支持;**条件性风险**指相关代码存在,但触发条件或生产影响未确认;**策略建议**指需要结合业务取舍决定;**待线上验证**指必须有实际生产环境或搜索平台数据才能判断。 证据等级:**已确认**指本轮代码、数据或响应直接支持;**条件性风险**指相关代码存在,但触发条件或生产影响未确认;**策略建议**指需要结合业务取舍决定;**待线上验证**指必须有实际生产环境或搜索平台数据才能判断。
本报告以 Google 的技术要求为主要参照;通用的 URL、HTTP、内容与内链原则也有助于其他搜索引擎。Bing、百度等渠道的具体投入,应由目标用户和后续数据决定,不能假定它们完全采用相同的收录规则。 2026-10-22审计以Google资料作为技术参考。按用户随后与雷欧明确的实际来源,2026-10-31实施以 **Yandex / Bing** 为主要搜索渠道,兼顾通用抓取与索引规则;使用IndexNow通知,效果核验优先两平台Webmaster报告,不把Google报告当作唯一指标。各平台是否收录与排序分别核实。
## 2 当前状态和核心判断 ## 2 2026-10-22审计基线与判断
### 2.1 检查范围 ### 2.1 检查范围
@ -105,7 +105,7 @@ ## 3 实施前需要确定的产品决策
| D03 日更文章的角色 | 稳定资源入口承接“当前可用”的需求;有独立记录价值的日更页保留,重复或失败记录不争取搜索曝光 | 用户需要可用资源,日期变动本身不是新价值 | 003、017、018 | | D03 日更文章的角色 | 稳定资源入口承接“当前可用”的需求;有独立记录价值的日更页保留,重复或失败记录不争取搜索曝光 | 用户需要可用资源,日期变动本身不是新价值 | 003、017、018 |
| D04 历史内容 | 先按有效性、独立信息、已有流量/外链分类,再决定 index、noindex、合并或删除 | 不批量把 148 篇开放收录,也不机械全删/全跳首页 | 003、018、036 | | D04 历史内容 | 先按有效性、独立信息、已有流量/外链分类,再决定 index、noindex、合并或删除 | 不批量把 148 篇开放收录,也不机械全删/全跳首页 | 003、018、036 |
| D05 标签 | 只培养有独立意图、有可维护内容的标签页;其余可保留浏览功能并 noindex | 25 个标签中存在同义名称和高度重叠文章集合 | 015 | | D05 标签 | 只培养有独立意图、有可维护内容的标签页;其余可保留浏览功能并 noindex | 25 个标签中存在同义名称和高度重叠文章集合 | 015 |
| D06 渠道和目标 | 首先定义有效自然访问和实际使用完成率,Google 为初始技术基线;其他渠道按目标市场补充 | 没有搜索量和 Search Console 数据时不能编造关键词机会或流量预测 | 002、035 | | D06 渠道和目标 | 用户已明确Yandex/Bing为主要来源,按两平台有效自然访问、索引原因与实际使用完成率评估,Google保留通用兼容 | 没有搜索量和 Search Console 数据时不能编造关键词机会或流量预测 | 002、035 |
| D07 样式边界 | 保持既有视觉语言和已批准广告方案;标题语义、链接、数据真实性先行;新增可见信息或调整广告占比单独评审 | SEO 改动不默认授权重设计整站或移除已批准广告 | 010、023、027 | | D07 样式边界 | 保持既有视觉语言和已批准广告方案;标题语义、链接、数据真实性先行;新增可见信息或调整广告占比单独评审 | SEO 改动不默认授权重设计整站或移除已批准广告 | 010、023、027 |
D01 的部署角色已明确。具体生产映射、新增实例清单以及多站相同内容的收录归属仍需在相应实施项确定;不阻塞本地分页、URL 规则和元数据开发。该段为2026-10-22审计历史;2026-10-31用户已授权全面落实,当前发布状态见本批实施记录。 D01 的部署角色已明确。具体生产映射、新增实例清单以及多站相同内容的收录归属仍需在相应实施项确定;不阻塞本地分页、URL 规则和元数据开发。该段为2026-10-22审计历史;2026-10-31用户已授权全面落实,当前发布状态见本批实施记录。
@ -114,7 +114,7 @@ ## 4 建议采用的 URL 与索引规则
### 4.1 页面行为矩阵 ### 4.1 页面行为矩阵
下表为建议合同,实施前与 D02–D05 一起确认。 下表为初始目标合同;2026-10-31已实施部分按第5节及实施记录核验。标签index、历史合并等条件项未自动开启。
| 页面类型 | 建议 HTTP | 抓取与索引 | Canonical | Sitemap | | 页面类型 | 建议 HTTP | 抓取与索引 | Canonical | Sitemap |
| --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- |
@ -172,42 +172,44 @@ ## 5 执行总表
| 完成 | 编号 | 项目 | 优先级 | 主要依赖 | 当前性质 | | 完成 | 编号 | 项目 | 优先级 | 主要依赖 | 当前性质 |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| [~] | SEO-001 | 明确公开身份、主域名和环境边界 | P0 发布前 | D01 | 本地已验收,待本批发布 | | [x] | SEO-001 | 明确公开身份、主域名和环境边界 | P0 发布前 | D01 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-002 | 确定搜索意图、目标用户和效果基线 | P1 | D06 | 按本批记录分项保留证据缺口 | | [~] | SEO-002 | 确定搜索意图、目标用户和效果基线 | P1 | D06 | 页面意图已区分;Yandex/Bing流量基线未取得 |
| [~] | SEO-003 | 确定内容生命周期与索引资格 | P0 策略 | D03、D04 | 本地已验收,待本批发布 | | [x] | SEO-003 | 确定内容生命周期与索引资格 | P0 策略 | D03、D04 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-004 | 统一规范 URL 和历史别名 | P0 | D02 | 本地已验收,待本批发布 | | [x] | SEO-004 | 统一规范 URL 和历史别名 | P0 | D02 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-005 | 修复分页发现与滚动加载 | P0 | 004 | 本地已验收,待本批发布 | | [x] | SEO-005 | 修复分页发现与滚动加载 | P0 | 004 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-006 | 协调 robots、参数和 noindex | P0 | 003、005 | 本地已验收,待本批发布 | | [x] | SEO-006 | 协调 robots、参数和 noindex | P0 | 003、005 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-007 | 修复无效分页、空结果与错误状态 | P0 | 004、005 | 本地已验收,待本批发布 | | [x] | SEO-007 | 修复无效分页、空结果与错误状态 | P0 | 004、005 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-008 | 统一公开可见性与发布时间判断 | P0 发布前 | 003 | 本地已验收,待本批发布 | | [x] | SEO-008 | 统一公开可见性与发布时间判断 | P0 发布前 | 003 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-009 | 修复面包屑和全站内链地址 | P1 | 004 | 本地已验收,待本批发布 | | [x] | SEO-009 | 修复面包屑和全站内链地址 | P1 | 004 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-010 | 分类、标签、搜索的标题与语义层级 | P1 | 001、004 | 本地已验收,待本批发布 | | [x] | SEO-010 | 分类、标签、搜索的标题与语义层级 | P1 | 001、004 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-011 | 生成真实、干净的页面简介 | P1 | 010 | 本地已验收,待本批发布 | | [x] | SEO-011 | 生成真实、干净的页面简介 | P1 | 010 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-012 | 分离真实内容日期并统一时间基准 | P1 | 003 | 本地已验收,待本批发布 | | [x] | SEO-012 | 分离真实内容日期并统一时间基准 | P1 | 003 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-013 | 统一 sitemap 的集合和 lastmod | P1 | 003、004、008、012 | 本地已验收,待本批发布 | | [x] | SEO-013 | 统一 sitemap 的集合和 lastmod | P1 | 003、004、008、012 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-014 | 建立长期内链和内容导航 | P1 | 005、009、018 | 本地已验收,待本批发布 | | [x] | SEO-014 | 建立长期内链和内容导航 | P1 | 005、009、018 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-015 | 整理标签与重复主题页 | P1 | 002、003 | 按本批记录分项保留证据缺口 | | [~] | SEO-015 | 整理标签与重复主题页 | P1 | 002、003 | 普通标签noindex已上线;历史主题合并待流量证据 |
| [~] | SEO-016 | 隔离并同步本站搜索索引 | P1 | 008、032 | 本地已验收,待本批发布 | | [x] | SEO-016 | 隔离并同步本站搜索索引 | P1 | 008、032 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-017 | 建立空资源与检测失败的发布门槛 | P0 内容 | 003 | 按本批记录分项保留证据缺口 | | [~] | SEO-017 | 建立空资源与检测失败的发布门槛 | P0 内容 | 003 | 零结果/失败门槛已上线;上游结构化实测字段待接入 |
| [~] | SEO-018 | 建立稳定资源入口和日更归档策略 | P1 | 002、003、004、017 | 本地已验收,待本批发布 | | [x] | SEO-018 | 建立稳定资源入口和日更归档策略 | P1 | 002、003、004、017 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-019 | 处理真实重复文章与跨平台内容(本地Mac/Linux教程已区分) | P1 | 003、004 | 按本批记录分项保留证据缺口 | | [~] | SEO-019 | 处理真实重复文章与跨平台内容(本地Mac/Linux教程已区分) | P1 | 003、004 | 教程已区分;历史重复组保持,待流量/外链证据 |
| [~] | SEO-020 | 提升客户端教程的任务完成能力(本地全栏目正文完成,实机/生产未验收) | P1 | 002、019 | 按本批记录分项保留证据缺口 | | [~] | SEO-020 | 提升客户端教程的任务完成能力(正文已上线,设备实机未验收) | P1 | 002、019 | 既有教程已上线;客户端实机联网未验收 |
| [~] | SEO-021 | 明确来源、验证和跨站内容差异 | P1 | 017、020 | 按本批记录分项保留证据缺口 | | [~] | SEO-021 | 明确来源、验证和跨站内容差异 | P1 | 017、020 | 时效与来源边界保留;真实资源验证及跨站差异待核实 |
| [~] | SEO-022 | 作者、编辑责任与真实互动数据 | P1 | 001、012 | 按本批记录分项保留证据缺口 | | [~] | SEO-022 | 作者、编辑责任与真实互动数据 | P1 | 001、012 | 不伪造作者或结构化评分;既有点赞按用户规则保留 |
| [~] | SEO-023 | 推广链接、广告与正文体验 | P1 | D07 | 按本批记录分项保留证据缺口 | | [~] | SEO-023 | 推广链接、广告与正文体验 | P1 | D07 | 推广链接sponsored已上线;既有广告保留,完整体验待实测 |
| [~] | SEO-024 | 添加匹配真实内容的结构化数据 | P2 | 009、010、012、022 | 本地已验收,待本批发布 | | [x] | SEO-024 | 添加匹配真实内容的结构化数据 | P2 | 009、010、012、022 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-025 | 修复分享地址和社交预览信息 | P2 | 001、004、011 | 本地已验收,待本批发布 | | [x] | SEO-025 | 修复分享地址和社交预览信息 | P2 | 001、004、011 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-026 | 图片语义、尺寸和加载方式 | P2 | 020、028 | 本地已验收,待本批发布 | | [x] | SEO-026 | 图片语义、尺寸和加载方式 | P2 | 020、028 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-027 | 手机端与无障碍完整验收 | P2 | 005、010 | 按本批记录分项保留证据缺口 | | [~] | SEO-027 | 手机端与无障碍完整验收 | P2 | 005、010 | 320/390及键盘/无JS样本通过;全设备无障碍未覆盖 |
| [~] | SEO-028 | 建立正式构建性能基线并按瓶颈优化 | P2 | 026、027 | 按本批记录分项保留证据缺口 | | [~] | SEO-028 | 建立正式构建性能基线并按瓶颈优化 | P2 | 026、027 | 构建体积基线已建立;真实用户CWV未取得 |
| [~] | SEO-029 | 缓存与发布、撤稿、到期一致性 | P1 启用前 | 003、008、012 | 本地已验收,待本批发布 | | [x] | SEO-029 | 缓存与发布、撤稿、到期一致性 | P1 启用前 | 003、008、012 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-030 | 文章接收、更新与删除的发布合同 | P0 发布前 | 003、008、017、029 | 按本批记录分项保留证据缺口 | | [~] | SEO-030 | 文章接收、更新与删除的发布合同 | P0 发布前 | 003、008、017、029 | 校验、编辑保护和POST点赞已上线;旧入站认证须与master01协同 |
| [~] | SEO-031 | 正式主机、HTTPS 与 HTTP 服务质量 | P0 发布前 | 001、004 | 按本批记录分项保留证据缺口 | | [x] | SEO-031 | 正式主机、HTTPS 与 HTTP 服务质量 | P0 发布前 | 001、004 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-032 | 本地、预发布和生产资源隔离 | P0 发布前 | 001 | 本地已验收,待本批发布 | | [x] | SEO-032 | 本地、预发布和生产资源隔离 | P0 发布前 | 001 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-033 | 规范 IndexNow 及搜索提交 | P2 | 003、004、030、032 | 本地已验收,待本批发布 | | [x] | SEO-033 | 规范 IndexNow 及搜索提交 | P2 | 003、004、030、032 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-034 | SEO 自动回归与数据样例 | P1 | 跟随各批次 | 本地已验收,待本批发布 | | [x] | SEO-034 | SEO 自动回归与数据样例 | P1 | 跟随各批次 | 已发布;本地回归及服务器侧验收通过 |
| [~] | SEO-035 | 搜索平台与业务效果监测 | P1 上线后 | 001、002、036 | 按本批记录分项保留证据缺口 | | [~] | SEO-035 | 搜索平台与业务效果监测 | P1 上线后 | 001、002、036 | 通知回执已上线;Yandex/Bing实际索引和流量报告未取得 |
| [~] | SEO-036 | 发布、迁移、回滚与复核 | P0 发布时 | 前述必需项 | 按本批记录分项保留证据缺口 | | [x] | SEO-036 | 发布、迁移、回滚与复核 | P0 发布时 | 前述必需项 | 已发布;本地回归及服务器侧验收通过 |
本批已完成24项技术范围;12项保留部分验收或长期证据缺口。`[x]`只表示当前明确技术合同已交付,不表示排名、真实收录或所有设备验证通过。搜索改为本站数据库实时查询,未清空共享Meilisearch;整页缓存明确禁用,不再以未来启用缓存为完成条件。
## 6 各项优化的实施说明 ## 6 各项优化的实施说明
@ -227,7 +229,7 @@ ### SEO-001 明确公开身份、主域名和环境边界
多个站点的内容相同与否、是否各自争取独立收录,以及是否有副本归集到主力站,在 SEO-021 明确;“主力站”不自动授权把所有副站 canonical 指向它,也不代表复制内容的各站一定能获得独立搜索曝光。 多个站点的内容相同与否、是否各自争取独立收录,以及是否有副本归集到主力站,在 SEO-021 明确;“主力站”不自动授权把所有副站 canonical 指向它,也不代表复制内容的各站一定能获得独立搜索曝光。
**当前状态:部署定位与主力品牌已确认,配置统一和环境验收尚未实施;未修改代码,未部署。** **2026-10-31状态:** 正式cfn已发布统一配置生成的URL、品牌、schema及环境隔离;本地固定域名noindex,正式域名index。未把其他实例自动切为ClashFreeNode。
### SEO-002 确定搜索意图、目标用户和效果基线 ### SEO-002 确定搜索意图、目标用户和效果基线
@ -557,7 +559,7 @@ ### SEO-035 搜索平台与业务效果监测
**优先级:P1,上线后。** 本轮没有生产搜索数据,不能确认哪些页面已经收录、用户通过哪些查询进入、Google 选择了哪个 canonical,也不能证明某项缺陷已造成多少损失。 **优先级:P1,上线后。** 本轮没有生产搜索数据,不能确认哪些页面已经收录、用户通过哪些查询进入、Google 选择了哪个 canonical,也不能证明某项缺陷已造成多少损失。
获准后配置或核实实际站点的 Search Console;按目标渠道需要补 Bing 等平台。记录 sitemap 处理、页面索引原因、选定 canonical、查询与页面表现、地区/设备、人工处置及安全问题。服务器日志用于区分真实机器人抓取和普通流量;访客分析用于衡量实际使用,不记录订阅密钥、账号或敏感正文。 优先核实实际站点的Yandex Webmaster与Bing Webmaster Tools;Google Search Console作为补充。记录 sitemap 处理、页面索引原因、选定 canonical、查询与页面表现、地区/设备、人工处置及安全问题。服务器日志用于区分真实机器人抓取和普通流量;访客分析用于衡量实际使用,不记录订阅密钥、账号或敏感正文。
**验收:** 有可回溯的发布前基线或新站起始基线;页面类型与业务目标能分组分析;出现错误有明确负责人和处理方式。监测频率和通知自动化另行授权,本报告不创建定时任务。[Search Console 能提供的数据](https://developers.google.com/search/docs/monitor-debug/search-console-start) **验收:** 有可回溯的发布前基线或新站起始基线;页面类型与业务目标能分组分析;出现错误有明确负责人和处理方式。监测频率和通知自动化另行授权,本报告不创建定时任务。[Search Console 能提供的数据](https://developers.google.com/search/docs/monitor-debug/search-console-start)

View File

@ -0,0 +1,117 @@
{
"deployment": {
"base": "a820755e7e914180178e6928f73d5b42b0b24c86",
"commit": "7c11ca77bcad5880ee0d50610f05419d40e18d46",
"branch": "codex/fna-seo-20261031",
"backup_directory": "/root/backups/cfn-seo-20261031",
"pushed": true,
"head": "7c11ca77bcad5880ee0d50610f05419d40e18d46",
"maintenance_seconds": 1.34,
"articles_verified": 189,
"core_preserved": true,
"receipts_preserved": true,
"before_sitemap": 28,
"after_sitemap": 35,
"sitemap_added": [
"https://clashfreenode.com/client/andorid",
"https://clashfreenode.com/client/ios",
"https://clashfreenode.com/client/linux",
"https://clashfreenode.com/client/mac",
"https://clashfreenode.com/client/windows",
"https://clashfreenode.com/freenode",
"https://clashfreenode.com/shadowrocketids"
],
"sitemap_removed": [],
"homepage_trailing_slash_normalized": true,
"canonical_robots_schema_verified": true,
"status": "M resources/views/components/generated-tags-cloud.blade.php\n?? data.ms/\n?? public/images/editorial/",
"server_verification": true,
"browser_production_verification": false
},
"verification": {
"verified_at": "2026-10-31T07:52:55.987543+00:00",
"head": "7c11ca77bcad5880ee0d50610f05419d40e18d46",
"edge": {
"http://clashfreenode.com/": {
"status": 301,
"location": "https://clashfreenode.com/",
"content_type": "text/html",
"tls_verify_result": "0"
},
"https://clashfreenode.com/": {
"status": 200,
"location": null,
"content_type": "text/html; charset=utf-8",
"tls_verify_result": "0"
},
"https://clashfreenode.com/sitemap.xml": {
"status": 200,
"location": null,
"content_type": "application/xml; charset=UTF-8",
"tls_verify_result": "0"
},
"https://clashfreenode.com/robots.txt": {
"status": 200,
"location": null,
"content_type": "text/plain; charset=utf-8",
"tls_verify_result": "0"
},
"https://clashfreenode.com/css/seo.css": {
"status": 200,
"location": null,
"content_type": "text/css",
"tls_verify_result": "0"
}
},
"indexnow": {
"id": 1,
"urls": [
"https://clashfreenode.com/",
"https://clashfreenode.com/freenode",
"https://clashfreenode.com/client",
"https://clashfreenode.com/client/windows",
"https://clashfreenode.com/client/andorid",
"https://clashfreenode.com/client/ios",
"https://clashfreenode.com/client/linux",
"https://clashfreenode.com/client/mac",
"https://clashfreenode.com/shadowrocketids",
"https://clashfreenode.com/advanced"
],
"state": {
"status": "done",
"attempts": 1,
"http_status": 200,
"urls": [
"https://clashfreenode.com/",
"https://clashfreenode.com/freenode",
"https://clashfreenode.com/client",
"https://clashfreenode.com/client/windows",
"https://clashfreenode.com/client/andorid",
"https://clashfreenode.com/client/ios",
"https://clashfreenode.com/client/linux",
"https://clashfreenode.com/client/mac",
"https://clashfreenode.com/shadowrocketids",
"https://clashfreenode.com/advanced"
],
"submitted_at": "2026-10-31T07:52:55+00:00",
"result": "received"
}
},
"nginx_server_names": [
"clashfreenode.com",
"clashfreenode.com"
],
"maintenance_absent": true
},
"local_tests": {
"production_derived_suite": {
"tests": 62,
"assertions": 523
},
"final_workspace_suite": {
"tests": 64,
"assertions": 527
}
},
"production_browser_test": false
}

13
tests/Feature/ExampleTest.php Executable file → Normal file
View File

@ -2,18 +2,15 @@
namespace Tests\Feature; namespace Tests\Feature;
// use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase; use Tests\TestCase;
class ExampleTest extends TestCase class ExampleTest extends TestCase
{ {
/** public function test_health_endpoint_boots_without_content_and_stays_out_of_search(): void
* A basic test example.
*/
public function test_the_application_returns_a_successful_response(): void
{ {
$response = $this->get('/'); // Homepage content has its own fixtures and tests in SeoContractTest.
$this->get('/up')
$response->assertStatus(200); ->assertOk()
->assertHeader('X-Robots-Tag', 'noindex, nofollow');
} }
} }