voltagent-seo-content-marketing-skills

SEO & Content Marketing skill suite with keyword research, content audits, technical SEO, and competitor analysis workflows

Skill file

Preview skill file↓↑
---
name: voltagent-seo-content-marketing-skills
description: SEO & Content Marketing skill suite with keyword research, content audits, technical SEO, and competitor analysis workflows
triggers:
  - "help me optimize this page for SEO"
  - "run a content audit on my site"
  - "find keyword opportunities for this topic"
  - "analyze competitor SEO gaps"
  - "create an SEO content brief"
  - "check technical SEO issues"
  - "build a content calendar based on search data"
  - "find backlink opportunities"
---

# πŸ“ˆ SEO & Content Marketing Skills Suite

> Skill by [ara.so](https://ara.so) β€” Marketing Skills collection.

This skill suite provides specialized commands and workflows for SEO and content marketing, derived from VoltAgent/awesome-agent-skills. It includes 10 commands for keyword research, content audits, technical SEO analysis, competitor research, and 5 multi-step workflows for comprehensive SEO campaigns.

## What This Project Does

The r16-voltagent-awesome-agent-skills-seo suite gives AI agents structured SEO expertise:

- **Keyword research** with clustering, intent mapping, and opportunity scoring
- **Content audits** including quality assessment, duplication detection, cannibalization analysis
- **Technical SEO** crawl budget, Core Web Vitals, schema validation
- **Competitor analysis** backlink gaps, topic gaps, featured snippet opportunities
- **Content generation** SEO-optimized briefs, outlines, and publishing pipelines
- **Monitoring** rank tracking, SERP volatility alerts
- **Link building** prospect identification and outreach automation

All commands follow a consistent 5-step pattern: scope confirmation β†’ live analysis β†’ findings β†’ action plan β†’ next steps.

## Installation

### Clone to Claude Skills Directory

```bash
# Create skills directory if it doesn't exist
mkdir -p ~/.claude/skills/

# Clone the repository
git clone https://github.com/Gravityaespot/r16-voltagent-awesome-agent-skills-seo.git \
  ~/.claude/skills/voltagent-seo-skills/

# Or copy manually
cp -r /path/to/downloaded/repo ~/.claude/skills/voltagent-seo-skills/
```

### Register in Claude Code Session

In a Claude Code session:

```bash
/read ~/.claude/skills/voltagent-seo-skills/SKILL.md
```

Or programmatically:

```python
import os
from pathlib import Path

# Load skill definition
skill_path = Path.home() / ".claude/skills/voltagent-seo-skills/SKILL.md"
with open(skill_path) as f:
    skill_definition = f.read()

# Register with agent
agent.load_skill(skill_definition)
```

## Core Commands

### `/keyword-research`

Deep keyword clustering with intent mapping and opportunity scoring.

**Usage:**

```bash
/keyword-research "outdoor camping gear"

/keyword-research "project management software" \
  --country US \
  --language en \
  --depth deep \
  --output json
```

**Output Structure:**

```
╔════════════════════════════════════════════════╗
β•‘  Keyword Research: outdoor camping gear        β•‘
╠════════════════════════════════════════════════╣
β•‘  Analyzing search data …  [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100%    β•‘
β•‘  Clustering keywords …    [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100%    β•‘
β•‘  Mapping intent …         [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100%    β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Keyword              β”‚ Volume β”‚ KD β”‚ Intent   β”‚ Score  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ camping gear         β”‚ 49 500 β”‚ 67 β”‚ Comm     β”‚ 8.2/10 β”‚
β”‚ best camping gear    β”‚ 18 100 β”‚ 45 β”‚ Comm/Inf β”‚ 9.1/10 β”‚
β”‚ camping gear list    β”‚  8 900 β”‚ 32 β”‚ Info     β”‚ 8.7/10 β”‚
β”‚ camping equipment    β”‚ 33 100 β”‚ 71 β”‚ Comm     β”‚ 7.5/10 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🎯 Recommended targets: best camping gear, camping gear list
```

**API Integration:**

```python
import os
from seo_skills import KeywordResearch

# Initialize with API credentials from env vars
kr = KeywordResearch(
    api_key=os.getenv("SEO_API_KEY"),
    country="US"
)

# Run keyword research
results = kr.analyze(
    seed_keyword="outdoor camping gear",
    depth="deep",
    min_volume=100,
    max_difficulty=60
)

# Access structured data
for cluster in results.clusters:
    print(f"Cluster: {cluster.theme}")
    for kw in cluster.keywords:
        print(f"  {kw.term}: {kw.volume} vol, {kw.difficulty} KD")
```

### `/content-audit`

Full-site content quality analysis with duplication and cannibalization detection.

**Usage:**

```bash
/content-audit --scope full --output md

/content-audit \
  --url https://example.com \
  --scope /blog \
  --min-words 300 \
  --check-duplicates
```

**Output:**

```
╔════════════════════════════════════════════════╗
β•‘  Content Audit: example.com                    β•‘
╠════════════════════════════════════════════════╣
β•‘  Crawling pages …     [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘]  82%  823/1002 β•‘
β•‘  Analyzing content …  [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘]  65%  651/1002 β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Issue               β”‚ Pages   β”‚ Severityβ”‚ Impact β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ πŸ”΄ Thin content     β”‚     127 β”‚ High    β”‚ -45%   β”‚
β”‚ πŸ”΄ Duplicate title  β”‚      89 β”‚ High    β”‚ -38%   β”‚
β”‚ 🟠 Missing H1       β”‚      64 β”‚ Medium  β”‚ -22%   β”‚
β”‚ 🟠 Keyword cannibal β”‚      43 β”‚ Medium  β”‚ -19%   β”‚
β”‚ 🟑 Long meta desc   β”‚      31 β”‚ Low     β”‚ -5%    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

βœ… Quick wins (1-2 days):
  β€’ Add H1 tags to 64 pages
  β€’ Shorten 31 meta descriptions

⚠️  Medium-term (1-2 weeks):
  β€’ Expand 127 thin content pages to 800+ words
  β€’ Resolve 43 keyword cannibalization conflicts
```

### `/technical-seo`

Comprehensive technical SEO audit covering crawlability, performance, and indexability.

**Usage:**

```bash
/technical-seo https://example.com

/technical-seo https://example.com \
  --check-core-web-vitals \
  --validate-schema \
  --crawl-budget-analysis
```

**Integration Example:**

```javascript
const { TechnicalSEO } = require('voltagent-seo-skills');

const audit = new TechnicalSEO({
  apiKey: process.env.SEO_API_KEY,
  userAgent: 'SEO-Audit-Bot/1.0'
});

async function runAudit(url) {
  const results = await audit.analyze(url, {
    checkCoreWebVitals: true,
    validateSchema: true,
    crawlBudgetAnalysis: true,
    checkMobileFriendly: true
  });

  // Access results
  console.log('Core Web Vitals:', results.coreWebVitals);
  console.log('Schema Issues:', results.schemaValidation.errors);
  console.log('Crawl Budget:', results.crawlBudget.efficiency);

  // Generate report
  await audit.generateReport(results, 'audit-report.html');
}

runAudit('https://example.com');
```

### `/competitor-gap`

Identify backlink gaps, content gaps, and featured snippet opportunities.

**Usage:**

```bash
/competitor-gap \
  --my-site example.com \
  --competitors competitor1.com,competitor2.com,competitor3.com

/competitor-gap \
  --my-site example.com \
  --competitors competitor1.com,competitor2.com \
  --focus backlinks \
  --min-dr 40
```

### `/content-brief`

Generate AI-powered SEO content briefs with outlines, NLP terms, and word count targets.

**Usage:**

```bash
/content-brief "best project management tools 2024"

/content-brief "how to start a podcast" \
  --target-keywords "podcast hosting,podcast equipment" \
  --word-count 2500 \
  --include-nlp-terms \
  --competitor-analysis
```

**Programmatic Usage:**

```python
from seo_skills import ContentBrief

brief_generator = ContentBrief(api_key=os.getenv("SEO_API_KEY"))

brief = brief_generator.create(
    target_keyword="best project management tools 2024",
    additional_keywords=["project management software", "team collaboration"],
    word_count_target=2500,
    include_nlp_terms=True,
    analyze_competitors=True,
    top_n_competitors=10
)

# Access brief components
print(brief.title)
print(brief.meta_description)
print(brief.outline)
print(brief.nlp_terms)
print(brief.word_count_recommendation)
```

### `/serp-monitor`

Daily rank tracking with volatility alerts and CTR optimization.

**Usage:**

```bash
/serp-monitor \
  --keywords "project management,team collaboration,remote work tools" \
  --url example.com \
  --frequency daily

/serp-monitor \
  --keyword-file keywords.csv \
  --alert-on-drop 3 \
  --ctr-optimization
```

### `/link-prospecting`

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

**Usage:**

```bash
/link-prospecting \
  --topic "sustainable fashion" \
  --min-da 30 \
  --max-results 100 \
  --with-contact-info

/link-prospecting \
  --topic "AI marketing tools" \
  --competitor-backlinks competitor.com \
  --generate-outreach-templates
```

### `/page-speed-seo`

Page speed analysis mapped to SEO ranking impact.

**Usage:**

```bash
/page-speed-seo https://example.com/page

/page-speed-seo https://example.com \
  --check-lcp \
  --check-cls \
  --check-fid \
  --render-blocking-analysis
```

### `/local-seo`

Local SEO audit including NAP consistency, Google Business Profile optimization, and citations.

**Usage:**

```bash
/local-seo \
  --business-name "Acme Coffee Shop" \
  --location "Seattle, WA" \
  --check-nap \
  --check-gbp \
  --citation-audit

/local-seo \
  --business-name "Tech Repair Store" \
  --location "Austin, TX" \
  --competitors competitor1.com,competitor2.com
```

### `/content-calendar`

Data-driven editorial calendar based on search demand and seasonality.

**Usage:**

```bash
/content-calendar \
  --topics "fitness,nutrition,wellness" \
  --duration 90 \
  --include-seasonality

/content-calendar \
  --keyword-file topics.csv \
  --duration 180 \
  --publishing-frequency 3 \
  --format json
```

## Workflows (Multi-Step)

### `full-seo-sprint`

12-step comprehensive SEO audit and implementation workflow.

**Usage:**

```bash
/workflows:full-seo-sprint example.com --scope full

/workflows:full-seo-sprint example.com \
  --scope full \
  --include-content-plan \
  --include-technical-fixes \
  --timeline 30
```

**Workflow Steps:**

```
β‘  Technical audit
β‘‘ Keyword research
β‘’ Competitor analysis
β‘£ Content audit
β‘€ Backlink profile analysis
β‘₯ Keyword mapping
⑦ Content gap identification
β‘§ Priority technical fixes
⑨ Content creation plan
β‘© Link building strategy
β‘ͺ Implementation roadmap
β‘« Measurement framework
```

### `launch-seo`

Pre-launch SEO checklist and validation.

**Usage:**

```bash
/workflows:launch-seo https://staging.example.com

/workflows:launch-seo https://staging.example.com \
  --check-canonical \
  --check-hreflang \
  --validate-sitemap \
  --check-robots-txt
```

### `content-refresh`

Identify and refresh underperforming content.

**Usage:**

```bash
/workflows:content-refresh example.com \
  --ranking-drop 5 \
  --time-period 90

/workflows:content-refresh example.com \
  --min-impressions 1000 \
  --max-ctr 2 \
  --priority high
```

### `authority-building`

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

**Usage:**

```bash
/workflows:authority-building \
  --topic "sustainable technology" \
  --target-dr-increase 15 \
  --duration 180

/workflows:authority-building \
  --niche "B2B SaaS" \
  --competitor-analysis \
  --outreach-automation
```

### `ai-content-pipeline`

Automated content creation pipeline from keyword to publish.

**Usage:**

```bash
/workflows:ai-content-pipeline \
  --keywords-file keywords.csv \
  --publishing-schedule weekly \
  --auto-optimize

/workflows:ai-content-pipeline \
  --topic "digital marketing trends 2024" \
  --content-type blog \
  --word-count 2000 \
  --include-images
```

## Configuration

Create a configuration file at `~/.claude/skills/voltagent-seo-skills/config.yml`:

```yaml
# SEO API credentials (use env vars in production)
api:
  seo_api_key: ${SEO_API_KEY}
  search_console_credentials: ${GOOGLE_SEARCH_CONSOLE_JSON}
  analytics_key: ${GOOGLE_ANALYTICS_KEY}

# Default settings
defaults:
  country: US
  language: en
  user_agent: "SEO-Agent/1.0"
  crawl_delay: 1.0
  max_pages: 10000

# Output preferences
output:
  format: markdown
  include_charts: true
  export_csv: true
  progress_bars: true

# Thresholds
thresholds:
  min_word_count: 300
  thin_content: 300
  max_keyword_difficulty: 70
  min_domain_rating: 30
  core_web_vitals_lcp: 2.5
  core_web_vitals_fid: 100
  core_web_vitals_cls: 0.1

# Workflows
workflows:
  full_seo_sprint_steps: 12
  content_refresh_lookback_days: 90
  authority_building_duration_days: 180
```

Load configuration programmatically:

```python
import os
import yaml
from pathlib import Path

config_path = Path.home() / ".claude/skills/voltagent-seo-skills/config.yml"

with open(config_path) as f:
    config = yaml.safe_load(f)

# Expand environment variables
for key in config['api']:
    if isinstance(config['api'][key], str) and config['api'][key].startswith('${'):
        env_var = config['api'][key][2:-1]
        config['api'][key] = os.getenv(env_var)
```

## Common Patterns

### Pattern 1: Complete Site Audit

```bash
# Step 1: Technical audit
/technical-seo https://example.com --check-core-web-vitals

# Step 2: Content audit
/content-audit --scope full --check-duplicates

# Step 3: Keyword research
/keyword-research "main topic" --depth deep

# Step 4: Competitor analysis
/competitor-gap \
  --my-site example.com \
  --competitors competitor1.com,competitor2.com

# Step 5: Backlink prospecting
/link-prospecting --topic "your niche" --min-da 30
```

### Pattern 2: New Content Creation

```bash
# Step 1: Research keyword
/keyword-research "target topic" --output json

# Step 2: Generate brief
/content-brief "target keyword" \
  --word-count 2000 \
  --include-nlp-terms \
  --competitor-analysis

# Step 3: Add to calendar
/content-calendar --topics "target topic" --duration 30
```

### Pattern 3: Rank Recovery

```bash
# Step 1: Identify drops
/serp-monitor --alert-on-drop 5 --time-period 30

# Step 2: Run content refresh workflow
/workflows:content-refresh example.com \
  --ranking-drop 5 \
  --time-period 30 \
  --priority high

# Step 3: Monitor improvements
/serp-monitor --frequency daily --ctr-optimization
```

### Pattern 4: Programmatic Batch Processing

```python
from seo_skills import KeywordResearch, ContentBrief, ContentCalendar
import pandas as pd

# Load keyword list
keywords = pd.read_csv('seed_keywords.csv')

# Initialize tools
kr = KeywordResearch(api_key=os.getenv("SEO_API_KEY"))
cb = ContentBrief(api_key=os.getenv("SEO_API_KEY"))
cc = ContentCalendar()

# Process each keyword
briefs = []
for keyword in keywords['keyword']:
    # Research keyword opportunities
    research = kr.analyze(keyword, depth="deep")
    
    # Generate brief for top opportunity
    top_kw = research.top_opportunities[0]
    brief = cb.create(
        target_keyword=top_kw.term,
        word_count_target=2000,
        include_nlp_terms=True
    )
    briefs.append(brief)

# Create content calendar
calendar = cc.generate(
    briefs=briefs,
    duration_days=90,
    publishing_frequency=3,
    include_seasonality=True
)

# Export
calendar.to_csv('content_calendar.csv')
```

## Troubleshooting

### Issue: API Rate Limiting

**Symptom:** `RateLimitError: API quota exceeded`

**Solution:**

```python
from seo_skills import KeywordResearch
import time

kr = KeywordResearch(
    api_key=os.getenv("SEO_API_KEY"),
    rate_limit_delay=2.0  # Add 2 second delay between requests
)

# Or implement exponential backoff
from tenacity import retry, wait_exponential, stop_after_attempt

@retry(wait=wait_exponential(min=1, max=60), stop=stop_after_attempt(5))
def research_with_retry(keyword):
    return kr.analyze(keyword)
```

### Issue: Incomplete Crawl Results

**Symptom:** Content audit missing pages

**Solution:**

```bash
# Increase crawl depth and timeout
/content-audit \
  --scope full \
  --max-depth 10 \
  --timeout 300 \
  --follow-redirects \
  --include-noindex
```

Or programmatically:

```python
from seo_skills import ContentAudit

audit = ContentAudit(
    max_depth=10,
    timeout=300,
    follow_redirects=True,
    respect_robots_txt=True,
    include_noindex=True,
    max_pages=50000
)
```

### Issue: Missing Environment Variables

**Symptom:** `EnvironmentError: SEO_API_KEY not found`

**Solution:**

Create `.env` file:

```bash
# .env
SEO_API_KEY=your_api_key_here
GOOGLE_SEARCH_CONSOLE_JSON=/path/to/credentials.json
GOOGLE_ANALYTICS_KEY=your_ga_key_here
```

Load in your script:

```python
from dotenv import load_dotenv
import os

load_dotenv()

# Now environment variables are available
api_key = os.getenv("SEO_API_KEY")
```

### Issue: Keyword Research Returns No Results

**Symptom:** Empty keyword list for seed term

**Solution:**

```bash
# Broaden search parameters
/keyword-research "narrow topic" \
  --depth deep \
  --min-volume 10 \
  --include-related \
  --include-questions \
  --language en \
  --country US
```

### Issue: Schema Validation Failures

**Symptom:** Multiple schema errors in technical audit

**Solution:**

```python
from seo_skills import TechnicalSEO

audit = TechnicalSEO()
results = audit.validate_schema(
    url='https://example.com',
    schema_types=['Product', 'Article', 'Organization'],
    strict_mode=False  # Use lenient validation first
)

# Review specific errors
for error in results.errors:
    print(f"Path: {error.path}")
    print(f"Issue: {error.message}")
    print(f"Fix: {error.recommendation}")
```

## Advanced Usage

### Custom Scoring Algorithm

```python
from seo_skills import KeywordResearch

class CustomKeywordScoring(KeywordResearch):
    def calculate_opportunity_score(self, keyword):
        """Custom scoring based on your business priorities"""
        volume_score = min(keyword.volume / 10000, 1.0) * 40
        difficulty_score = (100 - keyword.difficulty) / 100 * 30
        intent_score = self.intent_multiplier(keyword.intent) * 20
        trend_score = keyword.trend_direction * 10
        
        return volume_score + difficulty_score + intent_score + trend_score
    
    def intent_multiplier(self, intent):
        # Prioritize commercial intent
        multipliers = {
            'transactional': 1.0,
            'commercial': 0.9,
            'informational': 0.6,
            'navigational': 0.3
        }
        return multipliers.get(intent, 0.5)

# Use custom scorer
kr = CustomKeywordScoring(api_key=os.getenv("SEO_API_KEY"))
results = kr.analyze("project management software")
```

### Integration with CI/CD

```yaml
# .github/workflows/seo-monitoring.yml
name: SEO Monitoring

on:
  schedule:
    - cron: '0 0 * * *'  # Daily at midnight

jobs:
  seo-audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      
      - name: Install dependencies
        run: |
          pip install voltagent-seo-skills pyyaml
      
      - name: Run daily SEO checks
        env:
          SEO_API_KEY: ${{ secrets.SEO_API_KEY }}
        run: |
          python scripts/daily_seo_check.py
      
      - name: Create issue if problems found
        if: failure()
        uses: actions/github-script@v6
        with:
          script: |
            github.rest.issues.create({
              owner: context.repo.owner,
              repo: context.repo.repo,
              title: 'SEO Issues Detected',
              body: 'Daily SEO audit found issues. Check workflow logs.'
            })
```

## Resources

- **Source repository**: https://github.com/VoltAgent/awesome-agent-skills
- **Documentation**: See README.md in skill directory
- **Issues**: Report at repository issues page

---

**License:** MIT

Source

Creator's repository Β· aradotso/marketing-skills

View on GitHub β†—

Security

Security checks in progress
Results will appear here once audits complete
What this skill can do
Reads your filesConnects to the internetRuns code on your machine
Checked by 3 independent security firms
Does it try to trick the AI?Not yet checkedPending Β· Gen Agent Trust Hub
Does it sneak in hidden code?Not yet checkedPending Β· Socket
Does it have known bugs?Not yet checkedPending Β· Snyk