Quick answer: for content refresh in Claude Code, install AgriciDaniel’s free claude-blog plugin (blog-decay finds slipping pages, blog-rewrite updates them), connect Google Search Console with the free mcp-gsc server, and add rampstackco’s content-refresh-system if you want a refresh, merge, redirect or delete call per URL. Paid spend is mostly data (Ahrefs, Semrush, DataForSEO), not skills.
Your old posts lose clicks quietly. Nothing breaks; a page slides from position 4 to position 9 over two quarters and the traffic goes with it.
This guide covers the Claude Code skills that help with content refresh: which ones read Google Search Console data, which ones make the refresh-or-delete call, and which ones do the rewrite. It covers free GitHub skills and paid data sources, with star counts and push dates pulled from the GitHub API on November 1, 2026. Then it walks through the workflow from “this page is slipping” to “here is proof the refresh worked.”
What are Claude Code skills for content refresh?
Direct answer: Claude Code skills for content refresh are SKILL.md folders (or plugins that bundle them) that teach Claude a repeatable process for finding decaying pages, deciding what to do with each one, and updating them. The useful ones read Google Search Console exports or connect to a GSC MCP server, flag clicks and position drops, and output a triage call: refresh, merge, redirect, or delete.
If skills are new to you, start with what Claude Code skills are. The short version: a skill is a folder with a SKILL.md file of instructions, plus optional scripts and reference files. Claude loads it when your request matches its description. Skills live in ~/.claude/skills/ (available everywhere) or .claude/skills/ inside a project (available in that repo only). They also ship inside plugins, which you add through /plugin marketplace add owner/repo, or install with npx skills add owner/repo. The full walkthrough is in how to install Claude Code skills.
A content refresh job splits into three parts, and no single skill does all three well:
- Detection. Which pages lost clicks, impressions or position, and is the loss real or noise?
- Decision. For each flagged page: refresh it, merge it into a stronger page, redirect it, or delete it.
- Execution. Rewrite the page, update facts and links, change the date only if the change is substantial, then measure.
Most skills cover one or two of these parts. Pairing a detection skill with a writing skill, plus a data connection, covers all three.
Takeaway: a refresh skill is only as good as the data it reads, so pick your GSC connection first and your writing skill second.
The best Claude Code skills for content refresh (free and paid)
Direct answer: The strongest free options in November 2026 are AgriciDaniel’s blog-decay and blog-rewrite skills (claude-blog plugin), rampstackco’s content-refresh-system, sickn33’s seo-content-refresher, and Corey Haines’ marketingskills. For live data, the free mcp-gsc server connects Claude to Search Console. Paid options are mostly data: Ahrefs MCP (from $129/month), Semrush MCP and DataForSEO (pay as you go, $50 minimum top-up).
Every repository below was checked through the GitHub API on 2026-11-01. Star counts move daily, so treat them as a snapshot.
Free skills on GitHub
1. claude-blog: blog-decay + blog-rewrite (AgriciDaniel)
- Source: github.com/AgriciDaniel/claude-blog. 2,606 stars, last push 2026-10-30. MIT license.
- What it does:
blog-decaycompares two GSC page exports (current period vs previous period) and flags pages whose clicks or impressions fell past a threshold, with a triage hint: refresh, query shift, consolidate or prune. The default is 20%, and the skill itself says that number is “a screening heuristic, not proof of decay.” It also warns about URL mismatches (httpvshttps, trailing slashes) that make one page look like a total loss.blog-rewritehandles the update. The same plugin includesblog-cannibalizationandblog-factcheck, which matter for merge decisions and stale stats. - Install:
/plugin marketplace add AgriciDaniel/claude-blog, then/plugin install claude-blog@agricidaniel-blog.
2. content-refresh-system (rampstackco/claude-skills)
- Source: github.com/rampstackco/claude-skills. 1,013 stars, last push 2026-10-27.
- What it does: a program-level playbook. Quarterly audits, refresh prioritization, refresh vs merge vs delete decisions, and documentation so the program can be audited later. It does not crunch your data. It gives Claude the judgment framework for a 200-page or 2,000-page library.
- Install:
/plugin marketplace add rampstackco/claude-skills, then/plugin install rampstack-skills@rampstack(or the narrowerrampstack-seo@rampstack).
3. seo-content-refresher (sickn33/agentic-awesome-skills)
- Source: github.com/sickn33/agentic-awesome-skills, skill at
skills/seo-content-refresher. The whole collection has 48,967 stars, last push 2026-11-01. - What it does: flags outdated statistics, dates and examples inside a post and produces a prioritized refresh plan. Good for the execution step, weaker on detection.
- Install: copy
skills/seo-content-refresherinto~/.claude/skills/, or usenpx skills add sickn33/agentic-awesome-skillsand pick the skill.
4. marketingskills (coreyhaines31)
- Source: github.com/coreyhaines31/marketingskills. 57,803 stars, last push 2026-10-31.
- What it does: a broad marketing pack. The
copy-editingskill ships acontent-refresh.mdreference, andseo-auditcovers the on-page checks you run after a rewrite. No dedicated decay detector. - Install:
npx skills add coreyhaines31/marketingskills, ornpx skills add coreyhaines31/marketingskills --listto choose skills.
5. aaron-marketing-skills: content-writer (aaron-he-zhu)
- Source: github.com/aaron-he-zhu/aaron-marketing-skills. 3,046 stars, last push 2026-11-01.
- What it does: directories still list a
content-refresherskill from the olderseo-geo-claude-skillsrepo. That repo is now a signpost, and its readme says the refresher “was merged intocontent-writer” in the new bundle. Install the active one, not the frozen copy. - Install:
npx skills add aaron-he-zhu/aaron-marketing-skills -s content-writer, or/plugin marketplace add aaron-he-zhu/aaron-marketing-skillsthen/plugin install aaron-marketing@aaron.
6. claude-seo (AgriciDaniel) and seomachine (TheCraigHewitt)
- claude-seo: 25,381 stars, last push 2026-11-01. Its
seo-flowprompts include a CTR audit and a content audit, useful for “position held but clicks dropped” pages. Install:/plugin marketplace add AgriciDaniel/claude-seo, then/plugin install claude-seo@agricidaniel-claude-seo. - seomachine: 7,565 stars, last push 2026-10-23. A full content workspace with
/analyze-existingand/rewritecommands. Install:git clone https://github.com/TheCraigHewitt/seomachine.gitand open the folder in Claude Code.
Free data connections (MCP servers)
- AminForou/mcp-gsc: 2,086 stars, last push 2026-09-15. Open-source GSC MCP server with a
compare_search_periodstool, which is the exact query a decay check needs. Install: clone the repo and follow its Google credentials setup. (The readme also advertises a hosted version with “only 100 seats.” That is scarcity language we can’t verify, so this guide covers the free self-hosted server only.) - ahonn/mcp-server-gsc: 282 stars, last push 2026-09-04. A lighter alternative.
- Anthropic’s official plugin directory, anthropics/claude-plugins-official (45,680 stars), is worth browsing for connectors before you install a third-party one.
Paid data sources and packs
| Product | Type | Price (checked 2026-11-01) | Refresh relevance |
|---|---|---|---|
| Ahrefs MCP | Hosted MCP server | Lite $129/mo, Standard $249/mo, Advanced $449/mo. MCP needs Lite or higher | Ranking history, lost keywords, competitor pages that overtook you |
| Semrush MCP | Hosted MCP server | Included with Semrush One Starter, Pro+, SEO Classic Pro and Guru (50,000 MCP API units). Plan price not stated on the MCP page | Position tracking and keyword loss |
| DataForSEO MCP | MCP server over a paid API | Pay as you go, $50 minimum top-up, $1 trial credit (pricing) | SERP snapshots to see what now outranks you |
| SE Ranking SEO Skills | Free skills that need a paid data account | Skills free; SE Ranking plan pricing not public on that page (trial offered) | Content audit skill; no dedicated refresh skill |
| The Ultimate Claude SEO & AEO Skills Pack (Contra) | Paid skill pack, 12 skill files | $39 (shown against a $79 reference price) | No refresh or decay skill listed; its AEO Content Optimizer restructures existing pages |
We searched Gumroad for a paid Claude Code skill built for content refresh and found none. The paid SEO packs we did find there focus on programmatic content or audits. For refresh work specifically, the paid money goes on data, and the skills themselves are free.
Takeaway: start with the free claude-blog decay skill and the free GSC MCP. Pay for Ahrefs, Semrush or DataForSEO only when you need to see who took your position, which GSC can’t show.
Free vs paid: which setup fits your site?
Direct answer: A free stack (claude-blog plus mcp-gsc) covers detection, triage and rewriting for most sites under a few thousand pages. Paid data adds competitor context: which URL replaced you, which keywords you lost, and how the SERP changed. Pay when you can’t explain a drop from your own data.
| Need | Free option | Paid option | Verdict |
|---|---|---|---|
| Find pages losing clicks | blog-decay on GSC exports | Ahrefs or Semrush rank history | Free is enough. GSC is first-party data |
| Live GSC queries in chat | mcp-gsc | Hosted GSC connectors | Free, if you can set up Google credentials |
| See who outranks you now | Manual SERP check | DataForSEO SERP API, Ahrefs | Paid saves hours at scale |
| Refresh vs merge vs delete | rampstack content-refresh-system | None found that does it better | Free |
| Rewrite and update facts | blog-rewrite, seo-content-refresher | Contra SEO & AEO pack ($39) | Free covers it. The paid pack has no refresh skill |
| Cannibalization check | blog-cannibalization | Ahrefs, Semrush | Free for small sites |
If you write the rewrites yourself, pair this with Claude Code skills for content writers. If you want the wider SEO stack, see the best Claude Code skills for SEO.
Takeaway: pay for data you can’t get, never for a prompt you could write.
How to spot content decay from GSC data
Direct answer: Export page-level data from Google Search Console for two equal periods (for example, the last 3 months vs the 3 months before, or the same quarter last year). Flag pages where clicks fell meaningfully, then check whether impressions, position or CTR caused it. Each cause points to a different fix.
Search Console keeps 16 months of performance data, so a year-over-year comparison is possible as long as you export before data rolls off.
The four decay patterns
A clicks drop is a symptom. The other three metrics tell you the cause:
| Pattern in GSC | What it usually means | Likely action |
|---|---|---|
| Position down, impressions down | Competitors or a Google update pushed you lower | Refresh for depth and intent |
| Position flat, impressions down | Less demand for the query (seasonal or a dying topic) | Check Google Trends. Maybe do nothing |
| Position flat, CTR down | SERP changed: AI Overview, new features, better titles | Rewrite title and meta, add answer blocks |
| Clicks split across two of your URLs | Cannibalization | Merge and redirect |
A decay prompt that works with the skills above
With claude-blog installed and two exports saved:
/blog decay current-q3.json previous-q2.json 20 clicks
With mcp-gsc connected, ask in plain language:
Compare page performance for the last 90 days vs the prior 90 days.
List pages with 50+ clicks in the earlier period whose clicks fell 25% or more.
For each, show change in impressions, average position and CTR, and
the top 3 queries that lost clicks.
The “50+ clicks” floor matters. The blog-decay skill makes the same point: a drop from 5 clicks to 3 is 40% and means nothing. Small baselines are noise.
Rule out false alarms first
Before you touch a page, rule out:
- Seasonality. Compare against the same period last year, not only the previous quarter.
- Tracking or property changes. A domain-property switch or an
httptohttpsmove splits data. - URL changes. A renamed slug looks like one page died and a new one was born.
- Google updates. Check the Google Search Status Dashboard for ranking updates in your window.
For deeper diagnosis of a single sharp drop, a full audit skill helps more than a decay screen. See Claude Code skills for SEO audits.
Takeaway: decay is a pattern across metrics, never a single number, and the pattern decides the fix.
Refresh, merge, redirect or delete: how to decide
Direct answer: Refresh pages that still match a real query and once ranked well. Merge pages that compete with a stronger page of yours for the same intent. Redirect a removed page when it has backlinks, internal links or residual traffic. Delete only thin pages with no links, no traffic and no business value, and expect them to return a 404 or 410.
This is the call where a skill like rampstack’s content-refresh-system earns its place, because it forces a reason for each decision. Here is the decision table we’d give Claude as a starting point:
| Signal | Refresh | Merge | Redirect | Delete |
|---|---|---|---|---|
| Page used to rank top 10 | Yes | |||
| Query still has demand | Yes | Yes | ||
| Another of your pages targets the same intent | Yes | Yes | ||
| Has backlinks or internal links | Yes | Yes (redirect the loser) | Yes | No, redirect instead |
| Facts outdated, structure fine | Yes | |||
| Topic dead, product discontinued | Yes, to closest relevant page | Yes, if no links | ||
| Thin, no traffic, no links, no conversions | Yes |
Practitioner signal from Reddit
The forum advice lines up with the table. In an r/SEO thread captured by a subreddit snapshot mirror, one commenter says that for blogs that did well and then dropped, the common fix is “refreshing older posts with updated info and better topical depth, not necessarily creating new content.” Another describes updating posts that used to rank on page one and deleting duplicates.
The cost of deleting
Deleting has side effects you can measure before you act. Internal links to a deleted URL become broken links, so crawl the site first. One case study reported by Ranked.ai cut a site from 340 to 190 pieces and saw organic traffic fall 18% in the first three weeks. One case proves nothing about your site, but it is a reason to prune in batches and watch.
Merges need two follow-ups: 301 the weaker URL to the stronger one, then update internal links so they point straight at the survivor. Claude Code skills for internal linking covers the second step. For overlapping topics, keyword clustering skills help you see which pages share an intent.
Takeaway: refreshing is the default, merging fixes cannibalization, and deleting is the last resort that still needs a redirect check.
The content refresh workflow in Claude Code, step by step
Direct answer: Run detection, triage, a SERP check, the rewrite, a fact check, an on-page check and a dated changelog, in that order. Keep a human approval step between triage and rewrite. Claude can do each step, but the decision to change a ranking page should be yours.
Step 1: Detect
Run blog-decay or the mcp-gsc comparison prompt. Save the output as refresh-queue.md in your project.
Step 2: Triage
Ask Claude to apply the decision table to each flagged page and write a one-line reason per call. Review the list yourself. This is where a wrong “delete” gets caught.
Step 3: Check the current SERP
Search the page’s top losing query. Note what the top three results cover that yours doesn’t: newer data, a comparison table, a video, a direct answer near the top. With DataForSEO or Ahrefs connected, Claude can pull this for you. Without them, paste the URLs in.
Step 4: Rewrite with a brief
Give the writing skill a short brief: target query, lost queries, gaps from Step 3, and what must not change (URL, core angle, any parts that still rank). Content brief skills help here.
A refresh checklist for the rewrite:
- Answer the main query in the first 100 words
- Replace outdated stats with sourced, dated ones
- Add the subtopics the current top results cover
- Update screenshots, product names, prices
- Fix or replace dead outbound links
- Add internal links to newer related posts
- Update FAQ answers and schema to match the visible content (schema markup skills)
- Keep the URL unless there is a strong reason to move it
Step 5: Fact check
Run blog-factcheck or ask Claude to list every number and claim with its source. Anything without a source gets cut or sourced.
Step 6: Publish and log
Write a changelog entry: date, what changed, why, and the baseline metrics. You need this for Step 7 and for deciding whether the new date is honest.
Step 7: Measure
Covered below. If you want to package these steps as your own skill, how to build a Claude Code skill shows the structure.
Takeaway: the workflow is cheap to run with skills, so the bottleneck is your review time. Spend it on triage and the final read.
Updating dates honestly: no fake freshness
Direct answer: Change the visible “updated” date and dateModified only when the main content changed in a meaningful way. Google’s helpful content guidance asks whether you are “changing the date of pages to make them seem fresh when the content has not substantially changed.” A typo fix, a new image or a new copyright year is not an update.
Google’s position has stayed consistent. Its Search Central guidance on dates says a substantially changed article can reasonably get a fresh date. John Mueller has said changing dates alone won’t improve rankings (Search Engine Journal). For sitemaps, Google treats main content, structured data or link changes as reasons to update lastmod, and a copyright-date change as not significant (Search Engine Roundtable).
Google doesn’t define “significant.” Some SEO blogs claim re-dating triggers a penalty. We found no Google document that says so. The real risk is trust: readers and AI answer engines both use dates to judge whether a page is current, and a date that lies costs credibility once someone notices.
A practical date policy
| Change | Update visible date? | Update dateModified? | Update sitemap lastmod? |
|---|---|---|---|
| New sections, new data, rewritten advice | Yes | Yes | Yes |
| Merged another post in | Yes | Yes | Yes |
| Fixed outdated stats or prices only | Yes, with a note on what changed | Yes | Yes |
| Typo, image swap, formatting | No | No | No |
| Copyright year in footer | No | No | No |
Put the rule in your skill. A line in your project’s CLAUDE.md or in a custom refresh skill works: “Only change date_modified if the changelog lists a substantive change. Otherwise keep the existing date.” That stops Claude from bumping dates by reflex. A short “What changed” note at the top of refreshed posts helps readers and keeps you honest.
Takeaway: the date is a claim about the content. Change it when the claim becomes true.
How to measure whether a refresh worked
Direct answer: Record a baseline (clicks, impressions, average position and CTR for the page and its top queries) before publishing. Wait at least 4 to 6 weeks, then compare equal-length periods against that baseline and against a control group of similar pages you didn’t touch. Judge on clicks and target-query position, not on impressions alone.
Set up the comparison
- Baseline window: the 28 or 90 days before the refresh.
- Wait: recrawl and re-ranking take time. Request indexing in GSC’s URL Inspection tool to speed up discovery, but don’t read results in the first two weeks.
- Post window: same length as the baseline, starting a week after publish.
- Control group: 5 to 10 similar decaying pages you left alone. If they recovered too, the refresh probably wasn’t the cause.
What to track
| Metric | Why it matters | Watch out for |
|---|---|---|
| Clicks | The outcome you care about | Seasonality, so compare year over year too |
| Avg position for target queries | Shows whether the rewrite matched intent | Page-level position averages many queries |
| Impressions | Shows new query coverage | Can rise with no click gain |
| CTR | Shows title, meta and SERP feature effects | AI Overviews can lower CTR at a steady position |
| Conversions | Business value | Needs analytics, not GSC |
With mcp-gsc connected, the measurement prompt is short:
For URL X, compare clicks, impressions, CTR and average position for
[post window] vs [baseline window]. Then do the same for the control
pages listed in refresh-log.md. Report the difference between the two groups.
Log every result in the same changelog. After a few rounds you’ll know which kinds of refresh work on your site, which beats any industry average. For AI search visibility after a refresh, see Claude Code skills for GEO.
Takeaway: without a baseline and a control, a “successful refresh” is a guess.
Common content refresh mistakes
Direct answer: The most common mistakes are refreshing on a calendar instead of on signals, changing the URL, deleting pages with links, bumping dates without real changes, and rewriting the parts of a page that still rank.
- Refreshing everything quarterly. rampstack’s skill warns against both “refresh-everything-on-calendar” and refreshing nothing until traffic collapses. Use signals.
- Changing the URL. A new slug throws away accumulated signals unless redirected, and even then adds risk. Keep it.
- Rewriting what works. Check which queries still bring clicks. Protect those sections.
- Trusting a 20% flag blindly. Small baselines and seasonality produce big percentages.
- Letting Claude invent fresh stats. A refreshed post with a made-up 2026 figure is worse than the stale original. Make sourcing a hard rule.
- Ignoring cannibalization. Two of your posts splitting a query both lose. Merge them.
- No changelog. Without one, you can’t measure or justify the new date.
If your library is large and template-driven, refresh rules differ. See programmatic SEO skills. Topic gaps found during refresh often belong in a new post; topical map skills help you place them.
Takeaway: most refresh damage comes from changing too much, not too little.
FAQ
How do I know if my content is decaying?
Compare page-level clicks in Google Search Console across two equal periods. If clicks fell meaningfully on a page with a decent baseline, and the drop isn’t seasonal, check position, impressions and CTR to find the cause.
How often should I update old blog posts?
Update on signals, not a schedule. A quarterly decay check is a sensible rhythm. Fast-moving topics (software, pricing, regulations) need checks more often than evergreen ones.
Is it better to update old content or create new content?
For pages that once ranked and still match a live query, updating is usually faster. Practitioners on r/SEO often point to refreshing over new posts for blogs that dropped. Create new content for subtopics your existing posts can’t absorb.
Should I delete old blog posts with no traffic?
Only if they have no backlinks, no internal links pointing in, no conversions and no realistic chance of ranking. Otherwise merge or redirect. Crawl the site first so you don’t leave broken internal links.
Does changing the date on a post help SEO?
Not by itself. Google’s John Mueller has said changing dates won’t improve rankings, and Google’s helpful content guidance flags re-dating pages that haven’t substantially changed.
What counts as a significant update for dateModified?
Google doesn’t define it. Reasonable signals: new or rewritten sections, new data, merged content, or changes to main content, structured data or links. Typos, images and copyright years don’t count.
Should I change the URL when I refresh a post?
No, in almost every case. Keep the URL so links and history stay attached. If you must move it, 301 redirect the old URL.
How long does it take to see results from a content refresh?
It varies by crawl frequency and competition. Don’t read results in the first two weeks. Compare equal periods starting about 4 to 6 weeks after publishing.
What is the difference between refreshing and rewriting content?
A refresh updates facts, links, sections and on-page elements while keeping the structure and angle. A rewrite rebuilds the page because the intent or angle no longer matches the query.
When should I merge two blog posts?
When both target the same search intent and split clicks or rankings. Merge the weaker into the stronger, 301 the weaker URL, and update internal links.
Can Claude Code connect to Google Search Console?
Yes, through an MCP server such as the open-source mcp-gsc, which includes a period comparison tool. You can also export GSC data and let a skill like blog-decay analyze the files offline.
Do I need Ahrefs or Semrush for content refresh?
No. GSC covers detection and measurement. Paid tools add competitor context, like which page replaced yours, which helps on competitive queries.
What is the best free Claude Code skill for content decay?
For detection, AgriciDaniel’s blog-decay in the claude-blog plugin, because it works on GSC exports and is explicit about its limits. For decisions, rampstack’s content-refresh-system.
Are there paid Claude Code skills for content refresh?
We didn’t find a paid skill built specifically for refresh. The Contra SEO & AEO Skills Pack ($39) has no refresh skill listed. Paid spend for refresh goes to data: Ahrefs, Semrush or DataForSEO.
How do I install a content refresh skill in Claude Code?
Either run npx skills add owner/repo, use /plugin marketplace add owner/repo followed by /plugin install, or copy the skill folder into ~/.claude/skills/.
Why did my traffic drop when my rankings stayed the same?
Usually CTR fell. A new AI Overview, a featured snippet or stronger competitor titles can take clicks at the same position. Rewrite the title and meta, and add a direct answer block.
Sources and methodology
Repository data (stars, last push dates, file paths, install commands) came from the GitHub API and repository readmes on 2026-11-01. Prices were checked on the live vendor pages the same day. Skill descriptions come from each skill’s own SKILL.md. We did not run benchmark tests on these skills, and we don’t report outcome numbers we can’t source.
- AgriciDaniel/claude-blog
skills/blog-decay/SKILL.md: https://github.com/AgriciDaniel/claude-blog - rampstackco
content-refresh-system: https://github.com/rampstackco/claude-skills - aaron-he-zhu signpost notice: https://github.com/aaron-he-zhu/seo-geo-claude-skills
- Ahrefs pricing: https://ahrefs.com/pricing
- Semrush MCP units: https://www.semrush.com/kb/1618-mcp
- DataForSEO pricing: https://dataforseo.com/pricing
- Contra SEO & AEO pack: https://contra.com/products/fE9zVnna-the-ultimate-claude-seo-and-aeo-skills-pack
- Google date guidance coverage: https://www.searchenginejournal.com/googles-john-mueller-changing-dates-on-pages-wont-improve-rankings/401734/ and https://seroundtable.com/google-lastmod-date-copyright-38861.html
- Deletion case study: https://www.ranked.ai/blog/post/deciding-to-keep-old-content
Your next step
Install claude-blog, export two quarters of page data from Search Console, and run /blog decay this week. You’ll have a refresh queue in an hour. Triage it with the decision table above, refresh the top five pages, log the baseline, and check back in six weeks. For the rest of the stack, browse Claude Code skills for marketers and technical SEO skills.