Programmatic SEO Opportunity Mapper
Pricing
from $0.01 / 1,000 results
Programmatic SEO Opportunity Mapper
Turn competitor sitemaps into a scored, prioritized programmatic-SEO opportunity matrix — deterministic title/meta/slug suggestions, schema type, and optional AI-citability scoring. No API key required.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
Monty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Turn competitor sitemaps into a scored, prioritized programmatic-SEO opportunity matrix — with deterministic title, meta description, slug, schema type, and optional AI-citability scoring. No API key required.
What it does
- Crawls your target domain's sitemap to build your current coverage set.
- Crawls each competitor's sitemap, filters obvious ecommerce product/SKU URLs by default, and clusters their SEO/editorial page families using Jaccard similarity (same engine as the Competitor Sitemap Content Gap Analyzer).
- Computes the coverage gap: competitor families you don't yet cover.
- Scores and ranks each opportunity with a deterministic heuristic score
(
priority_heuristic) and action (auto/review/skip). - Generates a starter title, meta description, URL slug, and Schema.org type for each opportunity — deterministically, no LLM.
- Optionally fetches the top competitor URL for each row and attaches an AI-citability score (0–100) and grade (A–D) using the same adapter as the GEO Readiness Auditor.
Use after apify/google-search-scraper
Wave-2 MVP: sitemap-only. SERP enrichment (real volume / difficulty / competitor
URLs from apify/google-search-scraper) back-fills in Wave 3.
Inputs
| Field | Type | Default | Notes |
|---|---|---|---|
targetDomain | string | — | Required. Your domain. |
competitorDomains | array | — | Required. 1–10 competitor domains. |
maxRows | integer | 500 | Hard cap on output rows. |
maxUrlsPerDomain | integer | 1000 | Hard cap on sitemap URLs read per domain before filtering. |
urlFocus | string | content | content filters obvious product/category/SKU pages for ecommerce SEO/editorial opportunities. Use all only when you intentionally want product/assortment URL gaps. |
crawlPages | boolean | false | Fetch pages for richer topics (slower). |
similarityThreshold | number | 0.6 | Jaccard threshold to merge families. |
includeAIGeoReadiness | boolean | false | Attach citability score/grade per row. |
Output (one row per opportunity)
{"topic": "best running shoes for men","keyword": "best running shoes for men","modifier": "best","page_type": "comparison","search_intent": "commercial","competitor_urls": ["https://competitor-a.com/best-running-shoes-for-men"],"source_urls": ["competitor-a.com"],"missing_from_target": true,"priority_heuristic": 230.0,"priority_action": "auto","est_effort_hours": 3,"pseo_template_suggestion": "comparison-guide","title": "Best Running Shoes for Men - example.com","meta_description": "Compare best running shoes for men with expert analysis...","recommended_slug": "best-running-shoes-for-men","internal_link_targets": ["...sibling families..."],"schema_type": "Article","member_topics": ["best running shoes for men", "best running shoes for women"],"topic_count": 2,"provenance": {"source_url": "...", "extractor_method": "sitemap_xml", "status": "ok", "caveats": ["..."]},"status": "ok"}
Rows with status != ok (blocked / not_found / timeout) are reconcilable failures,
not run crashes.
Promises
- A ranked, deduped opportunity matrix derived from your and competitor sitemaps.
- Ecommerce-safe default focus: product/category/SKU pages are filtered unless
urlFocus=all. - Starter title / meta description / slug / schema type for every row.
- Provenance on every row — you can trace every recommendation to a source URL.
- No-key run path: runs completely without any external API.
- Robots honored before any third-party fetch; per-domain delay ≥ 1 s.
Non-promises
priority_heuristicis a deterministic keyword heuristic — not a search-volume or difficulty ranking. No P1–P4 tiers are shown without real volume data.- This actor does not scrape Google. Bring a
apify/google-search-scraperdataset for SERP enrichment (Wave 3). - Difficulty without provider data is omitted, labeled as such.