Keyword Opportunities Rebuild
New Features
Real Competitor Content Gap New
The “Competitor Content Gap” section now pulls true keyword data via the DataForSEO Labs domain_intersection endpoint instead of scraping Google search results. Each gap row shows the actual monthly search volume, keyword difficulty (KD 0–100) and CPC, plus the competitor’s real ranking position. Up to 5 competitors and 25 deduplicated gaps per analysis.
Volume, KD & CPC Across All Tables New
Quick Wins (Pos 8–20) and High Potential (Pos 20–40) tables are now enriched with live DataForSEO metrics: Search Volume, Keyword Difficulty (color-coded badge), CPC, and a new Opportunity Score (0–100). Two API calls cover up to 1,000 keywords — no per-row overhead.
Opportunity Score Sorting New
Every keyword now has a single 0–100 score combining traffic potential, volume, position, and difficulty. Tables are sorted by this score by default, so the most impactful keywords surface at the top.
Long-tail Keyword Discovery New
A new section between High Potential and Competitor Gap lets you expand 1–5 seed keywords into long-tail variants via DataForSEO Labs keyword_suggestions. Built-in filters for Min Volume, Min Words and Max KD. The discovery automatically excludes keywords you already rank for in Google Search Console.
Smart Per-Keyword Actions New
“Suggested Action” is no longer one of three canned strings. The backend now picks from six scenarios based on KD + Volume + Position + CTR (e.g. “High-volume opportunity — expand content”, “Skip for now — KD too high vs current authority”, “Add internal links + FAQ schema (low KD)”).
Richer AI Topic Clusters New
Cluster generation now feeds the LLM a richer keyword pool: your top GSC queries plus DataForSEO seed expansion of the top 3 performers. Each cluster card now exposes a Pillar article title and Target Keywords chips alongside the supporting ideas.
Topic Cluster Caching + Refresh New
Topic clusters are cached per user for 7 days, keyed by your GSC snapshot + country, eliminating repeat AI cost on every page load. A new Refresh button bypasses the cache when you want to regenerate. A small status line shows whether the result is freshly generated or served from cache.
Growth Plan & Content Calendar Persistence New
“Add to Growth Plan”, “Add to Content Calendar”, “Add Cluster to Calendar” and “Add All High-Impact” now persist to a new keyword_action_items table. Each entry stores the full keyword snapshot (volume, KD, CPC, opportunity, suggestion, source section). Duplicate adds are silently deduplicated. Inline toast notifications replace the previous browser alerts.
Improvements
Working Date / Country / Device Filters
The three filters at the top of the page are now wired to the backend. Changing any of them re-fetches the data with the correct lookback, DataForSEO location code and device dimension.
Honest Difficulty Labeling
The old “Difficulty (AI)” column — which was actually a CTR threshold — has been renamed to CTR Level, and a real KD column has been added alongside it driven by DataForSEO data.
Multi-Intent Detection
Search intent inference now distinguishes Transactional (signup, demo, free trial, pricing) from Commercial and Informational, reducing the “Mixed” fallback that previously dominated the table.
Bug Fixes
Removed Fabricated Competitor Data Fix
The previous version of the Competitor Gap section generated volume and position values with rand() after scraping page titles via a site: query — surfacing data that looked real but wasn’t. The legacy code path has been deprecated and now returns an empty array; all competitor data is sourced from DataForSEO Labs.