Help us improve
Share bugs, ideas, or general feedback.
From hyper-marketing
Runs end-to-end competitor research and monitoring via Hyper MCP — scrapes sites, social, search rank, and demand, diffs against prior runs, and synthesizes a brief, battle card, or digest.
npx claudepluginhub hyperfx-ai/marketing-skills --plugin hyper-marketingHow this skill is triggered — by the user, by Claude, or both
Slash command
/hyper-marketing:competitor-intelThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
End-to-end competitor research and monitoring. Define the set, pull from every public surface that matters, diff against last run (or your own), and produce a brief that's actually useful — battle card, weekly digest, board update, or comparison-page input.
Analyzes competitors in real-time using Bright Data web scraping to uncover pricing, features, reviews, hiring, and strategy. Useful for market research and competitive analysis.
Scrapes competitor homepages, features, pricing, and blogs to extract messaging and positioning; tracks changes over time and produces battlecards, content gap analysis, and white space maps.
Researches and profiles competitors from their URLs, producing structured markdown profiles with scraped site data, SEO metrics, and market analysis.
Share bugs, ideas, or general feedback.
End-to-end competitor research and monitoring. Define the set, pull from every public surface that matters, diff against last run (or your own), and produce a brief that's actually useful — battle card, weekly digest, board update, or comparison-page input.
| Request | Send them to |
|---|---|
| Competitor paid ads (Facebook / Instagram active ads) | meta-ads-library |
| Pure SEO / keyword research with HyperSEO as the primary surface | seo-research — uses the same HyperSEO toolkit but goes much deeper on keyword work |
| Generating creative (images / copy) for a comparison campaign once the intel is in | ad-creative-generation |
| Pulling data from competitor email programs | Not feasible — opt-in only. Use firecrawl_scrape_url on their landing pages instead. |
competitor-intel is the integration layer — it pulls from every source and synthesizes. It uses HyperSEO for the rank/backlink/intersection slice but isn't the SEO research skill itself.
If none of those tool prefixes appear in the agent's tool list (firecrawl_*, hyperseo_*, scrape_instagram*, scrape_tiktok*, search_tweets, scrape_reddit*, search_google_results, scrape_google_trends, web_scrape_page), stop and tell the user to enable the Hyper MCP and connect at least Firecrawl + one social scraper. The LinkedIn scraper (scrape_linkedin_profiles) is only present when that specific integration is enabled — gracefully skip the LinkedIn slice if it's missing rather than failing the whole brief.
| Phase | Tools |
|---|---|
| Site & web content | firecrawl_scrape_url, firecrawl_batch_scrape, firecrawl_crawl_website, firecrawl_screenshot, firecrawl_extract_branding, web_scrape_page (JS-rendering fallback, supports ai_query for targeted extraction), web_fetch_page, web_loader |
| Search rankings & backlinks | hyperseo_competitors, hyperseo_competitors_domain, hyperseo_domain_overview, hyperseo_domain_keywords, hyperseo_domain_intersection, hyperseo_keywords_for_site, hyperseo_backlinks_history, hyperseo_historical_rank, hyperseo_track_mentions |
| Brand mentions in AI search & SERPs | hyperseo_ai_overview, hyperseo_ai_search_volume, hyperseo_track_mentions, search_google_results, web_search |
| Organic social — Instagram | scrape_instagram, scrape_instagram_posts, scrape_instagram_followers_count |
| Organic social — TikTok | scrape_tiktok_videos, scrape_tiktok_comments |
| Organic social — LinkedIn | scrape_linkedin_profiles (conditional — only available when the LinkedIn-scraper integration is enabled in your Hyper workspace) |
| Organic social — Twitter / X | search_tweets |
| Community / sentiment — Reddit | scrape_reddit, scrape_reddit_leads |
| Ecommerce competitor specifics | scrape_ecommerce_products, scrape_ecommerce_reviews |
| Demand / trend signals | scrape_google_trends, hyperseo_search_volume, hyperseo_search_intent |
| Optional: comparison-page assets | openai_image_generation, nano_banana_image_generation, seedream_image_generation, nano_banana_multi_turn |
hyperseo_competitors(domain=<their_domain>) first to surface the top organic competitors, then confirm the set with them.hyperseo_domain_overview over 12 competitors when you only need 4. Each call has cost — batch and cache.<competitor> alone often returns unrelated results that share the brand name (e.g. a search for "hyperfx" returns mostly HyperX headphones, not hyperfx.ai). Always pair the brand with a category modifier — <competitor> alternative, <competitor> reviews, <competitor> pricing, <competitor> vs <us> — to get clean SERPs."fetch failed" or empty-result responses from scrape_instagram*, scrape_tiktok*, scrape_reddit*, scrape_google_trends, search_tweets, and search_google_results. Retry once after a short delay before reporting the source as missing — and surface partial results to the user rather than failing the whole brief if a scraper stays down.Ask the user (or infer):
hyperseo_competitors takes the keywords the user wants to win, not their domain — so first agree on 3–5 high-intent keywords for the user's category, then run:hyperseo_competitors(
keywords=["<category keyword 1>", "<category keyword 2>", "<category keyword 3>"],
location_code=2840, # 2840=US, 2826=UK, 2124=CA, 2036=AU
limit=10
)
Then confirm the surfaced set with the user before continuing — never guess and proceed.
If the user can't answer #3, stop and ask. Building intel without knowing the artifact is a guaranteed waste.
Not every source matters for every competitor or every job. Per-competitor, decide which surfaces to pull from.
| Competitor type | Sources that matter most |
|---|---|
| Direct SaaS / B2B | Site, blog, pricing page, LinkedIn company posts (if available), AI-search citations (hyperseo_ai_overview), domain rank delta |
| Ecommerce / DTC brand | Site, product catalog (scrape_ecommerce_products), product reviews (scrape_ecommerce_reviews), Instagram, TikTok, Reddit threads, Google Trends interest |
| Consumer / creator brand | Instagram, TikTok, Twitter, YouTube (via the YouTube toolkit if connected), Reddit |
| Content-led / publication | Site, blog (full crawl), backlinks history, AI-search citations, search rank trend |
| Local / multi-location | Site, Google search results for "[brand] near me", Reddit / Twitter sentiment, Google Trends regional |
The full per-source playbook (when to use, what it reveals, quirks) lives in references/source-by-source.md.
Sequence the pulls; don't fire everything in parallel. Order matters for cost and for letting partial results inform the next call.
Order to use:
hyperseo_domain_overview(domain="<competitor>.com", location_code=2840)
hyperseo_domain_keywords(domain="<competitor>.com", limit=50, location_code=2840)
hyperseo_domain_intersection(
domain1="yourbrand.com",
domain2="<competitor>.com",
limit=50,
location_code=2840
)
firecrawl_scrape_url(url="https://<competitor>.com/pricing")
firecrawl_scrape_url(url="https://<competitor>.com/")
firecrawl_extract_branding(url="https://<competitor>.com") # logo, colors, voice
For a full-blog-archive deep dive use firecrawl_crawl_website once and check status with firecrawl_check_crawl_status. If Firecrawl returns near-empty for a JS-heavy SPA, fall back to web_scrape_page(url=..., use_proxy=true, ai_query="extract pricing tiers and prices").
scrape_instagram(direct_urls=["https://www.instagram.com/<competitor>/"], results_type="posts", results_limit=30)
scrape_instagram_followers_count(usernames=["<competitor>"]) # cheap, do it weekly
scrape_tiktok_videos(profiles=["<competitor>"], results_per_page=30)
search_tweets(from_user="<competitor_handle>", max_items=50)
# Only if scrape_linkedin_profiles is in your MCP tool list:
scrape_linkedin_profiles(urls=["https://www.linkedin.com/company/<competitor>"])
scrape_reddit(searches=["<competitor>"], max_items=50, sort="new", time="month")
scrape_google_trends(
search_terms=["<competitor>", "yourbrand"],
time_range="today 3-m", # options: now 7-d, today 1-m, today 3-m, today 5-y, all
geo="US"
)
search_google_results(query="<competitor> reviews", num_results=20, country="us")
# AI Overview takes ONE keyword at a time + integer location_code
hyperseo_ai_overview(keyword="<your category keyword>", location_code=2840)
# track_mentions runs the query against OpenAI / Claude / Perplexity and returns citations
hyperseo_track_mentions(
query="best <your category> tools",
brands=["<competitor>", "yourbrand"]
)
Surface partial results as each phase completes — don't wait for the whole pull to finish before showing the user something.
The point of the skill is delta, not snapshot. For each competitor, compare:
| Source | Compare against |
|---|---|
| Pricing page | Last scrape (changes in tier names, prices, plan limits, new add-ons) |
| Homepage hero | Last scrape (new positioning copy, new CTA, new logos) |
| Domain rank | hyperseo_historical_rank(domain=..., date_from=..., date_to=...) vs last 30/90 days |
| Domain keywords | Net-new keywords ranking, lost keywords |
| Domain intersection (theirs ∩ yours) | Keywords they rank for and you don't — content gaps |
| Instagram / TikTok | Posts since last run, follower delta, engagement-rate delta |
| Twitter / Reddit | Volume of mentions vs prior period |
| AI-search citations | New AI Overview citations vs last run |
For a first run, there's no "last" — the diff section in the brief becomes "baseline established, will diff against this on next run." Tell the user this explicitly so they don't expect insight on day 1.
Synthesize into the artifact. Brief shapes by job (full templates in references/brief-templates.md):
Output standards (apply to every brief):
If the user wants ongoing monitoring rather than a one-shot:
bigquery_*, Notion, a Sheets tab, or just inline in the user's prompt template).| Reference | When to read |
|---|---|
references/source-by-source.md | Per-source playbook — what each scraper / HyperSEO call reveals, when to use it, and the quirks (rate limits, JS-rendering issues, cache windows, credit cost) |
references/brief-templates.md | Battle card, weekly digest, comparison-page, and board-prep templates with worked examples and output structure |