Building Your First AI SEO Agent: Start With One Workflow
Start with a single workflow — keyword gap audit — not an all-in-one system. One focused agent using a SERP API and Claude delivers more value than a sprawling framework. Most AI SEO agent projects fail because they try to automate everything before automating anything well.
Why the Keyword Gap Audit First
A keyword gap audit answers: what keywords do your competitors rank for that you do not? It is concrete, the output is actionable, and it requires exactly two data sources: a SERP API and a way to compare rank positions. You do not need link data, site crawl data, or page-level metrics to start.
More importantly, it is a workflow a human currently does manually. Every SEO consultant runs some version of this. If your agent does it 10x faster and you can verify the output is accurate, you have a working agent worth running again.
The Minimal Agent
import requests
import anthropic
client = anthropic.Anthropic()
def get_serp_positions(keyword: str, domain: str) -> int | None:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": SCAVIO_KEY},
json={"query": keyword, "num": 20}
)
results = resp.json().get("organic_results", [])
for i, r in enumerate(results, 1):
if domain in r.get("link", ""):
return i
return None # Not in top 20
def keyword_gap_audit(
your_domain: str,
competitor_domain: str,
seed_keywords: list[str]
) -> str:
gap_data = []
for kw in seed_keywords:
your_pos = get_serp_positions(kw, your_domain)
comp_pos = get_serp_positions(kw, competitor_domain)
gap_data.append({
"keyword": kw,
"your_position": your_pos,
"competitor_position": comp_pos,
"gap": comp_pos is not None and your_pos is None
})
# Pass gap data to Claude for analysis
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": f"""Analyze this keyword gap data and identify the top 5
opportunities where our competitor ranks but we do not.
For each, suggest what type of content could close the gap.
Data: {gap_data}"""
}]
)
return message.content[0].textFor 50 keywords, that is 100 SERP API calls at $0.005 each = $0.50 plus Claude inference cost. The full audit runs in under 2 minutes.
Prompt Design for SEO Agents
The Claude prompt is where most first-time builders spend too little time. For keyword analysis, the prompt needs:
- Context about your site: What topics do you cover? What is your domain authority approximate range?
- Competitor context: Is this a direct competitor or adjacent?
- Output format: Do you want a table, a prioritized list, a narrative?
- Constraints: "Do not recommend keywords with over 10,000 monthly searches" or "focus on bottom-funnel queries"
A vague prompt produces a vague analysis. Be specific about what useful output looks like.
Adding Iteration: The Second Workflow
Once the gap audit works reliably, the natural second workflow is content brief generation: for each gap keyword, generate a content brief. This uses the same SERP call (look at what ranks for the gap keyword) plus a second Claude call to synthesize a brief.
Do not build both at once. Ship the gap audit, use it 5-10 times, understand its failure modes, then add the brief generation. Sequential development produces better agents than parallel.
What This Agent Cannot Do
This single-workflow agent will not:
- Identify technical SEO issues (requires site crawl)
- Track rankings over time (requires a database and cron job)
- Generate the content itself (a separate agent concern)
- Account for search volume (SERP APIs do not return search volume; that requires Semrush/Ahrefs API)
For search volume data, the cheapest add-on is DataForSEO's keyword data API at $0.002/keyword. For 50 keywords: $0.10. Worth adding in version 2 once the core gap detection is validated.
The Production Version
Production adds: a database to store audit history, a scheduler to run weekly, a simple UI to input domains and keywords, and email delivery of results. Each is a separate project. The agent logic above is the core that needs to work before you invest in the surrounding infrastructure.