Competitor Intel logo

Competitor Intel

Organization
hyperfx-ai
competitor-intel

Run end-to-end competitor research and monitoring through the Hyper MCP — pick the set, scrape every public surface (site, blog, pricing, organic social, search rank, mentions, demand) via Firecrawl + HyperSEO + the Apify scrapers, diff against last run, and synthesize a brief. Use when the user wants to research competitors, build a battle card or comparison page, run a weekly digest, or asks "what's [competitor] doing?" or "how do we compare?".

Overview

Publisherhyperfx-ai
Repositorymarketing-skills
Skill namecompetitor-intel
Stars
107
Forks
21
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by hyperfx-ai on GitHub. Read the source before you install it.

Installation

Install the Competitor Intel AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/competitor-intel
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/hyperfx-ai/marketing-skills.git /tmp/marketing-skills
mkdir -p .claude/skills
cp -r /tmp/marketing-skills/skills/competitor-intel .claude/skills/competitor-intel
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Competitor Intel in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Competitor Intel on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Competitor Intel is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Competitor Intel

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.

Out of scope — defer to other skills

RequestSend them to
Competitor paid ads (Facebook / Instagram active ads)meta-ads-library
Pure SEO / keyword research with HyperSEO as the primary surfaceseo-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 inad-creative-generation
Pulling data from competitor email programsNot feasible — opt-in only. Use firecrawl_urls_scrape 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.

Requirements

  • Hyper MCP installed and connected. https://app.hyperfx.ai/mcp
  • At least one of these toolkits connected at https://app.hyperfx.ai/apps:
    • Firecrawl (highly recommended — backbone for any site/blog/pricing-page work)
    • HyperSEO (needed for rank, backlink, domain-overlap analysis)
    • Apify scrapers — Instagram, TikTok, LinkedIn, Twitter, Reddit, Google search, Google Trends
    • Image generation (optional — only if the brief feeds a comparison-page or battle-card asset downstream)

If no tool with those prefixes is found (firecrawl_*, hyperseo_*, instagram_scrape*, tiktok_*_scrape, x_tweets_search, reddit_scrape*, google_search_results_search, google_trends_scrape, web_pages_scrape), the toolkits to enable are Firecrawl and at least 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.

How to run the tools in this skill

Every tool in this skill is named by its canonical tool name. Run it with the call your surface gives you:

SurfaceFind a toolRun it
Hyper chatCall the tool by its name; search_tools(queries=["<provider> <action>"]) shows its parameters<name>(...)
MCP client (Claude, Cursor, Codex, ChatGPT)search("<what you want to do>"), then describe("<name>")call_read("<name>", {...}), call_write or call_destructive: the one that describe names in call_with
Hyper CLIhyperai search "<what you want to do>", then hyperai describe <name>hyperai call <name> --json '{...}'

If a tool is not found: in Hyper chat, find its toolkit id with discover_toolkits and pass it to enable_toolkit. On an MCP client or the CLI, tell the user which integration to connect in Hyper.

Tool surface

PhaseTools
Site & web contentfirecrawl_urls_scrape, firecrawl_urls_scrape_batch, firecrawl_websites_crawl, firecrawl_screenshots_create, firecrawl_branding_extract, web_pages_scrape (JS-rendering fallback, supports ai_query for targeted extraction), web_pages_fetch, web_pages_load
Search rankings & backlinkshyperseo_competitors_search, hyperseo_competitor_domains_search, hyperseo_domain_overview_get, hyperseo_domain_keywords_get, hyperseo_domain_intersections_search, hyperseo_site_keywords_search, hyperseo_backlinks_history_get, hyperseo_rank_history_get, hyperseo_mentions_track
Brand mentions in AI search & SERPshyperseo_ai_overviews_get, hyperseo_ai_search_volume_get, hyperseo_mentions_track, google_search_results_search, web_search
Organic social — Instagraminstagram_scrape, instagram_posts_scrape, instagram_followers_count_scrape
Organic social — TikToktiktok_videos_scrape, tiktok_comments_scrape
Organic social — LinkedInscrape_linkedin_profiles (conditional — only available when the LinkedIn-scraper integration is enabled in your Hyper workspace)
Organic social — Twitter / Xx_tweets_search
Community / sentiment — Redditreddit_scrape, reddit_leads_scrape
Ecommerce competitor specificsecommerce_products_scrape, ecommerce_reviews_scrape
Demand / trend signalsgoogle_trends_scrape, hyperseo_search_volume_get, hyperseo_intents_search
Optional: comparison-page assetsimages_generate

Critical rules

  1. Public-only data. Never scrape behind login walls or paywalls. If a target is gated, stop and surface that — don't try to bypass.
  2. Pick the competitor set before scraping. 3–5 competitors is the sweet spot. 10+ produces an unreadable brief and burns scraper credits. If the user doesn't have a list, run hyperseo_competitors_search(domain=<their_domain>) first to surface the top organic competitors, then confirm the set with them.
  3. Snapshot, then diff. First run is just a baseline — there's nothing to compare against. The value compounds on the second and third runs (what changed in pricing, what new posts went up, who lost rank). Make this expectation clear when the user runs it for the first time.
  4. HyperSEO is credit-metered. Be intentional. Don't loop hyperseo_domain_overview_get over 12 competitors when you only need 4. Each call has cost — batch and cache.
  5. Apify scrapers can be slow and rate-limited. Don't kick off 8 scrapes in parallel. Sequence them, and surface partial results to the user as they arrive instead of waiting for the full run.
  6. Snapshot what you scraped, not just the analysis. Always include the source URL, scrape timestamp, and a short excerpt for any claim in the brief — otherwise next week's diff has nothing to compare against and the brief becomes unfalsifiable.
  7. Don't over-interpret single data points. "Competitor X dropped a Reel that got 12K likes" is noise. "Competitor X has averaged 8K likes/post for the last 30 days, up from 2K" is signal. Build comparisons on aggregates, not anecdotes.
  8. Stay clearly factual. Use neutral language ("Competitor X published Y on date Z, copy reads as…") not value judgments ("Competitor X's strategy is broken…"). The brief is intel, not opinion.
  9. Disambiguate brand-name SERPs. A search for <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.
  10. Apify-backed scrapers fail intermittently. Expect occasional "fetch failed" or empty-result responses from instagram_scrape*, tiktok_*_scrape, reddit_scrape*, google_trends_scrape, x_tweets_search, and google_search_results_search. 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.

Workflow

Phase 1 — Define the competitor set

Ask the user (or infer):

  1. Their domain — needed to ground all relative comparisons.
  2. Their competitor set — 3–5 names + domains. If unclear, surface the top organic competitors. hyperseo_competitors_search 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_search(
  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.

  1. The job — what is this brief for? The shape changes by job:
    • Battle card for sales → focus on positioning, pricing, "what to say when…" objection lines.
    • Weekly digest for marketing/exec team → focus on what changed this week.
    • Comparison-page input for marketing → focus on objective, comparable feature/pricing data.
    • Board / board-prep update → focus on aggregate position (share of voice, rank deltas, growth).
  2. The cadence — one-shot or recurring? Recurring scopes the source matrix tighter so each run completes in reasonable time.

If the user can't answer #3, stop and ask. Building intel without knowing the artifact is a guaranteed waste.

Phase 2 — Build the source matrix

Not every source matters for every competitor or every job. Per-competitor, decide which surfaces to pull from.

Competitor typeSources that matter most
Direct SaaS / B2BSite, blog, pricing page, LinkedIn company posts (if available), AI-search citations (hyperseo_ai_overviews_get), domain rank delta
Ecommerce / DTC brandSite, product catalog (ecommerce_products_scrape), product reviews (ecommerce_reviews_scrape), Instagram, TikTok, Reddit threads, Google Trends interest
Consumer / creator brandInstagram, TikTok, Twitter, YouTube (via the YouTube toolkit if connected), Reddit
Content-led / publicationSite, blog (full crawl), backlinks history, AI-search citations, search rank trend
Local / multi-locationSite, 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. Read it only when a source call fails or returns nothing; the brief needs only references/brief-templates.md.

Phase 3 — Pull the data

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:

  1. Cheapest first — HyperSEO baselines (one call per competitor, reuse data across the brief):
hyperseo_domain_overview_get(domain="<competitor>.com", location_code=2840)
hyperseo_domain_keywords_get(domain="<competitor>.com", limit=50, location_code=2840)
hyperseo_domain_intersections_search(
  domain1="yourbrand.com",
  domain2="<competitor>.com",
  limit=50,
  location_code=2840
)
  1. Site content via Firecrawl:
firecrawl_urls_scrape(url="https://<competitor>.com/pricing")
firecrawl_urls_scrape(url="https://<competitor>.com/")
firecrawl_branding_extract(url="https://<competitor>.com")  # logo, colors, voice

For a full-blog-archive deep dive use firecrawl_websites_crawl once and check status with firecrawl_crawls_status_check. If Firecrawl returns near-empty for a JS-heavy SPA, fall back to web_pages_scrape(url=..., use_proxy=true, ai_query="extract pricing tiers and prices").

  1. Social — sequenced per platform (note: most scrapers take arrays of identifiers, not a single username):
instagram_scrape(direct_urls=["https://www.instagram.com/<competitor>/"], results_type="posts", results_limit=30)
instagram_followers_count_scrape(usernames=["<competitor>"])  # cheap, do it weekly
tiktok_videos_scrape(profiles=["<competitor>"], results_per_page=30)
x_tweets_search(from_user="<competitor_handle>", max_items=50)

# Only if scrape_linkedin_profiles is found:
scrape_linkedin_profiles(urls=["https://www.linkedin.com/company/<competitor>"])
  1. Sentiment & demand:
reddit_scrape(searches=["<competitor>"], max_items=50, sort="new", time="month")
google_trends_scrape(
  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"
)
google_search_results_search(query="<competitor> reviews", num_results=20, country="us")
  1. AI search visibility (only for SaaS/B2B usually):
# AI Overview takes ONE keyword at a time + integer location_code
hyperseo_ai_overviews_get(keyword="<your category keyword>", location_code=2840)

# track_mentions runs the query against OpenAI / Claude / Perplexity and returns citations
hyperseo_mentions_track(
  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.

Phase 4 — Diff

The point of the skill is delta, not snapshot. For each competitor, compare:

SourceCompare against
Pricing pageLast scrape (changes in tier names, prices, plan limits, new add-ons)
Homepage heroLast scrape (new positioning copy, new CTA, new logos)
Domain rankhyperseo_rank_history_get(domain=..., date_from=..., date_to=...) vs last 30/90 days
Domain keywordsNet-new keywords ranking, lost keywords
Domain intersection (theirs ∩ yours)Keywords they rank for and you don't — content gaps
Instagram / TikTokPosts since last run, follower delta, engagement-rate delta
Twitter / RedditVolume of mentions vs prior period
AI-search citationsNew 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.

Phase 5 — Brief

Synthesize into the artifact. Brief shapes by job (full templates in references/brief-templates.md):

  • Battle card — 1 page, per-competitor: positioning summary, 3 strongest competitor claims, 3 counter-claims for our side, common objections + responses, win-loss patterns.
  • Weekly digest — 1 page total, all competitors: bullet list of what changed this week per competitor, ranked by significance.
  • Comparison-page input — feature matrix table, pricing table, plan limits table — all sourced with URLs and timestamps.
  • Board-prep update — share-of-voice, rank deltas, content velocity, sentiment trend over the period.

Output standards (apply to every brief):

  • Always cite source + timestamp for every claim. "Competitor X raised the Pro tier from $79 → $99 (pricing page, 2026-04-29)" beats "X raised prices."
  • Use neutral language. Brief is for the reader to draw their own conclusion.
  • Distinguish observation from interpretation. Mark interpretation explicitly: "Observation: rank dropped 12 positions on 'invoice automation' over 30d. Possible interpretation: …".
  • Keep one ranked list of "things that matter" at the top of the brief. Bury everything else below it. Most readers stop after the first 3 bullets.

Phase 6 — Monitor on cadence (optional)

If the user wants ongoing monitoring rather than a one-shot:

  1. Save the source matrix and competitor set somewhere durable (bigquery_*, Notion, a Sheets tab, or just inline in the user's prompt template).
  2. Schedule the agent to re-run the pull on a cadence — weekly is the sweet spot. Daily produces too much noise; monthly misses fast moves.
  3. The brief shape becomes the weekly digest by default, with the option to escalate to a deep brief when something significant changes.

Reference workflows

ReferenceWhen to read
references/source-by-source.mdPer-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.mdBattle card, weekly digest, comparison-page, and board-prep templates with worked examples and output structure

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Competitor Intel AI skill do?

Run end-to-end competitor research and monitoring through the Hyper MCP — pick the set, scrape every public surface (site, blog, pricing, organic social, search rank, mentions, demand) via Firecrawl + HyperSEO + the Apify scrapers, diff against last run, and synthesize a brief. Use when the user wants to research competitors, build a battle card or comparison page, run a weekly digest, or asks "what's [competitor] doing?" or "how do we compare?".

Why use Competitor Intel on TypingMind?

Because you install it once and use it with any model. Competitor Intel is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Competitor Intel in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/hyperfx-ai/marketing-skills/tree/main/skills/competitor-intel. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Competitor Intel?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Competitor Intel?

As many as you like. As long as a model supports skills, you can use Competitor Intel with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Competitor Intel AI skill free?

Yes. It is published on GitHub by hyperfx-ai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇