Help us improve
Share bugs, ideas, or general feedback.
From seo-skills
Generates ready-to-paste cURL/Python/TypeScript recipes for SE Ranking Data API and Project API, and wires up Project API state (projects, keywords, audits, AIRT prompts).
npx claudepluginhub seranking/seo-skills --plugin seo-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/seo-skills:seo-apiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Live with the SE Ranking MCP at `https://api.seranking.com/mcp`. Tool schemas are introspected live; this skill never relies on a frozen snapshot of the API surface.
Builds a phased, quarter-by-quarter SEO roadmap for a domain based on competitive position, content gaps, technical debt, and AI Search readiness. Use when asked for an overall SEO plan or strategy.
Provides live SEO data via DataForSEO: SERP results, keyword metrics, backlinks, on-page analysis, competitor data, and AI visibility tracking. Useful for real-time search data and SEO analysis.
Fetches live SEO data via DataForSEO: SERPs (Google, Bing, Yahoo, YouTube, Images), keyword research (volume, difficulty, intent), backlinks, on-page Lighthouse audits, competitor analysis, AI visibility, domain analytics. Requires extension.
Share bugs, ideas, or general feedback.
Live with the SE Ranking MCP at
https://api.seranking.com/mcp. Tool schemas are introspected live; this skill never relies on a frozen snapshot of the API surface.
Help developers ship real integrations against the SE Ranking SEO Data API and Project API. The deliverable is either a code recipe (ready-to-paste cURL / Python / TypeScript / MCP-tool-call sequence) or live wiring of Project API state (create projects, add keywords, configure audits, set up AIRT prompts), or both. The skill knows the entire 195-tool surface, the credit and rate-limit cost of every call, and the canonical setup story for every major MCP client.
https://api.seranking.com/mcp. Single API key authenticates both DATA_* and PROJECT_* tools through the unified gateway. If /mcp doesn't show se-ranking, the skill emits the install command and stops — see references/auth-and-keys.md.WebFetch for fetching deep guides at seranking.com/api/data/* and seranking.com/api/project/* when the request needs prose beyond JSON Schema.Preflight.
claude mcp add --transport http se-ranking https://api.seranking.com/mcp
and stop. See references/auth-and-keys.md for OAuth vs. X-Api-Key header tradeoffs and headless / CI patterns.DATA_getSubscription (0 credits). Record units_left, plan status, expiration — units_left is the figure to forecast against, and it gets printed in the cost forecast in step 5. Optionally also call DATA_getCreditBalance for its { limit, used } view — but the two are not aliases: they report different remaining-credit numbers that do not reconcile (an ~8.6M gap is normal), so treat getSubscription.units_left as the source of truth.Clarify the goal. Ask 1–3 questions only if the goal is ambiguous. Skip when the user already spelled it out. Useful follow-ups:
Identify the API surface(s). Map the goal to one or both of:
references/api-surface-map.md § "Data API surfaces".references/api-surface-map.md § "Project API surfaces".PROJECT_createProject + PROJECT_addKeywords + PROJECT_runPositionCheck, then reports use DATA_getDomainKeywords for the same domain.Map to tools / endpoints. For every step in the integration, name:
`DATA_getDomainKeywords` or `PROJECT_addKeywords`.GET /v1/domain/keywords).references/rate-limits-and-credits.md and the per-endpoint pages at seranking.com/api/data/* — MCP tool description fields carry input schemas and usage notes but not credit costs.*list* or *available* call before it. See references/api-surface-map.md § "ID resolution".Forecast cost. Sum credit cost across all Data API calls. For Project API calls, surface plan-limit impact (e.g., "this consumes 1 Site + 50 Keywords + ~500 Audit Pages from your plan"). Compare against:
units_left from step 1 — if insufficient, surface and stop with the upgrade link.PROJECT_getUserProfile returns current usage; flag if the integration would push a limit over.Pick execution mode. Confirm with the user explicitly:
requests), TypeScript (fetch), and MCP-tool-call variants. The developer runs them. Default for read-only research, recurring jobs the user wants to own, and anything they want to deploy outside their Claude session.Execute or emit.
code/curl.sh, code/python.py, code/typescript.ts, code/mcp-calls.md. Each file is a complete runnable example, not a fragment. Include error handling for 429 (rate limit) and 403 (insufficient credits). See references/integration-patterns.md for canonical pattern snippets.PROJECT_create*, PROJECT_add*, PROJECT_delete*, PROJECT_update*, DATA_createStandardAudit, DATA_createAdvancedAudit, etc.), print a single-line confirmation:
About to call PROJECT_createProject(domain="acme.com", name="ACME Inc — Rank Tracker", country="us").
Consumes: 1 "Site" from your subscription. Proceed? [y/N]
Wait for explicit y / yes. On anything else, fall back to code mode and emit the equivalent code instead of executing. Read-only calls (DATA_get*, DATA_list*, PROJECT_get*, PROJECT_list*) run without confirmation. Log every call to evidence/03-execution-log.md with timestamp, args, response status.Synthesise RECIPE.md. Always written, regardless of mode. The deliverable a developer reads to understand what was built or how to build it. See output format below.
Folder seo-api-{slug}-{YYYYMMDD}/ where {slug} is a kebab-case summary of the goal (e.g., acme-rank-tracker, bulk-backlinks-bigquery).
seo-api-{slug}-{YYYYMMDD}/
├── RECIPE.md (primary deliverable — what was built or how to build it)
├── code/
│ ├── curl.sh (cURL one-liners + multi-step bash)
│ ├── python.py (idiomatic requests-based script)
│ ├── typescript.ts (fetch + zod-validated responses)
│ └── mcp-calls.md (MCP-tool-call sequence — same workflow, agent-native)
└── evidence/
├── 01-preflight.md (credit balance, subscription status, MCP connectivity check)
├── 02-cost-forecast.md (per-call cost breakdown, plan-limit deltas, total)
├── 03-ids-resolved.md (Project API / search-engine IDs, geo codes resolved upfront — omit if none needed)
└── 04-execution-log.md (every MCP call executed, with args + status — omit in pure code mode where nothing ran)
Top-level: RECIPE.md + code/. The evidence/ folder preserves the reasoning trail; auditors lean on 02-cost-forecast.md and the execution log. 03 and 04 are conditional — a run with no ID lookups and no executed calls (pure code-mode advice) ships just 01 + 02.
RECIPE.md follows this shape:
# {Integration Title}: {target}
> Run dated {YYYY-MM-DD} · Mode: {code | live | hybrid} · Total cost: {n} credits + {plan-limits consumed}
## Goal
{1–2 sentences. What was asked, what's being shipped.}
## API surface map
| Step | MCP tool | REST endpoint | Verb | Cost |
|------|----------|---------------|------|------|
| 1 | `DATA_getCreditBalance` | `/v1/account/subscription` | GET | 0 credits |
| 2 | `PROJECT_listProjects` | `/v1/account/projects` | GET | 0 (plan limit: read) |
| 3 | `PROJECT_createProject` | `/v1/projects` | POST | 1 Site from plan |
| ... | ... | ... | ... | ... |
## Auth & setup
{cURL header / Python session / TypeScript fetch wrapper showing exactly how to authenticate. Reference `references/auth-and-keys.md` for OAuth vs. header tradeoffs.}
## Cost forecast
- Credit cost (Data API): {n} credits ({explanation per call})
- Plan-limit consumption (Project API): {Sites: n, Keywords: n, Audit Pages: n, AIRT Prompts: n}
- Your balance at run time: {units_left} credits, {plan limits available}
- {OK / WARNING: this integration would push X over plan limit}
## Recipe
### Option A — cURL
(complete bash script in `code/curl.sh`)
### Option B — Python
(complete script in `code/python.py`)
### Option C — TypeScript
(complete script in `code/typescript.ts`)
### Option D — MCP tool calls
(agent-native sequence in `code/mcp-calls.md` — for when this integration lives inside another Claude/Cursor/Codex workflow)
## Rate limit & retry strategy
- Data API: 10 RPS, Project API: 5 RPS. Pace sequentially for batched workflows; small-batch parallelism (≤3 concurrent) is safe.
- 429 handling: exponential backoff with jitter (1s → 2s → 4s → 8s, ±20% jitter). 5xx: same. Treat 403 "Insufficient funds" as terminal — no retry.
## What's running now (live mode only)
{Bullet list of MCP calls that were executed, with their outcomes. Pulled from `evidence/04-execution-log.md`.}
## What you still need to do
{Concrete next steps for the developer. E.g., "Run `python.py` daily via cron at 06:00 UTC", "Open the project at https://online.seranking.com/...", "Add a webhook for rank changes via Settings → Notifications".}
## Linked docs
- {Direct links to the relevant pages on `seranking.com/api/data/*` and `seranking.com/api/project/*`.}
## When to escalate to another skill
- `seo-content-brief` — once your integration is pulling keyword data, this skill turns it into editor briefs.
- `seo-technical-audit` — if the integration involves website audits, this skill interprets the audit output.
- `seo-drift baseline` — if the integration's job is to track a domain over time, snapshot it first.
API_TOKEN (or X-Api-Key header for headless) covers both DATA_* and PROJECT_*. The legacy split into separate Data and Project keys is gone — passing both still works as headers for backwards compatibility, but you can use just X-Api-Key now. See references/auth-and-keys.md.PROJECT_create*, PROJECT_add*, PROJECT_delete*, PROJECT_update*, DATA_create*Audit, DATA_deleteAudit all permanently modify account state. Always print a one-line summary (tool, args, what gets consumed) and wait for y/yes before calling.references/api-surface-map.md § "ID resolution" for the full table. Common cases:
PROJECT_listProjects (or PROJECT_listOwnedProjects / PROJECT_listSharedProjects for sub-account setups).country_code directly to PROJECT_addSearchEngine (ISO 3166-1 alpha-2). Only fall back to PROJECT_getAvailableSearchEngines for regional engines (Catalonia, Turkish-Cypriot Cyprus).DATA_getSerpLocations.PROJECT_getGoogleLanguages.PROJECT_getAvailableRegions (use the verbatim name field; abbreviations are rejected)./backlinks/export, /keywords/export) return a task ID; subsequent polls of *ExportStatus count against the rate limit but cost 0 credits. Start with a 5s poll interval; exponential backoff if the task is large.DATA_getDomainCompetitors documents its own ~60KB response cap. One thing the descriptions do not carry: credit costs — for those, use references/rate-limits-and-credits.md and the public per-endpoint pages.DATA_getDomainCompetitors on a popular domain — and DATA_getDomainKeywords / DATA_getAllBacklinks on big domains — return responses past the MCP client's inline token limit; the result is auto-saved to a file instead. Recover it with a jq slice on the saved file, or call the REST endpoint directly (raw REST has no size cap). See references/api-surface-map.md.npx @modelcontextprotocol/inspector https://api.seranking.com/mcp) or mcp-scan. Both walk the live tool/prompt/resource catalogue. A canonical MCP→OpenAPI converter is on the roadmap; for now the inspector output is the source of truth.seo-content-brief — when the integration pulls keyword research that should become editor briefs.seo-page — when one URL from the integration needs a keep/refresh/consolidate/kill verdict.seo-drift baseline — to snapshot a domain or URL before the integration starts running, so regressions are detectable.seo-technical-audit — when the integration involves audit runs and the output needs prioritisation.seo-ai-search-share-of-voice — when the integration tracks AIRT visibility and needs a competitive read.references/auth-and-keys.md — API key formats, OAuth vs. header, headless / CI patterns, key rotation.references/rate-limits-and-credits.md — 10 RPS / 5 RPS, credit billing models, plan-limit consumption, error codes (429, 403), exponential-backoff template.references/api-surface-map.md — full routing table (which API owns what) + ID resolution table + decision tree for "which tool do I need".references/integration-patterns.md — five canonical recipes copy-paste-ready: rank tracker setup, bulk backlink export, audit pipeline, AIRT visibility tracker, keyword research bulk job.