Claude Code skills are reusable command files that extend Claude Code with custom workflows. Building an SEO skill lets you run SERP checks, AI Overview monitoring, and keyword research directly from your terminal without leaving your coding environment. The skill calls the Scavio API to fetch live search data and formats it for quick analysis. This tutorial shows how to create a Claude Code skill file, wire it to the Scavio MCP server, and build common SEO research commands. You will have a working skill that checks rankings, monitors AI Overviews, and pulls People Also Ask data on demand.
Prerequisites
- Claude Code CLI installed
- A Scavio API key from scavio.dev
- Basic familiarity with Claude Code skills and MCP
Walkthrough
Step 1: Create the skill directory
Set up the Claude Code skill file structure in your project.
# Create the skill file
mkdir -p .claude/skills
# The skill file defines instructions for Claude Code
# to follow when the skill is invokedStep 2: Configure Scavio MCP
Add the Scavio MCP server to your Claude Code configuration so the skill can access search data.
# Add to .mcp.json in your project root:
# {
# "mcpServers": {
# "scavio": {
# "url": "https://mcp.scavio.dev/mcp",
# "headers": {
# "x-api-key": "your_scavio_api_key"
# }
# }
# }
# }Step 3: Write the SEO skill instructions
Define the skill prompt that tells Claude Code how to use search data for SEO analysis.
# .claude/skills/seo-research.md content:
# When asked to check SEO for a keyword:
# 1. Use scavio search tool with the keyword
# 2. Report organic position if my domain appears
# 3. Check if AI Overview exists and list sources
# 4. List People Also Ask questions
# 5. Suggest content gaps based on top resultsStep 4: Test the skill with Python
Verify the underlying API calls work before relying on the skill.
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": "best crm for startups"})
data = resp.json()
print(f"Organic results: {len(data.get('organic_results', []))}")
print(f"AI Overview: {'yes' if data.get('ai_overview') else 'no'}")
print(f"PAA: {len(data.get('people_also_ask', []))}")Python Example
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def seo_check(keyword):
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": keyword})
data = resp.json()
return {"organic": len(data.get("organic_results", [])),
"aio": bool(data.get("ai_overview")),
"paa": len(data.get("people_also_ask", []))}
print(seo_check("best crm for startups"))JavaScript Example
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function seoCheck(keyword) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({platform: "google", query: keyword})
});
const d = await r.json();
return {organic: (d.organic_results||[]).length, aio: !!d.ai_overview,
paa: (d.people_also_ask||[]).length};
}
seoCheck("best crm for startups").then(console.log);Expected Output
A Claude Code skill file that enables terminal-based SEO research using live SERP data, AI Overview checks, and People Also Ask analysis.