@anysiteio/agent-skills 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +113 -0
- package/.claude-plugin/plugin.json +45 -0
- package/LICENSE +21 -0
- package/README.md +221 -0
- package/bin/install.js +55 -0
- package/package.json +45 -0
- package/skills/anysite-audience-analysis/SKILL.md +273 -0
- package/skills/anysite-audience-analysis/references/PLATFORM_COVERAGE.md +53 -0
- package/skills/anysite-audience-analysis/references/TOOL_MAPPING.md +27 -0
- package/skills/anysite-brand-reputation/SKILL.md +373 -0
- package/skills/anysite-brand-reputation/references/MONITORING_GUIDE.md +84 -0
- package/skills/anysite-competitor-analyzer/SKILL.md +847 -0
- package/skills/anysite-competitor-intelligence/SKILL.md +642 -0
- package/skills/anysite-competitor-intelligence/references/ANALYSIS_PATTERNS.md +97 -0
- package/skills/anysite-content-analytics/SKILL.md +298 -0
- package/skills/anysite-content-analytics/references/METRICS_GUIDE.md +63 -0
- package/skills/anysite-influencer-discovery/SKILL.md +398 -0
- package/skills/anysite-influencer-discovery/references/DISCOVERY_CRITERIA.md +50 -0
- package/skills/anysite-lead-generation/SKILL.md +1022 -0
- package/skills/anysite-lead-generation/references/LINKEDIN_STRATEGIES.md +739 -0
- package/skills/anysite-lead-generation/references/WEB_SCRAPING.md +910 -0
- package/skills/anysite-market-research/SKILL.md +379 -0
- package/skills/anysite-market-research/references/RESEARCH_METHODS.md +65 -0
- package/skills/anysite-person-analyzer/SKILL.md +604 -0
- package/skills/anysite-trend-analysis/SKILL.md +310 -0
- package/skills/anysite-trend-analysis/references/SOCIAL_MONITORING.md +46 -0
- package/skills/anysite-vc-analyst/SKILL.md +269 -0
|
@@ -0,0 +1,847 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: anysite-competitor-analyzer
|
|
3
|
+
description: Deep competitive intelligence combining web scraping, LinkedIn data, social media monitoring, leadership analysis, GitHub activity, Glassdoor sentiment, and community insights. Analyzes founders/C-level profiles, tracks real-time signals vs quarterly reports, and creates comprehensive competitor profiles. Use when asked to analyze competitors, research leadership teams, investigate market positioning, compare products/pricing, assess strategic threats, or gather intelligence on founders and key executives.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Competitor Analyzer
|
|
7
|
+
|
|
8
|
+
Systematic framework for gathering and analyzing competitive intelligence using Anysite MCP tools.
|
|
9
|
+
|
|
10
|
+
## When to Use This Skill
|
|
11
|
+
|
|
12
|
+
Trigger this skill when users ask to:
|
|
13
|
+
- "Analyze [competitor name]"
|
|
14
|
+
- "Research our competitors"
|
|
15
|
+
- "Create a competitive analysis of [company]"
|
|
16
|
+
- "How does [competitor] position themselves?"
|
|
17
|
+
- "What are [competitor]'s strengths and weaknesses?"
|
|
18
|
+
- "Compare our product with [competitor]"
|
|
19
|
+
- "Who are our main competitors?"
|
|
20
|
+
- "Build a battle card for [competitor]"
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
**For single competitor analysis:**
|
|
25
|
+
```bash
|
|
26
|
+
# 1. Generate analysis template
|
|
27
|
+
python scripts/analyze_competitor.py "Competitor Name" "https://competitor.com"
|
|
28
|
+
|
|
29
|
+
# 2. Use Anysite tools to gather data (see workflow below)
|
|
30
|
+
|
|
31
|
+
# 3. Fill in the JSON template with findings
|
|
32
|
+
|
|
33
|
+
# 4. Generate final report
|
|
34
|
+
python scripts/analyze_competitor.py "Competitor Name" "https://competitor.com" | \
|
|
35
|
+
python -c "import sys,json; exec('from scripts.analyze_competitor import format_markdown_report; print(format_markdown_report(json.load(sys.stdin)))')" \
|
|
36
|
+
> /mnt/user-data/outputs/competitor_report.md
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Analysis Workflow
|
|
40
|
+
|
|
41
|
+
### Phase 1: Foundation (15-20 min)
|
|
42
|
+
|
|
43
|
+
**Step 1: Initialize Analysis Structure**
|
|
44
|
+
|
|
45
|
+
Run the analysis script to create structured template:
|
|
46
|
+
```bash
|
|
47
|
+
python scripts/analyze_competitor.py "Competitor Name" "https://competitor.com" > /tmp/analysis.json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Step 2: Web Presence Reconnaissance**
|
|
51
|
+
|
|
52
|
+
Scrape key pages to understand positioning:
|
|
53
|
+
```python
|
|
54
|
+
# Homepage - core messaging
|
|
55
|
+
Anysite:parse_webpage({
|
|
56
|
+
"url": "https://competitor.com",
|
|
57
|
+
"only_main_content": true,
|
|
58
|
+
"strip_all_tags": true
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
# Pricing - cost structure
|
|
62
|
+
Anysite:parse_webpage({
|
|
63
|
+
"url": "https://competitor.com/pricing",
|
|
64
|
+
"only_main_content": true
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
# About - company background
|
|
68
|
+
Anysite:parse_webpage({
|
|
69
|
+
"url": "https://competitor.com/about",
|
|
70
|
+
"only_main_content": true,
|
|
71
|
+
"extract_contacts": true
|
|
72
|
+
})
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Extract from homepage:**
|
|
76
|
+
- H1/H2 headlines → positioning_statement
|
|
77
|
+
- Feature bullets → core_features
|
|
78
|
+
- Customer logos → customer_logos
|
|
79
|
+
- Value prop → value_proposition
|
|
80
|
+
|
|
81
|
+
**Extract from pricing:**
|
|
82
|
+
- Tier names and prices → pricing.tiers
|
|
83
|
+
- Cost per unit → pricing.unit_economics
|
|
84
|
+
- Free tier details → pricing.free_tier_limits
|
|
85
|
+
- Entry price → pricing.entry_price
|
|
86
|
+
|
|
87
|
+
**Extract from about:**
|
|
88
|
+
- Company description → company_overview.description
|
|
89
|
+
- Location → company_overview.headquarters
|
|
90
|
+
- Team size hints → company_overview.employee_count
|
|
91
|
+
|
|
92
|
+
### Phase 2: LinkedIn Intelligence (10-15 min)
|
|
93
|
+
|
|
94
|
+
**Step 3: Find Company Profile**
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
# Search for company
|
|
98
|
+
Anysite:search_linkedin_companies({
|
|
99
|
+
"keywords": "competitor name",
|
|
100
|
+
"count": 5
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
# Get detailed profile using slug from search results
|
|
104
|
+
Anysite:get_linkedin_company({
|
|
105
|
+
"company": "company-slug-from-search"
|
|
106
|
+
})
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Extract:**
|
|
110
|
+
- `follower_count` → Online presence indicator
|
|
111
|
+
- `employee_count` → Company size
|
|
112
|
+
- `description` → Self-positioning
|
|
113
|
+
- `headquarters` → Location
|
|
114
|
+
- `specialties` → Keywords they emphasize
|
|
115
|
+
|
|
116
|
+
**Step 4: Analyze Team & Growth**
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
# Check employee growth signals
|
|
120
|
+
Anysite:get_linkedin_company_employees({
|
|
121
|
+
"companies": ["company-slug"],
|
|
122
|
+
"keywords": "engineer developer",
|
|
123
|
+
"count": 50
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
# Find leadership
|
|
127
|
+
Anysite:get_linkedin_company_employees({
|
|
128
|
+
"companies": ["company-slug"],
|
|
129
|
+
"keywords": "CEO founder",
|
|
130
|
+
"count": 10
|
|
131
|
+
})
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Use findings to assess:**
|
|
135
|
+
- Team size → growth_indicators.employee_growth
|
|
136
|
+
- Eng:sales ratio → GTM strategy signal
|
|
137
|
+
- Recent hires → growth phase indicator
|
|
138
|
+
|
|
139
|
+
**Step 5: Content Strategy**
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
# Analyze posting activity
|
|
143
|
+
Anysite:get_linkedin_company_posts({
|
|
144
|
+
"urn": "company-urn-from-profile",
|
|
145
|
+
"count": 20
|
|
146
|
+
})
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Analyze posts for:**
|
|
150
|
+
- Frequency → content_strategy.blog_frequency
|
|
151
|
+
- Themes → content_strategy.key_topics
|
|
152
|
+
- Engagement → online_presence.linkedin.engagement_quality
|
|
153
|
+
- Tone → content_strategy.tone_of_voice
|
|
154
|
+
|
|
155
|
+
### Phase 3: Deep Social & Community Research (20-30 min)
|
|
156
|
+
|
|
157
|
+
**Step 6: Twitter Deep Dive**
|
|
158
|
+
|
|
159
|
+
**A. Company Account Analysis**
|
|
160
|
+
```python
|
|
161
|
+
# Get profile stats
|
|
162
|
+
Anysite:get_twitter_user({
|
|
163
|
+
"user": "competitor_handle"
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
# Recent activity (analyze more posts)
|
|
167
|
+
Anysite:get_twitter_user_posts({
|
|
168
|
+
"user": "competitor_handle",
|
|
169
|
+
"count": 100
|
|
170
|
+
})
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Extract from company account:**
|
|
174
|
+
- Followers → reach indicator
|
|
175
|
+
- Tweet frequency → activity level
|
|
176
|
+
- Content mix (product updates, thought leadership, customer engagement)
|
|
177
|
+
- Response time to mentions
|
|
178
|
+
- Tone of voice
|
|
179
|
+
- Most engaging tweets (viral content patterns)
|
|
180
|
+
|
|
181
|
+
**B. Founder/Executive Twitter Presence**
|
|
182
|
+
```python
|
|
183
|
+
# Find and analyze founder accounts
|
|
184
|
+
Anysite:get_twitter_user({
|
|
185
|
+
"user": "founder_handle"
|
|
186
|
+
})
|
|
187
|
+
|
|
188
|
+
Anysite:get_twitter_user_posts({
|
|
189
|
+
"user": "founder_handle",
|
|
190
|
+
"count": 100
|
|
191
|
+
})
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Leadership Twitter signals:**
|
|
195
|
+
- Personal brand strength
|
|
196
|
+
- Technical credibility (what they share)
|
|
197
|
+
- Customer engagement quality
|
|
198
|
+
- Industry thought leadership
|
|
199
|
+
- Follower quality (who follows them)
|
|
200
|
+
- Retweet patterns (what they amplify)
|
|
201
|
+
|
|
202
|
+
**C. Brand Mentions & Sentiment**
|
|
203
|
+
```python
|
|
204
|
+
# Comprehensive mention search
|
|
205
|
+
Anysite:search_twitter_posts({
|
|
206
|
+
"query": "competitor_name OR @handle OR #competitor_hashtag",
|
|
207
|
+
"count": 200
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
# Problem/complaint mentions
|
|
211
|
+
Anysite:search_twitter_posts({
|
|
212
|
+
"query": "competitor_name (problem OR issue OR bug OR slow OR expensive)",
|
|
213
|
+
"count": 100
|
|
214
|
+
})
|
|
215
|
+
|
|
216
|
+
# Positive sentiment
|
|
217
|
+
Anysite:search_twitter_posts({
|
|
218
|
+
"query": "competitor_name (love OR great OR amazing OR best OR solved)",
|
|
219
|
+
"count": 100
|
|
220
|
+
})
|
|
221
|
+
|
|
222
|
+
# Competitive mentions
|
|
223
|
+
Anysite:search_twitter_posts({
|
|
224
|
+
"query": "competitor_name vs OR competitor_name alternative OR switching from competitor_name",
|
|
225
|
+
"count": 100
|
|
226
|
+
})
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**Sentiment scoring:**
|
|
230
|
+
```
|
|
231
|
+
For each mention batch, calculate:
|
|
232
|
+
- Positive mentions: praise, recommendations, success stories
|
|
233
|
+
- Negative mentions: complaints, frustrations, churn signals
|
|
234
|
+
- Neutral mentions: questions, feature discussions
|
|
235
|
+
- Competitive mentions: comparisons with alternatives
|
|
236
|
+
|
|
237
|
+
Sentiment Score = (Positive - Negative) / Total
|
|
238
|
+
Range: -1.0 (very negative) to +1.0 (very positive)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**D. Customer Voice Analysis**
|
|
242
|
+
```python
|
|
243
|
+
# Find actual users
|
|
244
|
+
Anysite:search_twitter_posts({
|
|
245
|
+
"query": "using competitor_name OR tried competitor_name",
|
|
246
|
+
"count": 100
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
# Power users
|
|
250
|
+
Anysite:search_twitter_posts({
|
|
251
|
+
"query": "@handle thanks OR @handle helped OR @handle support",
|
|
252
|
+
"count": 50
|
|
253
|
+
})
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Extract:**
|
|
257
|
+
- Real use cases (what customers actually do)
|
|
258
|
+
- Pain points (what they struggle with)
|
|
259
|
+
- Success stories (what works well)
|
|
260
|
+
- Feature requests (what they want)
|
|
261
|
+
- Support quality (how fast company responds)
|
|
262
|
+
|
|
263
|
+
**Step 7: Reddit Deep Community Intelligence**
|
|
264
|
+
|
|
265
|
+
**A. Brand Presence Mapping**
|
|
266
|
+
```python
|
|
267
|
+
# General mentions across Reddit
|
|
268
|
+
Anysite:search_reddit_posts({
|
|
269
|
+
"query": "competitor_name",
|
|
270
|
+
"count": 100
|
|
271
|
+
})
|
|
272
|
+
|
|
273
|
+
# Industry-specific subreddits
|
|
274
|
+
relevant_subs = [
|
|
275
|
+
"SaaS", "startups", "Entrepreneur", # Business
|
|
276
|
+
"webdev", "programming", "devops", # Tech
|
|
277
|
+
"nocode", "automation", # No-code
|
|
278
|
+
"datascience", "analytics" # Data
|
|
279
|
+
]
|
|
280
|
+
|
|
281
|
+
for sub in relevant_subs:
|
|
282
|
+
Anysite:search_reddit_posts({
|
|
283
|
+
"query": "competitor_name",
|
|
284
|
+
"subreddit": sub,
|
|
285
|
+
"count": 50
|
|
286
|
+
})
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**B. Competitive Discussions**
|
|
290
|
+
```python
|
|
291
|
+
# Direct comparisons
|
|
292
|
+
Anysite:search_reddit_posts({
|
|
293
|
+
"query": "competitor_name vs",
|
|
294
|
+
"count": 100
|
|
295
|
+
})
|
|
296
|
+
|
|
297
|
+
# Alternative searches
|
|
298
|
+
Anysite:search_reddit_posts({
|
|
299
|
+
"query": "alternative to competitor_name",
|
|
300
|
+
"count": 100
|
|
301
|
+
})
|
|
302
|
+
|
|
303
|
+
Anysite:search_reddit_posts({
|
|
304
|
+
"query": "better than competitor_name",
|
|
305
|
+
"count": 50
|
|
306
|
+
})
|
|
307
|
+
|
|
308
|
+
# Problem space
|
|
309
|
+
Anysite:search_reddit_posts({
|
|
310
|
+
"query": "[problem they solve] tools OR solutions",
|
|
311
|
+
"count": 100
|
|
312
|
+
})
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**C. Deep Thread Analysis**
|
|
316
|
+
|
|
317
|
+
For high-engagement threads, get comments:
|
|
318
|
+
```python
|
|
319
|
+
# Get specific post details
|
|
320
|
+
Anysite:get_reddit_post({
|
|
321
|
+
"post_url": "reddit.com/r/subreddit/comments/..."
|
|
322
|
+
})
|
|
323
|
+
|
|
324
|
+
# Get all comments
|
|
325
|
+
Anysite:get_reddit_post_comments({
|
|
326
|
+
"post_url": "reddit.com/r/subreddit/comments/..."
|
|
327
|
+
})
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Analyze thread comments for:**
|
|
331
|
+
- Detailed user experiences
|
|
332
|
+
- Technical discussions
|
|
333
|
+
- Feature comparisons
|
|
334
|
+
- Pricing discussions
|
|
335
|
+
- Customer support experiences
|
|
336
|
+
- Decision factors (why they chose/didn't choose)
|
|
337
|
+
|
|
338
|
+
**D. Sentiment & Voice Analysis**
|
|
339
|
+
|
|
340
|
+
**Positive signals:**
|
|
341
|
+
- "I love [competitor]"
|
|
342
|
+
- "Works perfectly for..."
|
|
343
|
+
- "Best tool for..."
|
|
344
|
+
- "Highly recommend"
|
|
345
|
+
- "Switched to [competitor] and..."
|
|
346
|
+
|
|
347
|
+
**Negative signals:**
|
|
348
|
+
- "Disappointed with..."
|
|
349
|
+
- "Overpriced"
|
|
350
|
+
- "Customer support is..."
|
|
351
|
+
- "Buggy/unreliable"
|
|
352
|
+
- "Looking for alternative"
|
|
353
|
+
- "Switched away from..."
|
|
354
|
+
|
|
355
|
+
**Neutral/informational:**
|
|
356
|
+
- "How does [competitor] work?"
|
|
357
|
+
- "Anyone tried [competitor]?"
|
|
358
|
+
- "Pricing question"
|
|
359
|
+
- Feature clarifications
|
|
360
|
+
|
|
361
|
+
**E. Community Size & Engagement**
|
|
362
|
+
|
|
363
|
+
**Calculate metrics:**
|
|
364
|
+
```
|
|
365
|
+
Brand Awareness Score:
|
|
366
|
+
- Total unique mentions (last 30 days)
|
|
367
|
+
- Number of different subreddits mentioned in
|
|
368
|
+
- Average upvotes per mention
|
|
369
|
+
- Comment volume per mention
|
|
370
|
+
|
|
371
|
+
Community Health:
|
|
372
|
+
- Positive/Negative mention ratio
|
|
373
|
+
- Response rate to questions
|
|
374
|
+
- Problem resolution in comments
|
|
375
|
+
- Community helping each other
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
**Step 7.5: Cross-Platform Insight Synthesis**
|
|
379
|
+
|
|
380
|
+
**Compare Twitter vs Reddit:**
|
|
381
|
+
|
|
382
|
+
**Twitter typically shows:**
|
|
383
|
+
- Official company narrative
|
|
384
|
+
- Marketing messaging
|
|
385
|
+
- Quick customer service interactions
|
|
386
|
+
- Surface-level sentiment
|
|
387
|
+
- Broader reach
|
|
388
|
+
|
|
389
|
+
**Reddit typically reveals:**
|
|
390
|
+
- Unfiltered user opinions
|
|
391
|
+
- Detailed technical discussions
|
|
392
|
+
- Pricing sensitivity
|
|
393
|
+
- Competitive comparisons
|
|
394
|
+
- Real problems and workarounds
|
|
395
|
+
|
|
396
|
+
**Look for disconnects:**
|
|
397
|
+
- Company claims strong product (Twitter) but users complain (Reddit)
|
|
398
|
+
- High Twitter engagement but low Reddit mentions → Marketing-driven, not organic
|
|
399
|
+
- Reddit loves it but low Twitter presence → Word-of-mouth, under-marketed
|
|
400
|
+
- Consistent messaging → Authentic product-market fit
|
|
401
|
+
|
|
402
|
+
### Phase 4: Leadership & Founders Intelligence (15-20 min)
|
|
403
|
+
|
|
404
|
+
**Step 8: Identify Key Leaders**
|
|
405
|
+
|
|
406
|
+
```python
|
|
407
|
+
# Find founders and C-level
|
|
408
|
+
Anysite:search_linkedin_users({
|
|
409
|
+
"company_keywords": "competitor-name",
|
|
410
|
+
"title": "founder OR CEO OR CTO OR CPO",
|
|
411
|
+
"count": 10
|
|
412
|
+
})
|
|
413
|
+
|
|
414
|
+
# Get detailed profiles
|
|
415
|
+
Anysite:get_linkedin_profile({
|
|
416
|
+
"user": "founder-linkedin-username",
|
|
417
|
+
"with_experience": true,
|
|
418
|
+
"with_education": true,
|
|
419
|
+
"with_skills": true
|
|
420
|
+
})
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
**Extract for each leader:**
|
|
424
|
+
- Full career history → their experience and expertise
|
|
425
|
+
- Previous companies → track record
|
|
426
|
+
- Education background → academic credentials
|
|
427
|
+
- Skills → technical depth
|
|
428
|
+
- Languages → market reach
|
|
429
|
+
- Recommendations → credibility signals
|
|
430
|
+
|
|
431
|
+
**Step 9: Analyze Leadership Activity**
|
|
432
|
+
|
|
433
|
+
```python
|
|
434
|
+
# Get personal posts
|
|
435
|
+
Anysite:get_linkedin_user_posts({
|
|
436
|
+
"urn": "user-urn-from-profile",
|
|
437
|
+
"count": 50
|
|
438
|
+
})
|
|
439
|
+
|
|
440
|
+
# Check comments on others' posts
|
|
441
|
+
Anysite:get_linkedin_user_comments({
|
|
442
|
+
"urn": "user-urn",
|
|
443
|
+
"count": 30
|
|
444
|
+
})
|
|
445
|
+
|
|
446
|
+
# See what they're engaging with
|
|
447
|
+
Anysite:get_linkedin_user_reactions({
|
|
448
|
+
"urn": "user-urn",
|
|
449
|
+
"count": 50
|
|
450
|
+
})
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
**Analyze for:**
|
|
454
|
+
- Posting frequency and themes
|
|
455
|
+
- Technical depth in posts
|
|
456
|
+
- Market perspective
|
|
457
|
+
- Customer engagement
|
|
458
|
+
- Thought leadership quality
|
|
459
|
+
- Network quality (who engages with them)
|
|
460
|
+
|
|
461
|
+
**Step 10: Twitter Leadership Presence**
|
|
462
|
+
|
|
463
|
+
```python
|
|
464
|
+
# Founder Twitter activity
|
|
465
|
+
Anysite:get_twitter_user({
|
|
466
|
+
"user": "founder_handle"
|
|
467
|
+
})
|
|
468
|
+
|
|
469
|
+
Anysite:get_twitter_user_posts({
|
|
470
|
+
"user": "founder_handle",
|
|
471
|
+
"count": 100
|
|
472
|
+
})
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
**Leadership indicators:**
|
|
476
|
+
- Personal brand strength
|
|
477
|
+
- Technical credibility
|
|
478
|
+
- Customer relationships
|
|
479
|
+
- Industry influence
|
|
480
|
+
- Communication style
|
|
481
|
+
- Transparency level
|
|
482
|
+
|
|
483
|
+
### Phase 5: Technical & Data Discovery (10-15 min)
|
|
484
|
+
|
|
485
|
+
**Step 11: Documentation Quality**
|
|
486
|
+
|
|
487
|
+
```python
|
|
488
|
+
# Scrape docs homepage
|
|
489
|
+
Anysite:parse_webpage({
|
|
490
|
+
"url": "https://competitor.com/docs",
|
|
491
|
+
"only_main_content": true
|
|
492
|
+
})
|
|
493
|
+
|
|
494
|
+
# Check API reference
|
|
495
|
+
Anysite:parse_webpage({
|
|
496
|
+
"url": "https://competitor.com/api",
|
|
497
|
+
"only_main_content": true
|
|
498
|
+
})
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
**Step 11: Documentation Quality**
|
|
502
|
+
|
|
503
|
+
```python
|
|
504
|
+
# Scrape docs homepage
|
|
505
|
+
Anysite:parse_webpage({
|
|
506
|
+
"url": "https://competitor.com/docs",
|
|
507
|
+
"only_main_content": true
|
|
508
|
+
})
|
|
509
|
+
|
|
510
|
+
# Check API reference
|
|
511
|
+
Anysite:parse_webpage({
|
|
512
|
+
"url": "https://competitor.com/api",
|
|
513
|
+
"only_main_content": true
|
|
514
|
+
})
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
**Assess:**
|
|
518
|
+
- Documentation completeness
|
|
519
|
+
- Code examples presence
|
|
520
|
+
- Interactive explorer
|
|
521
|
+
- SDK availability
|
|
522
|
+
→ Feed into technical_capabilities
|
|
523
|
+
|
|
524
|
+
**Step 12: GitHub Presence (if applicable)**
|
|
525
|
+
|
|
526
|
+
```python
|
|
527
|
+
# Parse GitHub profile page
|
|
528
|
+
Anysite:parse_webpage({
|
|
529
|
+
"url": "https://github.com/competitor-org",
|
|
530
|
+
"only_main_content": true
|
|
531
|
+
})
|
|
532
|
+
|
|
533
|
+
# Check main repository
|
|
534
|
+
Anysite:parse_webpage({
|
|
535
|
+
"url": "https://github.com/competitor-org/main-repo",
|
|
536
|
+
"only_main_content": true
|
|
537
|
+
})
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
**Extract:**
|
|
541
|
+
- Star count (developer interest)
|
|
542
|
+
- Fork count (actual usage)
|
|
543
|
+
- Commit frequency (development velocity)
|
|
544
|
+
- Contributors count (community size)
|
|
545
|
+
- Issue response time (support quality)
|
|
546
|
+
- Open source components (ecosystem play)
|
|
547
|
+
|
|
548
|
+
**Step 13: Alternative Data Sources**
|
|
549
|
+
|
|
550
|
+
```python
|
|
551
|
+
# Glassdoor reviews (if company page exists)
|
|
552
|
+
Anysite:parse_webpage({
|
|
553
|
+
"url": "https://www.glassdoor.com/Reviews/competitor-name",
|
|
554
|
+
"only_main_content": true
|
|
555
|
+
})
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
**What to extract:**
|
|
559
|
+
- Overall rating (employee satisfaction)
|
|
560
|
+
- CEO approval rating (leadership quality)
|
|
561
|
+
- Salary ranges (compensation level)
|
|
562
|
+
- Interview difficulty (hiring standards)
|
|
563
|
+
- Work-life balance (culture signal)
|
|
564
|
+
- Recent reviews (current state)
|
|
565
|
+
|
|
566
|
+
**Step 14: Integration Ecosystem**
|
|
567
|
+
|
|
568
|
+
```python
|
|
569
|
+
# Get sitemap to find all pages
|
|
570
|
+
Anysite:get_sitemap({
|
|
571
|
+
"url": "https://competitor.com/sitemap.xml",
|
|
572
|
+
"count": 50
|
|
573
|
+
})
|
|
574
|
+
|
|
575
|
+
# Parse integrations page
|
|
576
|
+
Anysite:parse_webpage({
|
|
577
|
+
"url": "https://competitor.com/integrations",
|
|
578
|
+
"only_main_content": true
|
|
579
|
+
})
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
**Step 14: Integration Ecosystem**
|
|
583
|
+
|
|
584
|
+
```python
|
|
585
|
+
# Get sitemap to find all pages
|
|
586
|
+
Anysite:get_sitemap({
|
|
587
|
+
"url": "https://competitor.com/sitemap.xml",
|
|
588
|
+
"count": 50
|
|
589
|
+
})
|
|
590
|
+
|
|
591
|
+
# Parse integrations page
|
|
592
|
+
Anysite:parse_webpage({
|
|
593
|
+
"url": "https://competitor.com/integrations",
|
|
594
|
+
"only_main_content": true
|
|
595
|
+
})
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
**Extract:**
|
|
599
|
+
- Integration partners → technical_capabilities.integrations
|
|
600
|
+
- Platform focus (Zapier, enterprise tools, etc.)
|
|
601
|
+
- API-first vs GUI-first
|
|
602
|
+
|
|
603
|
+
### Phase 6: Synthesis (15-20 min)
|
|
604
|
+
|
|
605
|
+
**Step 15: Competitive Analysis**
|
|
606
|
+
|
|
607
|
+
Compare findings against your own product:
|
|
608
|
+
|
|
609
|
+
**Strengths (what they do well):**
|
|
610
|
+
- Identify 3-5 clear advantages they have
|
|
611
|
+
- Based on features, pricing, market position, or execution
|
|
612
|
+
|
|
613
|
+
**Weaknesses (where they struggle):**
|
|
614
|
+
- Identify 3-5 clear gaps or problems
|
|
615
|
+
- Missing features, high prices, poor UX, etc.
|
|
616
|
+
|
|
617
|
+
**Opportunities (what you can exploit):**
|
|
618
|
+
- Their weaknesses that you can capitalize on
|
|
619
|
+
- Underserved segments they're missing
|
|
620
|
+
- Messaging/positioning gaps
|
|
621
|
+
|
|
622
|
+
**Threats (what you need to watch):**
|
|
623
|
+
- Their strengths that could hurt you
|
|
624
|
+
- Recent funding or growth
|
|
625
|
+
- Feature development velocity
|
|
626
|
+
|
|
627
|
+
**Step 16: Strategic Insights**
|
|
628
|
+
|
|
629
|
+
Synthesize everything into:
|
|
630
|
+
|
|
631
|
+
**Key Takeaways (3-5 bullets):**
|
|
632
|
+
- Most important findings
|
|
633
|
+
- Clear, actionable insights
|
|
634
|
+
|
|
635
|
+
**Competitive Threats (2-3 bullets):**
|
|
636
|
+
- What they could do to hurt your position
|
|
637
|
+
- Their strategic advantages
|
|
638
|
+
|
|
639
|
+
**Opportunities to Exploit (3-5 bullets):**
|
|
640
|
+
- How to position against them
|
|
641
|
+
- Their vulnerabilities to target
|
|
642
|
+
- Market gaps they're missing
|
|
643
|
+
|
|
644
|
+
**Watch Areas:**
|
|
645
|
+
- Things to monitor quarterly
|
|
646
|
+
- Signals of strategic shifts
|
|
647
|
+
|
|
648
|
+
**Step 17: Generate Final Report**
|
|
649
|
+
|
|
650
|
+
Update the JSON template with all findings, then generate markdown:
|
|
651
|
+
|
|
652
|
+
```python
|
|
653
|
+
import json
|
|
654
|
+
from scripts.analyze_competitor import save_analysis
|
|
655
|
+
|
|
656
|
+
# Load populated template
|
|
657
|
+
with open('/tmp/analysis.json', 'r') as f:
|
|
658
|
+
data = json.load(f)
|
|
659
|
+
|
|
660
|
+
# Generate reports
|
|
661
|
+
json_path, md_path = save_analysis(data)
|
|
662
|
+
print(f"Reports saved:\n JSON: {json_path}\n Markdown: {md_path}")
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
Move final files to outputs:
|
|
666
|
+
```bash
|
|
667
|
+
cp /tmp/analysis.json /mnt/user-data/outputs/
|
|
668
|
+
cp /tmp/analysis.md /mnt/user-data/outputs/
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
## Advanced Techniques
|
|
672
|
+
|
|
673
|
+
### Multi-Competitor Analysis
|
|
674
|
+
|
|
675
|
+
For analyzing 3-5 competitors simultaneously:
|
|
676
|
+
|
|
677
|
+
1. Run analysis workflow for each competitor
|
|
678
|
+
2. Create comparison matrix in spreadsheet format
|
|
679
|
+
3. Focus on key differentiators:
|
|
680
|
+
- Pricing comparison table
|
|
681
|
+
- Feature matrix (rows=features, cols=competitors)
|
|
682
|
+
- Market position map (price vs capabilities)
|
|
683
|
+
- Social presence comparison
|
|
684
|
+
|
|
685
|
+
### Ongoing Monitoring
|
|
686
|
+
|
|
687
|
+
For quarterly updates (not full re-analysis):
|
|
688
|
+
|
|
689
|
+
**Quick check (30 min):**
|
|
690
|
+
```python
|
|
691
|
+
# 1. Re-scrape pricing
|
|
692
|
+
Anysite:parse_webpage({"url": "competitor.com/pricing"})
|
|
693
|
+
|
|
694
|
+
# 2. Check recent posts
|
|
695
|
+
Anysite:get_linkedin_company_posts({"urn": "...", "count": 10})
|
|
696
|
+
|
|
697
|
+
# 3. Employee growth
|
|
698
|
+
Anysite:get_linkedin_company_employees({"companies": ["..."], "count": 20})
|
|
699
|
+
|
|
700
|
+
# 4. Recent mentions
|
|
701
|
+
Anysite:search_twitter_posts({"query": "competitor", "count": 50})
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
Update only changed sections in JSON template.
|
|
705
|
+
|
|
706
|
+
### Battle Card Creation
|
|
707
|
+
|
|
708
|
+
For sales team quick reference:
|
|
709
|
+
|
|
710
|
+
**Focus on:**
|
|
711
|
+
1. Quick facts (1-2 sentences)
|
|
712
|
+
2. Head-to-head feature comparison (table format)
|
|
713
|
+
3. Pricing comparison (clear numbers)
|
|
714
|
+
4. 3 reasons we win
|
|
715
|
+
5. 3 reasons we might lose
|
|
716
|
+
6. Talk tracks ("When they say X, we say Y")
|
|
717
|
+
|
|
718
|
+
Keep to 1-2 pages maximum.
|
|
719
|
+
|
|
720
|
+
## Reference Files
|
|
721
|
+
|
|
722
|
+
When you need detailed guidance:
|
|
723
|
+
|
|
724
|
+
- **Data collection methodology:** See [data_collection.md](references/data_collection.md)
|
|
725
|
+
- Use when unsure which Anysite tools to use
|
|
726
|
+
- Use when planning data gathering strategy
|
|
727
|
+
- Contains detailed tool parameters and extraction techniques
|
|
728
|
+
|
|
729
|
+
- **Analysis frameworks:** See [analysis_frameworks.md](references/analysis_frameworks.md)
|
|
730
|
+
- Use when analyzing specific company types (SaaS vs Enterprise vs Consumer)
|
|
731
|
+
- Use when creating battle cards or competitive matrices
|
|
732
|
+
- Contains templates for different output formats
|
|
733
|
+
|
|
734
|
+
## Common Patterns
|
|
735
|
+
|
|
736
|
+
### Pattern 1: Rapid Assessment (30-45 min)
|
|
737
|
+
|
|
738
|
+
For quick competitive scan:
|
|
739
|
+
1. Homepage + pricing scrape
|
|
740
|
+
2. LinkedIn company profile
|
|
741
|
+
3. Recent social posts (20 total)
|
|
742
|
+
4. Fill core sections only (skip deep dives)
|
|
743
|
+
5. Generate brief summary (1 page)
|
|
744
|
+
|
|
745
|
+
### Pattern 2: Deep Intelligence (2-3 hours)
|
|
746
|
+
|
|
747
|
+
For comprehensive analysis:
|
|
748
|
+
1. Full web presence (7-10 pages)
|
|
749
|
+
2. Complete LinkedIn intelligence
|
|
750
|
+
3. Social media deep dive (50-100 posts/mentions)
|
|
751
|
+
4. Community sentiment analysis
|
|
752
|
+
5. Technical documentation review
|
|
753
|
+
6. Full JSON template populated
|
|
754
|
+
7. Detailed markdown report
|
|
755
|
+
|
|
756
|
+
### Pattern 3: Pricing Focus
|
|
757
|
+
|
|
758
|
+
For pricing-specific analysis:
|
|
759
|
+
1. Scrape all pricing pages
|
|
760
|
+
2. Calculate unit economics
|
|
761
|
+
3. Map tier structures
|
|
762
|
+
4. Compare to market
|
|
763
|
+
5. Identify pricing strategy
|
|
764
|
+
6. Generate pricing comparison table
|
|
765
|
+
|
|
766
|
+
### Pattern 4: Leadership Focus
|
|
767
|
+
|
|
768
|
+
For founder/team intelligence:
|
|
769
|
+
1. Identify all founders and C-level
|
|
770
|
+
2. Deep dive into founder LinkedIn profiles
|
|
771
|
+
3. Analyze personal posting activity (50+ posts)
|
|
772
|
+
4. Track Twitter presence and influence
|
|
773
|
+
5. Map previous company experience
|
|
774
|
+
6. Assess thought leadership quality
|
|
775
|
+
7. Evaluate public credibility
|
|
776
|
+
|
|
777
|
+
**Use when:**
|
|
778
|
+
- Considering partnerships
|
|
779
|
+
- Evaluating acquisition targets
|
|
780
|
+
- Assessing strategic threats
|
|
781
|
+
- Understanding company DNA
|
|
782
|
+
|
|
783
|
+
## Tips for Effective Analysis
|
|
784
|
+
|
|
785
|
+
**Be Systematic:**
|
|
786
|
+
- Follow the phase order
|
|
787
|
+
- Don't skip LinkedIn intelligence (best growth signals)
|
|
788
|
+
- Always check pricing (most volatile data)
|
|
789
|
+
|
|
790
|
+
**Think Strategically:**
|
|
791
|
+
- Not just "what" they do, but "why"
|
|
792
|
+
- Look for patterns in their behavior
|
|
793
|
+
- Consider their constraints (funding, team size)
|
|
794
|
+
|
|
795
|
+
**Verify Claims:**
|
|
796
|
+
- Marketing copy ≠ reality
|
|
797
|
+
- Cross-reference multiple sources
|
|
798
|
+
- Note confidence levels (verified vs estimated)
|
|
799
|
+
|
|
800
|
+
**Focus on Actionable Insights:**
|
|
801
|
+
- Don't just describe, analyze implications
|
|
802
|
+
- What should YOUR company do based on findings?
|
|
803
|
+
- What threats need immediate response?
|
|
804
|
+
|
|
805
|
+
**Document Data Freshness:**
|
|
806
|
+
- Always note analysis date
|
|
807
|
+
- Mark which data is recent vs stale
|
|
808
|
+
- Plan update frequency based on importance
|
|
809
|
+
|
|
810
|
+
## Output Quality Standards
|
|
811
|
+
|
|
812
|
+
**Good competitive analysis includes:**
|
|
813
|
+
- ✅ Clear positioning statement
|
|
814
|
+
- ✅ Quantified metrics (prices, follower counts, team size)
|
|
815
|
+
- ✅ Specific examples (actual quotes, feature lists)
|
|
816
|
+
- ✅ Strategic implications explained
|
|
817
|
+
- ✅ Data sources noted
|
|
818
|
+
- ✅ Confidence levels indicated
|
|
819
|
+
|
|
820
|
+
**Avoid:**
|
|
821
|
+
- ❌ Vague assessments ("they seem good at X")
|
|
822
|
+
- ❌ Unsupported claims ("probably losing money")
|
|
823
|
+
- ❌ Missing pricing details
|
|
824
|
+
- ❌ Outdated data without date stamps
|
|
825
|
+
- ❌ Pure feature lists without analysis
|
|
826
|
+
|
|
827
|
+
## Troubleshooting
|
|
828
|
+
|
|
829
|
+
**"Can't find LinkedIn company":**
|
|
830
|
+
- Try variations of company name
|
|
831
|
+
- Search for CEO name, find company from profile
|
|
832
|
+
- Check if they use different legal name
|
|
833
|
+
|
|
834
|
+
**"Pricing page missing/unclear":**
|
|
835
|
+
- Check /plans, /buy, /subscribe URLs
|
|
836
|
+
- Look for pricing calculator
|
|
837
|
+
- Note "Contact Sales" as signal (enterprise focus)
|
|
838
|
+
|
|
839
|
+
**"No social media presence":**
|
|
840
|
+
- Still document the absence (itself a signal)
|
|
841
|
+
- Check founder personal accounts
|
|
842
|
+
- Look for employee posting activity
|
|
843
|
+
|
|
844
|
+
**"Too much data, overwhelmed":**
|
|
845
|
+
- Start with Phase 1 & 2 only (foundation + LinkedIn)
|
|
846
|
+
- Generate partial report
|
|
847
|
+
- Add Phase 3 & 4 if needed for depth
|