@anysiteio/agent-skills 1.4.0 → 2.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.
Files changed (37) hide show
  1. package/.claude-plugin/marketplace.json +49 -1
  2. package/.claude-plugin/plugin.json +5 -1
  3. package/README.md +27 -33
  4. package/bin/install.js +186 -135
  5. package/bundles.json +19 -0
  6. package/package.json +3 -2
  7. package/skills/anysite-audience-analysis/SKILL.md +110 -38
  8. package/skills/anysite-audience-analysis/references/PLATFORM_COVERAGE.md +38 -19
  9. package/skills/anysite-audience-analysis/references/TOOL_MAPPING.md +16 -11
  10. package/skills/anysite-brand-reputation/SKILL.md +105 -43
  11. package/skills/anysite-competitor-analyzer/SKILL.md +170 -111
  12. package/skills/anysite-competitor-intelligence/SKILL.md +201 -116
  13. package/skills/anysite-competitor-intelligence/references/ANALYSIS_PATTERNS.md +17 -13
  14. package/skills/anysite-content-analytics/SKILL.md +101 -33
  15. package/skills/anysite-crm-account-brief/SKILL.md +71 -0
  16. package/skills/anysite-crm-audit/SKILL.md +59 -0
  17. package/skills/anysite-crm-champions/SKILL.md +76 -0
  18. package/skills/anysite-crm-competitor-intel/SKILL.md +74 -0
  19. package/skills/anysite-crm-enrich/SKILL.md +84 -0
  20. package/skills/anysite-crm-lookalikes/SKILL.md +64 -0
  21. package/skills/anysite-crm-prospect/SKILL.md +90 -0
  22. package/skills/anysite-crm-score/SKILL.md +72 -0
  23. package/skills/anysite-crm-setup/SKILL.md +147 -0
  24. package/skills/anysite-crm-signals/SKILL.md +96 -0
  25. package/skills/anysite-influencer-discovery/SKILL.md +123 -71
  26. package/skills/anysite-lead-generation/SKILL.md +288 -256
  27. package/skills/anysite-lead-generation/references/LINKEDIN_STRATEGIES.md +79 -71
  28. package/skills/anysite-lead-generation/references/WEB_SCRAPING.md +121 -87
  29. package/skills/anysite-market-research/SKILL.md +117 -68
  30. package/skills/anysite-mcp/SKILL.md +128 -0
  31. package/skills/anysite-mcp-migration/SKILL.md +19 -8
  32. package/skills/anysite-person-analyzer/SKILL.md +86 -53
  33. package/skills/anysite-trend-analysis/SKILL.md +119 -55
  34. package/skills/anysite-vc-analyst/SKILL.md +12 -2
  35. package/skills/competitor-discovery/SKILL.md +350 -0
  36. package/skills/customer-pain-mining/SKILL.md +318 -0
  37. package/skills/positioning-map/SKILL.md +314 -0
@@ -1,6 +1,6 @@
1
1
  # LinkedIn Lead Generation Strategies
2
2
 
3
- Advanced strategies and best practices for LinkedIn prospecting using anysite MCP.
3
+ Advanced strategies and best practices for LinkedIn prospecting using anysite MCP v2.
4
4
 
5
5
  ## Boolean Search Operators
6
6
 
@@ -111,18 +111,22 @@ location:"United Kingdom"
111
111
  **Search Strategy**:
112
112
  ```
113
113
  Step 1: Find Companies
114
- - keywords: "B2B SaaS" OR "Enterprise Software"
115
- - employee_count: ["201-500", "501-1000", "1001-5000"]
116
- - industry: "Computer Software"
114
+ execute("linkedin", "search", "search_companies", {
115
+ "keywords": "B2B SaaS OR Enterprise Software",
116
+ "employee_count": ["201-500", "501-1000", "1001-5000"],
117
+ "industry": "Computer Software"
118
+ })
117
119
 
118
120
  Step 2: Find Decision-Makers
119
- - company_keywords: <from step 1>
120
- - title: "VP" OR "SVP" OR "Chief" OR "Head of"
121
- - keywords: "Sales" OR "Revenue" OR "GTM" OR "Business Development"
121
+ execute("linkedin", "search", "search_users", {
122
+ "company_keywords": "<from step 1>",
123
+ "title": "VP OR SVP OR Chief OR Head of",
124
+ "keywords": "Sales OR Revenue OR GTM OR Business Development"
125
+ })
122
126
  ```
123
127
 
124
128
  **Refinement**:
125
- - Filter for companies with recent funding (check YC or Crunchbase)
129
+ - Filter for companies with recent funding (check YC data via `execute("yc", "search", "search", {"query": ...})`)
126
130
  - Prioritize companies with 100+ LinkedIn followers
127
131
  - Target specific verticals (HR Tech, Sales Tech, Marketing Tech)
128
132
 
@@ -133,24 +137,25 @@ Step 2: Find Decision-Makers
133
137
  **Search Strategy**:
134
138
  ```
135
139
  Step 1: Find Startups (Y Combinator)
136
- - search_yc_companies
137
- - batches: Recent batches (W24, S23, W23)
138
- - industries: <your target verticals>
140
+ execute("yc", "search", "search", {"query": "<your target verticals>"})
141
+ - Filter by recent batches (W24, S23, W23)
139
142
 
140
143
  Step 2: Find Founders
141
- - get_yc_company Extract founder LinkedIn profiles
142
- - title: "Founder" OR "Co-Founder" OR "CEO"
144
+ execute("yc", "company", "get", {"slug": "<company_slug>"})
145
+ -> Extract founder LinkedIn profiles
143
146
 
144
147
  Step 3: Find Early Team
145
- - company_keywords: <startup names from step 1>
146
- - title: "Head of" OR "VP" OR "Lead"
148
+ execute("linkedin", "search", "search_users", {
149
+ "company_keywords": "<startup names from step 1>",
150
+ "title": "Head of OR VP OR Lead"
151
+ })
147
152
  - Filter for <50 total employees
148
153
  ```
149
154
 
150
155
  **Refinement**:
151
156
  - Target companies that recently raised funding
152
157
  - Focus on specific YC batches or industries
153
- - Look for hiring signals (job postings, team growth)
158
+ - Look for hiring signals (job postings via `execute("linkedin", "job_search", "search_jobs", {...})`, team growth)
154
159
 
155
160
  ### Agency/Services
156
161
 
@@ -159,13 +164,17 @@ Step 3: Find Early Team
159
164
  **Search Strategy**:
160
165
  ```
161
166
  Step 1: Find Agencies
162
- - keywords: "Agency" OR "Services" OR "Consulting"
163
- - employee_count: ["11-50", "51-200"]
164
- - industry: <specific agency type>
167
+ execute("linkedin", "search", "search_companies", {
168
+ "keywords": "Agency OR Services OR Consulting",
169
+ "employee_count": ["11-50", "51-200"],
170
+ "industry": "<specific agency type>"
171
+ })
165
172
 
166
173
  Step 2: Find Owners/Principals
167
- - title: "Owner" OR "Founder" OR "Principal" OR "Managing Director"
168
- - company_keywords: <agency names>
174
+ execute("linkedin", "search", "search_users", {
175
+ "title": "Owner OR Founder OR Principal OR Managing Director",
176
+ "company_keywords": "<agency names>"
177
+ })
169
178
  ```
170
179
 
171
180
  **Refinement**:
@@ -228,16 +237,18 @@ Step 2: Find Owners/Principals
228
237
  Example:
229
238
  ```
230
239
  Parallel Batch 1:
231
- - search_linkedin_users(location="San Francisco", count=50)
232
- - search_linkedin_users(location="New York", count=50)
233
- - search_linkedin_users(location="Austin", count=50)
240
+ execute("linkedin", "search", "search_users", {"location": "San Francisco", "count": 50})
241
+ execute("linkedin", "search", "search_users", {"location": "New York", "count": 50})
242
+ execute("linkedin", "search", "search_users", {"location": "Austin", "count": 50})
234
243
 
235
- After review, Parallel Batch 2:
236
- - Enrich top 10 from San Francisco
237
- - Enrich top 10 from New York
238
- - Enrich top 10 from Austin
244
+ After review, Parallel Batch 2 (enrich top 10 from each using cache_key + query_cache to filter):
245
+ execute("linkedin", "user", "get", {"user": "<sf_prospect>"})
246
+ execute("linkedin", "user", "get", {"user": "<ny_prospect>"})
247
+ execute("linkedin", "user", "get", {"user": "<austin_prospect>"})
239
248
  ```
240
249
 
250
+ **Pagination**: When a search returns `next_offset`, use `get_page(cache_key, next_offset, limit)` to load more results without re-executing.
251
+
241
252
  ## Qualification Frameworks
242
253
 
243
254
  ### BANT Framework (Budget, Authority, Need, Timeline)
@@ -246,7 +257,7 @@ After review, Parallel Batch 2:
246
257
  ```
247
258
  Check:
248
259
  - Employee count (proxy for budget)
249
- - Recent funding rounds (via YC or company posts)
260
+ - Recent funding rounds (via YC data: execute("yc", "search", "search", {"query": ...}))
250
261
  - Company description for "Enterprise" or "SMB"
251
262
  ```
252
263
 
@@ -262,8 +273,8 @@ Target titles:
262
273
  **Need** - Problem awareness
263
274
  ```
264
275
  Research:
265
- - LinkedIn posts about challenges
266
- - Job postings for relevant roles
276
+ - LinkedIn posts about challenges (execute("linkedin", "post", "search_posts", {"query": ...}))
277
+ - Job postings for relevant roles (execute("linkedin", "job_search", "search_jobs", {...}))
267
278
  - Company growth signals
268
279
  - Industry trends
269
280
  ```
@@ -284,7 +295,7 @@ Indicators:
284
295
  **Situation** - Current state analysis
285
296
  ```
286
297
  Research company:
287
- - Recent news and LinkedIn posts
298
+ - Recent news and LinkedIn posts (execute("linkedin", "post", "get_user_posts", {"user": ...}))
288
299
  - Company growth trajectory
289
300
  - Team expansion signals
290
301
  - Technology stack (from jobs)
@@ -336,13 +347,15 @@ Identify:
336
347
  - **40-59**: Qualified
337
348
  - **<40**: Nurture or discard
338
349
 
350
+ Use `query_cache()` to filter and sort by score after enrichment.
351
+
339
352
  ## Personalization Research
340
353
 
341
354
  ### Profile Intelligence
342
355
 
343
356
  **Work History**:
344
357
  ```
345
- get_linkedin_profile + with_experience: true
358
+ execute("linkedin", "user", "get", {"user": "<username>", "with_experience": true})
346
359
 
347
360
  Extract:
348
361
  - Career progression (promotions, moves)
@@ -353,7 +366,7 @@ Extract:
353
366
 
354
367
  **Education**:
355
368
  ```
356
- get_linkedin_profile + with_education: true
369
+ execute("linkedin", "user", "get", {"user": "<username>", "with_education": true})
357
370
 
358
371
  Look for:
359
372
  - Alma mater (school connections)
@@ -364,7 +377,7 @@ Look for:
364
377
 
365
378
  **Skills & Expertise**:
366
379
  ```
367
- get_linkedin_user_skills
380
+ execute("linkedin", "user", "get", {"user": "<username>", "with_skills": true})
368
381
 
369
382
  Identify:
370
383
  - Technical skills (for product fit)
@@ -377,7 +390,7 @@ Identify:
377
390
 
378
391
  **Company Profile**:
379
392
  ```
380
- get_linkedin_company
393
+ execute("linkedin", "company", "get", {"company": "<company>"})
381
394
 
382
395
  Analyze:
383
396
  - Company description (positioning)
@@ -388,7 +401,7 @@ Analyze:
388
401
 
389
402
  **Recent Activity**:
390
403
  ```
391
- get_linkedin_company_posts
404
+ execute("linkedin", "post", "get_user_posts", {"user": "<company_page>"})
392
405
 
393
406
  Review:
394
407
  - Announcement posts (expansion, funding, hiring)
@@ -399,7 +412,7 @@ Review:
399
412
 
400
413
  **Team Growth**:
401
414
  ```
402
- get_linkedin_company_employee_stats
415
+ discover("linkedin", "company") -> find employee stats endpoint -> execute(...)
403
416
 
404
417
  Track:
405
418
  - Hiring velocity (growth rate)
@@ -440,29 +453,24 @@ Track:
440
453
 
441
454
  **Method 1**: Direct Email Finding
442
455
  ```
443
- find_linkedin_user_email(email="prospect@company.com")
444
- ```
445
-
446
- **Method 2**: Database Lookup
447
- ```
448
- get_linkedin_user_email_db(profile="linkedin.com/in/prospect")
456
+ execute("linkedin", "email", "find", {"user": "<prospect_username>"})
449
457
  ```
450
458
 
451
- **Method 3**: Contact Info Section
459
+ **Method 2**: Contact Info from Profile
452
460
  ```
453
- get_linkedin_profile(user, with_experience=true)
454
- Check profile for contact info section
455
- May include email, phone, website
461
+ execute("linkedin", "user", "get", {"user": "<username>", "with_experience": true})
462
+ -> Check profile for contact info section
463
+ -> May include email, phone, website
456
464
  ```
457
465
 
458
466
  ### Website Email Extraction
459
467
 
460
468
  **Contact Page Pattern**:
461
469
  ```
462
- parse_webpage(
463
- url="https://company.com/contact",
464
- extract_contacts=true
465
- )
470
+ execute("webparser", "parse", "parse", {
471
+ "url": "https://company.com/contact",
472
+ "extract_contacts": true
473
+ })
466
474
 
467
475
  Common contact pages:
468
476
  - /contact
@@ -474,10 +482,10 @@ Common contact pages:
474
482
 
475
483
  **Team/About Page Pattern**:
476
484
  ```
477
- parse_webpage(
478
- url="https://company.com/about/team",
479
- extract_contacts=true
480
- )
485
+ execute("webparser", "parse", "parse", {
486
+ "url": "https://company.com/about/team",
487
+ "extract_contacts": true
488
+ })
481
489
 
482
490
  Common team pages:
483
491
  - /team
@@ -491,13 +499,13 @@ Common team pages:
491
499
  **Sitemap Discovery**:
492
500
  ```
493
501
  Step 1: Get sitemap
494
- get_sitemap(url="https://company.com", count=100)
502
+ discover("webparser", "parse") -> find sitemap endpoint -> execute(...)
495
503
 
496
504
  Step 2: Filter for contact-related pages
497
- Look for: contact, team, about, leadership, people
505
+ -> Look for: contact, team, about, leadership, people
498
506
 
499
507
  Step 3: Parse identified pages
500
- parse_webpage(url, extract_contacts=true) for each page
508
+ execute("webparser", "parse", "parse", {"url": "<page_url>", "extract_contacts": true}) for each page
501
509
  ```
502
510
 
503
511
  ### Email Pattern Guessing
@@ -551,14 +559,14 @@ janes@techcorp.com
551
559
  ```
552
560
  Target: TechCorp
553
561
 
554
- search_linkedin_users(company_keywords="TechCorp", title="CTO")
555
- Economic Buyer: John Smith, CTO
562
+ execute("linkedin", "search", "search_users", {"company_keywords": "TechCorp", "title": "CTO"})
563
+ -> Economic Buyer: John Smith, CTO
556
564
 
557
- search_linkedin_users(company_keywords="TechCorp", title="VP Engineering")
558
- Decision Maker: Jane Doe, VP Engineering
565
+ execute("linkedin", "search", "search_users", {"company_keywords": "TechCorp", "title": "VP Engineering"})
566
+ -> Decision Maker: Jane Doe, VP Engineering
559
567
 
560
- search_linkedin_users(company_keywords="TechCorp", title="Director")
561
- Influencer: Bob Johnson, Director of Platform
568
+ execute("linkedin", "search", "search_users", {"company_keywords": "TechCorp", "title": "Director"})
569
+ -> Influencer: Bob Johnson, Director of Platform
562
570
 
563
571
  Outreach sequence:
564
572
  Day 1: Contact Jane (VP) - decision maker
@@ -579,8 +587,8 @@ Characteristics:
579
587
 
580
588
  **Research Workflow**:
581
589
  ```
582
- 1. get_linkedin_profile(champion)
583
- 2. get_linkedin_user_posts(champion, count=20)
590
+ 1. execute("linkedin", "user", "get", {"user": "<champion>"})
591
+ 2. execute("linkedin", "post", "get_user_posts", {"user": "<champion>", "count": 20})
584
592
  3. Analyze:
585
593
  - Topics they care about
586
594
  - Problems they discuss
@@ -613,7 +621,7 @@ San Francisco,Software,201-500,LinkedIn,85,Active on LinkedIn
613
621
  ```
614
622
 
615
623
  **Import Process**:
616
- 1. Export prospects as CSV
624
+ 1. Export prospects via `export_data(cache_key, "csv")`
617
625
  2. Map CSV columns to Salesforce fields
618
626
  3. Import via Data Loader or manual import
619
627
  4. Assign to sales reps
@@ -634,8 +642,8 @@ techcorp.com,TechCorp,Computer Software,350,linkedin.com/company/techcorp
634
642
  ```
635
643
 
636
644
  **Import Process**:
637
- 1. Export contacts CSV
638
- 2. Export companies CSV (from LinkedIn company data)
645
+ 1. Export contacts via `export_data(cache_key, "csv")`
646
+ 2. Export companies CSV (from LinkedIn company data cache)
639
647
  3. Import companies first
640
648
  4. Import contacts (will associate with companies)
641
649
  5. Create workflows for engagement
@@ -656,7 +664,7 @@ jane@tech.com,Jane,Smith,VP Sales,TechCorp,linkedin.com/in/janesmith,Personaliza
656
664
  **Sequence Setup**:
657
665
  1. Import prospects with variables
658
666
  2. Create email templates using {{Custom1}}, {{Custom2}}, etc.
659
- 3. Set up multi-touch sequence (Email Wait LinkedIn Wait Call)
667
+ 3. Set up multi-touch sequence (Email -> Wait -> LinkedIn -> Wait -> Call)
660
668
  4. Track engagement and replies
661
669
 
662
670
  ## Compliance & Best Practices