Las habilidades de Claude Code le permiten empaquetar flujos de trabajo repetibles en herramientas de un solo comando. Este tutorial desarrolla una habilidad de SEO que verifica las clasificaciones, analiza las características SERP, encuentra lagunas en las palabras clave y genera recomendaciones de optimización. Una vez creado, ejecútelo con un solo comando de barra diagonal en cualquier dominio.
Requisitos previos
- Código Claude instalado
- Scavio MCP configurado
- Una clave API de Scavio de scavio.dev
- Comprensión básica de las habilidades del Código Claude
Guia paso a paso
Paso 1: Definir la estructura de habilidades SEO
Cree el archivo de habilidades con parámetros de entrada y pasos del flujo de trabajo.
import os, requests, json
API_KEY = os.environ['SCAVIO_API_KEY']
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
# Claude Code skill definition
seo_skill = {
'name': 'seo-audit',
'description': 'Run a quick SEO audit on a domain: rank check, SERP features, keyword gaps.',
'inputs': {
'domain': 'Target domain to audit',
'keywords': 'Comma-separated keywords to check (optional)',
'competitors': 'Comma-separated competitor domains (optional)'
}
}
def rank_check(domain, keywords):
"""Check domain position for each keyword."""
results = []
for kw in keywords:
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': kw, 'country_code': 'us'}).json()
organic = data.get('organic_results', [])
position = None
for i, r in enumerate(organic):
if domain in r.get('link', ''):
position = i + 1
break
results.append({'keyword': kw, 'position': position})
pos_str = f'#{position}' if position else 'Not found'
print(f' {kw:40} | {pos_str}')
return results
print('SEO Skill: rank_check')
rank_check('scavio.dev', ['search api', 'serp api python', 'mcp search tool'])
print(f'Cost: $0.015')Paso 2: Agregar análisis de funciones SERP
Detecte descripciones generales de IA, PAA, fragmentos destacados y paquetes locales para cada palabra clave.
def serp_analysis(keywords):
"""Analyze SERP features for each keyword."""
print(f'\n=== SERP Feature Analysis ===')
for kw in keywords:
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': kw, 'country_code': 'us'}).json()
features = []
if data.get('ai_overview') or data.get('answer_box'):
features.append('AIO')
if data.get('people_also_ask'):
features.append(f'PAA({len(data["people_also_ask"])})')
if data.get('featured_snippet'):
features.append('Featured')
if data.get('local_results'):
features.append('Local')
if data.get('shopping_results'):
features.append('Shopping')
feature_str = ' | '.join(features) if features else 'Organic only'
print(f' {kw:40} | {feature_str}')
return features
def keyword_gaps(domain, competitors, keywords):
"""Find keywords where competitors rank but you do not."""
print(f'\n=== Keyword Gaps ===')
gaps = []
for kw in keywords:
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': kw, 'country_code': 'us'}).json()
organic = data.get('organic_results', [])
domain_found = any(domain in r.get('link', '') for r in organic)
comp_found = [c for c in competitors if any(c in r.get('link', '') for r in organic)]
if not domain_found and comp_found:
gaps.append({'keyword': kw, 'competitors_ranking': comp_found})
print(f' GAP: "{kw}" - {len(comp_found)} competitors rank, you do not')
if not gaps:
print(f' No gaps found - you rank for all checked keywords.')
return gaps
serp_analysis(['search api', 'serp api comparison'])
keyword_gaps('scavio.dev', ['tavily.com', 'serpapi.com'], ['web scraping api', 'data extraction api'])Paso 3: Paquete como una habilidad completa
Combine todas las comprobaciones en una función de habilidad con un informe resumido.
def seo_audit_skill(domain, keywords=None, competitors=None):
"""Complete SEO audit skill for Claude Code."""
if keywords is None:
keywords = [domain.replace('.com', '').replace('.dev', ''), f'{domain} alternative']
if competitors is None:
competitors = []
print(f'\n{"=" * 60}')
print(f' SEO AUDIT: {domain}')
print(f' Date: 2026-05-20')
print(f' Keywords: {len(keywords)} | Competitors: {len(competitors)}')
print(f'{"=" * 60}')
# 1. Rank check
print(f'\n--- Rankings ---')
ranks = rank_check(domain, keywords)
ranked = sum(1 for r in ranks if r['position'])
# 2. SERP features
print(f'\n--- SERP Features ---')
serp_analysis(keywords)
# 3. Keyword gaps
if competitors:
keyword_gaps(domain, competitors, keywords)
# Summary
total_queries = len(keywords) * 2 + (len(keywords) if competitors else 0)
print(f'\n--- Summary ---')
print(f' Ranking: {ranked}/{len(keywords)} keywords')
avg_pos = sum(r['position'] for r in ranks if r['position']) / ranked if ranked else 0
print(f' Avg position: #{avg_pos:.1f}' if ranked else ' Avg position: N/A')
print(f' Cost: ${total_queries * 0.005:.3f}')
print(f'\n Usage: /seo-audit {domain}')
seo_audit_skill('scavio.dev',
keywords=['search api', 'serp api python', 'mcp search tool'],
competitors=['tavily.com', 'serpapi.com'])Ejemplo en Python
import os, requests
SH = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}
def quick_seo(domain, keyword):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': keyword, 'country_code': 'us'}).json()
for i, r in enumerate(data.get('organic_results', [])):
if domain in r.get('link', ''):
print(f'{domain} ranks #{i+1} for "{keyword}"')
return
print(f'{domain} not in top 10 for "{keyword}"')
quick_seo('scavio.dev', 'search api for ai agents')
print('Cost: $0.005')Ejemplo en JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: SH,
body: JSON.stringify({ query: 'search api for ai agents', country_code: 'us' })
}).then(r => r.json());
const pos = (data.organic_results || []).findIndex(r => r.link?.includes('scavio.dev'));
console.log(pos >= 0 ? `scavio.dev ranks #${pos+1}` : 'Not in top 10');Salida esperada
============================================================
SEO AUDIT: scavio.dev
Date: 2026-05-20
Keywords: 3 | Competitors: 2
============================================================
--- Rankings ---
search api | #2
serp api python | #5
mcp search tool | #3
--- SERP Features ---
search api | AIO | PAA(4)
serp api python | Featured
mcp search tool | AIO
--- Summary ---
Ranking: 3/3 keywords
Avg position: #3.3
Cost: $0.045