ab-test-setup
Design, plan, and analyze A/B tests with statistical rigor. Use when the user asks about A/B testing, split testing, experiment…
Manages Ahrefs API usage in Python using `ahrefs-python` library. Use when working with SEO / marketing related tasks or with data including backlinks, keywords, domain ratings, organic traffic, site audits, rank tracking, and brand monitoring. Covers `ahrefs-python` usage
Claude Code
$ npx -y skills add openclaudia/openclaudia-skills --skill ahrefs-research --agent claude-code
Codex
$ npx skills add openclaudia/openclaudia-skills --skill ahrefs-research -a codex -y
Cursor
$ npx skills add openclaudia/openclaudia-skills --skill ahrefs-research -a cursor -y
Gemini CLI
$ npx skills add openclaudia/openclaudia-skills --skill ahrefs-research -a gemini-cli -y
GitHub Copilot
$ npx skills add openclaudia/openclaudia-skills --skill ahrefs-research -a github-copilot -y
OpenCode
$ npx skills add openclaudia/openclaudia-skills --skill ahrefs-research -a opencode -y
Windsurf
$ npx skills add openclaudia/openclaudia-skills --skill ahrefs-research -a windsurf -y
name: ahrefs-python description: Manages Ahrefs API usage in Python using `ahrefs-python` library. Use when working with SEO / marketing related tasks or with data including backlinks, keywords, domain ratings, organic traffic, site audits, rank tracking, and brand monitoring. Covers `ahrefs-python` usage including AhrefsClient / AsyncAhrefsClient, typed request/response models, error handling, and all API sections.
The Ahrefs API provides programmatic access to Ahrefs SEO data. The official Python SDK (`ahrefs-python`) provides typed request and response models for all endpoints, auto-generated from the OpenAPI spec.
Key capabilities:
pip3 install git+https://github.com/ahrefs/ahrefs-python.git
Requires Python 3.11+. Dependencies: `httpx`, `pydantic`.
The SDK has 52 methods across 7 API sections. The built-in search tool is the fastest way to find the right method — it returns matching method signatures, parameters, and return types directly, so there's no need to scan through a large reference.
**Python** (preferred when already in a Python context):
from ahrefs.search import search_api_methods
# Returns formatted text with method signatures, parameters, and return types
print(search_api_methods("domain rating"))
# Filter by API section and limit results
print(search_api_methods("backlinks", section="site-explorer", limit=3))**CLI** (preferred when exploring from the terminal):
# Ensure python3 points to the interpreter where ahrefs-python is installed: # which python3 # python3 -c "import ahrefs" python3 -m ahrefs.api_search "domain rating" python3 -m ahrefs.api_search "backlinks" --section site-explorer --limit 3 python3 -m ahrefs.api_search "batch" --json python3 -m ahrefs.api_search --sections # list all API sections
import os
from ahrefs import AhrefsClient
with AhrefsClient(api_key=os.environ["AHREFS_API_KEY"]) as client:
data = client.site_explorer_domain_rating(target="ahrefs.com", date="2025-01-15")
print(data.domain_rating) # 91.0
print(data.ahrefs_rank) # 3import os
import ahrefs
with ahrefs.AhrefsClient(
api_key=os.environ["AHREFS_API_KEY"], # or any secrets source
base_url="...", # override API base URL (default: https://api.ahrefs.com/v3)
timeout=30.0, # request timeout in seconds (default: 60)
max_retries=3, # retries on transient errors (default: 2)
) as client:
...Async client:
import os
from ahrefs import AsyncAhrefsClient
async with AsyncAhrefsClient(api_key=os.environ["AHREFS_API_KEY"]) as client:
data = await client.site_explorer_domain_rating(target="ahrefs.com", date="2025-01-15")For parallel calls, use `asyncio.gather`:
import asyncio
async with AsyncAhrefsClient(api_key=os.environ["AHREFS_API_KEY"]) as client:
dr_ahrefs, dr_moz = await asyncio.gather(
client.site_explorer_domain_rating(target="ahrefs.com", date="2025-01-15"),
client.site_explorer_domain_rating(target="moz.com", date="2025-01-15"),
)Two calling styles -- both are equivalent:
# Keyword arguments (recommended) data = client.site_explorer_domain_rating(target="ahrefs.com", date="2025-01-15") # Request objects (full type safety) from ahrefs.types import SiteExplorerDomainRatingRequest request = SiteExplorerDomainRatingRequest(target="ahrefs.com", date="2025-01-15") data = client.site_explorer_domain_rating(request)
Method names follow `{api_section}_{endpoint}`, e.g. `site_explorer_organic_keywords`, `keywords_explorer_overview`.
Methods return typed Data objects directly.
**Scalar endpoints** return a single data object (or `None`):
data = client.site_explorer_domain_rating(target="ahrefs.com", date="2025-01-15") print(data.domain_rating)
**List endpoints** return a list of data objects. There is no pagination — set `limit` to the number of results you need. Use `select` to request only the columns you need:
items = client.site_explorer_organic_keywords(
target="ahrefs.com",
date="2025-01-15",
select="keyword,volume,best_position",
order_by="volume:desc",
limit=10,
)
for item in items:
print(item.keyword, item.volume, item.best_position)import ahrefs
try:
data = client.site_explorer_domain_rating(target="example.com", date="2025-01-15")
except ahrefs.AuthenticationError: # 401
...
except ahrefs.RateLimitError as e: # 429 -- e.retry_after has the delay
...
except ahrefs.NotFoundError: # 404
...
except ahrefs.APIError as e:77 open-source marketing skills for Claude Code, Codex, and other AI coding agents. SEO, content, email, ads, analytics, and growth.
Design, plan, and analyze A/B tests with statistical rigor. Use when the user asks about A/B testing, split testing, experiment…
Build and manage an affiliate marketing program. Use when the user says "affiliate program", "affiliate marketing", "affiliate…
Generate an AI Citations Report (GEO) for a domain — which AI-search prompts cite the site across Google AI Overview and ChatGPT,…
Generate images using AI (OpenAI GPT Image or Stability AI). Use when the user asks to generate an image, create an AI image,…
Research and enrich B2B leads using the Apollo.io API. Use when the user says "find leads", "prospect research", "company…
Audit a domain's backlink profile using the SemRush API. Use when the user says "audit backlinks", "check my backlinks",…
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use…
Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…
Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…
Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…