Blog Refresh Optimizer
Purpose: Turn an existing, published blog post into a decision plus a do-this refresh plan.
Most organic traffic and most leads come from older posts, not new ones — so re-investing in a
post that already has index history and link equity usually beats writing net-new. This skill
decides whether a post is worth the investment, then tells the writer or developer exactly
what to change to move it.
Scope: Existing content only — one URL or a batch. It covers the full refresh lifecycle:
triage → refresh plan → GEO retrofit → cannibalization/consolidation → post-publish tracking.
It does not plan brand-new posts (use blog-seo-content-brief) and it is not a full
site-wide technical audit (use seo-geo-optimizer for that).
Design principle — act, don't interrogate. This is a repetitive task run across many URLs.
Pull the performance data yourself from the connected tools before asking anything. Ask for
missing inputs only once, batched, and only when they can't be discovered (see Step 1). Never
recommend deleting or redirecting a URL without showing the data behind that call.
Workflow
Run in order. Steps 2–4 gather evidence; Step 5 triages; Step 6 writes the plan.
Step 1 — Confirm the inputs (fast)
You need four things. Discover or infer as many as possible before asking:
- The URL(s) — required. One post, or a batch from a content audit. If the user pasted a
URL, use it. If they named a topic instead ("our Drupal migration posts"), find the matching
URLs via Screaming Frog crawl or GSC (Step 2) rather than asking.
- The post's goal — what this post is for: lead gen, authority/thought leadership, brand
awareness, direct conversion, or funnel/education. Infer from the topic and the CTA on the
page; state the assumption. The goal changes which metrics matter and which refresh moves win.
- Time window — default to last 12 months vs. the prior 12 for decay detection. Only ask if
the user wants a different comparison.
- Author / byline & approver — for the handoff (e.g. Sam for content approval, Elisa/Matt
for review). Optional; leave a placeholder.
If ONLY the URL is missing, ask one short question. Otherwise proceed. The whole point of this
skill is speed across many posts.
Step 2 — Pull performance data (the evidence)
Read references/data-pull.md for exact tool calls, parameter names, and fallback order. For
each URL, assemble:
- Search performance (GSC via Porter/Supermetrics): clicks, impressions, CTR, average
position — current window vs. prior window. This is the primary decay signal.
- Engagement (GA4 via Porter/Supermetrics): sessions, engagement rate, average engagement
time, conversions/key events, and any downstream event (form start, form submit) tied to the
page. This tells you if traffic actually does anything.
- The queries the page ranks for (GSC): which terms drive impressions, and which sit on page
2 (positions 8–20) — the "striking distance" terms a refresh can push onto page 1.
- Content decay pattern: is this a slow slide, a cliff (algorithm/SERP change), or seasonal?
- Freshness signals (Screaming Frog / page fetch): last-modified date, word count, thin/
broken elements, outbound links (some may be dead or point to outdated resources).
Never invent a metric. If a number can't be retrieved, write "not retrieved" and note why.
Step 3 — Read the current SERP + GEO landscape
Read references/data-pull.md §C–D. For the post's primary query:
- Live Google SERP (
Porter:serp_organic_live_advanced): who outranks the post now, what
format wins (guide, listicle, tool, video), which SERP features are present (Featured Snippet,
People Also Ask, AI Overview), and the content gaps the top pages cover that this post
doesn't. PAA questions are prime FAQ + heading material.
- GEO / AI-search layer (Conductor): the real prompts users ask AI engines on this topic and
who gets cited. A refresh isn't just about Google rank anymore — it's about whether ChatGPT,
Perplexity, and Google AI Overviews can quote this post. If a Conductor endpoint is
feature-gated (past 403s on some AI Search Performance features for account 14868), note it
inline and fall back to PAA — don't stall.
Step 4 — Cannibalization check
Read references/triage-framework.md §Cannibalization. Before recommending a refresh, check
whether Acquia has more than one URL competing for the post's main query (common on large
blogs and a frequent cause of a post that "won't move"). Use GSC (multiple URLs for one query)
and Porter:google_page_intersection. If two posts overlap, the right move is often
consolidate + 301, not refresh both — flag it here so the plan doesn't polish a page that
should be merged away.
Step 5 — Triage: assign one action
Read references/triage-framework.md fully. Score the post on three axes — performance
(is it working?), strategic value (does it serve a current priority / pillar / product?),
and accuracy/decay (is it stale, wrong, or declining?) — then assign exactly one action:
- KEEP — performing and accurate. Leave it; add to the monitor list.
- REFRESH — good bones, decaying or beatable. The main path: rework in place, keep the URL.
- CONSOLIDATE — overlaps/cannibalizes another URL. Merge the best of both into one, 301 the
loser to preserve link equity.
- REPURPOSE — topic still useful but the post is weak; rebuild as a new angle/format (or lift
the good parts into a pillar/service page) and 301 the original.
- RETIRE — no traffic, no strategic value, inaccurate beyond saving, and no salvageable
equity. 301 to the nearest relevant page (rarely: unpublish/410). Never recommend a bare delete
without a redirect target.
State the action, the one-line rationale, and the data that drove it.
Step 6 — Write the refresh plan (for KEEP-with-tweaks, REFRESH, CONSOLIDATE, REPURPOSE)
Read references/refresh-playbook.md for the tactic library, then fill in
references/refresh-report-template.md completely for each URL. The plan is section-by-section
and buildable — the person executing should never have to ask "change what, to what?"
Step 7 — Load Acquia guardrails (before any copy is drafted)
If the refresh includes rewritten copy, new sections, or new CTAs, apply the Acquia guidelines so
the output ships clean the first time. Start with the bundled references/acquia-guidelines.md
— a self-contained quick reference (voice, writing rules, accessibility, product naming, and
claims) that works even if the marketing-essentials plugin isn't installed. For anything it
doesn't cover (full word list, complete product table, full claims checklist), defer to the
authoritative plugin skills below — pull the specifics that matter, don't restate the whole guide:
marketing-essentials:acquia-writing-style — voice, no contractions, Oxford comma,
capitalization, numbers/dates, en/em dashes.
marketing-essentials:acquia-product-naming — correct current product names (Acquia Source,
DAM, etc.) and renamed/EOS products. Old posts often use outdated product names — a refresh
is the moment to fix them.
marketing-essentials:acquia-marketing-policy — any competitor comparison, superiority claim,
or analyst citation added in the refresh must be substantiated. Flag claims to back up.
marketing-essentials:acquia-context — grounding facts and approved proof points for any new
stats or positioning.
marketing-essentials:acquia-humanizer — if rewriting large chunks, de-slop so it reads human
and on-brand.
Related skills to hand off to: schema-generator (FAQ/Article schema for the GEO retrofit),
cro-expert (if the main problem is conversion, not traffic), pseo-comparison-pages (if
REPURPOSE turns the post into a competitor-alternative page).
Output rules
- Evidence first, decision second. Every triage call shows the numbers behind it (current
vs. prior window). No "this looks stale" without the data.
- One action per URL. Keep / Refresh / Consolidate / Repurpose / Retire — pick one, justify
it. For a batch, deliver a triage table first, then full plans only for the actionable ones.
- The refresh plan is buildable. Section-by-section: what to change, why, and — where copy is
involved — the actual replacement text or a tight spec for it. Include the striking-distance
queries the refresh targets.
- Preserve equity. Any URL change, merge, or retirement specifies the 301 target. Never a
bare delete. Keep the existing URL on a REFRESH unless there's a strong reason to change it.
- GEO retrofit is standard, not optional. Every refresh plan includes the AI-search layer:
answer-first intro, self-contained answer blocks, FAQ, entities, and stats with sources.
- Freshness is real, not cosmetic. Update facts, dead links, tense, product names, and trend
data — and only then update the visible "last updated" date. Do not just change the date.
- Acquia-compliant. Voice and current product names correct; every added comparison/claim
flagged for substantiation.
- Don't fabricate data. Missing metric → "not retrieved". A refresh plan built on invented
numbers is worse than one honest about gaps.
Reference files
references/triage-framework.md — The Keep/Refresh/Consolidate/Repurpose/Retire decision
model, the 3-axis scoring, decay-pattern reading, and the cannibalization check.
references/data-pull.md — Exact tool calls for GSC + GA4 (Porter/Supermetrics), live SERP,
Conductor GEO layer, and Screaming Frog crawl, with fallback order.
references/refresh-playbook.md — The tactic library: on-page, freshness, content gaps,
internal linking, CTR, CRO, and the full GEO/AI-search retrofit.
references/refresh-report-template.md — The fill-in per-URL refresh plan, plus the
batch triage table.
references/acquia-guidelines.md — Self-contained Acquia guidelines (voice, writing rules,
accessibility, product naming, claims) plus a pre-publish refresh checklist. Works without the
marketing-essentials plugin; points to the full plugin skills for edge cases.
assets/example-refresh.md — A worked example refresh plan for depth and tone reference.
Key principles
- Old content is an asset, not a liability. A post already in Google's index has history and
equity a new post has to earn from scratch. Refreshing usually beats writing new — but only
for posts the data says are worth it.
- Decide before you polish. The most expensive mistake is refreshing a page that should be
consolidated or retired. Triage first.
- Chase striking-distance, not vanity terms. The fastest wins are queries the post already
ranks 8–20 for. Find them in GSC and aim the refresh there.
- Freshness means accuracy, not a new date. Fix the facts, links, tense, and product names.
Changing only the timestamp is a trick Google and readers see through.
- Refresh for the answer, not just the ranking. If AI engines can't cleanly quote the post,
a rank refresh leaves the fastest-growing surface — AI search — on the table.
- Never delete blind. Every retirement or merge routes its link equity somewhere with a 301.
1---2name: blog-refresh-optimizer3description: Audits and optimizes EXISTING, already-published Acquia blog posts — historical content optimization, not new content. Takes a URL (or a batch) plus its performance data (GSC, GA4) and produces a triage decision (Keep / Refresh / Consolidate / Repurpose / Retire), then a section-by-section refresh plan: on-page fixes, freshness/accuracy updates, content gaps, internal links, CTR, a GEO/AI-search retrofit, and cannibalization checks. Pulls data itself from Porter/Supermetrics, the live SERP, Conductor, and Screaming Frog. TRIGGER on "optimize old blog posts", "refresh content", "update an old post", "historical optimization", "content decay", "why did this post drop", "should we update or delete this", pasting an existing URL to improve, or a content-audit batch of published URLs. Do NOT use for planning a brand-new post — that is blog-seo-content-brief. Repetitive, high-volume task; default to producing the plan, not a long questionnaire.4---56# Blog Refresh Optimizer78**Purpose:** Turn an existing, published blog post into a decision plus a do-this refresh plan.9Most organic traffic and most leads come from older posts, not new ones — so re-investing in a10post that already has index history and link equity usually beats writing net-new. This skill11decides *whether* a post is worth the investment, then tells the writer or developer *exactly*12what to change to move it.1314**Scope:** Existing content only — one URL or a batch. It covers the full refresh lifecycle:15triage → refresh plan → GEO retrofit → cannibalization/consolidation → post-publish tracking.16It does **not** plan brand-new posts (use `blog-seo-content-brief`) and it is not a full17site-wide technical audit (use `seo-geo-optimizer` for that).1819**Design principle — act, don't interrogate.** This is a repetitive task run across many URLs.20Pull the performance data yourself from the connected tools *before* asking anything. Ask for21missing inputs only once, batched, and only when they can't be discovered (see Step 1). Never22recommend deleting or redirecting a URL without showing the data behind that call.2324---2526## Workflow2728Run in order. Steps 2–4 gather evidence; Step 5 triages; Step 6 writes the plan.2930### Step 1 — Confirm the inputs (fast)3132You need four things. Discover or infer as many as possible before asking:33341. **The URL(s)** — required. One post, or a batch from a content audit. If the user pasted a35 URL, use it. If they named a topic instead ("our Drupal migration posts"), find the matching36 URLs via Screaming Frog crawl or GSC (Step 2) rather than asking.372. **The post's goal** — what this post is *for*: lead gen, authority/thought leadership, brand38 awareness, direct conversion, or funnel/education. Infer from the topic and the CTA on the39 page; state the assumption. The goal changes which metrics matter and which refresh moves win.403. **Time window** — default to last 12 months vs. the prior 12 for decay detection. Only ask if41 the user wants a different comparison.424. **Author / byline & approver** — for the handoff (e.g. Sam for content approval, Elisa/Matt43 for review). Optional; leave a placeholder.4445If ONLY the URL is missing, ask one short question. Otherwise proceed. The whole point of this46skill is speed across many posts.4748### Step 2 — Pull performance data (the evidence)4950Read `references/data-pull.md` for exact tool calls, parameter names, and fallback order. For51each URL, assemble:5253- **Search performance (GSC via Porter/Supermetrics):** clicks, impressions, CTR, average54 position — current window vs. prior window. This is the primary decay signal.55- **Engagement (GA4 via Porter/Supermetrics):** sessions, engagement rate, average engagement56 time, conversions/key events, and any downstream event (form start, form submit) tied to the57 page. This tells you if traffic actually does anything.58- **The queries the page ranks for (GSC):** which terms drive impressions, and which sit on page59 2 (positions 8–20) — the "striking distance" terms a refresh can push onto page 1.60- **Content decay pattern:** is this a slow slide, a cliff (algorithm/SERP change), or seasonal?61- **Freshness signals (Screaming Frog / page fetch):** last-modified date, word count, thin/62 broken elements, outbound links (some may be dead or point to outdated resources).6364Never invent a metric. If a number can't be retrieved, write "not retrieved" and note why.6566### Step 3 — Read the current SERP + GEO landscape6768Read `references/data-pull.md` §C–D. For the post's primary query:6970- **Live Google SERP** (`Porter:serp_organic_live_advanced`): who outranks the post now, what71 format wins (guide, listicle, tool, video), which SERP features are present (Featured Snippet,72 People Also Ask, AI Overview), and the **content gaps** the top pages cover that this post73 doesn't. PAA questions are prime FAQ + heading material.74- **GEO / AI-search layer** (Conductor): the real prompts users ask AI engines on this topic and75 who gets cited. A refresh isn't just about Google rank anymore — it's about whether ChatGPT,76 Perplexity, and Google AI Overviews can quote this post. If a Conductor endpoint is77 feature-gated (past 403s on some AI Search Performance features for account 14868), note it78 inline and fall back to PAA — don't stall.7980### Step 4 — Cannibalization check8182Read `references/triage-framework.md` §Cannibalization. Before recommending a refresh, check83whether Acquia has **more than one** URL competing for the post's main query (common on large84blogs and a frequent cause of a post that "won't move"). Use GSC (multiple URLs for one query)85and `Porter:google_page_intersection`. If two posts overlap, the right move is often86**consolidate + 301**, not refresh both — flag it here so the plan doesn't polish a page that87should be merged away.8889### Step 5 — Triage: assign one action9091Read `references/triage-framework.md` fully. Score the post on three axes — **performance**92(is it working?), **strategic value** (does it serve a current priority / pillar / product?),93and **accuracy/decay** (is it stale, wrong, or declining?) — then assign exactly one action:9495- **KEEP** — performing and accurate. Leave it; add to the monitor list.96- **REFRESH** — good bones, decaying or beatable. The main path: rework in place, keep the URL.97- **CONSOLIDATE** — overlaps/cannibalizes another URL. Merge the best of both into one, 301 the98 loser to preserve link equity.99- **REPURPOSE** — topic still useful but the post is weak; rebuild as a new angle/format (or lift100 the good parts into a pillar/service page) and 301 the original.101- **RETIRE** — no traffic, no strategic value, inaccurate beyond saving, and no salvageable102 equity. 301 to the nearest relevant page (rarely: unpublish/410). Never recommend a bare delete103 without a redirect target.104105State the action, the one-line rationale, and the data that drove it.106107### Step 6 — Write the refresh plan (for KEEP-with-tweaks, REFRESH, CONSOLIDATE, REPURPOSE)108109Read `references/refresh-playbook.md` for the tactic library, then fill in110`references/refresh-report-template.md` completely for each URL. The plan is section-by-section111and buildable — the person executing should never have to ask "change what, to what?"112113### Step 7 — Load Acquia guardrails (before any copy is drafted)114115If the refresh includes rewritten copy, new sections, or new CTAs, apply the Acquia guidelines so116the output ships clean the first time. **Start with the bundled `references/acquia-guidelines.md`**117— a self-contained quick reference (voice, writing rules, accessibility, product naming, and118claims) that works even if the marketing-essentials plugin isn't installed. For anything it119doesn't cover (full word list, complete product table, full claims checklist), defer to the120authoritative plugin skills below — pull the specifics that matter, don't restate the whole guide:121122- `marketing-essentials:acquia-writing-style` — voice, no contractions, Oxford comma,123 capitalization, numbers/dates, en/em dashes.124- `marketing-essentials:acquia-product-naming` — correct current product names (Acquia Source,125 DAM, etc.) and renamed/EOS products. Old posts often use *outdated* product names — a refresh126 is the moment to fix them.127- `marketing-essentials:acquia-marketing-policy` — any competitor comparison, superiority claim,128 or analyst citation added in the refresh must be substantiated. Flag claims to back up.129- `marketing-essentials:acquia-context` — grounding facts and approved proof points for any new130 stats or positioning.131- `marketing-essentials:acquia-humanizer` — if rewriting large chunks, de-slop so it reads human132 and on-brand.133134Related skills to hand off to: `schema-generator` (FAQ/Article schema for the GEO retrofit),135`cro-expert` (if the main problem is conversion, not traffic), `pseo-comparison-pages` (if136REPURPOSE turns the post into a competitor-alternative page).137138---139140## Output rules141142- **Evidence first, decision second.** Every triage call shows the numbers behind it (current143 vs. prior window). No "this looks stale" without the data.144- **One action per URL.** Keep / Refresh / Consolidate / Repurpose / Retire — pick one, justify145 it. For a batch, deliver a triage table first, then full plans only for the actionable ones.146- **The refresh plan is buildable.** Section-by-section: what to change, why, and — where copy is147 involved — the actual replacement text or a tight spec for it. Include the striking-distance148 queries the refresh targets.149- **Preserve equity.** Any URL change, merge, or retirement specifies the 301 target. Never a150 bare delete. Keep the existing URL on a REFRESH unless there's a strong reason to change it.151- **GEO retrofit is standard, not optional.** Every refresh plan includes the AI-search layer:152 answer-first intro, self-contained answer blocks, FAQ, entities, and stats with sources.153- **Freshness is real, not cosmetic.** Update facts, dead links, tense, product names, and trend154 data — and only then update the visible "last updated" date. Do not just change the date.155- **Acquia-compliant.** Voice and current product names correct; every added comparison/claim156 flagged for substantiation.157- **Don't fabricate data.** Missing metric → "not retrieved". A refresh plan built on invented158 numbers is worse than one honest about gaps.159160---161162## Reference files163164- `references/triage-framework.md` — The Keep/Refresh/Consolidate/Repurpose/Retire decision165 model, the 3-axis scoring, decay-pattern reading, and the cannibalization check.166- `references/data-pull.md` — Exact tool calls for GSC + GA4 (Porter/Supermetrics), live SERP,167 Conductor GEO layer, and Screaming Frog crawl, with fallback order.168- `references/refresh-playbook.md` — The tactic library: on-page, freshness, content gaps,169 internal linking, CTR, CRO, and the full GEO/AI-search retrofit.170- `references/refresh-report-template.md` — The fill-in per-URL refresh plan, plus the171 batch triage table.172- `references/acquia-guidelines.md` — Self-contained Acquia guidelines (voice, writing rules,173 accessibility, product naming, claims) plus a pre-publish refresh checklist. Works without the174 marketing-essentials plugin; points to the full plugin skills for edge cases.175- `assets/example-refresh.md` — A worked example refresh plan for depth and tone reference.176177## Key principles1781791. **Old content is an asset, not a liability.** A post already in Google's index has history and180 equity a new post has to earn from scratch. Refreshing usually beats writing new — but only181 for posts the data says are worth it.1822. **Decide before you polish.** The most expensive mistake is refreshing a page that should be183 consolidated or retired. Triage first.1843. **Chase striking-distance, not vanity terms.** The fastest wins are queries the post already185 ranks 8–20 for. Find them in GSC and aim the refresh there.1864. **Freshness means accuracy, not a new date.** Fix the facts, links, tense, and product names.187 Changing only the timestamp is a trick Google and readers see through.1885. **Refresh for the answer, not just the ranking.** If AI engines can't cleanly quote the post,189 a rank refresh leaves the fastest-growing surface — AI search — on the table.1906. **Never delete blind.** Every retirement or merge routes its link equity somewhere with a 301.