Overview
Use Claude Code's skill system to automate programmatic SEO content pipelines. A custom skill reads signal sources, runs search queries to verify facts and pricing, generates content from templates, and outputs production-ready files. The skill replaces manual research-write-verify cycles.
Trigger
Manual skill invocation in Claude Code
Schedule
On skill invocation (manual or scheduled)
Workflow Steps
Parse signal source
The skill reads an input file (F5Bot JSON, RSS feed, or keyword list) and extracts topics to cover.
Research via search API
For each topic, query the search API for current pricing, competitor positioning, and related content gaps.
Verify all claims
Cross-check every pricing number, version, and feature claim against live search results before including in content.
Generate content
Produce structured content matching the target schema: blog posts, glossary entries, comparison pages, or tutorials.
Output and validate
Write files to disk, run the build to check for TypeScript errors, and report any verification failures.
Python Implementation
import requests, os, json
H = {"x-api-key": os.environ["SCAVIO_API_KEY"], "Content-Type": "application/json"}
def research_topic(topic, verify_tools=None):
r = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "google", "query": f"{topic} pricing 2026"}).json()
pricing_sources = [{"title": o.get("title", ""), "snippet": o.get("snippet", ""),
"url": o.get("link", "")}
for o in r.get("organic", [])[:5]]
verified = {}
for tool in (verify_tools or []):
vr = requests.post("https://api.scavio.dev/api/v1/search", headers=H,
json={"platform": "google", "query": f"{tool} pricing plans 2026"}).json()
snippets = " ".join(o.get("snippet", "") for o in vr.get("organic", [])[:3])
verified[tool] = snippets[:200]
return {"topic": topic, "sources": pricing_sources, "verified": verified}
data = research_topic("SERP API comparison", verify_tools=["SerpAPI", "Serper", "DataForSEO"])
print(f"Research for: {data['topic']}")
print(f"Sources: {len(data['sources'])}, Verified tools: {len(data['verified'])}")JavaScript Implementation
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function researchTopic(topic, verifyTools = []) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({platform: "google", query: `${topic} pricing 2026`})
}).then(r => r.json());
const pricingSources = (r.organic || []).slice(0, 5).map(o => ({
title: o.title || "", snippet: o.snippet || "", url: o.link || ""
}));
const verified = {};
for (const tool of verifyTools) {
const vr = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({platform: "google", query: `${tool} pricing plans 2026`})
}).then(r => r.json());
verified[tool] = (vr.organic || []).slice(0, 3)
.map(o => o.snippet || "").join(" ").slice(0, 200);
}
return {topic, sources: pricingSources, verified};
}
researchTopic("SERP API comparison", ["SerpAPI", "Serper", "DataForSEO"]).then(d => {
console.log(`Research: ${d.topic}, Sources: ${d.sources.length}, Verified: ${Object.keys(d.verified).length}`);
});Platforms Used
Web search with knowledge graph, PAA, and AI overviews