content-decay-detector

Monitor existing content for ranking drops and trigger refresh workflows. Triggers on: "check for content decay", "which content needs updating", "content refresh", "ranking drops", "traffic decline", "stale content", "content audit", "what to refresh", "outdated content", "content performance check", "update old articles", "declining rankings", "content maintenance", "refresh priority list", "which articles are losing traffic", "SEO content audit".

245 stars

Best use case

content-decay-detector is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Monitor existing content for ranking drops and trigger refresh workflows. Triggers on: "check for content decay", "which content needs updating", "content refresh", "ranking drops", "traffic decline", "stale content", "content audit", "what to refresh", "outdated content", "content performance check", "update old articles", "declining rankings", "content maintenance", "refresh priority list", "which articles are losing traffic", "SEO content audit".

Teams using content-decay-detector should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/content-decay-detector/SKILL.md --create-dirs "https://raw.githubusercontent.com/Affitor/affiliate-skills/main/skills/blog/content-decay-detector/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/content-decay-detector/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How content-decay-detector Compares

Feature / Agentcontent-decay-detectorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Monitor existing content for ranking drops and trigger refresh workflows. Triggers on: "check for content decay", "which content needs updating", "content refresh", "ranking drops", "traffic decline", "stale content", "content audit", "what to refresh", "outdated content", "content performance check", "update old articles", "declining rankings", "content maintenance", "refresh priority list", "which articles are losing traffic", "SEO content audit".

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Content Decay Detector

Monitor existing content for ranking drops and generate a prioritized refresh queue. Refreshing decaying content is the highest-ROI SEO activity — it's faster and cheaper than creating new content, and recovering a lost position is easier than earning a new one.

## Stage

S3: Blog & SEO — Blog maintenance and optimization. This skill keeps your existing content competitive and prevents rankings from silently eroding.

## When to Use

- User has existing blog content and wants to check for decay
- User notices traffic declining on specific pages
- User asks "what content needs updating?"
- User says "content decay", "ranking drops", "stale content", "refresh", "content audit"
- Monthly maintenance check — should run every 30 days on active blogs
- After `seo-audit` reveals declining pages

## Input Schema

```yaml
site_url: string              # REQUIRED — the site to audit
                              # e.g., "myblog.com", "example.com/blog"

content_list: object[]        # OPTIONAL — specific pages to check
  - url: string               # Page URL
    title: string             # Page title
    publish_date: string      # Original publish date
    last_updated: string      # Last update date
    target_keyword: string    # Primary keyword

check_competitors: boolean    # OPTIONAL — whether to check if competitors published fresher content
                              # Default: true

timeframe: string             # OPTIONAL — "30d" | "90d" | "6m" | "1y"
                              # Default: "90d"
```

**Chaining from S6 seo-audit**: Use `declining_pages` as the `content_list`.

## Workflow

### Step 1: Gather Content Data

If `content_list` not provided:
1. `web_search`: `site:[site_url]` — discover indexed pages
2. Identify the top 15-20 most important pages (by topic relevance)
3. For each page, note: title, URL, apparent publish/update date

### Step 2: Check for Decay Signals

Read `shared/references/seo-strategy.md` for decay signals and refresh methodology.

For each page:
1. `web_search` for the page's target keyword — check current ranking position
2. Look for decay signals:
   - **Outdated information**: Product features, pricing, dates mentioned
   - **Competitor freshness**: Newer, better content published by competitors
   - **Missing elements**: No images, no data, thin content compared to current SERP
   - **Broken patterns**: "2023" in a title when it's 2025+, discontinued products mentioned

### Step 3: Score Decay Priority

For each decaying page, assign priority:

| Factor | Score | Criteria |
|---|---|---|
| Revenue impact | 1-5 | Contains affiliate links + had traffic = high revenue impact |
| Decay severity | 1-5 | Major outdated info = 5, minor = 1 |
| Fix effort | 1-5 (inverted) | Easy fix = 5, full rewrite = 1 |
| Competitor threat | 1-5 | Competitor published better version = 5 |

**Priority = Revenue × Decay × Fix_Ease × Competitor_Threat** (normalized)

### Step 4: Generate Refresh Instructions

For each page in priority order, specify:
1. **What's decayed** — specific outdated elements
2. **What to update** — concrete changes to make
3. **What to add** — new sections, data, or elements competitors have
4. **Internal linking** — new pages to link to/from since original publish
5. **Estimated effort** — time to refresh

### Step 5: Self-Validation

- [ ] Decay signals are evidence-based (not guesses)
- [ ] Priority ordering makes business sense (revenue-impacting first)
- [ ] Refresh instructions are specific and actionable
- [ ] Effort estimates are realistic
- [ ] Not recommending refreshes for content that's performing fine

## Output Schema

```yaml
output_schema_version: "1.0.0"
content_decay:
  site: string
  pages_analyzed: number
  pages_decaying: number
  total_refresh_effort: string  # Estimated total hours

  decaying_pages:
    - url: string
      title: string
      priority: string          # "P0-critical" | "P1-high" | "P2-medium" | "P3-low"
      decay_signals: string[]
      refresh_actions: string[]
      estimated_effort: string
      revenue_impact: string    # "high" | "medium" | "low"

  healthy_pages: string[]       # Pages that don't need refresh

chain_metadata:
  skill_slug: "content-decay-detector"
  stage: "blog"
  timestamp: string
  suggested_next:
    - "affiliate-blog-builder"
    - "seo-audit"
    - "internal-linking-optimizer"
    - "keyword-cluster-architect"
```

## Output Format

```
## Content Decay Report: [Site]

### Summary
- **Pages analyzed:** XX
- **Pages decaying:** XX
- **Total refresh effort:** XX hours
- **Estimated traffic recovery:** XX%

### Priority Refresh Queue

#### P0 — Critical (do this week)

**[Page Title]** — [URL]
- Decay: [what's wrong]
- Action: [what to do]
- Effort: [time estimate]
- Impact: [expected result]

#### P1 — High (do this month)
[same structure]

#### P2 — Medium (schedule)
[same structure]

### Healthy Pages (no action needed)
- [Page] — still ranking, content fresh
- [Page] — recently updated

### Monthly Maintenance Schedule
- Week 1: Refresh P0 pages
- Week 2: Refresh P1 pages
- Week 3: Create new content for gaps found
- Week 4: Internal linking review
```

## Error Handling

- **No site URL**: "I need your blog URL to check for content decay. What's the site?"
- **Site has no indexed pages**: "I can't find indexed pages for this URL. Check that the site is public and indexed by search engines."
- **All content is fresh**: "Great news — no significant decay detected. Run this check again in 30 days."
- **Can't determine ranking positions**: Use available signals (content age, competitor freshness, outdated info) for prioritization.

## Examples

**Example 1:** "Check my blog for content decay"
→ Discover indexed pages, check each for decay signals, generate prioritized refresh queue with specific actions per page.

**Example 2:** "Which of my articles need updating?"
→ Analyze content list, identify outdated pricing, stale comparisons, missing new products. Rank by revenue impact.

**Example 3:** "Content decay check" (after seo-audit)
→ Pick up declining pages from seo-audit output. Deep-dive each with competitor analysis and specific refresh instructions.

## Flywheel Connections

### Feeds Into
- `affiliate-blog-builder` (S3) — refresh instructions for specific articles
- `internal-linking-optimizer` (S6) — decaying pages may need better internal links
- `keyword-cluster-architect` (S3) — content gaps revealed by decay analysis

### Fed By
- `seo-audit` (S6) — declining pages to investigate
- `internal-linking-optimizer` (S6) — pages with weak link structure may be decaying
- `performance-report` (S6) — traffic decline data

### Feedback Loop
- After refreshing, `seo-audit` (S6) tracks whether rankings recovered → measure refresh ROI, refine decay detection sensitivity

## Quality Gate

Before delivering output, verify:

1. Would I share this on MY personal social?
2. Contains specific, surprising detail? (not generic)
3. Respects reader's intelligence?
4. Remarkable enough to share? (Purple Cow test)
5. Irresistible offer framing? (refresh actions feel actionable)

Any NO → rewrite before delivering.

## References

- `shared/references/seo-strategy.md` — Decay signals, refresh methodology, priority matrix
- `shared/references/flywheel-connections.md` — Master connection map

Related Skills

trending-content-scout

290
from Affitor/affiliate-skills

Scan social platforms for top-performing content by engagement before you create anything. Use this skill when the user wants to see what content is winning in a niche, find viral content patterns, research what's working on YouTube/TikTok/X/Reddit, benchmark engagement, discover content gaps, or says "what content is working for [topic]", "show me top performing content about [keyword]", "what's trending in [niche]", "find viral content about [product]", "content research for [keyword]", "what gets views in [niche]", "engagement analysis for [topic]", "scout the competition", "what videos are getting the most views about [keyword]", "social listening for [topic]", "trending content in [niche]", "top content analysis", "what hooks work for [keyword]", "content intelligence", "find winning formats".

content-angle-ranker

290
from Affitor/affiliate-skills

Rank content angles by engagement data, competition level, and platform fit. Data-driven angle selection instead of guesswork. Use this skill when the user has a keyword or product and needs to decide WHAT to create, which angle to take, which format to use, or which platform to target. Triggers on: "what angle should I use", "rank content ideas for [keyword]", "best angle for [product]", "which content idea will perform best", "help me pick an angle", "what should I write about", "content angle for [topic]", "rank my content ideas", "which approach will get the most views", "data-driven content planning", "angle ranker", "content scoring", "which hook should I use", "compare these content ideas", "prioritize my content angles", "what video should I make".

content-research-brief

290
from Affitor/affiliate-skills

Research trending topics, collect source articles, and generate a structured research brief for content creation. Stop writing from thin air — write from real sources. Use this skill when the user wants to research a topic before writing, collect sources for an article, create a research-backed content brief, or says "research [topic] for me", "find sources about [keyword]", "content brief for [topic]", "what's the latest on [product]", "research before writing", "collect articles about [keyword]", "trending news about [topic]", "gather sources for my article", "brief me on [topic]", "what are people saying about [product]", "news roundup for [keyword]", "research brief", "source collection", "content research", "prep research for writing".

content-pillar-atomizer

290
from Affitor/affiliate-skills

Take 1 blog post or article and generate 15-30 platform-native micro-content pieces. Not reformatting — re-contextualizing for each platform's culture. Triggers on: "atomize this content", "repurpose my blog post", "turn this into social posts", "content atomizer", "pillar content", "one to many content", "repurpose content", "multiply my content", "content explosion", "turn article into posts", "break down this article", "micro content from blog", "content pillar strategy", "10x my content", "platform-native content", "atomize", "content multiplication".

content-moat-calculator

290
from Affitor/affiliate-skills

Estimate pages needed for topical authority. Go/no-go decision before investing months in content. Triggers on: "how much content do I need", "topical authority estimate", "content moat", "how many articles", "content gap analysis", "can I compete in this niche", "content investment calculator", "is this niche worth the effort", "SEO feasibility", "how many pages to rank", "content volume needed", "competitive content analysis", "moat calculation", "authority gap", "should I invest in this niche".

content-repurposer

290
from Affitor/affiliate-skills

Repurpose one piece of affiliate content into multiple formats. Triggers on: "repurpose my content", "turn my blog into tweets", "cross-post this", "content recycling", "convert to newsletter", "make a tweet thread from this", "adapt for TikTok", "omnichannel content", "scale my content", "turn this into a LinkedIn post", "repurpose for email", "content multiplication".

your-skill-name

290
from Affitor/affiliate-skills

Replace with when the AI should activate this skill. Be pushy — cover multiple phrasings so the AI activates for a wide range of user prompts.

traffic-analyzer

290
from Affitor/affiliate-skills

Analyze website traffic, global rank, engagement metrics, and traffic sources for any domain. Use this skill to evaluate affiliate program websites, compare competitor traffic, assess advertiser strength, or understand where an audience comes from. Triggers on: "analyze traffic for [domain]", "how much traffic does [site] get", "compare traffic between [site A] and [site B]", "is [program] worth promoting based on traffic", "traffic analysis", "website analytics for [domain]", "where does [site] get traffic", "check if [advertiser] is legit", "evaluate [program] website health", "SimilarWeb analysis", "traffic sources for [domain]", "how popular is [site]", "website rank", "domain authority check", "compare affiliate program websites".

purple-cow-audit

290
from Affitor/affiliate-skills

Score product remarkability 1-10 to decide if it's worth promoting. Seth Godin's Purple Cow test. Triggers on: "is this product worth promoting", "should I promote", "product audit", "purple cow", "remarkable product", "is it remarkable", "rate this product", "product quality check", "worth my reputation", "product evaluation", "would I recommend without commission", "product remarkability score", "evaluate this affiliate product", "quality gate for promotion".

niche-opportunity-finder

290
from Affitor/affiliate-skills

Find untapped affiliate niches with real earning potential. Use this skill when the user asks about picking a niche, finding a niche to start affiliate marketing, what niche to get into, niche research, niche ideas, beginner niche selection, low competition niches, profitable niches, or says "I don't know what to promote", "help me pick a niche", "what niche should I start with", "find me a niche with less competition", "niche ideas for affiliate", "is X a good niche for affiliate marketing", "best niches 2024", "untapped niches".

monopoly-niche-finder

290
from Affitor/affiliate-skills

Find intersection niches where you're the ONLY voice. Thiel's "competition is for losers" lens. Triggers on: "find my monopoly niche", "blue ocean niche", "unique niche", "niche intersection", "where am I the only one", "zero competition niche", "untapped niche", "category of one", "Thiel monopoly", "dominate a niche", "niche nobody else covers", "cross two domains", "find a niche with no competition", "monopoly positioning", "unique angle for affiliate".

list-affitor-program

290
from Affitor/affiliate-skills

Research an affiliate program and create a verified listing for list.affitor.com. Use this skill when the user asks anything about listing a program, adding an affiliate program to the directory, submitting a program to list, creating a listing, documenting an affiliate program, sharing an affiliate program, writing a program profile, posting a program to list.affitor.com, or contributing a new program. Also trigger for: "list a program", "add affiliate program", "submit program to list", "create listing for X", "document affiliate program", "share affiliate program", "write a listing", "post to list.affitor.com", "add X to the directory", "register an affiliate program", "publish affiliate program", "new program listing", "profile this affiliate program", "catalog this program".