Keyword research + intent clustering
Seed expansion via SerpAPI, then a batched Claude pass to label intent and group keywords into topic clusters.
The keyword-research workflow turns 1–5 seed keywords into a clustered topic map you can drop into an editorial calendar. The pipeline is deliberately small:
- Expand. One SerpAPI call per seed. Pulls
related_searchesandpeople_also_ask. Per-seed failures are isolated — a rate-limit on one seed never aborts the rest. - Classify (one batched call). A single Claude Opus prompt labels every candidate with a search intent (informational / navigational / commercial / transactional) and a
relativeInterestbucket (high / medium / low). - Cluster (one batched call). Another single Opus prompt groups the labelled keywords into topic clusters with optional parent topics, plus an
unclusteredbucket for orphans.
Endpoint: POST /api/seo/keyword-research · returns { clusters, unclustered, totalCost } so the UI can show the projected spend before approving the run. Exact monthly volume is a follow-up — the MVP gives you relative interest; the upgrade path is DataForSEO Labs.
Companion endpoint: POST /api/seo/serp-gap — given a keyword + your domain, fetches the top-10 organic SERP (cached for 7 days), summarises each competitor page, and asks Claude for a gap report with recommended H2s and a content-brief seed.