From anysite-skills
Gathers competitive intelligence via anysite MCP server from LinkedIn, social media, Y Combinator, and web. Tracks competitors, hiring patterns, content strategies, and market positioning for strategic analysis.
npx claudepluginhub anysiteio/agent-skills --plugin anysite-cliThis skill uses the workspace's default tool permissions.
Comprehensive competitive intelligence gathering using anysite MCP server. Track competitors across LinkedIn, social media, and the web to understand their strategies, monitor their activities, and identify competitive opportunities.
Gathers competitive intelligence via web scraping, LinkedIn profiles, GitHub activity, Glassdoor sentiment, social media, and community insights. Profiles companies, founders, and strategies for analysis, comparisons, and threat assessment.
Gathers live web data via Bright Data CLI to analyze competitors' pricing, features, reviews, hiring patterns, content strategy, and market positioning for intelligence reports.
Generates sourced 360° reports on specific companies using real-time Nimble web data APIs, covering funding, leadership, products/tech, market position, news, and strategic outlook. Activates on company research queries.
Share bugs, ideas, or general feedback.
Comprehensive competitive intelligence gathering using anysite MCP server. Track competitors across LinkedIn, social media, and the web to understand their strategies, monitor their activities, and identify competitive opportunities.
The anysite Competitor Intelligence skill helps you:
This skill provides 90% coverage of competitive intelligence capabilities with excellent LinkedIn and social media monitoring.
All data fetching uses the universal execute() meta-tool:
execute(source, category, endpoint, params) → returns data + cache_key
After fetching, use these for analysis and export:
get_page(cache_key, offset, limit) — paginate through large result setsquery_cache(cache_key, conditions, sort_by, aggregate, group_by) — filter/sort/aggregate cached data without re-fetchingexport_data(cache_key, format) — export to CSV, JSON, or JSONL for sharingAlways call discover(source, category) first if unsure about endpoint names or params.
Error handling: Check response for llm_hint field on errors — it provides actionable guidance (e.g., "Likely passed fsd_company URN instead of company: prefix").
Choose your competitor identification method:
| Goal | v2 Call | Output |
|---|---|---|
| Find similar companies | execute("linkedin", "search", "search_companies", {"keywords": "...", "count": 50}) | Company list with metrics |
| Research startup competitors | execute("yc", "search", "search_companies", {"query": "...", "count": 50}) | YC startups by industry/batch |
| Discover by employee search | execute("linkedin", "search", "search_users", {...}) → extract companies | Companies from employee profiles |
| Find by keywords/industry | execute("linkedin", "search", "search_companies", {"keywords": "...", "industry": "...", "count": 50}) | Filtered company list |
Execute MCP tools to collect competitor data:
Company Profile Analysis
execute("linkedin", "company", "company", {"company": "competitor-name"})
→ Returns: Description, size, location, website, specialties, URN
Employee Intelligence
execute("linkedin", "search", "search_users", {
"company_keywords": "Competitor Inc",
"title": "VP OR Director OR Head",
"count": 50
})
→ Returns: Key employees, org structure insights
→ Use get_page(cache_key, 10, 50) to load more results
Hiring Velocity Analysis
execute("linkedin", "company", "company_employee_stats", {
"urn": {"type": "company", "value": "<company_id>"}
})
→ Returns: Growth metrics, department distribution
→ Use query_cache(cache_key, sort_by=[{"field": "count", "order": "desc"}]) to rank departments
Content Strategy
execute("linkedin", "company", "company_posts", {
"urn": {"type": "company", "value": "<company_id>"},
"count": 20
})
→ Returns: Recent posts, engagement, messaging themes
→ Use query_cache(cache_key, aggregate=[{"field": "reactions", "function": "avg"}]) for engagement stats
Analyze gathered data for:
Use query_cache() to filter and aggregate without re-fetching:
query_cache(cache_key, conditions=[{"field": "department", "operator": "contains", "value": "Engineering"}])
Chat Summary: Competitive insights with key findings
CSV Export: export_data(cache_key, "csv") → Competitor comparison matrix
JSON Export: export_data(cache_key, "json") → Complete data for tracking over time
Scenario: Deep dive on a specific competitor
Steps:
execute("linkedin", "company", "company", {"company": "competitor"})
→ Size, industry, description, website, founding year
→ Save the URN (convert fsd_company to company: prefix for sub-endpoints)
execute("linkedin", "search", "search_users", {
"company_keywords": "Competitor Inc",
"title": "C-level OR VP OR SVP OR President",
"count": 50
})
→ C-suite and VP-level executives
→ Use get_page(cache_key, 10, 50) for more results
execute("linkedin", "company", "company_employee_stats", {
"urn": {"type": "company", "value": "<company_id>"}
})
→ Total employees, growth rate, department breakdown
For each department:
execute("linkedin", "search", "search_users", {
"company_keywords": "Competitor Inc",
"title": "<department_title>",
"count": 50
})
→ Team sizes, key roles
execute("linkedin", "search", "search_jobs", {"keywords": "Competitor Inc", "count": 50})
→ Open positions, hiring priorities, expansion areas
→ Use query_cache(cache_key, group_by="location") to see geographic expansion
execute("linkedin", "company", "company_posts", {
"urn": {"type": "company", "value": "<company_id>"},
"count": 50
})
→ Posting frequency, themes, engagement levels
execute("twitter", "user", "user", {"user": "competitor"})
execute("twitter", "user", "user_posts", {"user": "competitor", "count": 50})
→ Social media presence and strategy
execute("webparser", "parse", "parse", {"url": "https://competitor.com"})
→ Positioning, messaging, product offerings
execute("webparser", "parse", "parse", {"url": "https://competitor.com/blog"})
→ Content topics, thought leadership
execute("reddit", "search", "search_posts", {"query": "Competitor Inc", "count": 20})
→ Customer sentiment, product feedback
Expected Output:
export_data(cache_key, "csv") to create downloadable competitor reportScenario: Map all competitors in your space
Steps:
execute("linkedin", "search", "search_companies", {
"keywords": "<your industry keywords>",
"industry": "<industry>",
"employee_count": ["51-200", "201-500", "501-1000"],
"count": 50
})
For each company:
execute("linkedin", "company", "company", {"company": "<alias>"})
→ Review description for relevance
→ Check employee count and growth
→ Verify competitive overlap
Direct: Same products, same market
Indirect: Similar products, different market
Potential: Adjacent space, could expand
For each competitor:
execute("linkedin", "company", "company_employee_stats", {
"urn": {"type": "company", "value": "<company_id>"}
})
→ Employee count, growth rate
→ Department distribution
→ Use query_cache() to compare across competitors
For each competitor:
execute("linkedin", "company", "company_posts", {
"urn": {"type": "company", "value": "<company_id>"},
"count": 10
})
→ Key messaging themes
execute("webparser", "parse", "parse", {"url": "<website>/about"})
→ Value proposition, target market
execute("yc", "search", "search_companies", {"query": "<industry>", "count": 50})
→ YC competitors with funding data
→ Use query_cache(cache_key, sort_by=[{"field": "team_size", "order": "desc"}]) to rank by size
For each YC company:
execute("yc", "company", "get", {"slug": "<company_slug>"})
→ Batch, team size, description
Expected Output:
export_data(cache_key, "csv") for the full comparison matrixScenario: Monitor competitor hiring to identify growth areas
Steps:
execute("linkedin", "company", "company_employee_stats", {
"urn": {"type": "company", "value": "<company_id>"}
})
→ Current total employees
→ Department distribution
execute("linkedin", "search", "search_jobs", {"keywords": "Competitor Inc", "count": 100})
→ All open positions
→ Use query_cache(cache_key, group_by="location") to group by office
Group by department:
- Engineering roles
- Sales roles
- Marketing roles
- Operations roles
execute("linkedin", "search", "search_users", {
"company_keywords": "Competitor Inc",
"count": 100
})
→ Get all employees
→ Use get_page(cache_key, 10, 100) to paginate through full list
Filter for recent joins:
execute("linkedin", "user", "user_experience", {
"urn": {"type": "fsd_profile", "value": "<profile_id>"},
"count": 5
})
→ Start date at current company
→ Identify hires from last 3-6 months
For former employees:
execute("linkedin", "search", "search_users", {"keywords": "Competitor Inc", "count": 50})
→ Filter profiles showing "Former" or past employment
Identify:
- Leadership departures
- Team exodus (multiple from same department)
- Moves to other competitors
Identify where competitors hire from:
- For each new hire: get previous companies
- Track talent pipelines
- Identify poaching patterns
→ Use export_data(cache_key, "csv") to build a hiring tracker spreadsheet
Expected Output:
Scenario: Analyze competitor content across platforms
Steps:
execute("linkedin", "company", "company_posts", {
"urn": {"type": "company", "value": "<company_id>"},
"count": 50
})
→ Use query_cache(cache_key, aggregate=[{"field": "comment_count", "function": "avg"}]) for engagement stats
Analyze:
- Posting frequency (posts/week)
- Content types (articles, videos, polls)
- Engagement rates (likes, comments, shares)
- Topics and themes
- Employee advocacy (shares/comments from team)
execute("twitter", "user", "user", {"user": "competitor"})
execute("twitter", "user", "user_posts", {"user": "competitor", "count": 100})
Analyze:
- Tweet frequency
- Engagement metrics
- Content themes
- Use of threads/media
- Response rates
execute("youtube", "channel", "channel_videos", {"channel": "competitor", "count": 30})
For each video:
execute("youtube", "video", "video", {"video": "<video_id>"})
Analyze:
- Upload frequency
- View counts
- Engagement (likes, comments)
- Content types (demos, webinars, customer stories)
- Video length and production quality
→ Use query_cache(cache_key, sort_by=[{"field": "view_count", "order": "desc"}]) to find top videos
execute("instagram", "user", "user", {"user": "competitor"})
execute("instagram", "user", "user_posts", {"user": "competitor", "count": 50})
Analyze:
- Post frequency
- Visual style/branding
- Engagement rates
- Use of Reels vs. static posts
- Influencer partnerships
execute("webparser", "parse", "parse", {"url": "https://competitor.com/blog"})
execute("webparser", "sitemap", "sitemap", {"url": "https://competitor.com"})
→ Find all blog posts
Analyze:
- Publishing frequency
- Content topics
- SEO keywords
- Thought leadership positioning
execute("reddit", "search", "search_posts", {"query": "Competitor Inc", "count": 50})
execute("reddit", "search", "search_posts", {"query": "competitor product name", "count": 50})
Analyze:
- Customer feedback
- Common complaints
- Product strengths
- Feature requests
→ Use query_cache(cache_key, sort_by=[{"field": "comment_count", "order": "desc"}]) to find most-discussed threads
Expected Output:
export_data(cache_key, "csv") for cross-platform content comparisonCompany Profile — execute("linkedin", "company", "company", {"company": "..."})
Employee Stats — execute("linkedin", "company", "company_employee_stats", {"urn": {"type": "company", "value": "..."}})
company: prefix (not fsd_company). Convert: urn:li:fsd_company:1441 → company:1441Company Posts — execute("linkedin", "company", "company_posts", {"urn": {"type": "company", "value": "..."}, "count": N})
Search Users — execute("linkedin", "search", "search_users", {"company_keywords": "...", "title": "...", "count": N})
User Profile — execute("linkedin", "user", "user", {"user": "..."})
User Experience — execute("linkedin", "user", "user_experience", {"urn": {"type": "fsd_profile", "value": "..."}, "count": N})
Search Jobs — execute("linkedin", "search", "search_jobs", {"keywords": "...", "count": N})
Search Companies — execute("yc", "search", "search_companies", {"query": "...", "count": N})
Company Details — execute("yc", "company", "get", {"slug": "..."})
Search Founders — execute("yc", "search", "search_founders", {"query": "...", "count": N})
Twitter/X:
execute("twitter", "search", "search_posts", {"query": "...", "count": N}) — Find competitor mentionsexecute("twitter", "user", "user", {"user": "..."}) — Get competitor profileexecute("twitter", "user", "user_posts", {"user": "...", "count": N}) — Get recent tweetsInstagram:
execute("instagram", "search", "search_posts", {"query": "...", "count": N}) — Find hashtag/keyword mentionsexecute("instagram", "user", "user", {"user": "..."}) — Get profile statsexecute("instagram", "user", "user_posts", {"user": "...", "count": N}) — Get recent postsReddit:
execute("reddit", "search", "search_posts", {"query": "...", "count": N}) — Find discussions about competitorsexecute("reddit", "posts", "posts", {"post_url": "..."}) — Get post details and sentimentYouTube:
execute("youtube", "search", "search_videos", {"query": "...", "count": N}) — Find competitor videosexecute("youtube", "channel", "channel_videos", {"channel": "...", "count": N}) — Get all channel videosexecute("youtube", "video", "video", {"video": "..."}) — Get video details and metricsParse Webpage — execute("webparser", "parse", "parse", {"url": "..."})
Sitemap — execute("webparser", "sitemap", "sitemap", {"url": "..."})
Web Search — execute("duckduckgo", "search", "search", {"query": "..."})
Pagination — get_page(cache_key, offset, limit)
next_offset is returnedFilter/Aggregate — query_cache(cache_key, conditions, sort_by, aggregate, group_by)
query_cache(cache_key, sort_by=[{"field": "employee_count", "order": "desc"}])Export — export_data(cache_key, format)
Provides competitive intelligence highlights:
Use export_data(cache_key, "csv") for competitor comparison matrix with:
Use export_data(cache_key, "json") for complete competitive data for:
Track competitors over time by storing data and comparing:
Monthly Snapshot:
{
"date": "2026-01-29",
"competitors": [
{
"name": "Competitor A",
"employees": 350,
"monthly_growth": 8,
"open_positions": 25,
"linkedin_posts": 12,
"twitter_followers": 5400,
"funding_stage": "Series B"
}
]
}
Trend Analysis:
Strengths (from LinkedIn, website, reviews):
Weaknesses (from reviews, job postings, employee turnover):
Opportunities (from market analysis):
Threats (from competitive monitoring):
Track deals against specific competitors:
Data Points to Collect:
Intelligence Gathering:
For each competitor in win/loss:
1. execute("linkedin", "company", "company", {"company": "..."}) → Current positioning
2. execute("webparser", "parse", "parse", {"url": "<website>/pricing"}) → Pricing strategy
3. execute("webparser", "parse", "parse", {"url": "<website>/features"}) → Feature set
4. execute("reddit", "search", "search_posts", {"query": "competitor", "count": 20}) → Customer feedback
5. execute("linkedin", "company", "company_posts", {"urn": {"type": "company", "value": "..."}, "count": 10}) → Recent messaging
Analysis:
For Local/Retail Competitors: Focus on:
For Tech/SaaS Competitors: Excellent coverage through:
For Enterprise Competitors:
Solution:
412 means not found — check the llm_hint in the response for guidanceSolution:
Solution:
Solution:
company: prefix, NOT fsd_companyurn:li:fsd_company:1441 → use {"type": "company", "value": "1441"}fsd_profile URN from /linkedin/user responseReady to analyze competitors? Ask Claude to help you research competitors, track hiring patterns, or benchmark competitive positioning using this skill!