Skip to main content
skill CX Codex

semrush-research — Claude Code skill: what it does, how to install

Pulls domain metrics, keyword difficulty, backlinks, and competitor search data via the SemRush API. Useful for running SEO intelligence without leaving the terminal.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add OpenClaudia/openclaudia-skills --skill semrush-research -a claude-code
Open on GitHub

What semrush-research does

This skill queries SemRush API endpoints with curl and parses the returned semicolon-delimited CSV data. It extracts domain overviews covering organic and paid traffic, analyzes keyword search volume, tracks keyword difficulty on a 0–100 scale, and checks backlink distribution across root domains.

It includes a complete competitive research workflow. When prompted, the agent gathers target metrics, discovers competing domains, inspects common keyword rankings, and summarizes the findings in a side-by-side comparison table. Supported regional databases include us, uk, ca, de, fr, and others.

Requests fail immediately unless SEMRUSH_API_KEY is configured in .env, .env.local, or ~/.claude/.env.global.

What it helps with

  • pull organic and paid traffic estimates for any domain
  • check keyword search volume, CPC, and ranking difficulty
  • discover direct search competitors and shared organic keywords
  • summarize backlink counts, referring domains, and link types

Example prompts for the agent

  • Run a full competitor analysis for notion.so against its organic rivals
  • Check search volume and difficulty for project management in the us database
  • Show backlink metrics and top ranking keywords for hubspot.com

How to install semrush-research

1Skills CLI (Vercel)

npx skills add OpenClaudia/openclaudia-skills --skill semrush-research -a claude-code

2Manually: put the files in place

~/.claude/skills/semrush-research/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/semrush-research/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about semrush-research

How do I install semrush-research in Claude Code?

Run npx skills add OpenClaudia/openclaudia-skills --skill semrush-research -a claude-code in your terminal. You can also place the skill file directly into ~/.claude/skills/semrush-research/SKILL.md.

What does semrush-research do?

It queries SemRush endpoints to retrieve SEO data such as keyword search volume, domain traffic estimates, backlinks, and competitor rankings, then presents the parsed CSV data in tables.

What prerequisites are required for semrush-research?

You need an active SemRush API key added as SEMRUSH_API_KEY in .env, .env.local, or ~/.claude/.env.global.

Source text

SKILL.md · MIT
---
name: semrush-research
description: >
  SEO and competitive intelligence via the SemRush API. Use when asked to
  research competitors, analyze domains, find keyword opportunities, check
  backlinks, or estimate traffic. Trigger phrases: "competitor analysis",
  "domain overview", "keyword research", "backlink check", "traffic estimate",
  "SEO intelligence", "semrush", "competitive research".
---

# SemRush Research

Pull live SEO and competitive intelligence data from the SemRush API.

## Prerequisites

Requires `SEMRUSH_API_KEY` set in `.env`, `.env.local`, or `~/.claude/.env.global`.

```bash
# Verify the key is available
echo "SEMRUSH_API_KEY is ${SEMRUSH_API_KEY:+set}"
```

If the key is not set, instruct the user:
> You need a SemRush API key. Get one at https://www.semrush.com/api/
> Then add `SEMRUSH_API_KEY=your_key` to your `.env` file.

## API Base

All requests go to `https://api.semrush.com/` with the API key passed as `&key={SEMRUSH_API_KEY}`.

Responses are semicolon-delimited CSV. The first line is the header row. Parse accordingly.

---

## 1. Domain Overview

Get a high-level snapshot of any domain's organic and paid search performance.

### Endpoint

```
https://api.semrush.com/?type=domain_ranks&key={KEY}&export_columns=Dn,Rk,Or,Ot,Oc,Ad,At,Ac&domain={domain}
```

### Export Columns

| Column | Meaning |
|--------|---------|
| `Dn` | Domain |
| `Rk` | SemRush Rank |
| `Or` | Organic keywords count |
| `Ot` | Organic traffic estimate |
| `Oc` | Organic traffic cost ($) |
| `Ad` | Paid keywords count |
| `At` | Paid traffic estimate |
| `Ac` | Paid traffic cost ($) |

### Example curl

```bash
curl -s "https://api.semrush.com/?type=domain_ranks&key=${SEMRUSH_API_KEY}&export_columns=Dn,Rk,Or,Ot,Oc,Ad,At,Ac&domain=example.com"
```

### Parsing the Response

```bash
# Response format (semicolon-delimited):
# Dn;Rk;Or;Ot;Oc;Ad;At;Ac
# example.com;12345;8234;145000;234500;120;3400;5600

# Parse with awk
curl -s "..." | awk -F';' 'NR==2 {
  printf "Domain: %s\nSemRush Rank: %s\nOrganic Keywords: %s\nOrganic Traffic: %s\nOrganic Traffic Cost: $%s\nPaid Keywords: %s\nPaid Traffic: %s\nPaid Traffic Cost: $%s\n",
  $1,$2,$3,$4,$5,$6,$7,$8
}'
```

---

## 2. Keyword Overview

Get search volume, CPC, competition, and SERP features for a keyword.

### Endpoint

```
https://api.semrush.com/?type=phrase_all&key={KEY}&phrase={keyword}&database=us&export_columns=Ph,Nq,Cp,Co,Nr,Td
```

### Export Columns

| Column | Meaning |
|--------|---------|
| `Ph` | Keyword phrase |
| `Nq` | Search volume (monthly) |
| `Cp` | CPC (USD) |
| `Co` | Competition (0-1) |
| `Nr` | Number of results |
| `Td` | Trend (12 months, comma-separated) |

### Example curl

```bash
curl -s "https://api.semrush.com/?type=phrase_all&key=${SEMRUSH_API_KEY}&phrase=content+marketing&database=us&export_columns=Ph,Nq,Cp,Co,Nr,Td"
```

### Supported Databases

Use `&database=XX` where XX is: `us`, `uk`, `ca`, `au`, `de`, `fr`, `es`, `it`, `br`, `in`, `jp`.

---

## 3. Related Keywords

Find semantically related keywords for content planning and gap analysis.

### Endpoint

```
https://api.semrush.com/?type=phrase_related&key={KEY}&phrase={keyword}&database=us&export_columns=Ph,Nq,Cp,Co,Nr,Td&display_limit=20
```

### Example curl

```bash
curl -s "https://api.semrush.com/?type=phrase_related&key=${SEMRUSH_API_KEY}&phrase=project+management&database=us&export_columns=Ph,Nq,Cp,Co,Nr,Td&display_limit=20"
```

### Parsing Multiple Rows

```bash
curl -s "..." | awk -F';' 'NR>1 { printf "%-40s Vol: %-8s CPC: $%-6s Comp: %s\n", $1, $2, $3, $4 }'
```

---

## 4. Keyword Difficulty

Estimate how hard it is to rank for a keyword.

### Endpoint

```
https://api.semrush.com/?type=phrase_kdi&key={KEY}&phrase={keyword}&database=us&export_columns=Ph,Kd
```

| Column | Meaning |
|--------|---------|
| `Ph` | Keyword |
| `Kd` | Keyword difficulty (0-100) |

Interpretation:
- 0-29: Easy - achievable with quality content
- 30-49: Moderate - needs solid content + some backlinks
- 50-69: Hard - needs strong domain authority + backlinks
- 70-84: Very hard - requires established authority
- 85-100: Extremely hard - dominated by top-tier domains

---

## 5. Domain Organic Keywords

See which keywords a domain ranks for organically.

### Endpoint

```
https://api.semrush.com/?type=domain_organic&key={KEY}&domain={domain}&database=us&export_columns=Ph,Po,Nq,Cp,Url,Tr,Tc&display_limit=50&display_sort=tr_desc
```

| Column | Meaning |
|--------|---------|
| `Ph` | Keyword |
| `Po` | Position |
| `Nq` | Search volume |
| `Cp` | CPC |
| `Url` | Ranking URL |
| `Tr` | Traffic (%) |
| `Tc` | Traffic cost |

### Example curl

```bash
curl -s "https://api.semrush.com/?type=domain_organic&key=${SEMRUSH_API_KEY}&domain=hubspot.com&database=us&export_columns=Ph,Po,Nq,Cp,Url,Tr,Tc&display_limit=20&display_sort=tr_desc"
```

---

## 6. Backlink Overview

Get a summary of a domain's backlink profile.

### Endpoint

```
https://api.semrush.com/analytics/v1/?key={KEY}&type=backlinks_overview&target={domain}&target_type=root_domain&export_columns=total,domains_num,urls_num,ips_num,follows_num,nofollows_num,texts_num,images_num
```

### Example curl

```bash
curl -s "https://api.semrush.com/analytics/v1/?key=${SEMRUSH_API_KEY}&type=backlinks_overview&target=example.com&target_type=root_domain&export_columns=total,domains_num,urls_num,ips_num,follows_num,nofollows_num,texts_num,images_num"
```

---

## 7. Competitor Discovery

Find domains competing for the same organic keywords.

### Endpoint

```
https://api.semrush.com/?type=domain_organic_organic&key={KEY}&domain={domain}&database=us&export_columns=Dn,Cr,Np,Or,Ot,Oc,Ad&display_limit=10
```

| Column | Meaning |
|--------|---------|
| `Dn` | Competitor domain |
| `Cr` | Competition level |
| `Np` | Common keywords |
| `Or` | Organic keywords |
| `Ot` | Organic traffic |
| `Oc` | Organic traffic cost |
| `Ad` | Paid keywords |

### Example curl

```bash
curl -s "https://api.semrush.com/?type=domain_organic_organic&key=${SEMRUSH_API_KEY}&domain=notion.so&database=us&export_columns=Dn,Cr,Np,Or,Ot,Oc,Ad&display_limit=10"
```

---

## 8. Traffic Analytics (Estimates)

Estimate a domain's overall traffic sources and engagement.

### Endpoint

```
https://api.semrush.com/analytics/ta/api/v3/summary?key={KEY}&targets={domain}&display_date=2024-01-01&country=us&export_columns=target,visits,users,bounce_rate,pages_per_visit,avg_visit_duration
```

---

## Workflow: Full Competitive Analysis

When the user asks for a full competitive analysis, run these steps in order:

1. **Domain Overview** - Get the target domain's metrics
2. **Competitor Discovery** - Find top 5-10 competitors
3. **Domain Overview** for each competitor - Compare metrics
4. **Top Keywords** for each domain - Find keyword gaps
5. **Backlink Overview** for each domain - Compare link profiles

### Output Format

Present results as a comparison table:

```
| Metric              | target.com | competitor1.com | competitor2.com |
|---------------------|-----------|-----------------|-----------------|
| SemRush Rank        | ...       | ...             | ...             |
| Organic Keywords    | ...       | ...             | ...             |
| Organic Traffic     | ...       | ...             | ...             |
| Traffic Cost        | ...       | ...             | ...             |
| Backlinks           | ...       | ...             | ...             |
| Referring Domains   | ...       | ...             | ...             |
```

Then highlight:
- **Keyword gaps**: Keywords competitors rank for but target does not
- **Quick wins**: Keywords where target ranks positions 5-20 (improvement opportunities)
- **Content gaps**: Topics competitors cover but target does not
- **Backlink opportunities**: Sites linking to competitors but not target

## Rate Limits and Costs

- Each API call costs API units (check your plan)
- Use `&display_limit=` to control result count (default varies by endpoint)
- Cache results locally when doing multi-step analysis to avoid redundant calls
- Domain overview calls are cheapest; backlink and traffic analytics cost more

## Error Handling

| Error | Meaning |
|-------|---------|
| `ERROR 50 :: NOTHING FOUND` | No data for this query |
| `ERROR 120 :: WRONG KEY` | Invalid API key |
| `ERROR 130 :: LIMIT EXCEEDED` | API unit limit reached |
| Empty response | Usually means no data available for the query parameters |

When you get "NOTHING FOUND", try:
- Different database (e.g., `uk` instead of `us`)
- Root domain instead of subdomain
- Broader keyword phrase

© OpenClaudia · MIT · OpenClaudia/openclaudia-skills

Similar skills

Everything for SEO and GEO →

From the same set49

competitor-analysis A skill that breaks down competitor strategy across SEO, ads, social, email, pricing and positioning. Useful before a launch or a repositioning. CX Codex +1 505installs page-cro The skill walks an agent through a landing page audit: above the fold, forms, social proof, load speed. Useful when a page gets traffic but few conversions. CX Codex +1 501installs telegram-bot Sends messages, photos, files and polls to Telegram channels and groups through the Bot API. Useful when posts go out straight from your agent. CX Codex +1 493installs content-repurposing Turns a single long article, podcast or video into threads, carousels, newsletter sections and video scripts for specific platforms. Useful once the pillar content exists and needs somewhere to go. CX Codex +1 491installs linkedin-content Writes posts tuned to the LinkedIn feed: hooks, formats, content pillars and posting times. Useful when you need the actual text, not generic advice. CX Codex +1 482installs newsletter Helps plan email newsletter content, grow subscribers, and set up monetization. Useful when building a newsletter on Substack or Beehiiv. CX Codex +1 480installs keyword-research Runs automated keyword research via the SemRush API, clusters terms by intent, and identifies competitor content gaps. Useful for SEO audits and content planning. CX Codex +1 478installs affiliate-marketing Walks you through designing an affiliate program: commission models, platform choices, partner recruiting and activation metrics. CX Codex +1 478installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor