seo-freshness

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

seo-freshness (M13)

seo-freshness (M13)

Freshness is a recency signal both classic ranking systems (Query Deserves Freshness) and AI answer engines weigh — Perplexity in particular favours recently-updated sources when citing. Date fields tie directly to Article schema (cross-check M5); see
references/schema-tier1.md
for the date rules.
内容新鲜度是新近性信号,经典排名系统(Query Deserves Freshness)和 AI 答案引擎都会权衡这一信号——尤其是 Perplexity,在引用来源时更偏好近期更新的来源。日期字段与 Article schema 直接关联(交叉检查 M5);日期规则见
references/schema-tier1.md
。

Inputs

输入

Work from the PageSnapshot named in your dispatch envelope: read
parsed
from
<run_dir>/pages/<slug>.json
(
jsonld[]
,
metas[]
for
article:published_time
/
modified_time
) plus
headers.last-modified
; Grep
pages/<slug>.html
for verbatim evidence; site artifacts live in
<run_dir>/site/{robots.json,sitemaps.json,discovery.json}
. Deterministic findings already emitted by
audit.mjs
are listed in
<run_dir>/findings.deterministic.json
— do not re-emit those ids; add model-judged findings only. If invoked directly with a URL/path and no snapshot exists, first run
node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs"
and use the printed snapshot path.
以任务调度信息中指定的 PageSnapshot 为工作依据:从
<run_dir>/pages/<slug>.json
读取
parsed
(
jsonld[]
,以及用于
article:published_time
/
modified_time
的
metas[]
),并读取
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/路径调用且不存在 snapshot,请先运行
node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs"
,并使用输出的 snapshot 路径。

Audits

审核

Working from the PageSnapshot (
parsed_rendered
when
render.used
is not
none
, else
parsed
):
  1. Visible dates: detect on-page "Published" / "Updated on" / "Last reviewed" patterns and their values (ISO or human-readable).
  2. Schema dates: parse
    datePublished
    /
    dateModified
    from JSON-LD
    Article
    /
    BlogPosting
    /
    NewsArticle
    .
  3. Agreement: visible date and schema date must match; flag mismatches and schema dates with no visible counterpart (AI engines distrust hidden-only dates).
  4. Staleness: estimate content age (most recent reliable date) vs topic volatility — fast-moving topics (prices, tooling, "best X 2026", regulations) decay faster than evergreen reference content. Report stale, not just old.
  5. Pattern hygiene: "updated on" with no substantive content change is a freshness anti-pattern — note it, never recommend it.
基于 PageSnapshot 开展审核(若
render.used
不为
none
,则使用
parsed_rendered
,否则使用
parsed
):
  1. 可见日期:检测页面上的 “Published” / “Updated on” / “Last reviewed” 等模式及其值(ISO 或人类可读的日期)。
  2. Schema 日期:从 JSON-LD 的
    Article
    /
    BlogPosting
    /
    NewsArticle
    中解析
    datePublished
    /
    dateModified
    。
  3. 一致性:页面可见日期与 schema 日期必须一致;标记不匹配项,以及没有页面对应项的 schema 日期(AI 引擎不信任仅隐藏在 schema 中的日期)。
  4. 陈旧程度:以最近一个可靠日期估算内容年龄,并与主题变化速度进行对比——快速变化的主题(价格、工具、“best X 2026”、法规)比常青参考内容的时效衰减得更快。应报告“陈旧”,而不只是“过旧”。
  5. 模式规范性:仅标注 “updated on” 却没有实质性内容变更属于新鲜度反模式——应指出此问题,但绝不能建议这样做。

Fixes

修复

  • AUTO (
    fixable: auto
    ): inject a missing
    dateModified
    into existing Article schema as an additive diff for
    fix
    . Never backdate to a false date — use the verifiable last-change date (e.g. Last-Modified header / repo mtime / today) or leave a clearly-marked
    TODO
    placeholder the user confirms.
  • PROPOSED (
    fixable: proposed
    ): surface visible-vs-schema date mismatches with the corrected value as a draft requiring per-item accept; never auto-rewrite a date the user must verify.
  • ADVISORY (
    fixable: advisory
    ): recommend a genuine content refresh for stale-on-volatile pages — the tool never writes editorial content. Never fabricate dates or invent an update that did not happen.
  • AUTO (
    fixable: auto
    ):向现有 Article schema 注入缺失的
    dateModified
    ,并将其作为用于
    fix
    的附加 diff。绝不回填虚假日期——应使用可验证的最后变更日期(例如 Last-Modified header / repo mtime / today),或保留一个明确标记为
    TODO
    的占位符,由用户确认。
  • PROPOSED (
    fixable: proposed
    ):以草稿形式呈现页面可见日期与 schema 日期的不匹配项及修正值,要求逐项接受;绝不自动重写需要用户验证的日期。
  • ADVISORY (
    fixable: advisory
    ):建议对在快速变化主题上已经陈旧的页面进行真实内容刷新——该工具绝不撰写编辑内容。绝不捏造日期,也绝不虚构并未发生的更新。

Verification

验证

  • dom_assert
    : visible date string present and parses; matches schema value.
  • schema_validator
    :
    datePublished
    /
    dateModified
    present, valid ISO 8601,
    dateModified >= datePublished
    .
  • header_check
    : HTTP
    Last-Modified
    header corroborates the claimed modification date.
  • When the live tier (header fetch / validator) is unavailable, status is
    needs_api
    , never a false
    pass
    .
  • dom_assert:页面可见日期字符串存在且可解析;与 schema 值一致。
  • schema_validator:
    datePublished
    /
    dateModified
    存在且为有效的 ISO 8601 日期,并且
    dateModified >= datePublished
    。
  • header_check:HTTP
    Last-Modified
    header 佐证所声明的修改日期。
  • 当在线验证层(header fetch / validator)不可用时,状态应为
    needs_api
    ,绝不能误报为
    pass
    。

Findings

发现项

Findings conform to
schema/finding.schema.json
; axis
both
; confidence
directional
throughout. Severity policy: 5 is reserved for catastrophic, eligibility-killing facts at site/template scope; 4 major · 3 moderate · 2 minor · 1 cosmetic · 0 informational — and only an
established
severity-5
fail
in an active category can cap a score (
references/scoring-model.md
). Freshness never caps.
  • M13.datemodified.missing
    — Article schema with
    datePublished
    but no
    dateModified
    (
    fail
    , severity 3,
    fixable: auto
    ).
  • M13.dates.visible_schema_mismatch
    — visible "Updated May 2025" against schema
    dateModified: 2023-01-10
    (
    warn
    , severity 3,
    fixable: proposed
    ).
  • M13.content.stale_volatile
    — a "best X 2024" page unchanged for two years on a fast-moving topic (
    warn
    , severity 2,
    fixable: advisory
    ).
  • M13.schema.date_unparseable
    — a date field that exists but does not parse as ISO 8601, or a page with several
    dateModified
    values (the latest wins, and the conflict is reported) (
    warn
    , severity 2,
    fixable: proposed
    ). Emit this instead of a mismatch: an unreadable date is a parsing gap, not proof the dates disagree. Each finding:
    evidence.observed
    quotes the page (date string + selector);
    verification.reproduce
    is a runnable assertion (e.g.
    node "${CLAUDE_PLUGIN_ROOT}/scripts/check-freshness.mjs" --snapshot <pages/<slug>.json> [--lang en|es|auto]
    (or
    --url <u>
    ));
    expected_impact
    is banded + confidence-tagged, with any published number confined to
    rationale
    with a citation.
发现项符合
schema/finding.schema.json
;axis 为
both
;所有发现项的 confidence 均为
directional
。严重程度策略:5 仅用于站点/模板范围内具有灾难性、会导致资格丧失的事实;4 为严重(major)· 3 为中等(moderate)· 2 为轻微(minor)· 1 为外观性(cosmetic)· 0 为信息性(informational)——且只有处于启用状态的分类中一个
established
、severity-5 的
fail
才能对评分封顶(
references/scoring-model.md
)。新鲜度项永不触发评分封顶。
  • M13.datemodified.missing
    — Article schema 中有
    datePublished
    ,但缺少
    dateModified
    (
    fail
    ,severity 3,
    fixable: auto
    )。
  • M13.dates.visible_schema_mismatch
    — 页面可见的 “Updated May 2025” 与 schema 中的
    dateModified: 2023-01-10
    不一致(
    warn
    ,severity 3,
    fixable: proposed
    )。
  • M13.content.stale_volatile
    — “best X 2024” 页面在快速变化的主题上两年未变(
    warn
    ,severity 2,
    fixable: advisory
    )。
  • M13.schema.date_unparseable
    — 日期字段存在,但无法解析为 ISO 8601,或页面存在多个
    dateModified
    值(采用最新值,并报告冲突)(
    warn
    ,severity 2,
    fixable: proposed
    )。应输出此项,而不是不匹配项:无法读取的日期属于解析缺口,并不能证明两个日期不一致。 每个发现项:
    evidence.observed
    引用页面内容(日期字符串 + selector);
    verification.reproduce
    是可运行的断言(例如
    node "${CLAUDE_PLUGIN_ROOT}/scripts/check-freshness.mjs" --snapshot <pages/<slug>.json> [--lang en|es|auto]
    (或
    --url <u>
    ));
    expected_impact
    带有分级和置信度标签,任何对外公布的数值仅可放入附带引用的
    rationale
    中。

Honesty

真实性

  • Freshness is a contextual signal, not a universal ranking boost — refreshing evergreen content rarely moves rankings, and a
    dateModified
    bump without a real content change is detectable and adds no durable value. Confidence here is directional, never
    established
    ; never present a date edit as a guaranteed ranking gain or backdate to fake recency.
  • Date parsing is language-bound: Spanish month names and
    article:published_time
    /
    article:modified_time
    are read, but an unrecognized format produces
    M13.schema.date_unparseable
    , never a fabricated mismatch.
内容新鲜度是情境化信号,而非通用排名提升因素——刷新常青内容很少会改变排名,而没有真实内容变更却提升
dateModified
是可检测的,也不会带来持久价值。此处的置信度始终为 directional,绝不会是 established;绝不能把日期修改描述为必然带来排名提升,也绝不能回填日期以伪造新近性。 日期解析受语言限制:可读取西班牙语月份名称以及
article:published_time
/
article:modified_time
,但无法识别的格式会生成
M13.schema.date_unparseable
,绝不会被捏造成不匹配项。