# Ranking Recovery — weekly SEO refresh brief

## Scheduled task instruction (template)

This is the full instruction behind the **Recover lost rankings automatically** use case.
Paste it into your AI assistant as a scheduled task (for example, a Claude scheduled task
running every Friday morning).

**Before you run it, replace every `{{PLACEHOLDER}}` with your own values.**
Everything else can stay as it is.

---

## What to replace

| Placeholder | What it means | Example |
| --- | --- | --- |
| `{{BRAND_OR_CLIENT}}` | The brand or client the brief is for | Acme Agency |
| `{{YOUR_DOMAIN}}` | The domain tracked in your SE Ranking project | example.com |
| `{{BRIEF_TITLE_PREFIX}}` | The title prefix used for every brief file, so the coverage check can find past briefs | Acme Refresh Brief |
| `{{BRIEF_SKILL_NAME}}` | The SEO content brief skill your assistant should run | seo-content-brief |
| `{{SLACK_CHANNEL}}` | The Slack channel where the brief is announced | #seo-briefs |
| `{{SLACK_CHANNEL_ID}}` | That channel's ID | C0123456789 |
| `{{COVERAGE_WINDOW}}` | How long a keyword stays "already covered" | 4 months (120 days) |

---

## Before you start: what has to be connected

1. **The SE Ranking MCP**, connected to your AI assistant.
2. **An SE Ranking project** for `{{YOUR_DOMAIN}}` with tracked keywords and at least a few
   weeks of position history — the workflow compares an earlier check date with the latest one.
3. **The `seo-content-brief` skill** from our public library, added to your assistant:
   https://github.com/seranking/seo-skills/blob/main/skills/seo-content-brief/SKILL.md
   This is the skill that builds the brief itself. You can run it as it is, or adapt it to
   your own brief format — that is what the author of this workflow did.
   All SEO skills: https://github.com/seranking/seo-skills
4. **Google Drive**, so the brief can be created as a Google Doc and so the coverage check can
   look at past briefs.
5. **Slack**, if you want the announcement step. Any connected destination works instead — a
   Notion page, a task in your project tracker, or an email.

---

## The instruction

```
Generate a weekly "ranking recovery" SEO content brief for {{BRAND_OR_CLIENT}}. Run these steps in order.

OBJECTIVE
Identify one keyword that {{YOUR_DOMAIN}} was previously ranking for in the top 10 of Google
but has since fallen out of the top 10, then produce an SEO content brief for refreshing the
existing page that targets it.

---

STEP 1 — FIND THE DROPPED KEYWORD (SE Ranking project data)
Use the SE Ranking MCP tools (PROJECT_* and DATA_* tools).

1. Call PROJECT_listOwnedProjects (and PROJECT_listProjects if needed) and locate the project
   for the domain {{YOUR_DOMAIN}}. Note its project ID.
2. Pull the project's tracked keywords and their ranking history using PROJECT_listKeywords,
   PROJECT_getKeywordStats, and PROJECT_getPositionHistory.
3. Identify keywords that had a position of 10 or better at an earlier check date and now have
   a position worse than 10 (including "not in top 100" / dropped). These are the candidates.
4. CHECK FOR RECENT COVERAGE — Before selecting a keyword, search Google Drive for files whose
   titles match the pattern "{{BRIEF_TITLE_PREFIX}} — " using the Google Drive search tool.
   Look for files created in the last {{COVERAGE_WINDOW}}. Extract the keyword name from each
   matching file title (the segment between the first " — " and the second " — "). Exclude any
   candidate keyword that matches a recently covered keyword. Do not produce a brief for any
   keyword already briefed in that window — skip it and choose the next best candidate instead.
5. From the remaining (non-excluded) candidates, SELECT THE ONE THAT LOST THE MOST ESTIMATED
   ORGANIC TRAFFIC as a result of the drop (estimate from search volume and the change in
   CTR-by-position between the old and new rank). This is the "target keyword" for this week's
   brief.
6. If NO keyword qualifies (all dropped keywords were briefed recently, or none has fallen out
   of the top 10 this week), do not generate a brief. Instead create a short Google Doc (see
   Step 5 for how) titled "{{BRAND_OR_CLIENT}} Rankings Check — [YYYY-MM-DD]" with the note
   "No new {{YOUR_DOMAIN}} keywords dropped out of the top 10 this week that haven't been
   covered in the last {{COVERAGE_WINDOW}} — no refresh brief generated," and stop.
7. Record: the target keyword, its old position, its current position, its search volume, and
   the URL on {{YOUR_DOMAIN}} that ranks (or used to rank) for it.

---

STEP 2 — ANALYZE THE EXISTING PUBLISHED PAGE

1. Identify the existing {{YOUR_DOMAIN}} page that targets the keyword (from the SE Ranking
   ranking URL, or by checking which {{YOUR_DOMAIN}} URL ranks for it).
2. Fetch that live page and read its current content (use web fetch; if the page is JS-heavy
   and returns a shell, use browser tools to render it).
3. Note the page's current structure, headings, depth, publish/update date if visible, word
   count, and obvious content gaps.

---

STEP 3 — GENERATE THE BRIEF VIA THE BRIEF SKILL
Run the {{BRIEF_SKILL_NAME}} skill for: keyword = the target keyword from Step 1,
client = "{{BRAND_OR_CLIENT}}".

Because this is an unattended run, do NOT pause for the skill's pre-flight questions — use
these defaults:
- Competitor domains: use the current top-ranking SERP domains for the keyword.
- Content type: REWRITE / refresh of an existing page (not a new post).
- Buyer's journey stage: infer from keyword intent.
- Delivery channel: Google Doc + Slack (handled in Step 5 — do not post to Slack inside the
  skill itself).

Follow the skill's brief template and pull fresh SE Ranking data (updated SERP, keyword
metrics, related / semantic / question keywords) as the skill specifies.

---

STEP 4 — ADD A "REFRESH RECOMMENDATIONS" SECTION
Append a section to the brief titled
"## Refresh Recommendations — What to Update Since Last Publication".

In it, include:
- The keyword's ranking decline: old position, current position, estimated traffic lost.
- A comparison of the existing page (from Step 2) against the current top-ranking content and
  the fresh keyword research from Step 3.
- A concrete, prioritized list of what to update on the existing page to recover rankings —
  e.g. new subtopics / H2s to add, outdated stats or facts to refresh, semantic and question
  keywords now missing, sections to expand or cut, internal links to add, intent mismatches,
  and any format changes the current SERP rewards.
- A link to the existing page being refreshed.

The updated SEO research (volume, difficulty, secondary keywords, question keywords, SERP top
10) must be included as part of the brief, per the standard brief template.

---

STEP 5 — DELIVER

1. Create a Google Doc in the user's Google Drive using the Google Drive create-file tool.
   Upload the full brief as text content with contentMimeType "text/plain" (it will
   auto-convert to a native Google Doc). Title the doc:
   "{{BRIEF_TITLE_PREFIX}} — [target keyword] — [YYYY-MM-DD]".
2. Also save a local copy of the full brief as a markdown file in the outputs folder, named
   refresh-brief-YYYY-MM-DD.md (using the run date).
3. Post to the {{SLACK_CHANNEL}} Slack channel (channel ID: {{SLACK_CHANNEL_ID}}) using the
   Slack tool. Use this message format:

   *New Ranking Recovery Brief Ready*
   *Keyword:* [target keyword]
   *Client:* {{BRAND_OR_CLIENT}}
   *Position drop:* #[old] → #[new] | Est. traffic lost: ~[N] visits/mo

   [One sentence summary of why the page likely dropped and the top priority fix.]

   *Google Doc:* https://docs.google.com/document/d/[FILE_ID]/edit

4. Report back in chat: which keyword was chosen, its old vs current position, estimated
   traffic lost, the Google Doc file ID and link, the Slack message confirmation, and the saved
   local file path.

---

ERROR HANDLING
If SE Ranking or Google Drive tools fail, follow the brief skill's error handling: log failures
inline in the brief, continue with available data, and if Google Drive is unavailable still
save the local markdown file and report that Drive delivery failed. If Slack fails, log it and
continue — the Google Doc is the primary deliverable.
```

---

## Setting it up as a scheduled task

1. Open your AI assistant and create a new scheduled task.
2. Name it something you will recognize in the task list, for example
   "Weekly {{BRAND_OR_CLIENT}} rankings refresh brief".
3. Paste the instruction above as the task prompt, with your placeholders filled in.
4. Set the schedule — once a week is enough, since the brief is built from weekly position
   changes. Friday morning works well: the brief is ready for the next week's content queue.
5. Allow the tools the task needs up front, so it can run unattended without stopping to ask:
   the SE Ranking tools it calls, plus Google Drive file creation and Slack message sending.
6. Run it once manually before letting the schedule take over, and check the output.

If the first run picks the wrong keyword, or the brief is thinner than you expected, the fix is
usually in step 1 of the instruction (the selection rule) or in the brief skill itself — not in
the schedule.

---

## Adapting it

A few things worth changing once the basic run works:

- **The coverage window.** `{{COVERAGE_WINDOW}}` stops the same keyword being briefed twice.
  Shorten it if you publish refreshes quickly, lengthen it if your queue is long.
- **The selection rule.** Step 1.5 picks the biggest estimated traffic loss. You can prioritize
  differently — for example, only commercial-intent keywords, only a specific set of pages, or
  only drops from the top 3.
- **The delivery.** Google Doc plus Slack is one option. Any connected destination works — a
  Notion page, a task in your project tracker, or an email.
- **Multiple clients.** Agencies can run one task per client project, each with its own
  `{{BRAND_OR_CLIENT}}`, `{{YOUR_DOMAIN}}`, `{{BRIEF_TITLE_PREFIX}}` and Slack channel.

---

*This workflow was built and shared by Maddy Osman, Sr. Content Marketing Manager at
DigitalOcean and Founder of The Blogsmith, on top of the SE Ranking MCP and our `seo-content-brief`
skill. Placeholders and setup notes added by SE Ranking.*
