Install
$ agentstack add skill-anysiteio-agent-skills-anysite-competitor-intelligence ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
anysite Competitor Intelligence
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.
Overview
The anysite Competitor Intelligence skill helps you:
- Track competitor companies on LinkedIn and Y Combinator
- Monitor hiring patterns to identify growth areas and strategic priorities
- Analyze content strategies across social platforms
- Benchmark positioning and messaging
- Identify key employees and leadership changes
- Track competitive movements like funding, launches, partnerships
This skill provides 90% coverage of competitive intelligence capabilities with excellent LinkedIn and social media monitoring.
v2 Tool Interface
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 sharing
Always 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").
Supported Platforms
- LinkedIn (Primary): Company pages, employee search, post monitoring, job listings, growth tracking
- Y Combinator: Startup competitor research, funding data, batch analysis
- Twitter/X: Social presence monitoring, content strategy, engagement analysis
- Reddit: Community sentiment, product discussions, competitor mentions
- Instagram: Brand presence, visual content strategy, influencer partnerships
- YouTube: Video content, channel growth, community engagement
- Web Scraping: Company websites, press releases, blog content
- SEC: Public company filings for competitors
Quick Start
Step 1: Identify Competitors
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 |
Step 2: Gather Competitive Intelligence
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": ""}
})
→ 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": ""},
"count": 20
})
→ Returns: Recent posts, engagement, messaging themes
→ Use query_cache(cache_key, aggregate=[{"field": "reactions", "function": "avg"}]) for engagement stats
Step 3: Process and Analyze
Analyze gathered data for:
- Growth signals: Hiring velocity, funding, expansion
- Strategic priorities: Department hiring, job postings, content themes
- Market positioning: Messaging, target audience, value props
- Competitive threats: New products, partnerships, key hires
Use query_cache() to filter and aggregate without re-fetching:
query_cache(cache_key, conditions=[{"field": "department", "operator": "contains", "value": "Engineering"}])
Step 4: Format Output
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
Common Workflows
Workflow 1: Comprehensive Competitor Profile
Scenario: Deep dive on a specific competitor
Steps:
- Company Overview
execute("linkedin", "company", "company", {"company": "competitor"})
→ Size, industry, description, website, founding year
→ Save the URN (convert fsd_company to company: prefix for sub-endpoints)
- Leadership Team
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
- Organizational Structure
execute("linkedin", "company", "company_employee_stats", {
"urn": {"type": "company", "value": ""}
})
→ Total employees, growth rate, department breakdown
For each department:
execute("linkedin", "search", "search_users", {
"company_keywords": "Competitor Inc",
"title": "",
"count": 50
})
→ Team sizes, key roles
- Hiring Intelligence
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
- Content Strategy
execute("linkedin", "company", "company_posts", {
"urn": {"type": "company", "value": ""},
"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
- Product/Market Intelligence
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:
- Complete company profile
- Leadership team roster (10-20 executives)
- Hiring velocity and priorities
- Content strategy analysis
- Product positioning insights
- Customer sentiment summary
- Use
export_data(cache_key, "csv")to create downloadable competitor report
Workflow 2: Competitive Landscape Mapping
Scenario: Map all competitors in your space
Steps:
- Identify Competitors
execute("linkedin", "search", "search_companies", {
"keywords": "",
"industry": "",
"employee_count": ["51-200", "201-500", "501-1000"],
"count": 50
})
- Filter and Prioritize
For each company:
execute("linkedin", "company", "company", {"company": ""})
→ Review description for relevance
→ Check employee count and growth
→ Verify competitive overlap
- Categorize Competitors
Direct: Same products, same market
Indirect: Similar products, different market
Potential: Adjacent space, could expand
- Size and Growth Metrics
For each competitor:
execute("linkedin", "company", "company_employee_stats", {
"urn": {"type": "company", "value": ""}
})
→ Employee count, growth rate
→ Department distribution
→ Use query_cache() to compare across competitors
- Positioning Analysis
For each competitor:
execute("linkedin", "company", "company_posts", {
"urn": {"type": "company", "value": ""},
"count": 10
})
→ Key messaging themes
execute("webparser", "parse", "parse", {"url": "/about"})
→ Value proposition, target market
- Funding and Traction (for startups)
execute("yc", "search", "search_companies", {"query": "", "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": ""})
→ Batch, team size, description
Expected Output:
- 20-50 competitors identified
- Categorized by competitive threat level
- Size and growth metrics for each
- Positioning and messaging summaries
- Competitive landscape map
- Use
export_data(cache_key, "csv")for the full comparison matrix
Workflow 3: Hiring Velocity Tracking
Scenario: Monitor competitor hiring to identify growth areas
Steps:
- Baseline Employee Count
execute("linkedin", "company", "company_employee_stats", {
"urn": {"type": "company", "value": ""}
})
→ Current total employees
→ Department distribution
- Track Open Positions
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
- Analyze Recent Hires
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": ""},
"count": 5
})
→ Start date at current company
→ Identify hires from last 3-6 months
- Track Key Departures
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
- Competitive Recruiting Analysis
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:
- Hiring velocity (hires per month/quarter)
- Department growth priorities
- Key hires and their backgrounds
- Leadership changes
- Talent pipeline insights
Workflow 4: Content Strategy Benchmarking
Scenario: Analyze competitor content across platforms
Steps:
- LinkedIn Content
execute("linkedin", "company", "company_posts", {
"urn": {"type": "company", "value": ""},
"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)
- Twitter/X Content
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
- YouTube Content
execute("youtube", "channel", "channel_videos", {"channel": "competitor", "count": 30})
For each video:
execute("youtube", "video", "video", {"video": ""})
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
- Instagram Content (if B2C)
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
- Blog/Website Content
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
- Community Sentiment
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:
- Cross-platform content strategy matrix
- Engagement benchmarks
- Content themes and messaging
- Platform prioritization insights
- Community sentiment summary
- Use
export_data(cache_key, "csv")for cross-platform content comparison
MCP Tools Reference (v2)
LinkedIn Company Intelligence
Company Profile — execute("linkedin", "company", "company", {"company": "..."})
- Get detailed company profile
- Returns: Description, website, size, industry, specialties, URN
Employee Stats — execute("linkedin", "company", "company_employee_stats", {"urn": {"type": "company", "value": "..."}})
- Get employee statistics and growth
- Returns: Total employees, growth metrics, department distribution
- Note: URN must use
company:prefix (notfsd_company). Convert:urn:li:fsd_company:1441→company:1441
Company Posts — execute("linkedin", "company", "company_posts", {"urn": {"type": "company", "value": "..."}, "count": N})
- Get recent company posts
- Returns: Posts with engagement metrics, content, timestamps
LinkedIn People Intelligence
Search Users — execute("linkedin", "search", "search_users", {"company_keywords": "...", "title": "...", "count": N})
- Find employees at competitor companies
- Filter by title, department, location
- Returns: Employee profiles with titles and URLs
User Profile — execute("linkedin", "user", "user", {"user": "..."})
- Get detailed employee profile
- Returns: Work history, education, skills
User Experience — execute("linkedin", "user", "user_experience", {"urn": {"type": "fsd_profile", "value": "..."}, "count": N})
- Get detailed work history
- Returns: All positions with dates and descriptions
LinkedIn Jobs
Search Jobs — execute("linkedin", "search", "search_jobs", {"keywords": "...", "count": N})
- Search job listings by keywords, location, and filters
- Returns: Open positions with company, location, work type
Y Combinator Intelligence
Search Companies — execute("yc", "search", "search_companies", {"query": "...", "count": N})
- Search YC companies by industry, batch, filters
- Returns: Company list with batch, team size, status
Company Details — execute("yc", "company", "get", {"slug": "..."})
- Get detailed YC company profile
- Returns: Description, founders, batch, status, links
Search Founders — execute("yc", "search", "search_founders", {"query": "...", "count": N})
- Search for founders by criteria
- Returns: Founder profiles with company associations
Social Media Monitoring
Twitter/X:
execute("twitter", "search", "search_posts", {"query": "...", "count": N})— Find competitor mentionsexecute("twitter", "user", "user", {"user": "..."})— Get co
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: anysiteio
- Source: anysiteio/agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.