| name | composiohq-awesome-claude-skills-seo-content-marketing |
| description | SEO & content marketing skill suite with keyword research, content audits, technical SEO, competitor analysis, and AI-powered content workflows |
| triggers | ["analyze SEO performance for this website","run a technical SEO audit","perform keyword research for this topic","generate a content brief with SEO optimization","check competitor backlink gaps","audit content quality and cannibalization","create a data-driven content calendar","monitor SERP rankings and volatility"] |
ComposioHQ Awesome Claude Skills โ SEO & Content Marketing
Skill by ara.so โ Marketing Skills collection.
This skill suite provides AI-powered SEO and content marketing capabilities derived from the ComposioHQ/awesome-claude-skills framework. It delivers 10 specialized commands and 5 multi-step workflows for keyword research, content audits, technical SEO analysis, competitor intelligence, and content strategy.
What This Project Does
The SEO & Content Marketing Skills Suite enables:
- Keyword Research โ Deep clustering, opportunity scoring, and SERP intent mapping
- Content Audits โ Quality scoring, duplication detection, and cannibalization analysis
- Technical SEO โ Crawl budget, Core Web Vitals, schema markup, and indexability audits
- Competitor Analysis โ Backlink gaps, topic gaps, and featured snippet opportunities
- Content Strategy โ AI-generated briefs, editorial calendars, and optimization workflows
- Performance Monitoring โ Rank tracking, volatility alerts, and CTR optimization
All commands use structured output with progress tracking, findings tables, prioritized action plans, and suggested next steps.
Installation
Clone the Skill Suite
mkdir -p ~/.claude/skills
git clone https://github.com/ColonyShopkeeper/r08-composiohq-awesome-claude-skills-seo.git \
~/.claude/skills/composiohq-seo-content-marketing
cd ~/.claude/skills
curl -L https://github.com/ColonyShopkeeper/r08-composiohq-awesome-claude-skills-seo/archive/refs/heads/main.zip -o seo-skills.zip
unzip seo-skills.zip
mv r08-composiohq-awesome-claude-skills-seo-main composiohq-seo-content-marketing
Register in Claude Code
In a Claude Code session:
/read ~/.claude/skills/composiohq-seo-content-marketing/SKILL.md
Or add to your Claude Code configuration:
{
"skills": [
"~/.claude/skills/composiohq-seo-content-marketing"
]
}
Core Commands
1. Keyword Research
Deep keyword clustering with opportunity scoring and SERP intent mapping.
/keyword-research "sustainable fashion"
/keyword-research "sustainable fashion" --cluster-by intent --min-volume 500 --max-difficulty 40
/keyword-research "sustainable fashion" --output csv --file keywords.csv
Output Structure:
- Keyword clusters grouped by intent (informational, commercial, transactional)
- Search volume, keyword difficulty, and opportunity score
- SERP feature opportunities (featured snippets, PAA, image pack)
- Primary and secondary keyword recommendations
2. Content Audit
Full-site content quality scoring with duplication and cannibalization detection.
/content-audit https://example.com --scope full
/content-audit https://example.com/blog --scope section
/content-audit https://example.com --output md --file audit-report.md
Analysis Includes:
- Content quality scores (thin content, duplicate content, orphaned pages)
- Keyword cannibalization report
- Missing or duplicate meta tags
- Internal linking opportunities
- Content gap analysis
3. Technical SEO Audit
Comprehensive technical SEO analysis covering crawlability, performance, and indexability.
/technical-seo https://example.com
/technical-seo https://example.com --focus cwv
/technical-seo https://example.com --device mobile
Audit Coverage:
- Crawl budget analysis and robots.txt validation
- Core Web Vitals (LCP, FID, CLS)
- Schema markup validation
- Canonical and hreflang implementation
- Mobile usability
- HTTPS and security headers
- XML sitemap validation
4. Competitor Gap Analysis
Identify backlink gaps, topic gaps, and featured snippet opportunities.
/competitor-gap https://example.com --competitors competitor1.com,competitor2.com
/competitor-gap https://example.com --competitors competitor1.com --focus backlinks
/competitor-gap https://example.com --competitors competitor1.com --output json
Gap Analysis:
- Backlink gap (links competitors have that you don't)
- Topic gap (keywords competitors rank for that you don't)
- Featured snippet opportunities
- Content format gaps (videos, infographics, tools)
- Domain authority and trust flow comparison
5. Content Brief Generation
AI-generated SEO content briefs with outlines, NLP terms, and optimization targets.
/content-brief "how to start a podcast"
/content-brief "how to start a podcast" --word-count 2500
/content-brief "how to start a podcast" --analyze-top 5
Brief Includes:
- Target keyword and LSI keywords
- Recommended headings (H1, H2, H3 structure)
- NLP terms and entities to include
- Target word count and readability score
- Questions to answer (from PAA)
- Internal linking suggestions
- Meta title and description templates
6. SERP Monitoring
Daily rank tracking with volatility alerts and CTR optimization recommendations.
/serp-monitor https://example.com --keywords keywords.txt
/serp-monitor https://example.com --keywords "keyword1,keyword2,keyword3"
/serp-monitor https://example.com --keywords keywords.txt --report weekly
Monitoring Features:
- Position tracking for target keywords
- SERP volatility alerts
- CTR optimization opportunities
- Featured snippet tracking
- Competitor position changes
- Ranking trend visualization
7. Link Prospecting
Quality backlink prospect identification with DA/DR filtering and outreach templates.
/link-prospecting "sustainable fashion" --min-da 30
/link-prospecting "sustainable fashion" --type guest-post --min-da 40
/link-prospecting "sustainable fashion" --type resource-page
Prospecting Output:
- Qualified prospect list with DA/DR scores
- Contact information (where available)
- Outreach email templates
- Link placement opportunities
- Estimated response rates
8. Page Speed SEO Analysis
Render-blocking resource identification with performance impact on rankings.
/page-speed-seo https://example.com
/page-speed-seo https://example.com --device mobile
/page-speed-seo https://example.com --output detailed
Performance Analysis:
- Render-blocking resources (CSS, JavaScript)
- Largest Contentful Paint (LCP) optimization
- Cumulative Layout Shift (CLS) issues
- First Input Delay (FID) analysis
- Image optimization opportunities
- Ranking impact estimation
9. Local SEO Audit
NAP consistency check, Google Business Profile optimization, and local citation analysis.
/local-seo "Business Name" --location "City, State"
/local-seo "Business Name" --location "City, State" --focus citations
/local-seo "Business Name" --location "City, State" --focus gbp
Local Audit Coverage:
- NAP (Name, Address, Phone) consistency across web
- Google Business Profile completeness score
- Local citation audit (Yelp, Apple Maps, Bing Places)
- Review quantity and sentiment analysis
- Local pack ranking factors
- Schema markup for local business
10. Content Calendar Generation
Data-driven editorial calendar based on search demand and seasonality.
/content-calendar --topics "sustainable fashion,ethical clothing" --months 3
/content-calendar --topics "sustainable fashion" --months 6 --seasonality
/content-calendar --topics "sustainable fashion" --months 3 --output csv
Calendar Features:
- Keyword-driven topic recommendations
- Seasonal trend integration
- Content type suggestions (blog, video, infographic)
- Target publish dates
- Estimated search volume and competition
- Internal linking opportunities
Multi-Step Workflows
Full SEO Sprint
Comprehensive 12-step SEO workflow from audit to implementation.
/workflows:full-seo-sprint https://example.com --scope full
Workflow Steps:
- Technical SEO audit
- Content quality audit
- Keyword research and mapping
- Competitor gap analysis
- On-page optimization priorities
- Content creation plan
- Internal linking strategy
- Backlink acquisition plan
- Schema markup implementation
- Core Web Vitals optimization
- Conversion rate optimization
- Measurement and reporting setup
Launch SEO
Pre-launch SEO checklist with validation.
/workflows:launch-seo https://staging.example.com
Pre-Launch Checklist:
- Canonical URL validation
- Hreflang implementation (if multi-language)
- XML sitemap generation and submission
- Robots.txt configuration
- 301 redirect mapping (if migration)
- Meta tags and structured data
- Analytics and Search Console setup
- Mobile responsiveness
- Page speed baseline
Content Refresh
Identify and refresh underperforming content to recover rankings.
/workflows:content-refresh https://example.com --min-age 180
Refresh Process:
- Identify declining pages (traffic loss > 20%)
- Analyze ranking competitors
- Content gap analysis
- Update recommendations (freshness, depth, optimization)
- Internal linking improvements
- Re-optimization checklist
- Re-crawl and re-index strategy
Authority Building
End-to-end digital PR and link-building campaign.
/workflows:authority-building --topic "sustainable fashion" --goal 50-links
Campaign Steps:
- Link gap analysis
- Content asset creation (linkable assets)
- Prospect identification
- Outreach template creation
- Email campaign execution
- Follow-up automation
- Link acquisition tracking
- Authority metric monitoring
AI Content Pipeline
Automated keyword-to-publish content workflow.
/workflows:ai-content-pipeline --keywords keywords.csv --quantity 10
Pipeline Stages:
- Keyword prioritization
- Content brief generation
- AI draft creation
- SEO optimization
- Fact-checking and editing
- Internal linking integration
- Schema markup addition
- Publishing and indexing
- Promotion and distribution
- Performance monitoring
Configuration
Environment Variables
export COMPOSIO_API_KEY="your_composio_api_key"
export AHREFS_API_KEY="your_ahrefs_key"
export SEMRUSH_API_KEY="your_semrush_key"
export SCREAMING_FROG_LICENSE="your_sf_license"
export OPENAI_API_KEY="your_openai_key"
export ANTHROPIC_API_KEY="your_anthropic_key"
export GOOGLE_ANALYTICS_CREDENTIALS="path/to/credentials.json"
export GOOGLE_SEARCH_CONSOLE_CREDENTIALS="path/to/credentials.json"
Configuration File
Create ~/.claude/skills/composiohq-seo-content-marketing/config.yaml:
defaults:
output_format: "markdown"
progress_display: true
auto_export: false
keyword_research:
min_search_volume: 100
max_keyword_difficulty: 50
cluster_method: "intent"
serp_features: true
content_audit:
min_word_count: 300
duplicate_threshold: 0.85
cannibalization_threshold: 0.7
technical_seo:
max_page_load: 3.0
min_mobile_score: 90
crawl_depth: 10
competitor_analysis:
max_competitors: 5
min_domain_authority: 30
link_prospecting:
min_da: 30
min_dr: 25
max_spam_score: 10
reporting:
include_visualizations: true
Code Examples
Python: Custom Keyword Research Script
import os
import json
from composio import ComposioClient
client = ComposioClient(api_key=os.getenv("COMPOSIO_API_KEY"))
def keyword_research(seed_keyword, min_volume=100, max_difficulty=50):
"""
Perform keyword research with clustering and intent mapping
"""
result = client.execute_skill(
skill="seo-content-marketing",
command="keyword-research",
params={
"seed_keyword": seed_keyword,
"min_volume": min_volume,
"max_difficulty": max_difficulty,
"cluster_by": "intent",
"include_serp_features": True
}
)
keywords = result.get("keywords", [])
clusters = result.get("clusters", {})
by_intent = {
"informational": [],
"commercial": [],
"transactional": []
}
for keyword in keywords:
intent = keyword.get("intent", "informational")
by_intent[intent].append({
"keyword": keyword["term"],
"volume": keyword["search_volume"],
"difficulty": keyword["difficulty"],
"opportunity_score": keyword[]
})
intent by_intent:
by_intent[intent].sort(key= x: x[], reverse=)
by_intent
__name__ == :
results = keyword_research(, min_volume=)
()
kw results[][:]:
()
()
kw results[][:]:
()
JavaScript: Content Audit Integration
const { ComposioClient } = require('composio-sdk');
const client = new ComposioClient({
apiKey: process.env.COMPOSIO_API_KEY
});
async function auditWebsite(url, options = {}) {
const {
scope = 'full',
minWordCount = 300,
checkCannibalization = true
} = options;
const result = await client.executeSkill({
skill: 'seo-content-marketing',
command: 'content-audit',
params: {
url,
scope,
min_word_count: minWordCount,
check_cannibalization: checkCannibalization,
output: 'json'
}
});
const issues = {
critical: [],
warning: [],
info: []
};
result.findings.forEach(finding => {
if (finding.severity === 'critical') {
issues.critical.push(finding);
} else if (finding. === ) {
issues..(finding);
} {
issues..(finding);
}
});
summary = {
: result..,
: result..,
: issues..,
: issues..,
: result..,
: result.?. ||
};
{ summary, issues, : result };
}
( () => {
audit = (, {
: ,
:
});
.();
.();
.();
.();
(audit.. > ) {
.();
audit...( {
.();
});
}
})();
Shell Script: Automated SEO Sprint
#!/bin/bash
set -e
DOMAIN=$1
OUTPUT_DIR="./seo-sprint-$(date +%Y%m%d)"
if [ -z "$DOMAIN" ]; then
echo "Usage: $0 <domain>"
exit 1
fi
echo "Starting SEO Sprint for $DOMAIN"
mkdir -p "$OUTPUT_DIR"
echo "Running technical SEO audit..."
/technical-seo "$DOMAIN" --output json --file "$OUTPUT_DIR/technical-audit.json"
echo "Running content audit..."
/content-audit "$DOMAIN" --scope full --output json --file "$OUTPUT_DIR/content-audit.json"
echo "Performing keyword research..."
MAIN_TOPIC=$(curl -s "$DOMAIN" | grep -oP '<title>\K[^<]+' | head -1)
/keyword-research "$MAIN_TOPIC" --cluster-by intent --output csv --file "$OUTPUT_DIR/keywords.csv"
COMPETITORS=$(curl -s | \
grep -oP | \
grep -v google | \
-3 | \
-d -f2 | \
| \
sed )
/competitor-gap --competitors --output json --file
TOP_KEYWORD=$(awk -F )
/content-brief --analyze-top 5 --output md --file
/page-speed-seo --device mobile --output json --file
> <<
jq -r \
>>
Common Patterns
Pattern: Monthly SEO Health Check
#!/bin/bash
DOMAIN="example.com"
DATE=$(date +%Y-%m)
REPORT_DIR="./seo-reports/$DATE"
mkdir -p "$REPORT_DIR"
/technical-seo "https://$DOMAIN" --output json > "$REPORT_DIR/technical.json"
/serp-monitor "https://$DOMAIN" --keywords ./tracked-keywords.txt --report monthly > "$REPORT_DIR/rankings.json"
/content-audit "https://$DOMAIN" --scope full --output json > "$REPORT_DIR/content.json"
python compare-reports.py "$REPORT_DIR" "./seo-reports/$(date -d '1 month ago' +%Y-%m)"
Pattern: Content Optimization Loop
import os
from composio import ComposioClient
client = ComposioClient(api_key=os.getenv("COMPOSIO_API_KEY"))
def optimize_content_pipeline(keyword, domain):
"""
Complete content optimization workflow
"""
brief = client.execute_skill(
skill="seo-content-marketing",
command="content-brief",
params={"keyword": keyword, "analyze_top": 5}
)
current_ranking = client.execute_skill(
skill="seo-content-marketing",
command="serp-monitor",
params={"domain": domain, "keywords": [keyword]}
)
if not current_ranking or current_ranking["position"] > 10:
draft = generate_content_from_brief(brief)
return {"action": "create", "brief": brief, "draft": draft}
else:
url = current_ranking["url"]
gap_analysis = analyze_content_gap(url, keyword)
return {"action": "refresh", "url": url, "improvements": gap_analysis}
def generate_content_from_brief():
():
Pattern: Backlink Campaign Tracker
const { ComposioClient } = require('composio-sdk');
const fs = require('fs').promises;
class BacklinkCampaign {
constructor(domain, topic) {
this.domain = domain;
this.topic = topic;
this.client = new ComposioClient({ apiKey: process.env.COMPOSIO_API_KEY });
this.campaignFile = `./campaigns/${topic.replace(/\s+/g, '-')}.json`;
}
async initialize() {
const prospects = await this.client.executeSkill({
skill: 'seo-content-marketing',
command: 'link-prospecting',
params: {
topic: this.topic,
min_da: 30,
type: 'guest-post'
}
});
fs.(., .({
: .,
: .,
: ().(),
: prospects..( ({
...p,
: ,
: ,
:
}))
}, , ));
prospects..;
}
() {
campaign = .( fs.(.));
prospect = campaign..( p. === prospectUrl);
(prospect) {
prospect. = status;
prospect. = notes;
prospect. = ().();
fs.(., .(campaign, , ));
}
}
() {
campaign = .( fs.(.));
stats = {
: campaign..,
: ,
: ,
:
};
campaign..( {
(p. === ) stats.++;
(p. === ) stats.++;
(p. === ) stats.++;
});
stats;
}
}
( () => {
campaign = (, );
prospectCount = campaign.();
.();
})();
Troubleshooting
Command Not Found
If commands are not recognized:
claude skills list
/read ~/.claude/skills/composiohq-seo-content-marketing/SKILL.md
export PATH="$PATH:~/.claude/skills/composiohq-seo-content-marketing/bin"
API Rate Limits
When hitting third-party API limits:
/keyword-research "topic" --use-cache --cache-ttl 86400
/content-audit https://example.com --batch-size 10 --delay 2
composio quota check
Slow Performance
Optimize large audits:
/technical-seo https://example.com --max-depth 5
/content-audit https://example.com --sample 100
/content-audit https://example.com --parallel 4
Missing Dependencies
Install required tools:
pip install composio-sdk requests beautifulsoup4 pandas
npm install composio-sdk axios cheerio
sudo apt-get install curl jq
Authentication Errors
echo $COMPOSIO_API_KEY
composio auth login
cat ~/.composio/credentials.json
Export Failures
mkdir -p ./reports
chmod +w ./reports
/content-audit https://example.com --output json --file /full/path/to/report.json
Advanced Usage
Custom Scoring Models
Override default scoring algorithms:
def custom_opportunity_score(keyword_data):
"""
Custom keyword opportunity scoring
Factors: volume, difficulty, intent, SERP features
"""
volume_score = min(keyword_data['volume'] / 10000, 1.0) * 40
difficulty_score = (100 - keyword_data['difficulty']) / 100 * 30
intent_score = {'transactional': 30, 'commercial': 20, 'informational': 10}.get(
keyword_data['intent'], 10
)
serp_bonus = len(keyword_data.get('serp_features', [])) * 5
return volume_score + difficulty_score + intent_score + serp_bonus
keywords = keyword_research_results['keywords']
for kw in keywords:
kw['custom_score'] = custom_opportunity_score(kw)
keywords.sort(key=lambda x: x['custom_score'], reverse=True)
Automated Reporting
Schedule daily reports:
0 8 * * * /usr/local/bin/daily-seo-report.sh
DOMAIN="example.com"
DATE=$(date +%Y-%m-%d)
/serp-monitor "https://$DOMAIN" \
--keywords ./tracked-keywords.txt \
--output html \
--file "./reports/daily-$DATE.html"
mail -s "SEO Report $DATE" team@example.com < "./reports/daily-$DATE.html"
Integration Examples
Google Search Console Integration
from google.oauth2 import service_account
from googleapiclient.discovery import build
credentials = service_account.Credentials.from_service_account_file(
os.getenv('GOOGLE_SEARCH_CONSOLE_CREDENTIALS')
)
webmasters = build('searchconsole', 'v1', credentials=credentials)
site_url = 'https://example.com/'
request = {
'startDate': '2024-01-01',
'endDate': '2024-01-31',
'dimensions': ['query', 'page']
}
response = webmasters.searchanalytics().query(
siteUrl=site_url, body=request
).execute()
for row in response['rows']:
keyword = row['keys'][0]
suggestions = keyword_research(keyword)
Slack Notifications
const { WebClient } = require('@slack/web-api');
const slack = new WebClient(process.env.SLACK_BOT_TOKEN);
async function notifyRankingChanges(changes) {
const message = {
channel: '#seo-alerts',
blocks: [
{
type: 'header',
text: {
type: 'plain_text',
text: '๐จ Ranking Changes Detected'
}
},
{
type: 'section',
fields: changes.map(change => ({
type: 'mrkdwn',
text: `*${change.keyword}*\n${change.old_position} โ ${change.new_position} (${change.change > 0 ? '+' : ''}${change.change})`
}))
}
]
};
await slack.chat.postMessage(message);
}
Resources