79 KiB
FNA_V3 SEO 优化建议与执行清单
评估日期:2026-10-22,Asia/Shanghai。状态:分析与建议文档已完成;SEO-001 的部署定位已由用户确认,配置改造尚未实施;SEO-020 于2026-10-27完成本地教程正文更新,设备实测及生产验收未做,D02首页最新免费节点全文展示于2026-10-27本地完成,其余项目尚未实施。本文件是后续 SEO 工作的唯一执行清单;按 SEO-001 至 SEO-036 跟踪,实施后在本文件更新结果,不另建重复的“最新版计划”。
本轮依据当前代码、当前本地数据库、重新取得的 HTTP 响应及受限浏览器检查形成结论。网站源码、样式和业务数据未作修改。当前三款 DPL 广告属于已存在的实现,纳入分析基准并保留。网站仍在独立本地副本中开发;用户随后确认未来替换现有 cfn,并支持同一套代码部署多个同类站点,ClashFreeNode 为主力站,尚未实际部署或迁移。
最优先的工作是让有价值的内容拥有唯一、稳定、可发现的地址,并让页面真实兑现搜索结果中的承诺。 当前主要问题集中于重复 URL、分页发现路径、内容生命周期和资源质量;仅增加标题、关键词或结构化数据不能解决这些问题。现有 Laravel Blade 已能在首次 HTML 响应中输出文章正文,没有证据表明必须改用另一套框架或全面重写网站。
1 如何阅读和执行
- 先看第 2 节的结论与证据,再确定第 3 节的产品决策。
- 第 4 节定义目标 URL 和索引规则;这是实现之间保持一致的依据。
- 第 5 节是总清单,第 6 节给出每一项的具体范围和验收条件。
- 第 7 节规定实施批次,第 8 节是验收矩阵,第 9 节规定发布后的效果观察方法。
- 每项实现都要记录:实际改动、代码验证、本地页面验证、是否发布、线上验证范围。不能把“代码完成”写成“Google 已收录”。
优先级含义:
| 级别 | 含义 |
|---|---|
| P0 | 基础规则冲突,或公开发布前必须解决的风险。标注“发布前”的项目不意味着本地正在发生线上事故 |
| P1 | 影响主题识别、内容价值、内链、索引一致性或长期维护的主要优化 |
| P2 | 在基础和内容就绪后改善展示、体验、效率及分发 |
证据等级:已确认指本轮代码、数据或响应直接支持;条件性风险指相关代码存在,但触发条件或生产影响未确认;策略建议指需要结合业务取舍决定;待线上验证指必须有实际生产环境或搜索平台数据才能判断。
本报告以 Google 的技术要求为主要参照;通用的 URL、HTTP、内容与内链原则也有助于其他搜索引擎。Bing、百度等渠道的具体投入,应由目标用户和后续数据决定,不能假定它们完全采用相同的收录规则。
2 当前状态和核心判断
2.1 检查范围
| 项目 | 本轮范围与结果 |
|---|---|
| 代码 | 当前工作目录 /Users/hellcat/Documents/GemCodes/FNA_V3,包含原有并行修改及广告实现 |
| 数据 | 本机 fna_v3,167 篇文章、8 个分类、25 个标签;业务数据只读 |
| HTTP | 230 个不同的本地地址,覆盖全部文章、全部标签、分类和代表性异常参数;227 个 200、3 个预期 404 |
| 文章索引声明 | 19 篇 index, follow,148 篇 noindex, follow;这是页面声明,不是 Google 实际收录数量 |
| Sitemap | 20 个 URL:主页加 19 篇文章;本轮与文章 noindex 声明无冲突,未包含分类或标签 |
| 浏览器 | 5 组桌面/手机/禁用 JS 检查,另补 3 组 320px 检查;所有非本地网络请求被阻止 |
| 资源和搜索 | 本地 Meilisearch 的只读状态和 ID 对照;未下载在线订阅、未检测节点、未请求线上图片或统计脚本 |
| 线上证据 | 未读取 Search Console、线上抓取日志、真实访问指标、外链或关键词排名,不能据此给出排名或流量损失数值 |
数据采样时应用使用 UTC,数据库 NOW() 使用 UTC+8:分别约为 2026-10-22 05:10 UTC 和 2026-10-22 13:10。计数受时间及后续数据变化影响;实施时应重新计算,不把 19 或 20 写死为测试长期期望值。
2.2 当前值得保留的基础
- 首次响应已有内容。 禁用 JavaScript 后,首页的首批文章仍能显示;文章标题与正文由服务端输出。应在现有渲染方式上补足链接和元数据。
- 真正不存在的对象返回 404。 本轮不存在的文章、分类和标签均返回 404;问题主要是合法分类的错误前缀、分页和搜索边界。
- 文章页有明确 H1,基础语言与 viewport 已设置。 不需要把全部页面基础能力推倒重做。
- 已有 robots、canonical、sitemap 和按内容年龄控制索引的机制。 重点是修正它们之间的规则,不是简单从零叠加另一套。
- DPL 广告已有可见“广告”标识,链接带
sponsored noopener noreferrer。 装饰性标志使用空 alt,且已指定宽高,这是合理做法。 - 本轮受限检查中 320px/390px 代表页面无横向溢出,手机菜单动画完成后正常展开。 这只是本地样本验收,不能替代线上性能、完整无障碍或所有设备验证。
2.3 主要证据
| 证据 | 本轮发现 | 意义及边界 | 对应项目 |
|---|---|---|---|
| E01 | /、/freenode、/wrong/freenode 返回相同列表,各自声明 canonical;/windows、/client/windows、/wrong/windows 也重复 |
路由没有验证父分类。错误路径可扩张出大量有效副本;不能据此声称已遭搜索处罚 | 004、009 |
| E02 | 所有检查到的列表均无普通分页 <a href>;robots 屏蔽所有带 ? 的 URL;第 2 页 canonical 指向第一页 |
内容发现链路与规范化信号同时有缺口 | 005、006 |
| E03 | 从首页沿本轮页面中的实际 HTML 站内链接遍历,只能到达 12 篇文章;19 篇允许索引的文章中有 7 篇未能沿该图到达 | 未把 sitemap、JS 滚动或外链算作 HTML 内链。不是断言搜索引擎绝不可能发现它们 | 005、014 |
| E04 | 浏览器直接进入 /?page=2 后加载下一批,重复追加了第 2 页两篇文章 |
JS 以 loadCount + 2 计算页号,没有从当前 URL 初始化 |
005 |
| E05 | /?page=40、/?page=99 空列表仍为 200/index;page=0、负数、字符串回到首页内容 |
无效分页和空结果的响应策略需明确。合法空搜索并不必须返回 404 | 007 |
| E06 | 首页、各分类、标签、搜索均使用同一站点标题和简介;主页、父分类、标签、搜索缺少内容 H1;Windows 分类 H1 为 windows1 |
不同搜索意图没有得到清楚描述;单独缺 H1 不等于排名惩罚 | 010、011 |
| E07 | 78 篇文章副标题含 HTML;公共布局在所有 meta description 前附加请求当天日期 | 老文章被描述成“今天”的内容,HTML 标签成为摘要字符串的一部分 | 011、012 |
| E08 | 文章面包屑相对链接 client 在文章地址下解析为 /a/client;该地址又被宽松分类路由接受 |
错误内链进一步制造副本 | 009 |
| E09 | 167 篇文章全部发布;分类列表缺少文章状态过滤,文章详情缺少分类状态过滤 | 当前没有草稿,因此未证实已有草稿泄露;未来发布控制边界不一致 | 008 |
| E10 | 78 篇节点文章、82 篇账号文章使用 7 天 noindex;清理命令还定义了 180 天删除 | 这是产品策略,不能直接判错;需要按长期价值与资源有效期决定 | 003、018 |
| E11 | 原始正文 HTML 完全相同的 5 组共 13 篇,包括两个客户端页面;7 篇客户端正文可见文本约 138–355 字 | 重复已经确认;字数只用于描述内容规模,没有最低字数达标线 | 019、020 |
| E12 | 最新连续三篇 fn20261019、fn20261020、fn20261021 的正文及副标题均为 0 个可用节点,标题仍称最新高速免费节点;全库共有 4 篇零节点记录 |
无法仅凭文章判断远端订阅此刻是否真为空;已确认的是发布内容与承诺需要复核 | 017、018 |
| E13 | 本地 articles 搜索索引仅 40 条;Clash 命中 7 条,其 ID 在当前 167 篇文章中全部不存在;页面显示空结果 |
当前应用与搜索索引不匹配。索引实际归属未进一步调查,不得直接清空这个共享名称的索引 | 016 |
| E14 | updated_at 被点赞增减和分类关联更新使用,sitemap 却把它作为 lastmod;存在自动注入点赞逻辑,7 篇还有待注入计数 |
内容日期与互动数据耦合;未启动本地调度,也未确认线上任务当前是否运行 | 012、022、029 |
| E15 | 全部文章未输出 JSON-LD;当前响应中的图片均有 alt 属性,两个导航 logo 未带宽高;列表封面使用 CSS 背景 | 结构化数据是后续增强;不能把装饰图空 alt 当缺陷,也不能把缺宽高直接等同实测 CLS 不合格 | 024、026 |
| E16 | 文章“复制链接”模板写入站点首页;页面品牌文本为 v2rayfreenode,样式/标志使用 cfn/Clash;通用 OG 图为相对地址 |
分享链接存在功能错误;站点身份需统一,但 FNA_V3 内部代号不必作为公开品牌 | 001、025 |
| E17 | 新 DPL 组件链接已带 sponsored;160 篇资源正文中的 fuuu.cloud 链接未带 rel 属性 |
原有正文推广和新广告组件需要分别治理;不能把新广告已经正确理解为所有推广均处理完毕 | 023 |
| E18 | 当前整页缓存关闭;默认配置若启用会缓存 7 天,文章事件仅尝试失效首页 | 当前不是“正在缓存错误内容”的故障;启用前存在过期、撤稿及多入口失效风险 | 029 |
| E19 | 三个文章接收接口在运行时路由表中只有 web 中间件,api/* 排除 CSRF;接收逻辑自动发布并可能调用推送、通知和资源服务 |
应用层缺少已挂载的入站认证,是公开部署前风险。未发送写入请求,未核实生产边缘访问控制 | 030、032 |
2.4 关键因果关系
当前链路是:
内容按天生成 → 标题与正文高度模板化 → 新文章仅有短暂索引窗口
↓
每页只展示 2 条 → 后续页依赖滚动 → 普通链接难以到达较深文章
↓
分页被 robots 屏蔽,canonical 又指回第一页
↓
发现与积累主要依赖 sitemap 和每日新 URL,长期内容资产较弱
这里的判断是技术与内容策略推断,不是对线上 Google 抓取行为的实测描述。167 篇的规模本身不值得优先做复杂“抓取预算”工程;应先消除无限别名、无效分页和低价值重复。
3 实施前需要确定的产品决策
D01、D02 已由用户确认;其余条目仍是建议,未因这些确认而自动获批。
| 决策 | 方案与确认状态 | 为什么 | 影响范围 |
|---|---|---|---|
| D01 上线身份 | 用户已确认:未来替换现有 cfn;同一套代码支持多个同类站点;ClashFreeNode 是主力站,本地继续独立 | 代码共用,实例身份分别配置;主力站升级需要保护现有有效地址,其他站点不能误用其域名和统计 | 001、021、031、032、036 |
| D02 首页和免费节点页 | 2026-10-27用户明确:首页直接展示日期最新的一篇免费节点文章全文;/freenode 保留历史列表。本地已实施,不要求文章必须是当天 |
首页与栏目承担不同展示职能;首页和对应详情的规范地址、索引策略仍在004/018中处理,不把本次功能修改视作SEO全项完成 | 004、010、018 |
| D03 日更文章的角色 | 稳定资源入口承接“当前可用”的需求;有独立记录价值的日更页保留,重复或失败记录不争取搜索曝光 | 用户需要可用资源,日期变动本身不是新价值 | 003、017、018 |
| D04 历史内容 | 先按有效性、独立信息、已有流量/外链分类,再决定 index、noindex、合并或删除 | 不批量把 148 篇开放收录,也不机械全删/全跳首页 | 003、018、036 |
| D05 标签 | 只培养有独立意图、有可维护内容的标签页;其余可保留浏览功能并 noindex | 25 个标签中存在同义名称和高度重叠文章集合 | 015 |
| D06 渠道和目标 | 首先定义有效自然访问和实际使用完成率,Google 为初始技术基线;其他渠道按目标市场补充 | 没有搜索量和 Search Console 数据时不能编造关键词机会或流量预测 | 002、035 |
| D07 样式边界 | 保持既有视觉语言和已批准广告方案;标题语义、链接、数据真实性先行;新增可见信息或调整广告占比单独评审 | SEO 改动不默认授权重设计整站或移除已批准广告 | 010、023、027 |
D01 的部署角色已明确。具体生产映射、新增实例清单以及多站相同内容的收录归属仍需在相应实施项确定;不阻塞本地分页、URL 规则和元数据开发。用户尚未授权本次上线或修改现有 cfn。
4 建议采用的 URL 与索引规则
4.1 页面行为矩阵
下表为建议合同,实施前与 D02–D05 一起确认。
| 页面类型 | 建议 HTTP | 抓取与索引 | Canonical | Sitemap |
|---|---|---|---|---|
| 正式首页/稳定资源入口 | 200 | 可抓取,内容有效时 index | 唯一正式地址 | 是 |
| 有独立价值的分类首页 | 200 | 可抓取,index | 当前规范地址 | 是 |
| 合法第 2 页及以后 | 200 | 可抓取,默认可 index | 含正确 page=N 的本页地址 |
一般依赖顺序内链,不强求列入 |
page=1 |
301 | 收敛到无 page 的第一页 | 目标页输出 | 否 |
| 已知历史分类别名 | 301 | 一跳到等价目标,保留有效页码 | 目标页输出 | 否 |
| 错误父分类、未知 slug | 404 | 不提供可索引替代正文 | 不指向无关首页 | 否 |
| 页码越界/格式无效 | 404,或对明确等价输入做受控 301 | 不返回通用首页 200 | 不伪称与首页等价 | 否 |
| 完整、已发布文章 | 200 | 按内容策略 index | 自身稳定 URL | index 时加入 |
| 有保留价值但不面向搜索的旧记录 | 200 | 可抓取,noindex | 自身地址;不同时强行指定另一 canonical 来表达不同目的 | 否 |
| 已合并且目标真正等价的旧文章 | 301 | 到已选定的主文章 | 目标页输出 | 否 |
| 已删除且无替代内容 | 404 或明确 410 | 不索引 | 不批量跳首页 | 否 |
| 有实际主题价值的标签 | 200 | 可抓取,index | 自身规范地址 | 按维护策略加入 |
| 普通低价值标签/站内搜索 | 200 | 可抓取,noindex | 自身干净地址或不输出,保持统一规则 | 否 |
| 有效搜索词但无匹配 | 200 | noindex,显示真实无结果状态 | 同上 | 否 |
| 搜索服务故障 | 合适的 5xx 或明确降级状态 | 不伪装成“没有内容” | 不作为正常搜索页参与索引 | 否 |
| 草稿/未到发布时间/不可公开对象 | 匿名 404 或访问受控 | 不进入公开列表、搜索和 sitemap | 不公开输出 | 否 |
| 运维、API、测试、点赞等接口 | 按接口协议 | 不作为内容页面发现和索引;访问控制另行实现 | 不输出文章 canonical | 否 |
robots.txt 控制抓取,noindex 控制索引,canonical 表达代表性 URL,这三者各有用途。需要让搜索引擎读取 noindex 时,不能同时以 robots 禁止其访问该页面。Google noindex 说明
4.2 参数和路径规则
page是会改变内容的参数,应保留在分页 canonical 中;utm_*等跟踪参数通常不改变正文,应从 canonical 去掉。- 查询参数要按明确白名单处理。不要为了排除跟踪参数而一并删除页码,也不要放任任意参数生成自指 canonical。
- 分类 URL 由真实分类关系生成;不能只取路径最后一段就当有效分类。
- 文章继续保留
/a/{slug}.html,没有必要为“URL 看起来更 SEO”大规模更换。标签的随机后缀也不是必须去掉的错误。 Andorid应纠正可见名称。若同时把现有andoridslug 改成android,必须安排旧地址映射;名称修正和 URL 迁移应分开验收。- 全站使用同一个 URL 生成入口,供导航、文章卡片、面包屑、canonical、OG、sitemap 和推送共同使用。
重定向、canonical 和 sitemap 应指向同一主地址;canonical 是规范化信号,不是保证搜索引擎一定采纳的命令。Google 规范化说明
4.3 内容模型的最小改造方向
不需要先建一套大型 CMS。先区分下列概念,能用明确的服务或计算属性表达的,不必全部新增数据库字段:
| 概念 | 作用 | 当前对应及缺口 |
|---|---|---|
| 可公开访问 | 发布状态、分类状态、发布时间共同决定 | 当前各查询判断不一致 |
| 可索引 | 在可公开基础上,再考虑质量、过期、重复、明确编辑选择 | 当前主要依赖分类 noindexday |
| 规范 URL | 每个实体唯一地址和有限历史别名 | 当前多处拼接,未验证父路径 |
| 首次发布时间 | 表达首次公开时间 | 不直接把导入时间当原创发布时间 |
| 实质内容更新时间 | 影响可见更新日期、schema、sitemap | 不能继续无条件使用互动也会修改的 updated_at |
| 最后验证时间与状态 | 描述资源/教程的最近实际核验 | 与发布时间、修改时间分开;未知状态不假装已验证 |
| SEO 标题与简介 | 允许重要页面有编辑覆盖,缺省时从内容生成 | 当前列表全局模板,文章副标题混有展示 HTML |
| 来源和内容类型 | 区分资源快照、长期教程、分发内容、原创评测 | 为索引策略和内容模板提供依据 |
“公开”“索引”“资源有效”是三种不同状态。noindex 不能代替权限控制;资源失败也不应自动等同于整篇教程应被删除。
5 执行总表
所有项目当前均未实施。依赖列用于确定顺序,不是要求一次性同时完成全部项目。
| 完成 | 编号 | 项目 | 优先级 | 主要依赖 | 当前性质 |
|---|---|---|---|---|---|
| [ ] | SEO-001 | 明确公开身份、主域名和环境边界 | P0 发布前 | D01 | 部署定位已确认,配置待实施 |
| [ ] | SEO-002 | 确定搜索意图、目标用户和效果基线 | P1 | D06 | 待决策/待数据 |
| [ ] | SEO-003 | 确定内容生命周期与索引资格 | P0 策略 | D03、D04 | 待决策 |
| [ ] | SEO-004 | 统一规范 URL 和历史别名 | P0 | D02 | 已确认 |
| [ ] | SEO-005 | 修复分页发现与滚动加载 | P0 | 004 | 已确认 |
| [ ] | SEO-006 | 协调 robots、参数和 noindex | P0 | 003、005 | 已确认 |
| [ ] | SEO-007 | 修复无效分页、空结果与错误状态 | P0 | 004、005 | 已确认 |
| [ ] | SEO-008 | 统一公开可见性与发布时间判断 | P0 发布前 | 003 | 条件性风险 |
| [ ] | SEO-009 | 修复面包屑和全站内链地址 | P1 | 004 | 已确认 |
| [ ] | SEO-010 | 分类、标签、搜索的标题与语义层级 | P1 | 001、004 | 已确认 |
| [ ] | SEO-011 | 生成真实、干净的页面简介 | P1 | 010 | 已确认 |
| [ ] | SEO-012 | 分离真实内容日期并统一时间基准 | P1 | 003 | 已确认/条件性风险 |
| [ ] | SEO-013 | 统一 sitemap 的集合和 lastmod | P1 | 003、004、008、012 | 已确认 |
| [ ] | SEO-014 | 建立长期内链和内容导航 | P1 | 005、009、018 | 已确认/策略建议 |
| [ ] | SEO-015 | 整理标签与重复主题页 | P1 | 002、003 | 策略建议 |
| [ ] | SEO-016 | 隔离并同步本站搜索索引 | P1 | 008、032 | 已确认 |
| [ ] | SEO-017 | 建立空资源与检测失败的发布门槛 | P0 内容 | 003 | 已确认/待上游核实 |
| [ ] | SEO-018 | 建立稳定资源入口和日更归档策略 | P1 | 002、003、004、017 | 策略建议 |
| [~] | SEO-019 | 处理真实重复文章与跨平台内容(本地Mac/Linux教程已区分) | P1 | 003、004 | 已确认 |
| [~] | SEO-020 | 提升客户端教程的任务完成能力(本地全栏目正文完成,实机/生产未验收) | P1 | 002、019 | 已确认/内容建议 |
| [ ] | SEO-021 | 明确来源、验证和跨站内容差异 | P1 | 017、020 | 策略建议 |
| [ ] | SEO-022 | 作者、编辑责任与真实互动数据 | P1 | 001、012 | 已确认/策略建议 |
| [ ] | SEO-023 | 推广链接、广告与正文体验 | P1 | D07 | 部分已具备,仍有缺口 |
| [ ] | SEO-024 | 添加匹配真实内容的结构化数据 | P2 | 009、010、012、022 | 增强项 |
| [ ] | SEO-025 | 修复分享地址和社交预览信息 | P2 | 001、004、011 | 已确认 |
| [ ] | SEO-026 | 图片语义、尺寸和加载方式 | P2 | 020、028 | 已确认/待测量 |
| [ ] | SEO-027 | 手机端与无障碍完整验收 | P2 | 005、010 | 部分样本通过 |
| [ ] | SEO-028 | 建立正式构建性能基线并按瓶颈优化 | P2 | 026、027 | 待测量 |
| [ ] | SEO-029 | 缓存与发布、撤稿、到期一致性 | P1 启用前 | 003、008、012 | 条件性风险 |
| [ ] | SEO-030 | 文章接收、更新与删除的发布合同 | P0 发布前 | 003、008、017、029 | 已确认/条件性风险 |
| [ ] | SEO-031 | 正式主机、HTTPS 与 HTTP 服务质量 | P0 发布前 | 001、004 | 待部署验证 |
| [ ] | SEO-032 | 本地、预发布和生产资源隔离 | P0 发布前 | 001 | 已确认/条件性风险 |
| [ ] | SEO-033 | 规范 IndexNow 及搜索提交 | P2 | 003、004、030、032 | 已确认/待部署验证 |
| [ ] | SEO-034 | SEO 自动回归与数据样例 | P1 | 跟随各批次 | 当前测试缺口 |
| [ ] | SEO-035 | 搜索平台与业务效果监测 | P1 上线后 | 001、002、036 | 待线上数据 |
| [ ] | SEO-036 | 发布、迁移、回滚与复核 | P0 发布时 | 前述必需项 | 待发布授权 |
6 各项优化的实施说明
SEO-001 明确公开身份、主域名和环境边界
优先级:P0,正式发布前。 当前 FNA_V3 是内部项目名,界面标志体现 Clash FreeNode,app.name 却是 v2rayfreenode,底层站点代码为 cfn。根环境文件保留 fn-b.loc,本轮 PHP 服务用启动参数将实际 APP_URL 设为本地 8103,因此本轮页面并没有错误指向旧域名。
建议明确公开品牌、正式主机、是否接替 cfn,以及各环境允许生成的 URL。品牌名称、首页标题、logo alt、作者/发布者、WebSite 数据、分享卡片与统计应使用一致配置。不要把“FNA_V3”自动展示成用户品牌,也不要仅因本地克隆而对原站做跨域 canonical。
实施范围: 站点配置、公共布局、环境部署检查;生产域名最终确定后再完成真实映射。
验收: 本地只生成本地内容 URL;预发布具有明确防索引措施;生产只生成获准主域 URL;页面身份不再同时混用互不一致的站名。替站或新站的决定记录在 D01。
用户已确认的方向: FNA_V3 以后替换现有 cfn;同一套代码可能部署多个同类网站;ClashFreeNode 是主力站。FNA_V3 继续作为内部项目名,不据此更改其他网站的公开品牌。
据此收敛的实施方案: 共用代码,以每个部署实例的配置提供站点标识、公开名称、主域、标题与简介、logo、发布者、统计和搜索提交身份;不要把 ClashFreeNode 的域名和品牌写死到所有部署。各实例的数据、搜索、缓存、会话及外部发送边界在 SEO-032 核实。ClashFreeNode 的有效旧文章地址优先保留,真正需要变更的地址才建立逐条迁移映射。
多个站点的内容相同与否、是否各自争取独立收录,以及是否有副本归集到主力站,在 SEO-021 明确;“主力站”不自动授权把所有副站 canonical 指向它,也不代表复制内容的各站一定能获得独立搜索曝光。
当前状态:部署定位与主力品牌已确认,配置统一和环境验收尚未实施;未修改代码,未部署。
SEO-002 确定搜索意图、目标用户和效果基线
优先级:P1。 当前站点混合“今天找可用资源”“选择客户端”“查安装使用方法”“获取账号资源”四类需求。它们不应都用一段“免费节点每天更新”的文案承接。
先建立意图到页面的映射:即时资源由稳定入口承接,软件选型由客户端分类承接,具体操作由教程承接,日更历史由归档承接。关键词应从真实用户用语、站内搜索和获得授权后的搜索平台数据提炼,不预设“某词一定有高搜索量”。中文简体是当前内容语言;没有多语言版本时不添加虚假的 hreflang。
实施范围: 内容规划、指标定义,后续关联 SEO-035。
验收: 每类目标页面能回答“谁搜什么、进来要完成什么、本站有什么独立帮助”。指标至少包含非品牌自然点击、合格页面收录状况,以及不含秘密的实际资源使用事件。没有流量数据的字段保持待采集。
SEO-003 确定内容生命周期与索引资格
优先级:P0 策略前置。 160 篇资源类文章采用 7 天 noindex,另有 180 天删除命令;这些规则与长期教程应分开。当前 148 篇不索引并不能证明策略错误,也不能证明其余 19 篇都是值得排名的页面。
建议将“可公开”“可索引”“已验证可用”“仅供历史记录”拆开判断。资源检测失败、真实检测为零、已过期、正文重复、仍有独立知识价值,应有不同处理。生命周期规则由一个入口计算,供详情、列表、搜索、sitemap、缓存与推送共同调用。
实施范围: 内容策略与发布资格服务;只有确认缺少必要信息时再增字段。
验收: 对新发布、过期、失败、永久教程、隐藏分类、未来发布和合并内容各有明确行为。时间边界冻结测试覆盖到期前后。先记录策略理由,再处理历史数据;不因想增加 URL 数量而批量解除 noindex。
SEO-004 统一规范 URL 和历史别名
优先级:P0。证据:E01。 当前控制器只取第二段或第一段 slug,未核实路径关系,导致 /wrong/windows 也能成为 Windows 分类页。布局再用 url()->current() 为每个副本生成 canonical。
建立唯一 URL 生成方法和受控别名表。正式分类路径要么统一平级,要么统一真实父子路径;本项目导航已经使用 /client/windows,因此建议沿用该层级,并将真正已使用的平级旧入口映射过去。错误任意前缀返回 404。主页与 freenode 根据 D02 选择,避免循环跳转。不要为无效前缀批量建立重定向规则。
实施范围: 路由、Web 控制器、URL 生成方法、布局及后续调用方。
验收: /wrong/windows、/wrong/freenode 为 404;已认可别名一跳到唯一 200 目标;所有内链与 canonical 一致;跟踪参数不产生新主地址;必要分页参数在跳转后仍指向对应内容。旧文章 /a/...html 保持稳定。
SEO-005 修复分页发现与滚动加载
优先级:P0。证据:E02–E04。 当前每页 2 条,78 篇节点文章形成 39 页;HTML 中没有下一页链接。直接进入第 2 页再加载,当前浏览器已复现重复内容。
保留滚动加载作为交互增强,同时服务端输出普通的下一页、上一页及适当的分页导航。第 N 页必须可独立打开,canonical 保留正确页码。JS 从当前页或服务端下一页链接初始化,最后一页明确停止;验证置顶和相同创建时间下的排序稳定性,必要时追加 id 排序。数据不断新增时也要定义跨页重复的容忍或去重规则。
每页条数建议先以 10–20 条作为项目试验区间,结合页面重量和可读性决定;这不是搜索引擎规定的数值。可以保持现有卡片视觉样式。
实施范围: 文章查询、列表模板、分页组件、滚动 JS。
验收: 无 JS 时可从首页沿链接到达所有应公开浏览的记录;第 2 页继续加载取得第 3 页;末页停止;刷新与后退后内容页码一致;所有有效分页自指 canonical。
Google 明确建议顺序可抓取链接、独立分页 URL 和分页自身 canonical;同一分页序列允许使用相同标题与简介,不必为此制造不同文案。Google 分页指南
SEO-006 协调 robots、参数和 noindex
优先级:P0。证据:E02。 Disallow: /*?* 同时拦住有效分页和跟踪参数。只改 canonical 或只加分页按钮都会留下规则冲突。
按参数语义制定策略:合法 page 可抓取;跟踪参数归一;不需要搜索曝光的站内搜索及低价值集合用 noindex。保留真实私有/非内容路径的抓取限制,但不能把 robots 当认证。/storage/ 是否可屏蔽,应先核实是否承载公开文章图片;当前外部资源主机的 robots 需要在部署阶段分别核实。
实施范围: RobotsController、页面索引策略、参数规范化。
验收: 测试 ?page=2、?page=2&utm_source=x、搜索地址、静态 CSS/JS/图片和非内容接口;确认 crawler 能读取需要生效的 noindex,且关键渲染资产不被误封。与 SEO-005 同一批验收,不留下临时相互冲突状态。
SEO-007 修复无效分页、空结果与错误状态
优先级:P0。证据:E05。 当前超出末页仍给出“没有任何东西”的 200 页面,容易形成低信息量 URL 和 soft 404 风险;是否已被 Google 判为 soft 404 未知。
明确:超界页码应返回 404;非法数字格式使用严格校验;page=1 可规范跳转至第一页。合法的站内搜索无结果应保持正常搜索语义和 noindex,而非一律 404。分类真的为空时,依据其是否提供独立介绍决定保留有价值的 200 页还是停止公开。服务故障不能伪装成成功空列表。
验收: page=0/-1/abc/极大值 有确定行为;正常末页仍 200;下一页明确结束;三个不存在对象继续 404;错误模板不包含会误导搜索引擎的正文 canonical。临时维护采用合适的 503,而非把维护提示返回 200。Google HTTP 状态说明
SEO-008 统一公开可见性与发布时间判断
优先级:P0,公开发布前。证据:E09。 分类列表没有筛选 iStatus=1;标签筛选文章状态但未完整检查分类;详情也未排除不可公开分类。当前样本没有草稿,不应报告成已发生泄露。
建立统一公开查询条件:文章已发布、达到公开时间、所属分类及必要父分类可见。详情、分类、标签、搜索、推荐、sitemap 都复用。索引资格在公开资格之上计算;noindex 内容仍可在业务允许的公开列表中浏览,不要误当隐藏。
实施范围: 文章查询 scope/策略、搜索索引筛选、推荐集合。
验收: 在独立测试数据库放置发布、草稿、未来文章、隐藏子分类、隐藏父分类五类数据;逐个入口验证。不能通过向当前线上导入库插入测试草稿来验收。
SEO-009 修复面包屑和全站内链地址
优先级:P1。证据:E08。 文章中的 href="client"、href="windows" 解析为 /a/client、/a/windows;文章卡片分类地址又与导航的层级地址不同。
面包屑、卡片分类、导航、标签与推荐链接统一调用 SEO-004 的生成方法,使用可解析的根路径或完整绝对 URL。保留清楚的锚文本;修正 rel"rag" 的 HTML 拼写,避免把它当成具有 SEO 含义的属性。手机端如继续隐藏视觉面包屑,正文内仍应有可用的所属主题入口。
验收: 从文章页、分页、标签页打开所有内部导航不再产生 /a/分类 或未经认可的父路径;链接不经多跳;锚文本与目标内容一致。后续 BreadcrumbList 使用同一份面包屑数据。
SEO-010 分类、标签、搜索的标题与语义层级
优先级:P1。证据:E06。 不同类型页面共用站级标题,分类名称和标签主题没有进入页面元信息;Windows 的 H1 用 slug 和当前页数量拼成 windows1。
建立页面类型模板,同时允许关键页面人工覆盖。建议示意:
| 页面 | 标题示例,品牌待 D01 确定 | H1 内容 |
|---|---|---|
| 稳定节点入口 | 当前免费节点与订阅使用说明 · 品牌 | 当前免费节点与使用说明 |
| 客户端父分类 | 代理客户端选择与使用指南 · 品牌 | 客户端选择与使用指南 |
| Windows 分类 | Windows 代理客户端与安装指南 · 品牌 | Windows 客户端 |
| 有价值的标签专题 | Clash 使用与订阅排错 · 品牌 | Clash 使用与订阅排错 |
| 搜索 | “Clash”的站内搜索结果 · 品牌 | 搜索结果:Clash |
| 文章 | 准确的文章主题 · 品牌,按需加入有意义的分类 | 文章主题 |
这些示例是方向,不应在内容尚未具备时直接承诺有完整指南。列表卡片的 .h5 类不会自动形成标题语义,可以在保留样式的同时使用合理的 H2/H3。每页推荐一个主要 H1;不把 H1 数量当机械排名公式,也不为不同日期堆砌同一串软件名称。
验收: 首页、每个分类、标签和搜索各自反映主题;HTML 标题正确转义;页面可见主标题和标题标签一致;没有空标题、调试计数或 slug 代替正式名称。Google 会自行生成展示标题,不能保证逐字采用。Google 标题说明
SEO-011 生成真实、干净的页面简介
优先级:P1。证据:E07。 页面简介和展示副标题应分开:展示文本可以包含强调样式,meta description 应为清洗后的纯文本。当前 78 篇副标题带 HTML,直接进入 description。
移除无条件“今天”前缀;按页面主题生成自然摘要,解码实体、去标签、规范空白、正确转义。重要文章允许编辑覆盖,其他页面采用可靠的内容摘要。正文资源数为零或未知时,简介不能继续暗示已提供一批可用资源。搜索页可显示搜索词和结果范围,但仍 noindex。
验收: 抽查新旧资源、教程、分类和含引号/实体的内容;简介不含 <b>、换行碎片或错误日期,与实际内容一致。Google 可能改用正文片段,且没有保证展示完整内容的固定字符上限;不以“必须 160 字符”等规则作为硬验收。Google 摘要说明
SEO-012 分离真实内容日期并统一时间基准
优先级:P1。证据:E07、E14。 当前更新时间混有点赞和分类关联变化;公共模板把当天日期加到老文章摘要;可见相对日期和 sitemap 日期也没有统一的编辑语义。
区分首次公开、实质内容更新、最近资源验证和互动变化。先核对导入历史时间的真实时区语义,再确定存储、应用、数据库及展示约定;不能直接把所有历史时间统一加减八小时。索引截止时间应由应用计算后传入查询,或确保数据库与应用同一时基,避免 PHP now() 和 SQL NOW() 使用不同基准。建议以不可变日期对象计算到期时间。
实施范围: 日期字段/服务、详情与列表 <time datetime>、sitemap、后续 schema。旧数据没有可靠编辑时间时可保留未知或暂不输出 lastmod,不伪造。
验收: 用户点赞不改变内容修改日期;实质编辑后可见日期、schema 和 sitemap 一致;新建、导入、跨日、到期边界和夏令时/时区转换有可复现测试。当前样本 sitemap 与 noindex 恰好一致,不能因此忽略八小时时基差异的边界风险。Google 日期说明
SEO-013 统一 sitemap 的集合和 lastmod
优先级:P1。证据:E10、E14。 目前 XML 可解析,且本次 20 个地址均与当前文章索引声明匹配;缺口是有价值的分类页未列入,以及 lastmod 语义不可靠。
从统一公开与索引策略生成 sitemap,只包含规范、200、可索引的内容 URL。加入确定要培养的分类和标签专题,排除搜索、别名、过期 noindex、草稿及错误页。lastmod 只在可证明的实质变化后更新;必要时暂不输出。167 篇规模不必急着拆多级 sitemap,达到数量或管理需求再扩展。
验收: XML 解析、URL 编码、正式 host、状态、canonical、robots、noindex 做交叉校验;新增/撤稿/到期后集合及时变化;集合差异有可解释原因。Google 忽略 priority 与 changefreq,不应将调大这些数字作为优化工作。Google sitemap 指南
SEO-014 建立长期内链和内容导航
优先级:P1。证据:E03。 当前资源发现主要依赖列表首屏和“点赞活跃”;动态热门榜并不保证重要教程或可索引资源长期获得入口。
先修复分页,再给重要教程、平台分类及稳定资源页设置持久入口。文章结尾优先提供真正相关的“下一步”:导入订阅、选择客户端、连接失败排查,避免只推荐同一天的相似文章。资源归档应按有用的时间或主题导航,不要为每一天、每个软件、每个地区组合自动扩张空薄页面。
验收: 从首页的实际 <a href> 图可到达全部计划索引页面;关键长期页面以项目目标控制在约 3 次点击内,较深历史归档通过顺序分页可达。此深度是维护目标而非 Google 强制阈值。允许索引页面没有仅靠 sitemap 存在的孤立记录。Google 链接建议
SEO-015 整理标签与重复主题页
优先级:P1。 当前 25 个标签全部有文章,但“有文章”并不等于值得成为独立搜索落地页。例如“免费苹果账号”“小火箭”“shadowrocket id”“小火箭账号”等各有 82 篇记录;需要比较真实文章集合与意图,不能只按名称合并。
将标签分为有独立主题的编辑专题、站内浏览标签、应合并的同义标签。有价值的专题应有清楚简介和精选内容;仅重复列出相同文章的浏览标签可 noindex。对已有流量/外链的标签保留映射。标签后缀随机并不构成必须迁移的 SEO 问题。
验收: 有一份标签去留决策,记录合并理由和目标地址;站内浏览功能可用;规范化、索引规则与 sitemap 一致;不自动生成大量“客户端 × 日期 × 地区”的近似专题。
SEO-016 隔离并同步本站搜索索引
优先级:P1。证据:E13。 本轮已核实 Meilisearch 可用,问题并非“服务一定没启动”:索引含 40 条文档,Clash 命中 7 条,但这些 ID 不存在于本库。当前 Articles::searchableAs() 固定返回 articles,只改数据库名称或仅设置一个未被该方法采用的前缀,不足以保证隔离。
给 FNA_V3 分配专属索引名或专属实例,按本站公开资格导入;清理只作用于本站索引。校验排序、可过滤字段、同步时机以及更新/撤稿/分类隐藏后索引变化。索引命中应结合当前数据库权限重新确认。搜索入口应有服务端 GET 表单处理;目前无 JS 时 /?s=Clash 仍显示首页。
验收: 新索引所有 ID 与本站一致;Clash 和中文节点词能返回真实匹配;无匹配、后端故障和权限变化各有正确状态;FN_B 或其他索引未变化。当前通用 articles 索引不得未经归属核实直接删除或重建。
SEO-017 建立空资源与检测失败的发布门槛
优先级:P0 内容。证据:E12。 连续三篇最新文章显示 0 个可用节点,却仍沿用“最新高速”标题。问题并非必须禁止所有零结果页面,而是发布内容必须准确反映实际检查结果,且不能把系统故障包装成有效更新。
接收结构化的 检查状态、检查时间、有效数量、失败原因类别、资源版本,不要只解析标题字符串决定是否发布。明确区分:没有执行检查、检查失败、检查完成且为零、检查完成且有有效资源。失败时保留上次有效记录并标明时效,或提供真实的状态说明;不生成伪装成成功的新索引页面。对旧资源做可用性提醒,不能保证“永久高速”“全地区可用”。
实施范围: FNA_V3 接收端的校验和发布策略;上游 NodeHub/SubCheck 的字段或检测变更要在对应项目单独授权和验收,本计划不自动修改它们。
验收: 用无真实订阅的固定样例覆盖四种状态;页面标题、数量、可见说明、索引资格和 sitemap 一致。真实检查数据缺失时展示未知,不把 0 和未知混为一谈。先核实本轮零记录成因,再决定是否处理历史文章。
SEO-018 建立稳定资源入口和日更归档策略
优先级:P1。 建议为“现在能用什么、如何使用”提供一个稳定且持续维护的地址,将日期快照作为支持信息。稳定入口显示最近有效结果、验证时间、适用客户端、导入说明和常见失败处理;用户不必每天重新找到另一个日期 URL。
日更页分三类处理:有独立验证记录或重要变化的可以保留索引;仅重复模板、没有新信息的保留浏览但不争取索引;已经失效且没有历史价值的按策略退出。七天窗口可以作为资源风险管理的一部分,但不应无差别决定所有内容的长期价值。180 天清理也需服从保存、合并、删除合同。
实施范围: 稳定资源页内容、日更模板和归档策略;尽量复用现有视觉组件。禁止把所有历史日期页统一跳转到今天而忽略是否等价。
验收: 稳定入口即使某天检查失败仍能如实解释状态;日更页有明确的历史身份并能返回当前资源入口;长期教程不因资源窗口到期被误关索引;历史页去留有理由和恢复记录。
SEO-019 处理真实重复文章与跨平台内容
实施进展(2026-10-27): 原重复组5的m173、m174已保留URL并分别重写为Mac与Linux桌面教程,平台安装和排错步骤不同,本地API版本1。原重复组1—4未处理;下表保留审计时的证据,不代表当前仍有五组重复。
优先级:P1。证据:E11。 本轮发现 5 组原始正文 HTML 完全相同,合计 13 篇:
| 重复组 | 文章 slug |
|---|---|
| 1 | ssi20260922、ssi20260907、ssi20260906 |
| 2 | ssi20260909、ssi20260908 |
| 3 | ssi20260827、ssi20260826、ssi20260825、ssi20260824 |
| 4 | ssi20260823、ssi20260822 |
| 5 | m174、m173 |
重复正文不代表整个页面完全相同:标题、日期、分类等仍可能不同。m167 与 m173/m174 标题也相同,但正文并非全部逐字相同。应检查任务意图:如果是同一份跨平台说明,选一个主文,其他真正等价页面合并;若 Windows、macOS、Linux 各有独立安装、权限和排错步骤,则补成不同页面。
验收: 每个重复组有“保留独立/合并/历史 noindex”的理由;已认可合并使用一跳映射、更新内链和 sitemap;不能仅根据哈希自动删除。主文选择要考虑现有 URL 和后续获得的流量/外链证据,不能只认数字最小的一篇。
SEO-020 提升客户端教程的任务完成能力
实施状态(2026-10-27):本地正文更新完成,设备实测及生产验收未做。 “客户端”已改为“入门教程”并保留/client,迁移文m167归入进阶,与DNS专题并列。原七篇旧教程全部处理,另有Windows纯入门和DNS新文,共九篇;Android分别为v2rayNG和Clash Meta,iOS聚焦Quantumult X,Mac拆为选型下载与操作,Linux按桌面发行版和终端代理单独组织。四篇最后更新均经本地API版本1发布,当前完整版本与实际关联以写作索引为准。来源、图解、目录、内链锚点、1360/390页面及栏目已核对;未做平台客户端真机联网测试、提交或生产发布。因此保持部分验收状态,不把文章页面检查写成设备操作成功。内容源、证据与回退见教程栏目维护。
优先级:P1。 2026-10-22审计时,7 篇客户端正文约 138–355 字,多为简短介绍和项目/下载链接。字数本身不是问题;从实际内容看,很多安装、导入和排错步骤仍需要用户到别处寻找。
逐篇按用户任务补充:支持的平台与当前核实版本、官方项目与下载来源、安装前提、订阅导入步骤、正常工作的可见验证方式、常见错误与处理、维护状态、最后核验时间和必要截图。只有确实执行过才写“实测”;未核实的软件更新状态和下载安全性应明确待核实,不能根据旧文章继续承诺兼容性。
优先完善已存在的少数教程,再考虑新增。避免为了覆盖关键词而自动生成一套只有平台名称不同的文章;也不使用目标字数或重复问答堆篇幅。
验收: 一位目标平台新用户可按文档完成指定任务;链接来源、版本和步骤有核验记录;每篇明确自己解决的问题;内容与标题、摘要、schema 一致。Google 对有帮助内容强调实质价值和真实经验,而不是固定篇幅。Google 内容质量指南
SEO-021 明确来源、验证和跨站内容差异
优先级:P1。 代码和项目关系显示文章可由上游分发。分发本身不等于垃圾内容,但如果多个站点只更换域名、日期或少量词语而重复发布,会缺乏独立价值。
记录资源来源类型、验证方法和时间、本站新增的信息。长期教程优先增加真实操作、限制条件和本地用户的具体问题;引用第三方内容时核实出处和使用许可。避免把免费资源数量、覆盖地区或速度当成未经测试的质量承诺。新站是否与原站同时提供相同完整内容,应随 D01 明确,不能默认复制站自然拥有独立排名价值。
验收: 每种内容模板能说明本站贡献;核心承诺能追溯到证据;发布失败不会换个日期再次生成看似新内容。Google 针对的是以操纵排名为目的、大规模产生低价值内容的行为,不能仅因自动化就认定违规,也不能声称本站已受处罚。Google 垃圾内容政策
SEO-022 作者、编辑责任与真实互动数据
优先级:P1。证据:E14、E16。 当前作者位置显示站点名并链接首页,未见独立的作者/编辑说明入口;代码还有自动注入点赞的功能,不能将这些计数当成真实用户评价或用于评分标记。
根据实际运营情况提供关于本站、联系/反馈、编辑与验证方法、推广关系说明。可以使用真实的团队或组织身份,不必虚构专家、头像、资历或个人作者。对于非真实点赞,建议停止将其表示为真实用户反馈,或明确改为站内推荐分;最终方案作为业务决策,不在本轮擅自清空计数或停任务。
验收: 作者/发布者可辨认且有有效说明入口;相关主张真实;“最近更新”不由互动驱动;没有把自动点赞包装为 AggregateRating 或用户评论。关于页是信任信息的一部分,不是添加后就获得某个 E-E-A-T 分数的按钮。
SEO-023 推广链接、广告与正文体验
优先级:P1。证据:E17。 新 DPL 组件已有广告标识和 sponsored,应保留。仍需核实 160 篇正文中旧 fuuu.cloud 链接的商业性质:属于推广/付费推荐的应正确标记;一般编辑引用无需一律 nofollow。
检查广告不会伪装成下载按钮,不遮挡主要内容,不导致布局突然移动。当前 390px 样本中首页首批文章约在 y=438px,Windows 分类第一张文章卡片约在 y=695px;这表明分类页广告加大图占用了较多首屏,但不是已确认的搜索处罚。先观察真实使用任务和性能,再决定是否在保持品牌样式下调整间距、信息密度或顺序;三款已批准广告不因这份建议自动撤掉。
验收: 组件广告与正文推广分开检查;需要 sponsored 的链接全部正确;主任务可识别、可完成;手机无误触和遮挡;广告尺寸预留稳定。Google 建议用 sponsored 标记广告或付费链接。Google 外链属性说明
SEO-024 添加匹配真实内容的结构化数据
优先级:P2。证据:E15。 当前没有 JSON-LD,已有面包屑 itemprop 又缺少完整的结构。建议基础规则和日期修正后再添加:
- 首页:真实的 WebSite 名称和 URL;组织资料真实、完整时再加入 Organization。
- 正文:适合文章内容的 Article 或 BlogPosting,包含准确主题、规范 URL、真实作者/团队、相关图片、首次发布和实质更新时间。
- 内容层级:BreadcrumbList,采用与可见面包屑一致的名称和 URL。
- 普通分类可以使用语义合适的 CollectionPage/ItemList,但不把它们宣传为必然出现的 Google 富结果功能。
验收: JSON 可解析且正确转义;数据与用户可见内容一致;URL、日期、作者、图片能验证。Article 与 Breadcrumb 使用支持的富结果验证方式;WebSite 站点名称使用 schema 验证及后续搜索平台检查,不能要求 Rich Results Test 必须展示一个它不支持的站点名称结果。禁止虚构评分、作者或把资源页假装成新闻/商品。
这些标记能帮助理解及获得适用展示资格,但不保证富结果或排名改善。Article、Breadcrumb、站点名称、结构化数据质量规则
SEO-025 修复分享地址和社交预览信息
优先级:P2。证据:E16。 当前文章复制按钮输出首页地址,用户分享后无法直接到达原文。通用 OG 图片为相对地址,文章 OG 图片则依赖外部资源。
复制当前文章规范链接;OG URL 与 canonical 共用生成规则;图片使用环境正确的绝对 URL,校验实际存在、类型、尺寸与内容相关性;按目标分享平台需要补充卡片字段。favicon 与公开品牌一致。不要为满足社交卡片而新增与正文无关的图片承诺。
验收: 从两篇不同文章复制分别得到对应 URL;带跟踪参数的访问复制后得到干净主地址;预览图片与标题正确,真实线上爬虫取图在部署阶段验证。OG 本身不是 Google 排名提升保证,但分享错误是明确的产品缺陷。
SEO-026 图片语义、尺寸和加载方式
优先级:P2。证据:E15。 当前卡片封面使用 CSS background,Google 的图片发现无法按普通 img 处理;当前 HTTP 样本没有缺 alt 属性的图片,DPL 装饰性 logo 空 alt 合理。导航两个 logo 缺少 HTML 宽高,不代表已经实测产生 CLS。
有内容意义的封面使用可保持原样式的 img/picture,提供真实相关的 alt、尺寸和合适的响应式资源;装饰图保持空 alt。按实际 LCP 元素决定加载优先级,首屏关键图不要统一 lazy,屏外内容再延迟加载。先核实资源大小、缓存与图片用途,再决定 WebP/AVIF、srcset、预连接等;不要为未知外站盲目添加 preconnect。
验收: 原视觉布局保持;有意义的图片可被 HTML 发现;装饰图不过度描述;图片加载前后布局稳定;不同视口不下载明显过大的资源;404、重定向及跨域资源响应在授权的部署验收中确认。Google 图片指南
SEO-027 手机端与无障碍完整验收
优先级:P2。 本轮 320px/390px 样本没有横向溢出,320px 菜单展开后位于 x=0–256,含 8 个链接;不需要无依据重做响应式布局。仍应核查完整功能,而非只看截图。
修复只有图标的菜单/搜索按钮可访问名称,验证键盘焦点、菜单开关、返回、搜索、加载更多、分享及错误提示。禁用 JS 或脚本失败时,正文、主要导航和分页仍应可用;搜索应有服务端表单后备。移动端隐藏了部分摘要、日期、侧栏和面包屑,重要解释和必要入口应在主内容中仍可找到。
验收: 320、390、768、1280px 代表性页面;正文不截断关键步骤;键盘可完成主要操作;字体可读;不以隐藏给搜索引擎的额外文本弥补信息缺失。Google 主要依据移动版本内容处理索引和排名。Google 移动索引指南
SEO-028 建立正式构建性能基线并按瓶颈优化
优先级:P2。 当前是 Vite dev 模式;外部图片和统计被测试浏览器阻止。这样的环境不适合宣布线上 Lighthouse 得分或 Core Web Vitals 已通过。
已确认公共 JS 引入 Bootstrap、jQuery、InfiniteScroll、Clipboard,主 JS 源码约 34KB,基础主题 CSS 源文件约 578KB,并包含滚动日志和多种旧交互逻辑。它们是检查方向,不是实际传输量或慢站结论;也不能仅因使用 jQuery 就要求重写。
后续在获准的构建验证阶段记录正式资源的压缩后体积、未使用代码、长任务、字体、LCP 资源、图片重量及 TTFB。先按可测瓶颈优化:删除无用代码、按需加载、减少滚动布局计算、合适字体策略、压缩和长期缓存静态哈希文件。数据库索引只在 EXPLAIN 或慢查询证明需要时调整;167 篇规模不预设数据库是瓶颈。
验收: 有同一设备/网络条件的改前改后对照,功能无回归。上线后以真实用户第 75 百分位为主要口径,目标 LCP ≤2.5s、INP ≤200ms、CLS ≤0.1;实验室结果用于定位问题,不替代真实用户分布。Google CWV 指南、web.dev 阈值与分位定义
SEO-029 缓存与发布、撤稿、到期一致性
优先级:P1,开启整页缓存前完成。证据:E18。 当前整页缓存关闭,不应把默认 7 天 TTL 说成现有线上缓存故障。模型 saved/deleted 只尝试失效首页,分类、标签、详情、sitemap 及年龄变化缺少完整安排。
设计缓存键和失效范围,确保主域、路径、有效分页参数和必要响应差异被正确区分。新增文章影响列表和 sitemap;正文更新影响详情及摘要;撤稿/隐藏分类影响全部公开入口;到期即使没有数据库写入也会改变 noindex 与 sitemap。对点赞状态、会话、CSRF 等个性化内容核实整页缓存适用性。静态资源缓存和 HTML 缓存分别配置。
验收: 分页缓存互不串页;两个匿名会话不混淆状态;新增/撤稿/隐藏/到期后在明确时限内一致;不靠“全站清缓存”掩盖缺少失效合同;缓存关闭与开启均通过关键 SEO 用例。
SEO-030 文章接收、更新与删除的发布合同
优先级:P0,公开部署前。证据:E19。 运行时路由表显示文章接收接口只挂 web 中间件,且 API 路径跳过 CSRF。接收逻辑直接设为发布并会触发资源读取、搜索同步、IndexNow 或通知。尚未确认生产是否另有边缘保护,本轮没有发送接收请求。
上线前为调用方建立明确认证、请求结构校验、允许字段、幂等标识和发布门槛;内容 HTML 采用与可信来源匹配的清洗策略,避免未知内容注入公开页面。编辑字段与上游覆盖字段分开,避免手工优化的标题/简介下一次分发就被覆盖。内容成功保存、标签同步、缓存失效、搜索更新和外部通知应有可追踪的顺序与失败恢复。
删除规则同样重要:当前批量删除不一定触发逐模型事件,不能假设缓存/搜索/推送会自动同步。无替代内容正确退出;有真正等价替代才重定向。点赞类写入也应使用合适的写请求,避免 GET 改业务状态,本轮未调用该接口。
验收: 未授权请求不能发布;同一消息重放不产生重复页;零资源/失败数据按策略处理;撤稿和批量清理后所有公开入口一致;外部服务失败不造成“页面显示发布成功但实际丢失”。测试使用独立数据库和外部服务替身,不触发真实推送或通知。
SEO-031 正式主机、HTTPS 与 HTTP 服务质量
优先级:P0,部署时。 当前本地回环 HTTP 不是 HTTPS 问题的证据。生产上线后需要单独验证服务器、代理和 CDN 实际行为。
确定唯一主机与 HTTPS;已存在的 www/非 www、HTTP/HTTPS 别名使用明确一跳规则。框架正确识别代理协议和主机,避免生成 HTTP canonical 或错误域名。机器人不应遭遇无必要的登录、验证码、WAF 挑战或长期 5xx;同时不靠伪造 User-Agent 放宽安全策略。页面、XML、robots、静态资源返回合适状态及 MIME 类型,错误页和维护页不返回成功正文。
验收: 使用获准服务器侧链路检查正式 host、重定向链、robots、sitemap、文章和资产;记录证书、HTTP 状态及代理识别结果。完整线上页面交互若需要,仍按项目网站访问规则执行。本地通过不能代替此项。
SEO-032 本地、预发布和生产资源隔离
优先级:P0,公开部署前。 独立数据库不代表所有资源已隔离。当前副本保留原站配置与 Git 元数据,搜索索引名称固定,布局按 cfn 加载线上 Umami 脚本,还存在共享资源链接。
为各环境核对:数据库、搜索索引、缓存命名、会话、统计站点 ID、图片依赖、外部通知、IndexNow、后台任务、公开品牌、主域、站点验证文件及 Git 远端。非生产环境默认不向真实搜索平台提交 URL,不向生产统计混入测试访问。公开预发布优先访问控制并配合 noindex;单独 robots 禁抓取不是可靠的防收录方案。当前 127.0.0.1 仅本机可达,不应因此判断已被公开索引。
验收: 本地业务测试不会写入 FN_B 数据或索引,不会触发外部通知与生产统计;生产部署不带 dev hot 标记、调试输出、私密配置或本地 URL;站点验证文件匹配实际站点所有权;发布前已核实 Git 推送目标,避免把副本改动推回源项目。
SEO-033 规范 IndexNow 及搜索提交
优先级:P2。 当前发布接收逻辑会调用 IndexNow,服务先 GET 检查 URL,只接受成功响应。这能避免部分无效新增,却不能完整表达删除通知;200 页面也可能是 noindex 或错误副本。
按正式环境、规范 URL、内容状态和变更类型决定是否提交;支持新增、实质更新和删除各自的处理。避免推送本地地址、预发布地址、未发布或无价值的失败快照;主域与 keyLocation 必须属于当前站点。提交过程要能失败重试、去重并记录状态,不能把接口接收成功等同收录成功。
验收: 本地使用替身验证,不实际发送;正式获准后单条核验目标主机、验证文件和返回结果;删除事件不因目标已 404 而被本地逻辑永远过滤掉。IndexNow 表示通知采用该协议的搜索引擎,不能当成 Google 通用收录接口。Google Indexing API 仅支持其指定的招聘及直播事件页面,不适用于普通节点文章。IndexNow 协议、Google Indexing API 适用范围
SEO-034 SEO 自动回归与数据样例
优先级:P1,随每批实现。 当前仓库测试只有首页 200 示例和恒真示例,不能防止 URL、索引和发布规则回退。本轮未执行这些与审计目标无关的示例测试,也没有新增业务测试或修改代码。
未来围绕外部行为建立测试:规范地址与别名、合法分页和越界、状态与索引资格、日期边界、sitemap 集合、公开入口、结构化数据转义、资源失败和撤稿一致性。使用固定时钟、隔离数据库和外部服务替身。避免只照抄内部实现断言,或把当前 167 篇和日期写死。
验收: 变更相应行为会让测试真正失败;每个已完成项目对应验收证据;本地浏览器补验 JS 和无 JS 路径;核心样式、三种广告和正常 API 合同没有无关回归。测试通过、页面验收、上线和真实搜索效果分别记录。
SEO-035 搜索平台与业务效果监测
优先级:P1,上线后。 本轮没有生产搜索数据,不能确认哪些页面已经收录、用户通过哪些查询进入、Google 选择了哪个 canonical,也不能证明某项缺陷已造成多少损失。
获准后配置或核实实际站点的 Search Console;按目标渠道需要补 Bing 等平台。记录 sitemap 处理、页面索引原因、选定 canonical、查询与页面表现、地区/设备、人工处置及安全问题。服务器日志用于区分真实机器人抓取和普通流量;访客分析用于衡量实际使用,不记录订阅密钥、账号或敏感正文。
验收: 有可回溯的发布前基线或新站起始基线;页面类型与业务目标能分组分析;出现错误有明确负责人和处理方式。监测频率和通知自动化另行授权,本报告不创建定时任务。Search Console 能提供的数据
SEO-036 发布、迁移、回滚与复核
优先级:P0,实际发布时。 如果 FNA_V3 替换原站,应尽量保留已有有效 URL;如果成为独立新站,应按新站处理品牌与内容差异,不能默认沿用旧站身份及所有权验证。
发布前保存代码、数据和相关配置恢复点;确认 Git 远端,提交并推送本任务范围,再让目标服务器更新到明确提交。对确需改动的 URL 建立逐条映射,避免批量跳首页、循环和链式跳转。按批次发布规则改动,保留对比和回滚依据;不要同时更换域名、技术栈、URL、内容和视觉而失去定位能力。
验收: 代码、数据库、配置和链接映射均有恢复办法;发布后完成授权范围内服务器侧检查;迁移前后有效页面数与 URL 集合差异可解释;真实页面验证按访问规则记录。若跨域迁移,采用当前搜索平台认可流程,持续保留必要的旧地址映射。Google 迁移指南
7 建议实施顺序与批次交付
编号是稳定引用,不表示必须机械按数字逐个开发。以下批次避免先加展示功能、后反复改底层规则。
| 批次 | 范围 | 本批应交付的可检查结果 | 进入下一批的条件 |
|---|---|---|---|
| A 方向与合同 | 001–003,明确 D02–D05;启动 034 的测试方案 | 品牌/上线角色、页面类型、URL 与索引矩阵;确认历史内容处理原则 | 关键策略明确,仍未知的生产域名可延后到发布前 |
| B 地址与发现路径 | 004–009、014 的基础内链;配套 034 | 唯一 URL、合法分页、错误状态、robots 协调、统一公开查询、正确面包屑 | 无 JS 可遍历;分页、别名、状态和索引矩阵一致 |
| C 页面信息与索引集合 | 010–013、015、016;配套 034 | 区分主题的标题/简介,真实日期,统一 sitemap,独立且正确的搜索索引 | 样本与全量机器检查通过;没有污染其他项目索引 |
| D 内容价值与发布质量 | 017–023,以及 030 的质量门槛 | 零结果/失败处理、稳定资源入口、重复内容决策、可完成任务的教程、真实来源和推广说明 | 内容承诺可证明;每日自动发布不会撤销人工优化 |
| E 展示与体验 | 024–028,以及 029 的缓存设计 | 合适的结构化数据、正确分享、图片加载、手机功能和构建性能对比 | 功能、视觉与性能有证据,非只看审计工具分数 |
| F 上线准备 | 029–033、036,补齐 034 | 环境隔离、发布认证、主域与 HTTPS、缓存一致性、迁移和回滚方案 | 所有 P0 发布条件满足,获得实际发布授权 |
| G 线上观察 | 035;按结果回到内容与性能项目 | 抓取、索引、点击及使用完成的对照记录 | 按真实数据持续迭代,不保证固定天数见效 |
SEO-017 的问题会影响当前内容承诺,可在批次 A 确认政策后尽早处理,不必等待所有标题优化完成。SEO-030、032 在任何对外暴露或真实导入测试之前先完成必要隔离。批次之间可以独立验收;本地实现完成不自动授权部署。
单项完成记录格式
以后在对应项目末尾增加短记录,保留最初问题与最新状态,避免把建议列表误读成已经实施。
项目编号:SEO-xxx
状态:待决策/待实施/进行中/本地验收通过/已发布/观察中/已关闭
实际范围:
关键取舍:
验证证据:
样式和数据影响:
提交及发布状态:
剩余问题或下一步:
“本地验收通过”必须包含本地证据;“已发布”必须有明确环境与提交;“已关闭”指该项目约定目标达成,不代表整站 SEO 达到某个永久最高分。
8 验收矩阵与完成标准
8.1 最小功能和索引样例
| 编号 | 验收场景 | 核心检查 |
|---|---|---|
| T01 | 首页和认可的免费节点别名 | 唯一主 URL;别名一跳;标题与职能一致 |
| T02 | 正确/错误父分类路径 | 正确 200,错误 404;导航不产生错误路径 |
| T03 | 第 1、2、中间、最后一页 | 内容不同且顺序稳定;分页 href;正确自指 canonical |
| T04 | 页码 0、负数、字符串、超界、重复参数 | 明确规范化或 404;没有空薄的任意 200 页面 |
| T05 | 分页叠加跟踪参数 | 保留页码,去掉非内容参数;robots 允许必要抓取 |
| T06 | 当前文章、过期历史文章、永久教程 | 公开状态与 index/noindex 符合内容合同 |
| T07 | 草稿、未来文章、隐藏分类及父分类 | 在详情、列表、标签、搜索、推荐、sitemap 中一致 |
| T08 | 索引到期临界时刻 | 固定时钟下详情和 sitemap 同步切换,不受八小时差异影响 |
| T09 | 更新正文与仅点赞 | 仅前者改变内容修改日期;schema/sitemap/页面一致 |
| T10 | 资源成功、真零、未知、检查失败 | 标题、状态说明、资源数和索引政策一致 |
| T11 | 有搜索结果、无结果、服务故障 | 结果来自本库;无结果正常 noindex;故障不伪装无结果 |
| T12 | 已合并、已删除、从未存在的文章 | 映射与 HTTP 状态正确;搜索和 sitemap 不残留 |
| T13 | 有引号、实体、长文本的标题与简介 | HTML/JSON 正确转义,简介纯文本,无虚假日期 |
| T14 | 一篇普通教程、一篇资源页、一页分类 | 按内容类型选择结构化数据,字段与正文一致 |
| T15 | 无 JS、JS 失败、直接进入分页后滚动 | 主内容可读;分页可走;不重复加载当前页 |
| T16 | 手机与桌面 | 主要内容和必要入口可用,菜单/搜索/分享可操作 |
| T17 | 缓存关闭与开启 | 不串页、不串会话;新增、撤稿、隐藏、到期及时一致 |
| T18 | 本地、预发布、生产环境 | URL、统计、搜索、缓存、外部发送和验证文件隔离 |
| T19 | 接收接口拒绝与幂等 | 未授权不能发布;重放不产生重复;失败可恢复 |
| T20 | 发布前后全量 URL 集合 | 200/301/404/noindex 变化有清单,关键旧链接可恢复 |
8.2 技术完成标准
- 所有计划索引的页面均有可访问的规范 URL,返回有效 200,未被 robots、错误 noindex 或错误 canonical 排除。
- 别名、分页、参数、内链、sitemap、OG 和推送使用同一套 URL 与资格规则。
- 所有计划索引的页面能从公开 HTML 内链到达;不存在只靠滚动事件才能发现的必要下一页。
- 不能公开的对象在所有入口一致隐藏;合法无结果与运行故障被区别处理。
- 标题、简介和日期真实,重要主题彼此可区分;schema 与正文一致。
- 内容发布能验证资源状态、处理失败、保护人工编辑,并完整同步缓存、搜索与索引集合。
- 网站原有功能和已批准视觉方案无无关回退;构建和线上检查分开记录。
这些标准可由工程验收保证;实际收录率、展示形式和排名需要搜索引擎处理,不能作为“代码测试通过”的同义词。
9 上线后的效果判断
9.1 指标应分层
| 层次 | 应观察什么 | 如何解读 |
|---|---|---|
| 技术健康 | 有效 URL、错误重定向、意外 noindex、sitemap 冲突、5xx | 先排除明显工程回退 |
| 发现和索引 | 抓取记录、索引原因、Google 选择 canonical、计划索引页面的状态 | 不要求每个无价值归档都进入索引;分母是计划索引集合 |
| 搜索表现 | 按主题/页面类型的曝光、点击、CTR、查询和地区/设备 | 同类页面比较;平均排名和 CTR 受查询组合影响 |
| 内容贡献 | 长期教程自然流量、稳定资源页回访、相关下一步使用 | 关注持续价值,不只看每日新页面数量 |
| 实际任务 | 订阅使用入口、教程完成反馈、搜索成功率、故障反馈 | 事件仅记录必要状态,不收集订阅秘密或共享账号正文 |
| 体验 | 真实用户 CWV、失败率、手机交互和资源加载 | 实验室改善不等于真实用户已全面改善 |
9.2 建议观察窗口
- 发布当天: 验证服务、URL、索引规则、主要页面及外部发送配置,没有重大回退。
- 首周: 观察新 URL 的发现、sitemap 处理、异常状态、搜索和关键功能;不足以据此宣布排名稳定。
- 后续 2–4 周: 对照页面组观察收录原因、查询与点击变化,结合抓取情况判断是否需调整。
- 后续 4–8 周及更长: 评估长期内容、稳定入口和归档策略;新站、低抓取频率或迁移可能需要更长时间。
这些是建议的复核节奏,不是收录时限或增长保证。比较相似星期和页面组,标记节假日、内容更新与其他外部变化;不要一次搜索、一次 Lighthouse 分数或一次流量波动就反转策略。
10 暂不优先做的工作
- 不因 SEO 全面更换框架。 当前首次 HTML 已有内容,先修路由、分页和质量规则。
- 不把关键词 meta、固定字数、标题字符数当主要目标。 对 Google,meta keywords 不影响索引和排名;标题和摘要应清楚且符合实际内容。Google 支持的 meta 标签
- 不把所有分页 canonical 指向第一页,也不默认全部分页 noindex。 它们展示不同文章,应按真实内容处理。
- 不把所有旧页面跳首页。 只有内容等价或真正迁移时采用对应重定向。
- 不把全部标签和全部历史文章一次性开放索引。 先判断独立意图、质量和保留价值。
- 不通过每日刷新日期、生成空薄文章、虚构作者或点赞制造“新鲜”和“权威”。 应改善真实内容和发布流程。
- 不为凑富结果给所有页面添加 FAQ、评分、商品或新闻标记。 页面类型和真实内容必须适合;有效 schema 也不保证展示。
- 不在没有需要时建设多语言、AMP、庞大 sitemap 分片或独立抓取预算系统。 当前规模与问题不支持优先投入。
- 不将 dev 模式跑出的分数当线上 SEO 成绩。 正式构建、外部资源和真实访客条件不同。
- 不为 Google AI 搜索另造一套“专用 SEO”。 官方仍要求可发现、可索引、有价值的内容,并没有额外必需的专用标记;应优先完成本清单基础项。Google AI 搜索功能说明
11 证据入口与复核方法
11.1 主要代码入口
以下行号是 2026-10-22 本轮基准,后续修改可能变化;路径链接是持续入口。
| 检查内容 | 文件及本轮关键位置 |
|---|---|
| 页面路由、宽松分类与接收接口 | routes/web.php,首页/分类和 api/article 路由 |
| 分类解析 | Web ArticlesController,50–54 行 |
| 列表、搜索、标签、详情查询 | ArticlesService,146–280 行 |
| 全局标题、日期、canonical、OG、统计 | app-layout,1–52 行 |
| 列表标题和缺少分页链接 | 列表模板,1–68 行 |
| noindex、面包屑、日期、分享 | 详情模板,1–4、24–62、95–103 行 |
| 卡片语义、封面和分类链接 | article-item,3–25 行 |
| 搜索表单与导航 | nav-bar,27–46、105–113 行 |
| 滚动页码和搜索 JS | app.js,47–76、140–148 行 |
| robots | RobotsController,11–19 行 |
| sitemap 集合及时间 | SitemapController,12–25 行;XML 模板,11–16 行 |
| 搜索索引、日期、缓存事件 | Articles 模型,52–76、84–113 行 |
| 分类关联和状态 | Categories 模型,20、46–52 行 |
| 点赞与内容时间耦合 | SyncArticleLikes,21–55、72–80 行 |
| 180 天删除及调度定义 | ClearDb,26–37 行;调度入口 |
| 发布与上游数据覆盖 | API ArticlesController,35–90、96–239 行 |
| 外部搜索通知 | IndexNowService,25–170、182–220 行 |
| 中间件与 CSRF 排除 | bootstrap/app.php,14–25 行 |
| 新广告范围和保留要求 | 广告维护说明及广告组件 |
11.2 本轮证据保存
审计基线数据仅保存脱敏后的计数、代表性本地响应、内容重复组、搜索匹配计数和相关源码哈希,便于以后对照。本文件承载解释与任务状态,JSON 不另行维护一份优化计划。
临时细节与受限浏览器截图位于 /private/tmp/fna-v3-seo-20261022/。临时目录可能被清理,不作为后续唯一证据;正文中的关键事实和项目内基线已经固化。没有把数据库导出、账号信息、凭据、订阅内容或完整文章正文写入本次文档产物。
复核时按以下方法重新取得现场证据:
- 读取当前项目资料、并行修改和服务状态,再记录待检查源码哈希。
- 以本地只读数据库事务统计文章/分类/标签,记录应用和数据库时基。
- 限定回环地址,不跟随外部重定向,不自动点击/请求点赞、API 或测试路由。
- 检查首页、真实分类路径、标签、全部文章、分页边界、robots 与 sitemap;解析标题、canonical、robots 和实际 href。
- 链接图从首页开始,沿实际 HTML 链接计算,不把手工塞入的文章地址冒充站内发现。
- 浏览器拦截全部非本地网络和有副作用请求,分别测试有 JS、无 JS、直接进入分页及手机宽度。对被拦截的线上图片不判断其真实可用性。
- 核实源码和业务数据差异,更新该基线或创建下一次有日期的证据快照;优化决策继续更新本文件。
11.3 本轮交付状态
- 已完成独立重新分析、230 个本地地址检查、当前数据库统计、搜索索引对照和受限浏览器复核。
- 已完成本建议文档与基线保存;清单项目尚未实施。
- 交付核对通过:36 个项目编号与总表一一对应,20 个验收场景,文内本地链接有效;195 个网站源码、资源及环境基准文件哈希未变化,文章/分类/标签已采集业务字段前后相同。GemDocs 离线文档检查通过。
- 网站源码、样式和本地私密环境配置保持本轮基准;未改业务数据,未执行调度器、队列、发布接收或外部推送。
- 为检查恢复了原本停止的本地 PHP 8103 与 Vite 5173 开发预览。框架正常请求产生的会话/缓存及 Vite 运行产物不属于业务优化修改。
- 未提交、推送、部署;未访问项目线上网站,未验收线上收录、排名或真实用户性能。
首页展示调整(2026-10-27)
按用户更正后的要求,/直接复用文章详情展示日期最新的一篇已发布免费节点文章,不限定当天。通过分类slug筛选,按created_at、id倒序选择,忽略置顶排序并排除未来时间;/freenode继续保留历史列表。首页绕过整页响应缓存,新的文章发布后下一次访问即可选取;未改全局时区、业务数据或其他栏目查询。无可用文章时使用现有空态。
验证:3项独立SQLite内存库测试、6项断言通过,覆盖旧日期文章、置顶、其他栏目、草稿、未来文章、同日期排序、空池和缓存边界。本地首页与免费节点列表HTTP 200,首页最新正文为fn20261021。未提交、推送或部署;首页与文章详情的canonical及noindex继承行为仍需在SEO-004/018中单独处理。
首页独立索引规则(2026-10-28)
按用户要求修复首页继承过期文章noindex:详情模板以articles.home路由识别首页,首页固定index, follow;其他文章详情继续按分类过期规则,编辑签名预览仍优先noindex, nofollow。日期计算使用created_at副本,避免渲染过程中修改模型日期。实测首页、fn20261021详情、freenode栏目均200,分别index/noindex/index;首页无额外X-Robots-Tag。仅本地,未提交/推送/部署;canonical规则与生产配置不属于此次已完成范围。