squirrelscan
GitHub

Sitemap Lastmod Drift

Checks that sitemap lastmod matches the page's own dateModified

Checks that sitemap lastmod matches the page’s own dateModified

Rule ID crawl/sitemap-lastmod-drift
Category Crawlability
Scope Site-wide
Severity warning
Weight 4/10

What it checks

For every crawled page that appears in a sitemap with a lastmod, the rule compares that lastmod against the page’s own strongest date signal: schema.org dateModified, else the dateModified-equivalent markup ([itemprop="dateModified"] meta / <time>), else the visible published date. Pages with no date signal at all are skipped: that is Content Freshness territory, not drift.

The two directions are reported as separate checks, because they point at different code:

Check Fires when Usual cause
sitemap-lastmod-behind-page lastmod is older than the page’s dateModified by more than 7 days Stale cached sitemap, or a generator resolving publishedAt ?? updatedAt while the page renders updatedAt ?? publishedAt
sitemap-lastmod-ahead-of-page lastmod is newer than the page’s dateModified by more than 30 days lastmod stamped at build/deploy time instead of on content change

Each finding reports both dates and the gap in days. Same-day and within-threshold differences never warn.

Lastmod being older than the page’s own dateModified is the more clearly wrong of the two: it tells crawlers not to bother re-fetching a page that has in fact changed.

Solution

A sitemap lastmod that disagrees with the page’s own dateModified points at the sitemap generator, not the content. Lastmod OLDER than the page’s dateModified tells crawlers not to bother with a page that has in fact changed - usually a stale cached sitemap, or a generator resolving publishedAt ?? updatedAt while the page renders updatedAt ?? publishedAt (a precedence inversion; both fields are present, so presence checks pass). Lastmod NEWER than the page’s dateModified usually means lastmod is stamped at build/deploy time. Drive both values from the same content-modification timestamp.

Options

This rule supports the following configuration options:

Option Type Default Description
ahead_days number 30 Days a sitemap lastmod may run ahead of the page’s own dateModified before warning
behind_days number 7 Days a sitemap lastmod may lag the page’s own dateModified before warning

Configuration Example

[rules."crawl/sitemap-lastmod-drift"]
ahead_days = 30
behind_days = 7

Enable / Disable

Disable this rule

[rules]
disable = ["crawl/sitemap-lastmod-drift"]

Disable all Crawlability rules

[rules]
disable = ["crawl/*"]

Enable only this rule

[rules]
enable = ["crawl/sitemap-lastmod-drift"]
disable = ["*"]

Type to search…

↑↓ navigate↵ openesc close