@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.
- package/.claude-plugin/marketplace.json +49 -1
- package/.claude-plugin/plugin.json +5 -1
- package/README.md +27 -33
- package/bin/install.js +186 -135
- package/bundles.json +19 -0
- package/package.json +3 -2
- package/skills/anysite-audience-analysis/SKILL.md +110 -38
- package/skills/anysite-audience-analysis/references/PLATFORM_COVERAGE.md +38 -19
- package/skills/anysite-audience-analysis/references/TOOL_MAPPING.md +16 -11
- package/skills/anysite-brand-reputation/SKILL.md +105 -43
- package/skills/anysite-competitor-analyzer/SKILL.md +170 -111
- package/skills/anysite-competitor-intelligence/SKILL.md +201 -116
- package/skills/anysite-competitor-intelligence/references/ANALYSIS_PATTERNS.md +17 -13
- package/skills/anysite-content-analytics/SKILL.md +101 -33
- package/skills/anysite-crm-account-brief/SKILL.md +71 -0
- package/skills/anysite-crm-audit/SKILL.md +59 -0
- package/skills/anysite-crm-champions/SKILL.md +76 -0
- package/skills/anysite-crm-competitor-intel/SKILL.md +74 -0
- package/skills/anysite-crm-enrich/SKILL.md +84 -0
- package/skills/anysite-crm-lookalikes/SKILL.md +64 -0
- package/skills/anysite-crm-prospect/SKILL.md +90 -0
- package/skills/anysite-crm-score/SKILL.md +72 -0
- package/skills/anysite-crm-setup/SKILL.md +147 -0
- package/skills/anysite-crm-signals/SKILL.md +96 -0
- package/skills/anysite-influencer-discovery/SKILL.md +123 -71
- package/skills/anysite-lead-generation/SKILL.md +288 -256
- package/skills/anysite-lead-generation/references/LINKEDIN_STRATEGIES.md +79 -71
- package/skills/anysite-lead-generation/references/WEB_SCRAPING.md +121 -87
- package/skills/anysite-market-research/SKILL.md +117 -68
- package/skills/anysite-mcp/SKILL.md +128 -0
- package/skills/anysite-mcp-migration/SKILL.md +19 -8
- package/skills/anysite-person-analyzer/SKILL.md +86 -53
- package/skills/anysite-trend-analysis/SKILL.md +119 -55
- package/skills/anysite-vc-analyst/SKILL.md +12 -2
- package/skills/competitor-discovery/SKILL.md +350 -0
- package/skills/customer-pain-mining/SKILL.md +318 -0
- package/skills/positioning-map/SKILL.md +314 -0
|
@@ -17,13 +17,28 @@ Monitor and protect your brand reputation across social media platforms. Track m
|
|
|
17
17
|
|
|
18
18
|
**Coverage**: 65% - Pivoted from review platforms to social media monitoring; strong for Twitter, Reddit, Instagram, YouTube, LinkedIn
|
|
19
19
|
|
|
20
|
+
## v2 Tool Interface
|
|
21
|
+
|
|
22
|
+
All data fetching uses the anysite MCP v2 universal meta-tools:
|
|
23
|
+
|
|
24
|
+
- **`execute(source, category, endpoint, params)`** — fetch data from any source. Returns first page + `cache_key`.
|
|
25
|
+
- **`get_page(cache_key, offset, limit)`** — paginate through results when `next_offset` is returned.
|
|
26
|
+
- **`query_cache(cache_key, conditions, sort_by, aggregate, group_by)`** — filter, sort, or aggregate cached data without new API calls.
|
|
27
|
+
- **`export_data(cache_key, format)`** — export full dataset as CSV, JSON, or JSONL for reports.
|
|
28
|
+
|
|
29
|
+
Always call `discover(source, category)` first if unsure about endpoint names or params.
|
|
30
|
+
|
|
31
|
+
### Error Handling
|
|
32
|
+
|
|
33
|
+
v2 responses may include `llm_hint` fields with guidance on how to fix errors (e.g., wrong URN format, missing params). Always check `llm_hint` in error responses before retrying.
|
|
34
|
+
|
|
20
35
|
## Supported Platforms
|
|
21
36
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
37
|
+
- **Twitter/X**: Real-time mentions, sentiment, viral content
|
|
38
|
+
- **Reddit**: Community discussions, detailed feedback, sentiment
|
|
39
|
+
- **Instagram**: Visual brand mentions, hashtag tracking, influencer posts
|
|
40
|
+
- **YouTube**: Video mentions, comment sentiment, brand coverage
|
|
41
|
+
- **LinkedIn**: Professional mentions, company updates, B2B sentiment
|
|
27
42
|
|
|
28
43
|
## Quick Start
|
|
29
44
|
|
|
@@ -39,12 +54,14 @@ Define:
|
|
|
39
54
|
|
|
40
55
|
Platform searches:
|
|
41
56
|
```
|
|
42
|
-
Twitter:
|
|
43
|
-
Reddit:
|
|
44
|
-
Instagram:
|
|
45
|
-
LinkedIn:
|
|
57
|
+
Twitter: execute("twitter", "search", "search_posts", {"query": "brand name", "count": 100})
|
|
58
|
+
Reddit: execute("reddit", "search", "search_posts", {"query": "brand name", "count": 100})
|
|
59
|
+
Instagram: execute("instagram", "search", "search_posts", {"query": "#brandname", "count": 100})
|
|
60
|
+
LinkedIn: execute("linkedin", "post", "search_posts", {"keywords": "brand name", "count": 50})
|
|
46
61
|
```
|
|
47
62
|
|
|
63
|
+
Each call returns a `cache_key` — use it for pagination, filtering, and export.
|
|
64
|
+
|
|
48
65
|
**Step 3: Analyze Sentiment**
|
|
49
66
|
|
|
50
67
|
For each mention:
|
|
@@ -52,6 +69,8 @@ For each mention:
|
|
|
52
69
|
- Categorize: Complaint, praise, question, general
|
|
53
70
|
- Prioritize: Urgency, reach, influence
|
|
54
71
|
|
|
72
|
+
Use `query_cache(cache_key, conditions=[...], sort_by=...)` to filter high-engagement or negative mentions without re-fetching.
|
|
73
|
+
|
|
55
74
|
**Step 4: Take Action**
|
|
56
75
|
|
|
57
76
|
Based on findings:
|
|
@@ -71,25 +90,39 @@ Based on findings:
|
|
|
71
90
|
1. **Search All Platforms**
|
|
72
91
|
```
|
|
73
92
|
# Twitter (real-time pulse)
|
|
74
|
-
|
|
75
|
-
|
|
93
|
+
execute("twitter", "search", "search_posts", {"query": "brand name OR @brandhandle", "count": 100})
|
|
94
|
+
→ Returns cache_key_twitter; filter last 24h with from_date param (timestamp)
|
|
76
95
|
|
|
77
96
|
# Reddit (detailed discussions)
|
|
78
|
-
|
|
79
|
-
|
|
97
|
+
execute("reddit", "search", "search_posts", {"query": "brand name", "count": 50, "time_filter": "day"})
|
|
98
|
+
→ Returns cache_key_reddit
|
|
80
99
|
|
|
81
100
|
# Instagram (visual mentions)
|
|
82
|
-
|
|
101
|
+
execute("instagram", "search", "search_posts", {"query": "#brandname OR brand name", "count": 50})
|
|
102
|
+
→ Returns cache_key_instagram
|
|
83
103
|
|
|
84
104
|
# LinkedIn (professional mentions)
|
|
85
|
-
|
|
105
|
+
execute("linkedin", "post", "search_posts", {"keywords": "brand name", "count": 20})
|
|
106
|
+
→ Returns cache_key_linkedin
|
|
86
107
|
|
|
87
108
|
# YouTube (video coverage)
|
|
88
|
-
|
|
109
|
+
execute("youtube", "search", "search_videos", {"query": "brand name review OR brand name unboxing", "count": 20})
|
|
110
|
+
→ Returns cache_key_youtube
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
If any result includes `next_offset`, fetch more with:
|
|
114
|
+
```
|
|
115
|
+
get_page(cache_key, offset=next_offset, limit=50)
|
|
89
116
|
```
|
|
90
117
|
|
|
91
118
|
2. **Classify Mentions**
|
|
119
|
+
|
|
120
|
+
Use `query_cache` to sort and filter cached results:
|
|
92
121
|
```
|
|
122
|
+
# Find high-engagement mentions across platforms
|
|
123
|
+
query_cache(cache_key_twitter, sort_by=[{"field": "favorite_count", "order": "desc"}])
|
|
124
|
+
query_cache(cache_key_reddit, sort_by=[{"field": "vote_count", "order": "desc"}])
|
|
125
|
+
|
|
93
126
|
For each mention:
|
|
94
127
|
|
|
95
128
|
Sentiment:
|
|
@@ -126,7 +159,13 @@ Low Priority:
|
|
|
126
159
|
```
|
|
127
160
|
|
|
128
161
|
4. **Generate Daily Report**
|
|
162
|
+
|
|
163
|
+
Export data for reporting:
|
|
129
164
|
```
|
|
165
|
+
export_data(cache_key_twitter, "csv")
|
|
166
|
+
export_data(cache_key_reddit, "csv")
|
|
167
|
+
→ Returns download URLs for each dataset
|
|
168
|
+
|
|
130
169
|
Summary:
|
|
131
170
|
- Total mentions (by platform)
|
|
132
171
|
- Sentiment breakdown (% positive/negative/neutral)
|
|
@@ -164,16 +203,21 @@ Alert triggers:
|
|
|
164
203
|
```
|
|
165
204
|
When alert triggered:
|
|
166
205
|
|
|
167
|
-
|
|
168
|
-
→ Identify what's driving spike
|
|
206
|
+
execute("twitter", "search", "search_posts", {"query": "brand name", "count": 500})
|
|
207
|
+
→ Identify what's driving spike; use get_page() to load all results
|
|
169
208
|
|
|
170
|
-
|
|
209
|
+
execute("reddit", "search", "search_posts", {"query": "brand name", "count": 200})
|
|
171
210
|
→ Check community discussions
|
|
172
211
|
|
|
173
212
|
For viral posts:
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
213
|
+
# Get specific Reddit post details and comments
|
|
214
|
+
execute("reddit", "posts", "posts", {"post_url": "<reddit_post_url>"})
|
|
215
|
+
execute("reddit", "posts", "posts_comments", {"post_url": "<reddit_post_url>"})
|
|
216
|
+
→ Analyze reach and engagement, read comments for context
|
|
217
|
+
|
|
218
|
+
# For viral tweets, scrape the tweet URL directly
|
|
219
|
+
execute("webparser", "parse", "parse", {"url": "<tweet_url>"})
|
|
220
|
+
→ Get tweet details and engagement metrics
|
|
177
221
|
```
|
|
178
222
|
|
|
179
223
|
3. **Assess Crisis Severity**
|
|
@@ -184,6 +228,10 @@ Severity factors:
|
|
|
184
228
|
- Reach (influencer involvement, media coverage)
|
|
185
229
|
- Sentiment (how negative)
|
|
186
230
|
- Validity (legitimate issue vs. misunderstanding)
|
|
231
|
+
|
|
232
|
+
Use query_cache to analyze cached data:
|
|
233
|
+
query_cache(cache_key, aggregate=[{"function": "count"}])
|
|
234
|
+
→ Total mention count without re-fetching
|
|
187
235
|
```
|
|
188
236
|
|
|
189
237
|
4. **Track Crisis Evolution**
|
|
@@ -225,15 +273,24 @@ List 3-5 main competitors
|
|
|
225
273
|
2. **Gather Mentions for All**
|
|
226
274
|
```
|
|
227
275
|
For brand + each competitor:
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
276
|
+
execute("twitter", "search", "search_posts", {"query": "<brand>", "count": 200})
|
|
277
|
+
execute("reddit", "search", "search_posts", {"query": "<brand>", "count": 100})
|
|
278
|
+
execute("linkedin", "post", "search_posts", {"keywords": "<brand>", "count": 50})
|
|
279
|
+
|
|
280
|
+
Each returns a cache_key — use get_page() if next_offset indicates more data.
|
|
231
281
|
```
|
|
232
282
|
|
|
233
283
|
3. **Calculate Brand Health Scores**
|
|
234
284
|
```
|
|
235
285
|
For each brand:
|
|
236
286
|
|
|
287
|
+
Use query_cache to aggregate metrics from cached results:
|
|
288
|
+
query_cache(cache_key, aggregate=[{"function": "count"}])
|
|
289
|
+
→ Total mention volume
|
|
290
|
+
|
|
291
|
+
query_cache(cache_key, aggregate=[{"function": "avg", "field": "favorite_count"}])
|
|
292
|
+
→ Average engagement per mention
|
|
293
|
+
|
|
237
294
|
Mention Volume: Total mentions
|
|
238
295
|
Sentiment Score: (Positive - Negative) / Total
|
|
239
296
|
Engagement Rate: Avg engagement per mention
|
|
@@ -264,31 +321,36 @@ Look for:
|
|
|
264
321
|
- Strength/weakness analysis
|
|
265
322
|
- Strategic opportunities
|
|
266
323
|
|
|
267
|
-
## MCP Tools Reference
|
|
324
|
+
## MCP Tools Reference (v2)
|
|
268
325
|
|
|
269
326
|
### Twitter/X
|
|
270
|
-
- `
|
|
271
|
-
- `
|
|
272
|
-
- `
|
|
327
|
+
- `execute("twitter", "search", "search_posts", {"query": ..., "count": N})` — Find brand mentions. Supports `from_date`, `to_date`, `min_likes`, `min_retweets`, `language` filters.
|
|
328
|
+
- `execute("twitter", "user", "user", {"user": ...})` — Check brand profile stats
|
|
329
|
+
- `execute("twitter", "user", "user_posts", {"user": ..., "count": N})` — Monitor brand account posts
|
|
273
330
|
|
|
274
331
|
### Reddit
|
|
275
|
-
- `
|
|
276
|
-
- `
|
|
277
|
-
- `
|
|
332
|
+
- `execute("reddit", "search", "search_posts", {"query": ..., "count": N})` — Find discussions. Supports `sort` (relevance/hot/top/new) and `time_filter` (day/week/month/year).
|
|
333
|
+
- `execute("reddit", "posts", "posts", {"post_url": ...})` — Get post details and sentiment
|
|
334
|
+
- `execute("reddit", "posts", "posts_comments", {"post_url": ...})` — Deep dive on discussions
|
|
278
335
|
|
|
279
336
|
### Instagram
|
|
280
|
-
- `
|
|
281
|
-
- `
|
|
282
|
-
- `
|
|
337
|
+
- `execute("instagram", "search", "search_posts", {"query": ..., "count": N})` — Find visual mentions
|
|
338
|
+
- `execute("instagram", "post", "post", {"post": ...})` — Analyze mention engagement
|
|
339
|
+
- `execute("instagram", "post", "post_comments", {"post": ..., "count": N})` — Read feedback
|
|
283
340
|
|
|
284
341
|
### YouTube
|
|
285
|
-
- `
|
|
286
|
-
- `
|
|
287
|
-
- `
|
|
342
|
+
- `execute("youtube", "search", "search_videos", {"query": ..., "count": N})` — Find video mentions
|
|
343
|
+
- `execute("youtube", "video", "video", {"video": ...})` — Get video details
|
|
344
|
+
- `execute("youtube", "video", "video_comments", {"video": ..., "count": N})` — Analyze sentiment
|
|
288
345
|
|
|
289
346
|
### LinkedIn
|
|
290
|
-
- `
|
|
291
|
-
- `
|
|
347
|
+
- `execute("linkedin", "post", "search_posts", {"keywords": ..., "count": N})` — Professional mentions
|
|
348
|
+
- `execute("linkedin", "company", "company_posts", {"urn": {"type": "company", "value": "<id>"}, "count": N})` — Monitor own company posts. Requires company URN from `execute("linkedin", "company", "company", {"company": "<alias>"})`.
|
|
349
|
+
|
|
350
|
+
### Pagination, Caching & Export
|
|
351
|
+
- `get_page(cache_key, offset, limit)` — Load next page of results from any execute() call
|
|
352
|
+
- `query_cache(cache_key, conditions, sort_by, aggregate, group_by)` — Filter/sort/aggregate cached data without new API calls
|
|
353
|
+
- `export_data(cache_key, "csv"|"json"|"jsonl")` — Export full dataset as downloadable file
|
|
292
354
|
|
|
293
355
|
## Sentiment Analysis Framework
|
|
294
356
|
|
|
@@ -314,7 +376,7 @@ Look for:
|
|
|
314
376
|
|
|
315
377
|
**Sentiment Score**:
|
|
316
378
|
```
|
|
317
|
-
Score = (Positive mentions - Negative mentions) / Total mentions
|
|
379
|
+
Score = (Positive mentions - Negative mentions) / Total mentions x 100
|
|
318
380
|
|
|
319
381
|
+50 to +100: Excellent
|
|
320
382
|
+20 to +49: Good
|
|
@@ -354,12 +416,12 @@ Score = (Positive mentions - Negative mentions) / Total mentions × 100
|
|
|
354
416
|
- Top issues identified
|
|
355
417
|
- Recommended actions
|
|
356
418
|
|
|
357
|
-
**CSV Export
|
|
419
|
+
**CSV Export** (via `export_data(cache_key, "csv")`):
|
|
358
420
|
- Mention list with sentiment
|
|
359
421
|
- Platform, date, reach
|
|
360
422
|
- Issue categorization
|
|
361
423
|
|
|
362
|
-
**JSON Export
|
|
424
|
+
**JSON Export** (via `export_data(cache_key, "json")`):
|
|
363
425
|
- Complete mention data
|
|
364
426
|
- Time-series sentiment
|
|
365
427
|
- Engagement metrics
|