From sundial-org-awesome-openclaw-skills-4
Performs SEO keyword research using DataForSEO API: keyword analysis, YouTube research, competitor analysis, SERP analysis, and trend tracking. Requires DataForSEO credentials.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sundial-org-awesome-openclaw-skills-4:seo-dataforseoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Install dependencies:
references/api-reference.mdscripts/api/__init__.pyscripts/api/keywords_data.pyscripts/api/labs.pyscripts/api/serp.pyscripts/api/trends.pyscripts/config/__init__.pyscripts/config/settings.pyscripts/core/__init__.pyscripts/core/client.pyscripts/core/storage.pyscripts/main.pyscripts/requirements.txtscripts/setup.shInstall dependencies:
pip install -r scripts/requirements.txt
Configure credentials by creating a .env file in the project root:
[email protected]
DATAFORSEO_PASSWORD=your_api_password
Get credentials from: https://app.dataforseo.com/api-access
| User says | Function to call |
|---|---|
| "Research keywords for [topic]" | keyword_research("topic") |
| "YouTube keyword data for [idea]" | youtube_keyword_research("idea") |
| "Analyze competitor [domain.com]" | competitor_analysis("domain.com") |
| "What's trending?" | trending_topics() |
| "Keyword analysis for [list]" | full_keyword_analysis(["kw1", "kw2"]) |
| "Landing page keywords for [topic]" | landing_page_keyword_research(["kw1"], "competitor.com") |
Execute functions by importing from scripts/main.py:
import sys
from pathlib import Path
sys.path.insert(0, str(Path("scripts")))
from main import *
result = keyword_research("AI website builders")
Every research task follows three phases:
Run API functions. Each function call hits the DataForSEO API and returns structured data.
All results automatically save as timestamped JSON files to results/{category}/. File naming pattern: YYYYMMDD_HHMMSS__operation__keyword__extra_info.json
After research, read the saved JSON files and create a markdown summary in results/summary/ with data tables, ranked opportunities, and strategic recommendations.
These are the primary functions in scripts/main.py. Each orchestrates multiple API calls for a complete research workflow.
| Function | Purpose | What it gathers |
|---|---|---|
keyword_research(keyword) | Single keyword deep-dive | Overview, suggestions, related keywords, difficulty |
youtube_keyword_research(keyword) | YouTube content research | Overview, suggestions, YouTube SERP rankings, YouTube trends |
landing_page_keyword_research(keywords, competitor_domain) | Landing page SEO | Overview, intent, difficulty, SERP analysis, competitor keywords |
full_keyword_analysis(keywords) | Strategic content planning | Overview, difficulty, intent, keyword ideas, historical volume, Google Trends |
competitor_analysis(domain, keywords) | Competitor intelligence | Domain keywords, Google Ads keywords, competitor domains |
trending_topics(location_name) | Current trends | Currently trending searches |
All functions accept an optional location_name parameter (default: "United States"). Most functions also have boolean flags to skip specific sub-analyses (e.g., include_suggestions=False).
For granular control, import specific functions from the API modules. See references/api-reference.md for the complete list of 25 API functions with parameters, limits, and examples.
Results auto-save to results/ with this structure:
results/
├── keywords_data/ # Search volume, CPC, competition
├── labs/ # Suggestions, difficulty, intent
├── serp/ # Google/YouTube rankings
├── trends/ # Google Trends data
└── summary/ # Human-readable markdown summaries
from core.storage import list_results, load_result, get_latest_result
# List recent results
files = list_results(category="labs", limit=10)
# Load a specific result
data = load_result(files[0])
# Get most recent result for an operation
latest = get_latest_result(category="labs", operation="keyword_suggestions")
from main import get_recent_results, load_latest
# List recent files across all categories
files = get_recent_results(limit=10)
# Load latest result for a category
data = load_latest("labs", "keyword_suggestions")
After running research, create a markdown summary document in results/summary/. Include:
Name the summary file descriptively (e.g., results/summary/ai-tools-keyword-research.md).
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4Produces keyword research artifacts with search volume, CPC, competition, and long-tail opportunities using DataForSEO. Useful before content planning or topic clustering.
Accesses DataForSEO API for SEO data: SERP rank checks, keyword volume/discovery, domain/competitor analytics, backlinks, and app store review mining.
Pulls SEO and competitive intelligence data from the SemRush API. Use for domain overviews, keyword research, backlink checks, and traffic estimates.