skillZs
LIVE SKILL TAGS
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
REAL INSTALL DATA
← back to all skills
aradotso/marketing-skills918 installs

seo-content-marketing-skill-suite

SEO & content marketing automation commands for keyword research, content audits, technical SEO, competitor analysis, and workflow orchestration

How do I install this agent skill?

npx skills add https://github.com/aradotso/marketing-skills --skill seo-content-marketing-skill-suite
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The skill provides a comprehensive SEO and content marketing automation suite with instructions for keyword research, technical audits, and competitor analysis. While functional, it possesses an attack surface for indirect prompt injection when processing external website data and includes documentation examples with unsafe command execution patterns.

  • Socketwarn

    1 alert: gptAnomaly

  • Snykwarn

    Risk: MEDIUM · 1 issue

What does this agent skill do?

SEO & Content Marketing Skills Suite

Skill by ara.so — Marketing Skills collection.

This skill provides 10 specialized SEO and content marketing commands and 5 multi-step workflows adapted from shanraisshan/claude-code-best-practice. It delivers keyword research, content audits, SERP analysis, technical SEO diagnostics, and content strategy automation with structured output and progress tracking.

What This Project Does

  • Keyword Research: Deep clustering, opportunity scoring, SERP intent mapping
  • Content Audits: Quality scoring, duplication detection, cannibalization reports
  • Technical SEO: Crawl budget, Core Web Vitals, schema markup, indexability
  • Competitor Analysis: Backlink gaps, topic gaps, featured snippet opportunities
  • Content Strategy: AI-generated briefs, editorial calendars, refresh workflows
  • Automation: Multi-step workflows orchestrating end-to-end SEO processes

All commands use consistent structured output with progress panels, findings tables, action checklists, and summary cards.

Installation

Clone the Skill

# Install to Claude Code skills directory
mkdir -p ~/.claude/skills
cp -r . ~/.claude/skills/seo-content-marketing-skill-suite/

# Or install from GitHub
git clone https://github.com/MagicStarfishBoost/r15-shanraisshan-claude-code-best-practice-seo.git \
  ~/.claude/skills/seo-content-marketing-skill-suite/

Register in Claude Code

In a Claude Code session:

/read ~/.claude/skills/seo-content-marketing-skill-suite/SKILL.md

Or add to your Claude Code config:

{
  "skills": [
    "~/.claude/skills/seo-content-marketing-skill-suite"
  ]
}

Core Commands

1. Keyword Research

Command: /keyword-research

Deep keyword clustering with opportunity scoring and SERP intent mapping.

# Basic usage
/keyword-research "saas analytics tools"

# Advanced options
/keyword-research "email marketing" --cluster-by intent --min-volume 1000 --output json

# With geographic targeting
/keyword-research "lawyer near me" --country US --language en --location "New York"

Output Structure:

╔══════════════════════════════════════════════════╗
║  Keyword Research — saas analytics tools         ║
╠══════════════════════════════════════════════════╣
║  Fetching keywords …   [██████████] 100% ✓       ║
║  Clustering …          [██████████] 100% ✓       ║
║  Scoring intent …      [██████████] 100% ✓       ║
╚══════════════════════════════════════════════════╝

┌────────────────────────┬────────┬──────┬──────────┬──────────┐
│ Keyword                │ Volume │ KD   │ Intent   │ Score    │
├────────────────────────┼────────┼──────┼──────────┼──────────┤
│ saas analytics tools   │ 12 100 │   45 │ Commercial │  🟢 92 │
│ best saas analytics    │  8 300 │   38 │ Commercial │  🟢 88 │
│ saas metrics dashboard │  4 500 │   32 │ Informational │ 🟡 76 │
│ free analytics tools   │ 22 400 │   67 │ Commercial │  🟠 54 │
└────────────────────────┴────────┴──────┴──────────┴──────────┘

2. Content Audit

Command: /content-audit

Full-site content quality scoring, duplication check, and cannibalization report.

# Full site audit
/content-audit --scope full --output md

# Specific section
/content-audit --scope /blog/ --check-duplicates --check-cannibalization

# With custom thresholds
/content-audit --min-words 500 --max-duplicate-percent 15

Example Implementation:

// Simulated content audit logic
async function auditContent(scope, options = {}) {
  const pages = await crawlPages(scope);
  const results = {
    total: pages.length,
    issues: [],
    scores: {}
  };

  for (const page of pages) {
    const score = {
      url: page.url,
      wordCount: page.content.split(/\s+/).length,
      hasTitle: !!page.title && page.title.length > 0,
      hasMetaDesc: !!page.metaDescription,
      hasH1: !!page.h1,
      readability: calculateReadability(page.content),
      duplicatePercent: await checkDuplicateContent(page.content)
    };

    // Quality scoring
    let quality = 100;
    if (!score.hasTitle) quality -= 20;
    if (!score.hasMetaDesc) quality -= 15;
    if (!score.hasH1) quality -= 10;
    if (score.wordCount < 300) quality -= 25;
    if (score.readability < 60) quality -= 10;
    if (score.duplicatePercent > 20) quality -= 30;

    score.quality = Math.max(0, quality);
    results.scores[page.url] = score;

    if (quality < 70) {
      results.issues.push({
        severity: quality < 40 ? '🔴' : quality < 60 ? '🟠' : '🟡',
        url: page.url,
        issue: generateIssueDescription(score)
      });
    }
  }

  return results;
}

3. Technical SEO Audit

Command: /technical-seo

Crawl budget, Core Web Vitals, schema markup, and indexability diagnostics.

# Full technical audit
/technical-seo example.com

# Specific checks
/technical-seo example.com --checks vitals,schema,robots

# With depth limit
/technical-seo example.com --max-depth 3 --follow-external false

Check Categories:

  • Crawlability: robots.txt, XML sitemaps, internal linking
  • Indexability: canonical tags, noindex directives, pagination
  • Performance: Core Web Vitals (LCP, FID, CLS), render-blocking resources
  • Schema: Structured data validation, rich snippet eligibility
  • Mobile: Mobile-friendliness, responsive design, tap targets
  • Security: HTTPS, mixed content, security headers

4. Content Brief Generation

Command: /content-brief

AI-generated SEO content brief with outline, NLP terms, and word count targets.

# Generate brief
/content-brief "how to reduce customer churn" --format markdown

# With custom parameters
/content-brief "saas pricing strategies" \
  --target-words 2500 \
  --competitors 5 \
  --include-outline \
  --include-questions

Brief Structure:

# Content Brief: How to Reduce Customer Churn

## Target Keyword
Primary: `reduce customer churn`
Secondary: `customer retention strategies`, `churn rate reduction`

## Search Intent
Informational → Commercial (conversion-focused)

## Target Word Count
2,200-2,500 words

## Content Outline
1. What is Customer Churn? (H2)
   - Definition and calculation (H3)
   - Industry benchmarks (H3)

2. Root Causes of Churn (H2)
   - Poor onboarding experience (H3)
   - Lack of product value realization (H3)
   - Customer service issues (H3)

3. Proven Strategies to Reduce Churn (H2)
   - Improve customer onboarding (H3)
   - Implement proactive support (H3)
   - Build customer success programs (H3)

## NLP Terms to Include
- customer lifetime value
- retention rate
- proactive outreach
- customer feedback loop
- usage analytics
- at-risk customers

## Competitor Analysis
Top 5 ranking pages: 1,800-3,200 words, average 2,400
Common elements: case studies, statistics, actionable frameworks

## Recommended Media
- Infographic: churn calculation formula
- Chart: churn rate benchmarks by industry
- Checklist: 10-point churn prevention audit

5. SERP Monitoring

Command: /serp-monitor

Daily rank tracking with volatility alerts and CTR optimization tips.

# Monitor keywords
/serp-monitor --keywords "keyword-list.txt" --output dashboard

# With alerts
/serp-monitor --keywords "brand terms" --alert-threshold 3 --notify-email "$NOTIFY_EMAIL"

# Historical comparison
/serp-monitor --compare-date 2026-04-01 --show-volatility

6. Competitor Gap Analysis

Command: /competitor-gap

Backlink gap, topic gap, and featured snippet opportunities.

# Full competitor analysis
/competitor-gap example.com --competitors competitor1.com,competitor2.com

# Specific gap types
/competitor-gap example.com --gap-type backlinks --min-dr 40

# Featured snippet opportunities
/competitor-gap example.com --gap-type snippets --serp-features all

7. Link Prospecting

Command: /link-prospecting

Quality backlink prospect lists with DA/DR filters and outreach templates.

# Find prospects
/link-prospecting "digital marketing" --min-da 30 --max-results 100

# With filtering
/link-prospecting "tech blogs" \
  --country US \
  --language en \
  --exclude-domains "spam-site.com" \
  --require-contact-email

# Generate outreach
/link-prospecting "saas reviews" --generate-outreach --template guest-post

8. Page Speed SEO

Command: /page-speed-seo

Render-blocking, LCP, CLS, FID diagnosis mapped to ranking impact.

# Audit page speed
/page-speed-seo https://example.com/page

# Batch audit
/page-speed-seo --urls urls.txt --device mobile

# With recommendations
/page-speed-seo https://example.com --prioritize-fixes --show-code-examples

Example Diagnostic:

# Simulated page speed diagnostic
def diagnose_page_speed(url, device='desktop'):
    metrics = {
        'lcp': measure_lcp(url, device),  # Largest Contentful Paint
        'fid': measure_fid(url, device),  # First Input Delay
        'cls': measure_cls(url, device),  # Cumulative Layout Shift
        'ttfb': measure_ttfb(url),        # Time to First Byte
        'fcp': measure_fcp(url, device)   # First Contentful Paint
    }
    
    issues = []
    
    if metrics['lcp'] > 2500:
        issues.append({
            'severity': '🔴' if metrics['lcp'] > 4000 else '🟠',
            'metric': 'LCP',
            'value': f"{metrics['lcp']}ms",
            'fix': 'Optimize largest image, use CDN, enable lazy loading'
        })
    
    if metrics['cls'] > 0.1:
        issues.append({
            'severity': '🔴' if metrics['cls'] > 0.25 else '🟠',
            'metric': 'CLS',
            'value': f"{metrics['cls']:.3f}",
            'fix': 'Add explicit dimensions to images/embeds, avoid layout shifts'
        })
    
    if metrics['fid'] > 100:
        issues.append({
            'severity': '🟠',
            'metric': 'FID',
            'value': f"{metrics['fid']}ms",
            'fix': 'Reduce JavaScript execution time, split code bundles'
        })
    
    return {
        'metrics': metrics,
        'issues': issues,
        'score': calculate_performance_score(metrics)
    }

9. Local SEO

Command: /local-seo

NAP consistency, Google Business Profile optimization, local citation audit.

# Local SEO audit
/local-seo "Business Name" --location "New York, NY"

# NAP consistency check
/local-seo "Business Name" --check-nap --sources 50

# Citation opportunities
/local-seo "Law Firm" --find-citations --country US --category legal

10. Content Calendar

Command: /content-calendar

Data-driven editorial calendar from search demand and seasonality.

# Generate calendar
/content-calendar --topics topics.txt --months 6 --output google-sheets

# With seasonality
/content-calendar --seed-keyword "fitness" --include-seasonal --country US

# Export formats
/content-calendar --topics topics.txt --format csv --include-briefs

Multi-Step Workflows

Full SEO Sprint

Workflow: full-seo-sprint

12-step SEO sprint: audit → keyword map → content plan → technical fixes.

# Run full sprint
/workflows:full-seo-sprint example.com --scope full --duration 2-weeks

# Custom sprint
/workflows:full-seo-sprint example.com \
  --focus technical,content \
  --skip-backlinks \
  --output project-board

Sprint Steps:

  1. ✓ Technical audit (crawlability, indexability, performance)
  2. ✓ Content audit (quality, duplication, gaps)
  3. ✓ Keyword research (clustering, intent, opportunities)
  4. ✓ Competitor analysis (gaps, backlinks, topics)
  5. → Keyword mapping (assign keywords to pages)
  6. → Content plan (briefs for new/updated content)
  7. → Technical fixes (prioritized action list)
  8. → Schema implementation (structured data markup)
  9. → Internal linking optimization
  10. → Page speed optimization
  11. → Content production (if --include-content)
  12. → Monitoring setup (rank tracking, alerts)

Launch SEO

Workflow: launch-seo

Pre-launch SEO checklist with canonical, hreflang, sitemap validation.

# Pre-launch audit
/workflows:launch-seo staging.example.com --production example.com

# With migration
/workflows:launch-seo new-site.com \
  --migrating-from old-site.com \
  --check-redirects \
  --preserve-equity

Content Refresh

Workflow: content-refresh

Identify and refresh underperforming pages to recover lost rankings.

# Find refresh opportunities
/workflows:content-refresh example.com --min-drop 5-positions --timeframe 90-days

# With automated updates
/workflows:content-refresh example.com \
  --auto-update \
  --update-stats \
  --add-sections \
  --improve-readability

Authority Building

Workflow: authority-building

End-to-end digital PR and link-building campaign.

# Start campaign
/workflows:authority-building example.com \
  --strategy guest-posts,digital-pr,broken-link \
  --target-links 50 \
  --timeframe 3-months

AI Content Pipeline

Workflow: ai-content-pipeline

Keyword → brief → draft → optimize → publish automation.

# Full pipeline
/workflows:ai-content-pipeline \
  --keywords keywords.txt \
  --auto-brief \
  --auto-draft \
  --review-step \
  --publish-to wordpress

# With API integration
/workflows:ai-content-pipeline \
  --source ahrefs \
  --cms-api "$CMS_API_KEY" \
  --ai-model gpt-4 \
  --openai-key "$OPENAI_API_KEY"

Configuration

Environment Variables

# API credentials (store in .env)
export AHREFS_API_KEY="your-ahrefs-key"
export SEMRUSH_API_KEY="your-semrush-key"
export GOOGLE_API_KEY="your-google-api-key"
export OPENAI_API_KEY="your-openai-key"

# Notification settings
export NOTIFY_EMAIL="team@example.com"
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"

# Default settings
export SEO_DEFAULT_COUNTRY="US"
export SEO_DEFAULT_LANGUAGE="en"
export SEO_OUTPUT_FORMAT="markdown"

Config File

Create ~/.seo-skills/config.yml:

defaults:
  country: US
  language: en
  output_format: markdown
  
api_keys:
  ahrefs: ${AHREFS_API_KEY}
  semrush: ${SEMRUSH_API_KEY}
  google: ${GOOGLE_API_KEY}
  openai: ${OPENAI_API_KEY}

thresholds:
  keyword_difficulty_max: 50
  min_search_volume: 100
  content_quality_min: 70
  page_speed_lcp_max: 2500
  core_web_vitals_fid_max: 100

notifications:
  email: ${NOTIFY_EMAIL}
  slack_webhook: ${SLACK_WEBHOOK_URL}
  alert_on_rank_drop: 3
  alert_on_crawl_errors: true

Common Patterns

Pattern 1: Audit → Prioritize → Fix

# Step 1: Run comprehensive audit
/technical-seo example.com --scope full > technical-audit.md
/content-audit --scope full > content-audit.md

# Step 2: Prioritize issues (automatic in command output)
# Review 🔴 critical issues first, then 🟠 high-priority, then 🟡 medium

# Step 3: Execute fixes
# Follow action checklists in each audit report

Pattern 2: Keyword Research → Content Strategy

# Step 1: Keyword discovery
/keyword-research "main topic" --cluster-by intent --min-volume 500

# Step 2: Generate briefs for top opportunities
/content-brief "keyword 1" --format markdown > briefs/keyword-1.md
/content-brief "keyword 2" --format markdown > briefs/keyword-2.md

# Step 3: Build editorial calendar
/content-calendar --topics briefs/ --months 6 --include-briefs

Pattern 3: Competitor Intelligence → Gap Closure

# Step 1: Identify gaps
/competitor-gap example.com --competitors competitor1.com,competitor2.com

# Step 2: Backlink prospecting for missed opportunities
/link-prospecting --from-gap-analysis --min-da 30

# Step 3: Content gap filling
# Use output from competitor-gap to create content briefs
/content-brief "gap topic" --competitors competitor1.com --match-depth

Pattern 4: Monitoring → Alert → Response

# Step 1: Set up monitoring
/serp-monitor --keywords critical-keywords.txt --alert-threshold 3

# Step 2: Receive alerts (automatic via email/Slack)

# Step 3: Diagnose drop
/content-audit --scope /affected-page/ --check-cannibalization
/technical-seo example.com/affected-page --checks all

# Step 4: Execute refresh workflow
/workflows:content-refresh example.com/affected-page --auto-update

Troubleshooting

Issue: API Rate Limits

# Symptom: "Rate limit exceeded" errors
# Solution: Add delays between requests

# Use --rate-limit flag
/keyword-research "topic" --rate-limit 5  # 5 requests per second max

# Or configure in config.yml
rate_limits:
  ahrefs: 5
  semrush: 10
  google: 100

Issue: Incomplete Crawls

# Symptom: Technical audit missing pages
# Solution: Check robots.txt and crawl depth

# Increase depth
/technical-seo example.com --max-depth 5

# Ignore robots.txt (testing only)
/technical-seo example.com --ignore-robots

# Check crawl log
/technical-seo example.com --verbose --log crawl.log

Issue: Inaccurate Keyword Data

# Symptom: Missing or inconsistent search volume
# Solution: Use multiple data sources

# Aggregate from multiple APIs
/keyword-research "topic" --sources ahrefs,semrush,google --aggregate mean

# Specify geographic precision
/keyword-research "topic" --country US --location "New York, NY" --radius 25mi

Issue: Content Brief Too Generic

# Symptom: Generated briefs lack specificity
# Solution: Provide more context and competitor analysis

# Enhanced brief generation
/content-brief "topic" \
  --competitors 10 \
  --analyze-top-10 \
  --include-questions \
  --include-nlp-terms \
  --target-words 2500 \
  --context "B2B SaaS audience, technical depth required"

Issue: Slow Performance

# Symptom: Commands taking too long
# Solution: Optimize scope and use caching

# Limit scope
/content-audit --scope /blog/ --max-pages 500

# Enable caching
/technical-seo example.com --cache --cache-ttl 3600  # 1 hour

# Parallel processing
/content-audit --parallel 10  # 10 concurrent workers

Integration Examples

WordPress Integration

<?php
// wp-content/plugins/seo-skills-integration/seo-skills.php

// Trigger content audit via WP-CLI
add_action('seo_skills_daily_audit', function() {
    $output = shell_exec('cd ~/.claude/skills/seo-content-marketing-skill-suite && /content-audit --scope full --output json');
    $results = json_decode($output, true);
    
    // Store results
    update_option('seo_audit_results', $results);
    
    // Send alerts for critical issues
    $critical = array_filter($results['issues'], fn($i) => $i['severity'] === '🔴');
    if (!empty($critical)) {
        wp_mail(
            get_option('admin_email'),
            'Critical SEO Issues Detected',
            'Found ' . count($critical) . ' critical SEO issues. Check dashboard.'
        );
    }
});

// Schedule daily
if (!wp_next_scheduled('seo_skills_daily_audit')) {
    wp_schedule_event(time(), 'daily', 'seo_skills_daily_audit');
}

Google Sheets Export

// export-to-sheets.js
const { google } = require('googleapis');
const { execSync } = require('child_process');

async function exportKeywordResearch(topic) {
  // Run keyword research
  const output = execSync(
    `/keyword-research "${topic}" --output json`,
    { cwd: '~/.claude/skills/seo-content-marketing-skill-suite' }
  );
  const data = JSON.parse(output);
  
  // Authenticate with Google Sheets
  const auth = new google.auth.GoogleAuth({
    keyFile: process.env.GOOGLE_CREDENTIALS_PATH,
    scopes: ['https://www.googleapis.com/auth/spreadsheets']
  });
  const sheets = google.sheets({ version: 'v4', auth });
  
  // Format data
  const rows = [
    ['Keyword', 'Volume', 'Difficulty', 'Intent', 'Score'],
    ...data.keywords.map(k => [
      k.keyword,
      k.volume,
      k.difficulty,
      k.intent,
      k.score
    ])
  ];
  
  // Write to sheet
  await sheets.spreadsheets.values.update({
    spreadsheetId: process.env.SHEET_ID,
    range: 'Keywords!A1',
    valueInputOption: 'RAW',
    resource: { values: rows }
  });
}

exportKeywordResearch(process.argv[2]);

Slack Notifications

# slack-notifier.py
import os
import json
import subprocess
import requests

def send_slack_alert(title, issues):
    webhook_url = os.environ['SLACK_WEBHOOK_URL']
    
    blocks = [
        {
            "type": "header",
            "text": {"type": "plain_text", "text": title}
        },
        {
            "type": "section",
            "fields": [
                {"type": "mrkdwn", "text": f"*Critical:* {len([i for i in issues if i['severity'] == '🔴'])}"},
                {"type": "mrkdwn", "text": f"*High:* {len([i for i in issues if i['severity'] == '🟠'])}"}
            ]
        }
    ]
    
    for issue in issues[:5]:  # Top 5 issues
        blocks.append({
            "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": f"{issue['severity']} *{issue['url']}*\n{issue['issue']}"
            }
        })
    
    requests.post(webhook_url, json={"blocks": blocks})

# Run audit and send results
result = subprocess.run(
    ['/technical-seo', 'example.com', '--output', 'json'],
    cwd=os.path.expanduser('~/.claude/skills/seo-content-marketing-skill-suite'),
    capture_output=True,
    text=True
)

data = json.loads(result.stdout)
if data['issues']:
    send_slack_alert('🔍 Technical SEO Issues Detected', data['issues'])

Advanced Usage

Custom Scoring Models

# custom-scoring.py
# Override default quality scoring with custom model

def custom_content_score(page):
    """Custom scoring emphasizing user engagement signals"""
    score = 100
    
    # Core SEO (40%)
    if not page.get('title'): score -= 10
    if not page.get('meta_description'): score -= 8
    if not page.get('h1'): score -= 7
    if page.get('word_count', 0) < 500: score -= 15
    
    # User engagement (30%)
    if page.get('avg_time_on_page', 0) < 60: score -= 15
    if page.get('bounce_rate', 100) > 70: score -= 10
    if page.get('pages_per_session', 0) < 1.5: score -= 5
    
    # Technical (30%)
    if page.get('load_time', 10) > 3: score -= 10
    if not page.get('mobile_friendly'): score -= 10
    if page.get('cls', 1) > 0.1: score -= 5
    if page.get('lcp', 10000) > 2500: score -= 5
    
    return max(0, score)

# Use in audit
/content-audit --scoring-function custom_content_score --config custom-scoring.py

Automated Reporting

#!/bin/bash
# weekly-seo-report.sh

DOMAIN="example.com"
REPORT_DIR="./reports/$(date +%Y-%m-%d)"
mkdir -p "$REPORT_DIR"

# Run all audits
/technical-seo "$DOMAIN" --output markdown > "$REPORT_DIR/technical.md"
/content-audit --scope full --output markdown > "$REPORT_DIR/content.md"
/serp-monitor --compare-date "$(date -d '7 days ago' +%Y-%m-%d)" > "$REPORT_DIR/rankings.md"
/competitor-gap "$DOMAIN" --output markdown > "$REPORT_DIR/competitors.md"

# Compile report
cat "$REPORT_DIR"/*.md > "$REPORT_DIR/weekly-report.md"

# Send via email
mail -s "Weekly SEO Report - $DOMAIN" \
     -a "$REPORT_DIR/weekly-report.md" \
     "$NOTIFY_EMAIL" < /dev/null

# Upload to cloud storage
aws s3 cp "$REPORT_DIR/weekly-report.md" \
  "s3://seo-reports/$DOMAIN/$(date +%Y-%m-%d).md"

Source Attribution

Adapted from shanraisshan/claude-code-best-practice — best practices for AI agent teams, development workflows, and structured command patterns.

Enhancements in this adaptation:

  • Domain-specific SEO & content marketing vocabulary
  • Visual progress tracking and structured output
  • Prioritized action plans with time estimates
  • Multi-step workflow orchestration
  • Consistent UI conventions across all commands

License: MIT

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/aradotso/marketing-skills/seo-content-marketing-skill-suite">View seo-content-marketing-skill-suite on skillZs</a>