直接答案:粘贴首页 HTML(可选再贴 sitemap XML),工具在浏览器本地抽取四类“新鲜度信号”:版权年份、最新 lastmod、页面里的目标年日期、结构化日期(meta / JSON-LD / <time> / 可见“更新于”)。它同时标出字段冲突,例如 sitemap 已到 2026 而页脚版权仍是 2023。不联网、不抓站、不上传。
第 22 期的 pilot 里,25 个首页只有 3 个版权年份是 2026,13 份可用 sitemap 里却有 11 份 lastmod 在 2026;3 个站点两个字段直接冲突。这期把当时的解析规则做成可复用的本地工具,规则边界与那期一致。
版权年份、lastmod、页面日期、结构化日期。
只说明文本里写了什么,不证明内容何时变过。
不联网:只分析粘贴的 HTML 与 XML。
工具:粘贴 → 检查
默认示例会报出一个冲突:sitemap 最新 lastmod 是 2026-10-28,页脚版权却是 2023;同时命中 article:modified_time 与正文里的 2026 日期。把页脚改成 2026,冲突消失,但工具仍不会说“站点更新过”——它只报告字段现在一致。
四类信号
| 信号 | 来源 | 命中示例 | 为什么只是信号 |
|---|---|---|---|
| 版权年份 | 版权标记后 60 字符内的 20xx | Copyright © 2023 | 模板常写死,或按当前年自动渲染 |
| 最新 lastmod | sitemap 中所有 lastmod 的最大值 | 2026-10-28 | 文件字段,可自动生成,也可长期不更新 |
| 目标年日期 | 去掉脚本/样式后的可见文本 | 2026年11月 | 任何 2026 字符串都算,含活动与参数 |
| 结构化日期 | meta、JSON-LD、<time>、可见“更新于” | dateModified | 可由 CMS 自动写入,未必对应正文变化 |
三种常见冲突
- sitemap 新、页脚旧。 例如 lastmod 2026-10-28、版权 2023。两个字段不一致,不能据此判断站点没更新。
- 页脚新、sitemap 旧。 版权 2026、lastmod 停在 2024。版权年份可能只是模板年份。
- 页面有日期、没有 sitemap。 目标年日期命中,但 lastmod 为空;页面日期只能算弱信号。
为什么不能据此判断站点是否维护
- 版权是法律声明,不是修改时间。 它通常标首次发布或当前年份。
- lastmod 是文件字段。 证明 sitemap 这么写,不证明页面在那天变过。
- 日期字符串不等于内容更新。 活动、新闻列表、产品参数都可能带 2026。
- 结构化日期可自动生成。 CMS 保存一次就可能刷新 dateModified。
边界
- 不抓站:粘贴什么就分析什么,不知道线上状态码与响应头。
- 不判真伪:只做字符串与格式解析,不验证日期是否真实。
- 只取第一个版权标记:页脚有多处声明时,以文档中第一个为准。
- 不执行 JS:由脚本注入的日期与正文看不到;需要先取渲染后的 HTML。
- 目标年份可改:默认 2026;跨年复测时改成对应年份。
测试与复算
逻辑在 js/freshness-check.js(无依赖、无网络);scripts/test_freshness_check.js 覆盖 70 条断言:五种版权写法、脚本/样式/注释剥离、lastmod 多值取最大、三种日期格式、meta 属性顺序、<time>、可见“更新于”、JSON-LD、四类冲突与汇总。运行:
node scripts/test_freshness_check.js
配套:官网新鲜度信号 pilot(25 站数据与口径)、sitemap 检查器(结构与 lastmod 格式)、JSON-LD 检查器(dateModified 字段)。
数据来源与口径
- sitemaps.org 协议:
lastmod使用 W3C Datetime:sitemaps.org。 - schema.org
dateModified:schema.org。 - 规则来源:第 22 期《官网新鲜度信号 pilot》的方法、25 行匿名 CSV 与 14 项 Python 单测。