关于 seo-freshness
seo-freshness 是用于 SEO 审计的技能,可检查页面日期与内容新鲜度是否一致。它评估可见日期、Article 结构化数据和主题变化速度,并提供有限的日期修复,不将新鲜度视为必然的排名提升因素。
主要功能
- 01检查可见日期和结构化数据日期
- 02标记日期不一致及解析问题
- 03按主题变化速度评估陈旧度
- 04为结构化数据补充 dateModified
- 05根据页面和响应头验证日期
适用场景
- 01审计页面可见日期与结构化数据冲突
- 02查找快速变化主题中的过时页面
- 03为 Article 结构化数据补充可验证的修改日期
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hainrixz/ claude-seo-ai --skill seo-freshness安装后在 Claude Code 中输入/seo-freshness确认已加载。
详细介绍
seo-freshness(M13)
新鲜度是经典排名系统(Query Deserves Freshness)和 AI 答案引擎都会考量的近期性信号;Perplexity 尤其偏好引用近期更新的来源。日期字段与 Article schema 直接相关(参见 M5 进行交叉核对);日期规则见 references/schema-tier1.md。
输入
根据调度信封中指定的 PageSnapshot 操作:从 <run_dir>/pages/<slug>.json 读取 parsed(jsonld[]、metas[] 中的 article:published_time/modified_time),以及 headers.last-modified;在 pages/<slug>.html 中用 Grep 查找原文证据;站点文件位于 <run_dir>/site/{robots.json,sitemaps.json,discovery.json}。audit.mjs 已输出的确定性发现列于 <run_dir>/findings.deterministic.json 中——不要重新输出这些 ID;仅添加由模型判断的发现。如果直接使用 URL/路径调用,且没有快照,则先运行 node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs",并使用打印出的快照路径。
审计
根据 PageSnapshot 操作(当 render.used 不为 none 时使用 parsed_rendered,否则使用 parsed):
- 可见日期:检测页面上的“Published”/“Updated on”/“Last reviewed”等模式及其值(ISO 格式或人类可读格式)。
- Schema 日期:从 JSON-LD 的
Article/BlogPosting/NewsArticle中解析datePublished/dateModified。 - 一致性:可见日期和 schema 日期必须一致;标记不匹配,以及没有对应可见日期的 schema 日期(AI 引擎不信任仅隐藏的日期)。
- 陈旧度:根据主题变化速度,估算内容的存续时间(采用最新的可靠日期)——变化迅速的主题(价格、工具、“2026 年最佳 X”、法规)比常青参考内容更快失去时效性。报告内容是否过时,而不只是时间久远。
- 模式规范性:“updated on”但没有实质性内容变更是一种新鲜度反模式——请指出,但绝不要推荐这种做法。
修复
- AUTO(
fixable: auto):将缺失的dateModified作为增量差异注入现有 Article schema,以供fix使用。绝不要回填虚假日期——应使用可核实的最后变更日期(例如 Last-Modified 标头/仓库 mtime/今天的日期),或者留下清晰标注的TODO占位符供用户确认。 - PROPOSED(
fixable: proposed):将可见日期与 schema 日期不匹配的情况连同更正值列出为草案,需逐项接受;绝不要自动改写用户需要核实的日期。 - ADVISORY(
fixable: advisory):对于过时且主题变化迅速的页面,建议进行真正的内容更新——工具绝不编写编辑内容。绝不要伪造日期或虚构并未发生的更新。
验证
dom_assert:可见日期字符串存在且可解析;与 schema 值一致。schema_validator:datePublished/dateModified存在,符合有效的 ISO 8601 格式,且dateModified >= datePublished。header_check:HTTPLast-Modified标头与声明的修改日期相符。- 当实时层(标头获取/验证器)不可用时,状态为
needs_api,绝不能误报为pass。
Findings
发现符合 schema/finding.schema.json;轴为 both;置信度始终为 directional。严重性策略:5 仅用于网站/模板范围内具有灾难性、足以导致资格失效的事实;4 重大 · 3 中等 · 2 轻微 · 1 表面 · 0 仅供参考——且只有活动类别中 established 级别的严重性为 5 的 fail 才能限制评分(references/scoring-model.md)。新鲜度永远不会限制评分。
M13.datemodified.missing— Article schema 有datePublished,但没有dateModified(fail,严重性 3,fixable: auto)。M13.dates.visible_schema_mismatch— 可见文本“Updated May 2025”与 schema 中的dateModified: 2023-01-10不一致(warn,严重性 3,fixable: proposed)。M13.content.stale_volatile— 快速变化主题上的“best X 2024”页面两年未更新(warn,严重性 2,fixable: advisory)。M13.schema.date_unparseable— 日期字段存在,但无法解析为 ISO 8601 格式;或页面上有多个dateModified值(采用最新值,并报告冲突)(warn,严重性 2,fixable: proposed)。应发出此项,而不是不匹配项:无法读取日期属于解析缺失,并不能证明日期不一致。 每项发现:evidence.observed引用页面内容(日期字符串 + 选择器);verification.reproduce是可运行的断言(例如node "${CLAUDE_PLUGIN_ROOT}/scripts/check-freshness.mjs" --snapshot <pages/<slug>.json> [--lang en|es|auto](或--url <u>));expected_impact标注影响范围和置信度,任何已发布数字都只能放在rationale中,并附带引用。
诚实性
- 新鲜度是情境信号,并非普遍适用的排名提升因素——更新常青内容很少能提升排名,而在没有实际内容变更的情况下提高
dateModified,这种做法可以被检测到,也不会带来持久价值。此处的置信度为 directional,绝不是established;切勿将日期修改描述为保证提升排名的手段,也不要回填日期来伪造近期更新。 - 日期解析与语言相关:可以读取西班牙语月份名称以及
article:published_time/article:modified_time,但遇到无法识别的格式时,应产生M13.schema.date_unparseable,而不是捏造日期不匹配。