Recipe

The date-stale refresher

By Axel Antas-Bergkvist Published June 1, 2026
Time ~30 min for 200 posts
Cost ~$1 in tokens
Risk Low

Freshness is a real ranking factor for a lot of queries, and most blogs accidentally signal the opposite. A post a reader opens in 2026 that says “as of 2023” or “currently” tells search engines the content is frozen, and a modified date that hasn’t moved in eighteen months on a topic where competitors update yearly compounds the problem. These stale markers accumulate quietly across an archive, and each one nudges a page toward looking abandoned. A short refresher pass can reverse impression decline across dozens of pages — and unlike most SEO work, the changes are small and surgical.

What you need

The recipe

  1. Pull and baseline. Run a Specter pull, then commit a git baseline so you can revert per file.
  2. Scan first, no edits. Run the scanner prompt to list every dated reference into a CSV. Spot-check ten rows and exclude any historical posts where the old date is the point.
  3. Run the refresh. Paste the refresh prompt below — it only acts on rows you didn’t exclude.
  4. Dry-run and push. Preview the diff with a Specter dry-run, then push.

The prompt

The scanner is read-only and produces the CSV; the refresh then acts on your reviewed rows:

You are refreshing dated references across the posts in this folder, using the
reviewed CSV of stale references. Today's date is given.

For each row, edit the corresponding .md file:
1. "in 2023" → current year IF still factually true; otherwise rewrite the
   sentence to be year-agnostic.
2. "last year" / "currently" → anchor to a specific year that's verifiable, or
   make it evergreen.
3. Dated headers ("Top 10 Tools in 2023") → update to the current year and add a
   short "Updated for <year>" note under the H1.
4. If web search is available, verify time-bound numbers (prices, stats, versions)
   against a reputable source and update them.

Also update frontmatter: set the modified date to today, update dateModified in
any schema field, and do NOT change the original published date.

Write a summary of posts updated, stats refreshed (old → new), and anything you
couldn't safely update. Do not "improve" copy beyond the dated references.

Cost and time

Blog sizeTokens (scan + refresh)CostWall-clock
200 posts~300k + ~200k$0.9025 min
600 posts~900k + ~600k$2.7075 min

Pitfalls

Where to go next

This is the easiest recipe to put on a schedule — paired with a cron job and Specter’s JSON dry-run output, it becomes a self-running freshness loop. It also combines well with programmatic pages, whose year- and price-stamped content ages fastest of all.

Buy Specter Pro — $99/year Browse all recipes