@crowdlisten/harness 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/AGENTS.md +167 -0
- package/LICENSE +21 -0
- package/README.md +153 -0
- package/dist/agent-proxy.d.ts +24 -0
- package/dist/agent-proxy.js +140 -0
- package/dist/agent-tools.d.ts +736 -0
- package/dist/agent-tools.js +409 -0
- package/dist/context/api.d.ts +5 -0
- package/dist/context/api.js +164 -0
- package/dist/context/cli.d.ts +19 -0
- package/dist/context/cli.js +108 -0
- package/dist/context/extractor.d.ts +12 -0
- package/dist/context/extractor.js +43 -0
- package/dist/context/index.d.ts +12 -0
- package/dist/context/index.js +11 -0
- package/dist/context/matcher.d.ts +39 -0
- package/dist/context/matcher.js +246 -0
- package/dist/context/parser.d.ts +28 -0
- package/dist/context/parser.js +157 -0
- package/dist/context/pipeline.d.ts +26 -0
- package/dist/context/pipeline.js +56 -0
- package/dist/context/prompts.d.ts +6 -0
- package/dist/context/prompts.js +60 -0
- package/dist/context/providers.d.ts +6 -0
- package/dist/context/providers.js +106 -0
- package/dist/context/redactor.d.ts +10 -0
- package/dist/context/redactor.js +68 -0
- package/dist/context/server.d.ts +5 -0
- package/dist/context/server.js +134 -0
- package/dist/context/store.d.ts +12 -0
- package/dist/context/store.js +82 -0
- package/dist/context/types.d.ts +79 -0
- package/dist/context/types.js +4 -0
- package/dist/context/user-state.d.ts +40 -0
- package/dist/context/user-state.js +144 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +385 -0
- package/dist/insights/browser/BrowserPool.d.ts +87 -0
- package/dist/insights/browser/BrowserPool.js +266 -0
- package/dist/insights/browser/RequestInterceptor.d.ts +46 -0
- package/dist/insights/browser/RequestInterceptor.js +115 -0
- package/dist/insights/cli.d.ts +8 -0
- package/dist/insights/cli.js +206 -0
- package/dist/insights/core/base/BaseAdapter.d.ts +37 -0
- package/dist/insights/core/base/BaseAdapter.js +123 -0
- package/dist/insights/core/health/HealthMonitor.d.ts +75 -0
- package/dist/insights/core/health/HealthMonitor.js +171 -0
- package/dist/insights/core/interfaces/SocialMediaPlatform.d.ts +125 -0
- package/dist/insights/core/interfaces/SocialMediaPlatform.js +42 -0
- package/dist/insights/core/utils/DataNormalizer.d.ts +53 -0
- package/dist/insights/core/utils/DataNormalizer.js +349 -0
- package/dist/insights/core/utils/InstagramUrlUtils.d.ts +11 -0
- package/dist/insights/core/utils/InstagramUrlUtils.js +60 -0
- package/dist/insights/core/utils/TikTokUrlUtils.d.ts +10 -0
- package/dist/insights/core/utils/TikTokUrlUtils.js +57 -0
- package/dist/insights/handlers.d.ts +157 -0
- package/dist/insights/handlers.js +246 -0
- package/dist/insights/index.d.ts +437 -0
- package/dist/insights/index.js +426 -0
- package/dist/insights/platforms/instagram/InstagramAdapter.d.ts +34 -0
- package/dist/insights/platforms/instagram/InstagramAdapter.js +342 -0
- package/dist/insights/platforms/moltbook/MoltbookAdapter.d.ts +31 -0
- package/dist/insights/platforms/moltbook/MoltbookAdapter.js +227 -0
- package/dist/insights/platforms/reddit/RedditAdapter.d.ts +21 -0
- package/dist/insights/platforms/reddit/RedditAdapter.js +212 -0
- package/dist/insights/platforms/tiktok/TikTokAdapter.d.ts +34 -0
- package/dist/insights/platforms/tiktok/TikTokAdapter.js +269 -0
- package/dist/insights/platforms/twitter/TwitterAdapter.d.ts +23 -0
- package/dist/insights/platforms/twitter/TwitterAdapter.js +211 -0
- package/dist/insights/platforms/xiaohongshu/XiaohongshuAdapter.d.ts +35 -0
- package/dist/insights/platforms/xiaohongshu/XiaohongshuAdapter.js +258 -0
- package/dist/insights/platforms/youtube/YouTubeAdapter.d.ts +22 -0
- package/dist/insights/platforms/youtube/YouTubeAdapter.js +254 -0
- package/dist/insights/service-config.d.ts +7 -0
- package/dist/insights/service-config.js +60 -0
- package/dist/insights/services/UnifiedSocialMediaService.d.ts +94 -0
- package/dist/insights/services/UnifiedSocialMediaService.js +259 -0
- package/dist/insights/vision/VisionExtractor.d.ts +46 -0
- package/dist/insights/vision/VisionExtractor.js +236 -0
- package/dist/learnings.d.ts +50 -0
- package/dist/learnings.js +130 -0
- package/dist/openapi.d.ts +29 -0
- package/dist/openapi.js +169 -0
- package/dist/server-factory.d.ts +20 -0
- package/dist/server-factory.js +41 -0
- package/dist/suggestions.d.ts +16 -0
- package/dist/suggestions.js +72 -0
- package/dist/telemetry.d.ts +44 -0
- package/dist/telemetry.js +93 -0
- package/dist/tools/registry.d.ts +65 -0
- package/dist/tools/registry.js +256 -0
- package/dist/tools.d.ts +2433 -0
- package/dist/tools.js +2294 -0
- package/dist/transport/http.d.ts +15 -0
- package/dist/transport/http.js +154 -0
- package/package.json +76 -0
- package/skills/catalog.json +272 -0
- package/skills/community-catalog.json +4202 -0
- package/skills/competitive-analysis/SKILL.md +174 -0
- package/skills/content-creator/SKILL.md +256 -0
- package/skills/content-strategy/SKILL.md +222 -0
- package/skills/data-storytelling/SKILL.md +248 -0
- package/skills/heuristic-evaluation/SKILL.md +201 -0
- package/skills/market-research-reports/SKILL.md +184 -0
- package/skills/user-stories/SKILL.md +178 -0
- package/skills/ux-researcher/SKILL.md +239 -0
- package/web-dist/assets/index-B1b25lNd.css +1 -0
- package/web-dist/assets/index-CDWHwHbl.js +64 -0
- package/web-dist/index.html +16 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: crowdlisten:competitive-analysis
|
|
3
|
+
description: Competitive intelligence through audience perception analysis. Use when comparing brands, products, or competitors in social conversations. Requires CROWDLISTEN_API_KEY.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
allowed-tools: Bash, Read, Write, WebFetch, Grep
|
|
6
|
+
metadata:
|
|
7
|
+
openclaw:
|
|
8
|
+
category: research
|
|
9
|
+
tags: [competitive-intelligence, brand-analysis, social-listening]
|
|
10
|
+
requires_api_key: true
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Competitive Analysis
|
|
14
|
+
|
|
15
|
+
See your market through your audience's eyes using CrowdListen audience intelligence.
|
|
16
|
+
|
|
17
|
+
Consolidates: competitive-intel, product-signals (competitive gap analysis)
|
|
18
|
+
|
|
19
|
+
## Before You Start
|
|
20
|
+
|
|
21
|
+
Ask your human for business context — this skill produces significantly better output when grounded in specifics:
|
|
22
|
+
|
|
23
|
+
- **Target market**: Who are the customers? What industry/segment?
|
|
24
|
+
- **Key competitors**: Which brands or products to compare against?
|
|
25
|
+
- **Constraints**: Budget, timeline, geographic focus?
|
|
26
|
+
- **Decision context**: What decisions will this analysis inform? (roadmap, funding, positioning, hiring?)
|
|
27
|
+
- **Existing data**: Any prior research, internal metrics, or hypotheses to validate?
|
|
28
|
+
|
|
29
|
+
## When to Use This Skill
|
|
30
|
+
|
|
31
|
+
- Competitive analysis and positioning strategy
|
|
32
|
+
- Market entry and competitive landscape assessment
|
|
33
|
+
- Tracking competitor perception changes over time
|
|
34
|
+
- Identifying underserved market segments
|
|
35
|
+
- Competitive feature gap identification
|
|
36
|
+
- Preparing for fundraising, board meetings, or strategic reviews
|
|
37
|
+
|
|
38
|
+
## Foundation: CrowdListen Tools
|
|
39
|
+
|
|
40
|
+
This skill builds on CrowdListen's core capabilities:
|
|
41
|
+
- `search_content` — Find discussions mentioning competitors
|
|
42
|
+
- `analyze_content` — Extract sentiment and themes per competitor
|
|
43
|
+
- `cluster_opinions` — Group competitive comparisons by theme
|
|
44
|
+
- `cross_platform_synthesis` — Compare perception across platforms
|
|
45
|
+
- `sentiment_evolution_tracker` — Track competitive sentiment shifts
|
|
46
|
+
|
|
47
|
+
## Workflows
|
|
48
|
+
|
|
49
|
+
### 1. Share of Voice Analysis
|
|
50
|
+
|
|
51
|
+
Measure how much your audience talks about each competitor.
|
|
52
|
+
|
|
53
|
+
**Process**:
|
|
54
|
+
1. Search for each competitor name + product category keywords
|
|
55
|
+
2. Count mentions, normalize by platform (Reddit, Twitter, YouTube, TikTok)
|
|
56
|
+
3. Calculate share of voice = competitor_mentions / total_category_mentions
|
|
57
|
+
4. Track week-over-week changes
|
|
58
|
+
|
|
59
|
+
**Output Template**:
|
|
60
|
+
```markdown
|
|
61
|
+
## Share of Voice Report — [Category]
|
|
62
|
+
**Period**: [date range]
|
|
63
|
+
|
|
64
|
+
| Brand | Mentions | Share of Voice | Sentiment | WoW Change |
|
|
65
|
+
|-------|----------|---------------|-----------|------------|
|
|
66
|
+
| [Brand A] | [count] | [%] | [+/-/neutral] | [+/- %] |
|
|
67
|
+
|
|
68
|
+
### Key Findings
|
|
69
|
+
- [Brand] dominates conversation because [reason with evidence]
|
|
70
|
+
- [Your brand] is [underrepresented/overrepresented] in [platform]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 2. Sentiment Comparison
|
|
74
|
+
|
|
75
|
+
Side-by-side sentiment analysis across competitors.
|
|
76
|
+
|
|
77
|
+
**Process**:
|
|
78
|
+
1. Analyze sentiment for each competitor across same time period
|
|
79
|
+
2. Break down by dimension: product quality, pricing, support, innovation, reliability
|
|
80
|
+
3. Identify sentiment drivers (what causes positive/negative perception)
|
|
81
|
+
|
|
82
|
+
**Output Template**:
|
|
83
|
+
```markdown
|
|
84
|
+
## Competitive Sentiment Matrix
|
|
85
|
+
|
|
86
|
+
| Dimension | Your Brand | Competitor A | Competitor B | Leader |
|
|
87
|
+
|-----------|-----------|-------------|-------------|--------|
|
|
88
|
+
| Product Quality | [score] | [score] | [score] | [who] |
|
|
89
|
+
| Pricing | [score] | [score] | [score] | [who] |
|
|
90
|
+
|
|
91
|
+
### Sentiment Drivers
|
|
92
|
+
**What makes [leader] win on [dimension]**:
|
|
93
|
+
- [Evidence from social discussions]
|
|
94
|
+
- > "[User quote]"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 3. Switching Intent Detection
|
|
98
|
+
|
|
99
|
+
Identify users actively considering switching between products.
|
|
100
|
+
|
|
101
|
+
**Process**:
|
|
102
|
+
1. Search for "switching from [competitor]", "alternative to [competitor]", "[competitor] vs [competitor]"
|
|
103
|
+
2. Analyze the reasons driving consideration
|
|
104
|
+
3. Score switching intent: researching → evaluating → decided
|
|
105
|
+
4. Identify which direction switching flows (from whom → to whom)
|
|
106
|
+
|
|
107
|
+
**Output Template**:
|
|
108
|
+
```markdown
|
|
109
|
+
## Switching Intent Report
|
|
110
|
+
|
|
111
|
+
### Flow Map
|
|
112
|
+
[Competitor A] ──(X users)──> [Competitor B]
|
|
113
|
+
[Your Brand] ──(Z users)──> [Competitor C]
|
|
114
|
+
|
|
115
|
+
### Why Users Leave [Competitor]
|
|
116
|
+
| Reason | Frequency | Intensity | Where They Go |
|
|
117
|
+
|--------|-----------|-----------|---------------|
|
|
118
|
+
| [Reason] | [count] | [high/med/low] | [destination] |
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 4. White Space Identification
|
|
122
|
+
|
|
123
|
+
Find unmet needs that no competitor addresses.
|
|
124
|
+
|
|
125
|
+
**Process**:
|
|
126
|
+
1. Collect all feature requests, wishlists, and complaints across all competitors
|
|
127
|
+
2. Remove features that any existing player already offers
|
|
128
|
+
3. Rank remaining needs by demand strength
|
|
129
|
+
4. Assess feasibility and strategic fit
|
|
130
|
+
|
|
131
|
+
**Output Template**:
|
|
132
|
+
```markdown
|
|
133
|
+
## White Space Opportunities
|
|
134
|
+
|
|
135
|
+
| Opportunity | Demand Signal | Nearest Competitor | Gap Size | Strategic Fit |
|
|
136
|
+
|-------------|--------------|-------------------|----------|---------------|
|
|
137
|
+
| [Need] | [evidence] | [who comes closest] | [Large/Medium] | [High/Med/Low] |
|
|
138
|
+
|
|
139
|
+
### Top White Space: [Opportunity Name]
|
|
140
|
+
**What the audience wants**: [synthesis]
|
|
141
|
+
**Your path to capture**: [strategic recommendation]
|
|
142
|
+
**Evidence base**: [X discussions, Y platforms, Z sentiment score]
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 5. Competitive Feature Gap Analysis
|
|
146
|
+
|
|
147
|
+
Identify what users want from competitors but can't get.
|
|
148
|
+
|
|
149
|
+
**Process**:
|
|
150
|
+
1. Search for "[competitor] missing/lacks/wish/doesn't have"
|
|
151
|
+
2. Cross-reference with your own product's capabilities
|
|
152
|
+
3. Identify opportunities where you can fill the gap
|
|
153
|
+
|
|
154
|
+
**Output Template**:
|
|
155
|
+
```markdown
|
|
156
|
+
## Competitive Gap Opportunities
|
|
157
|
+
|
|
158
|
+
| Gap | Competitor | User Demand | Your Position | Opportunity |
|
|
159
|
+
|-----|-----------|-------------|---------------|-------------|
|
|
160
|
+
| [Missing feature] | [Competitor] | [High/Med/Low] | [Have/Partial/Don't have] | [Build/Promote/Ignore] |
|
|
161
|
+
|
|
162
|
+
### Top Opportunity: [Gap Name]
|
|
163
|
+
- **What users are saying**: [synthesis of complaints about competitor]
|
|
164
|
+
- **Your advantage**: [why you can/should build this]
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Integration with CrowdListen
|
|
168
|
+
|
|
169
|
+
This skill enhances CrowdListen analyses by:
|
|
170
|
+
- Adding competitive context to every audience analysis
|
|
171
|
+
- Tracking competitive dynamics over time
|
|
172
|
+
- Identifying strategic opportunities from audience perception data
|
|
173
|
+
- Providing investor-ready competitive intelligence
|
|
174
|
+
- Enabling proactive competitive strategy based on real audience signals
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: crowdlisten:content-creator
|
|
3
|
+
description: Generate SEO-optimized marketing content with brand voice analysis. Blog posts, social media, email campaigns. Use when creating any branded content.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
allowed-tools: Bash, Read, Write, WebFetch, Grep
|
|
6
|
+
metadata:
|
|
7
|
+
openclaw:
|
|
8
|
+
category: content
|
|
9
|
+
tags: [content-creation, seo, marketing, brand-voice]
|
|
10
|
+
requires_api_key: false
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Content Creator
|
|
14
|
+
|
|
15
|
+
Generate professional, SEO-optimized marketing content with consistent brand voice across all channels.
|
|
16
|
+
|
|
17
|
+
## Before You Start
|
|
18
|
+
|
|
19
|
+
Ask your human for business context — this skill produces significantly better output when grounded in specifics:
|
|
20
|
+
|
|
21
|
+
- **Target market**: Who are the customers? What industry/segment?
|
|
22
|
+
- **Key competitors**: Which brands or products to compare against?
|
|
23
|
+
- **Constraints**: Budget, timeline, geographic focus?
|
|
24
|
+
- **Decision context**: What decisions will this analysis inform? (roadmap, funding, positioning, hiring?)
|
|
25
|
+
- **Existing data**: Any prior research, internal metrics, or hypotheses to validate?
|
|
26
|
+
|
|
27
|
+
## Capabilities
|
|
28
|
+
|
|
29
|
+
This skill enables:
|
|
30
|
+
- **Brand Voice Analysis**: Extract and replicate brand personality
|
|
31
|
+
- **SEO Optimization**: Keyword research, optimization, and meta content
|
|
32
|
+
- **Multi-Format Content**: Blog posts, social media, email, ads
|
|
33
|
+
- **Readability Enhancement**: Clear, engaging writing at target reading levels
|
|
34
|
+
- **Content Strategy**: Editorial calendars and content planning
|
|
35
|
+
|
|
36
|
+
## Brand Voice Framework
|
|
37
|
+
|
|
38
|
+
### Voice Attributes
|
|
39
|
+
Define brand personality across key dimensions:
|
|
40
|
+
|
|
41
|
+
| Dimension | Spectrum |
|
|
42
|
+
|-----------|----------|
|
|
43
|
+
| **Formality** | Casual ←→ Professional |
|
|
44
|
+
| **Energy** | Calm ←→ Enthusiastic |
|
|
45
|
+
| **Humor** | Serious ←→ Playful |
|
|
46
|
+
| **Expertise** | Accessible ←→ Technical |
|
|
47
|
+
| **Personality** | Reserved ←→ Bold |
|
|
48
|
+
|
|
49
|
+
### Voice Documentation
|
|
50
|
+
```markdown
|
|
51
|
+
## Brand Voice Guidelines
|
|
52
|
+
|
|
53
|
+
### Who We Are
|
|
54
|
+
[Core brand personality]
|
|
55
|
+
|
|
56
|
+
### Voice Characteristics
|
|
57
|
+
1. **[Attribute 1]**: [Description with examples]
|
|
58
|
+
2. **[Attribute 2]**: [Description with examples]
|
|
59
|
+
3. **[Attribute 3]**: [Description with examples]
|
|
60
|
+
|
|
61
|
+
### Tone Variations by Context
|
|
62
|
+
- **Social Media**: [Tone adjustment]
|
|
63
|
+
- **Email**: [Tone adjustment]
|
|
64
|
+
- **Product**: [Tone adjustment]
|
|
65
|
+
- **Support**: [Tone adjustment]
|
|
66
|
+
|
|
67
|
+
### Do's and Don'ts
|
|
68
|
+
| Do | Don't |
|
|
69
|
+
|----|-------|
|
|
70
|
+
| | |
|
|
71
|
+
|
|
72
|
+
### Vocabulary Guide
|
|
73
|
+
**Words we use**:
|
|
74
|
+
**Words we avoid**:
|
|
75
|
+
|
|
76
|
+
### Example Transformations
|
|
77
|
+
**Generic**: "Contact us for more information"
|
|
78
|
+
**On-brand**: [Brand-specific version]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## SEO Optimization
|
|
82
|
+
|
|
83
|
+
### Keyword Integration
|
|
84
|
+
- **Primary keyword**: 2-3% density, in H1, first paragraph, conclusion
|
|
85
|
+
- **Secondary keywords**: Natural distribution throughout
|
|
86
|
+
- **Long-tail variations**: In subheadings and body content
|
|
87
|
+
- **Semantic keywords**: Related terms for topic authority
|
|
88
|
+
|
|
89
|
+
### Content Structure for SEO
|
|
90
|
+
```markdown
|
|
91
|
+
# H1: Primary Keyword Near Beginning
|
|
92
|
+
|
|
93
|
+
[Opening paragraph with primary keyword in first 100 words]
|
|
94
|
+
|
|
95
|
+
## H2: Secondary Keyword
|
|
96
|
+
[Content with natural keyword usage]
|
|
97
|
+
|
|
98
|
+
### H3: Long-tail Variation
|
|
99
|
+
[Supporting content]
|
|
100
|
+
|
|
101
|
+
## H2: Another Secondary Keyword
|
|
102
|
+
[Content]
|
|
103
|
+
|
|
104
|
+
## Conclusion
|
|
105
|
+
[Recap with primary keyword]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Meta Content
|
|
109
|
+
- **Title Tag**: 50-60 characters, keyword near front
|
|
110
|
+
- **Meta Description**: 150-160 characters, compelling CTA
|
|
111
|
+
- **URL Slug**: Short, keyword-rich, hyphen-separated
|
|
112
|
+
|
|
113
|
+
## Content Formats
|
|
114
|
+
|
|
115
|
+
### Blog Post Template
|
|
116
|
+
```markdown
|
|
117
|
+
# [Compelling Title with Primary Keyword]
|
|
118
|
+
|
|
119
|
+
**Reading time**: X minutes
|
|
120
|
+
**Published**: [Date]
|
|
121
|
+
|
|
122
|
+
[Hook - Engage reader immediately]
|
|
123
|
+
|
|
124
|
+
## What You'll Learn
|
|
125
|
+
- [Bullet 1]
|
|
126
|
+
- [Bullet 2]
|
|
127
|
+
- [Bullet 3]
|
|
128
|
+
|
|
129
|
+
## [Section 1]
|
|
130
|
+
[Content]
|
|
131
|
+
|
|
132
|
+
## [Section 2]
|
|
133
|
+
[Content]
|
|
134
|
+
|
|
135
|
+
## [Section 3]
|
|
136
|
+
[Content]
|
|
137
|
+
|
|
138
|
+
## Key Takeaways
|
|
139
|
+
[Summary points]
|
|
140
|
+
|
|
141
|
+
## What's Next?
|
|
142
|
+
[CTA]
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
*[Author bio and credentials]*
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Social Media Templates
|
|
149
|
+
|
|
150
|
+
**LinkedIn Post**
|
|
151
|
+
```
|
|
152
|
+
[Hook - First line is crucial]
|
|
153
|
+
|
|
154
|
+
[3-5 short paragraphs with line breaks]
|
|
155
|
+
|
|
156
|
+
[Key insight or takeaway]
|
|
157
|
+
|
|
158
|
+
[Question to drive engagement]
|
|
159
|
+
|
|
160
|
+
#Hashtag1 #Hashtag2 #Hashtag3
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Twitter/X Thread**
|
|
164
|
+
```
|
|
165
|
+
1/ [Hook that creates curiosity]
|
|
166
|
+
|
|
167
|
+
2/ [First key point]
|
|
168
|
+
|
|
169
|
+
3/ [Supporting evidence or example]
|
|
170
|
+
|
|
171
|
+
4/ [Second key point]
|
|
172
|
+
|
|
173
|
+
5/ [Third key point]
|
|
174
|
+
|
|
175
|
+
6/ [Summary and CTA]
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Instagram Caption**
|
|
179
|
+
```
|
|
180
|
+
[Attention-grabbing first line]
|
|
181
|
+
|
|
182
|
+
[Story or value-add content]
|
|
183
|
+
|
|
184
|
+
[Personal touch or behind-the-scenes]
|
|
185
|
+
|
|
186
|
+
.
|
|
187
|
+
.
|
|
188
|
+
.
|
|
189
|
+
#Hashtags #Grouped #AtBottom
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Email Templates
|
|
193
|
+
|
|
194
|
+
**Newsletter**
|
|
195
|
+
```markdown
|
|
196
|
+
Subject: [Benefit-focused, curiosity-driving]
|
|
197
|
+
Preview: [Complement subject, add urgency]
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
Hi [Name],
|
|
202
|
+
|
|
203
|
+
[Personal opening]
|
|
204
|
+
|
|
205
|
+
**This week's highlight:**
|
|
206
|
+
[Main content]
|
|
207
|
+
|
|
208
|
+
**Quick wins:**
|
|
209
|
+
- [Tip 1]
|
|
210
|
+
- [Tip 2]
|
|
211
|
+
- [Tip 3]
|
|
212
|
+
|
|
213
|
+
[CTA Button]
|
|
214
|
+
|
|
215
|
+
[Sign-off]
|
|
216
|
+
|
|
217
|
+
P.S. [Secondary CTA or teaser]
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Content Quality Checklist
|
|
221
|
+
|
|
222
|
+
### Readability
|
|
223
|
+
- [ ] Flesch-Kincaid grade level appropriate for audience
|
|
224
|
+
- [ ] Short paragraphs (2-4 sentences)
|
|
225
|
+
- [ ] Varied sentence length
|
|
226
|
+
- [ ] Active voice preferred
|
|
227
|
+
- [ ] Jargon explained or avoided
|
|
228
|
+
|
|
229
|
+
### SEO
|
|
230
|
+
- [ ] Primary keyword in title, H1, first paragraph
|
|
231
|
+
- [ ] Secondary keywords in H2s
|
|
232
|
+
- [ ] Internal and external links included
|
|
233
|
+
- [ ] Images with alt text
|
|
234
|
+
- [ ] Meta title and description optimized
|
|
235
|
+
|
|
236
|
+
### Engagement
|
|
237
|
+
- [ ] Strong hook in first line
|
|
238
|
+
- [ ] Value proposition clear
|
|
239
|
+
- [ ] Scannable structure (headers, bullets)
|
|
240
|
+
- [ ] Clear CTA
|
|
241
|
+
- [ ] Social proof or data included
|
|
242
|
+
|
|
243
|
+
### Brand
|
|
244
|
+
- [ ] Voice consistent with guidelines
|
|
245
|
+
- [ ] Tone appropriate for channel
|
|
246
|
+
- [ ] Key messages incorporated
|
|
247
|
+
- [ ] On-brand visuals recommended
|
|
248
|
+
|
|
249
|
+
## Integration with CrowdListen
|
|
250
|
+
|
|
251
|
+
This skill enhances CrowdListen by:
|
|
252
|
+
- Creating content based on community insights and trending topics
|
|
253
|
+
- Generating social media responses informed by sentiment analysis
|
|
254
|
+
- Developing marketing copy that addresses audience pain points
|
|
255
|
+
- Optimizing content for keywords discovered through social listening
|
|
256
|
+
- Building content calendars around community conversation patterns
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: crowdlisten:content-strategy
|
|
3
|
+
description: Data-driven content strategy grounded in audience demand. Topic demand analysis, content gaps, platform optimization, voice matching, campaign tracking. Requires CROWDLISTEN_API_KEY.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
allowed-tools: Bash, Read, Write, WebFetch, Grep
|
|
6
|
+
metadata:
|
|
7
|
+
openclaw:
|
|
8
|
+
category: content
|
|
9
|
+
tags: [content-strategy, demand-analysis, platform-optimization]
|
|
10
|
+
requires_api_key: true
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Content Strategy
|
|
14
|
+
|
|
15
|
+
Create content your audience actually wants using CrowdListen audience intelligence.
|
|
16
|
+
|
|
17
|
+
Consolidates: content-strategy + campaign-tracker
|
|
18
|
+
|
|
19
|
+
## Before You Start
|
|
20
|
+
|
|
21
|
+
Ask your human for business context — this skill produces significantly better output when grounded in specifics:
|
|
22
|
+
|
|
23
|
+
- **Target market**: Who are the customers? What industry/segment?
|
|
24
|
+
- **Key competitors**: Which brands or products to compare against?
|
|
25
|
+
- **Constraints**: Budget, timeline, geographic focus?
|
|
26
|
+
- **Decision context**: What decisions will this analysis inform? (roadmap, funding, positioning, hiring?)
|
|
27
|
+
- **Existing data**: Any prior research, internal metrics, or hypotheses to validate?
|
|
28
|
+
|
|
29
|
+
## When to Use This Skill
|
|
30
|
+
|
|
31
|
+
- Content calendar planning with audience-validated topics
|
|
32
|
+
- Finding content gaps competitors haven't covered
|
|
33
|
+
- Optimizing content format and timing per platform
|
|
34
|
+
- Adapting brand voice to match audience communication style
|
|
35
|
+
- Measuring content resonance and adjusting strategy
|
|
36
|
+
- Product launches and campaign performance monitoring
|
|
37
|
+
- Real-time sentiment tracking during launch windows
|
|
38
|
+
- Crisis early warning and message resonance scoring
|
|
39
|
+
|
|
40
|
+
## Foundation: CrowdListen Tools
|
|
41
|
+
|
|
42
|
+
This skill builds on CrowdListen's core capabilities:
|
|
43
|
+
- `search_content` — Find what audiences discuss and engage with
|
|
44
|
+
- `get_trending_content` — Identify trending topics in your category
|
|
45
|
+
- `analyze_content` — Extract themes and engagement patterns
|
|
46
|
+
- `cluster_opinions` — Group audience interests by theme
|
|
47
|
+
- `deep_platform_analysis` — Platform-specific engagement patterns
|
|
48
|
+
- `sentiment_evolution_tracker` — Track sentiment changes during campaign windows
|
|
49
|
+
- `cross_platform_synthesis` — Compare reception across platforms
|
|
50
|
+
|
|
51
|
+
## Workflows
|
|
52
|
+
|
|
53
|
+
### 1. Topic Demand Analysis
|
|
54
|
+
|
|
55
|
+
Discover which topics your audience actively seeks and engages with.
|
|
56
|
+
|
|
57
|
+
**Process**:
|
|
58
|
+
1. Search for category-related discussions across platforms
|
|
59
|
+
2. Rank topics by: engagement (upvotes, shares, comments), recency, sentiment
|
|
60
|
+
3. Categorize as: evergreen (stable demand), trending (rising), declining (falling)
|
|
61
|
+
4. Cross-reference with competitor content output
|
|
62
|
+
|
|
63
|
+
**Output Template**:
|
|
64
|
+
```markdown
|
|
65
|
+
## Topic Demand Report — [Category]
|
|
66
|
+
|
|
67
|
+
### High-Demand Topics
|
|
68
|
+
| Rank | Topic | Engagement | Platforms | Type | Competitor Coverage |
|
|
69
|
+
|------|-------|-----------|-----------|------|-------------------|
|
|
70
|
+
| 1 | [Topic] | [score] | [platforms] | [Evergreen/Trending] | [Saturated/Moderate/Low] |
|
|
71
|
+
| 2 | [Topic] | [score] | [platforms] | [Evergreen/Trending] | [Saturated/Moderate/Low] |
|
|
72
|
+
|
|
73
|
+
### Recommended Content Calendar (Next 4 Weeks)
|
|
74
|
+
| Week | Topic | Format | Platform | Rationale |
|
|
75
|
+
|------|-------|--------|----------|-----------|
|
|
76
|
+
| 1 | [Topic] | [Blog/Video/Thread] | [Platform] | [Why now, audience evidence] |
|
|
77
|
+
| 2 | [Topic] | [Blog/Video/Thread] | [Platform] | [Why now, audience evidence] |
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2. Content Gap Finder
|
|
81
|
+
|
|
82
|
+
Identify topics your audience discusses but no brand adequately covers.
|
|
83
|
+
|
|
84
|
+
**Process**:
|
|
85
|
+
1. Map audience discussion topics vs. existing brand content (yours + competitors)
|
|
86
|
+
2. Find high-engagement topics with low brand content coverage
|
|
87
|
+
3. Score each gap by: demand strength, competitive emptiness, brand fit
|
|
88
|
+
|
|
89
|
+
**Output Template**:
|
|
90
|
+
```markdown
|
|
91
|
+
## Content Gaps — [Category]
|
|
92
|
+
|
|
93
|
+
| Gap Topic | Audience Demand | Brand Coverage | Opportunity Score |
|
|
94
|
+
|-----------|----------------|---------------|------------------|
|
|
95
|
+
| [Topic] | [High/Med] | [None/Minimal] | [score] |
|
|
96
|
+
|
|
97
|
+
### Top Gap: [Topic]
|
|
98
|
+
**What audiences are saying**: [synthesis from social discussions]
|
|
99
|
+
**Why no brand covers this**: [hypothesis]
|
|
100
|
+
**Your angle**: [how to approach this uniquely]
|
|
101
|
+
**Suggested format**: [best format based on platform engagement data]
|
|
102
|
+
**Expected performance**: [engagement estimate based on similar content]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 3. Platform Format Optimization
|
|
106
|
+
|
|
107
|
+
Determine which content formats perform best per platform for your audience.
|
|
108
|
+
|
|
109
|
+
**Process**:
|
|
110
|
+
1. Analyze engagement patterns by content format across platforms
|
|
111
|
+
2. Compare: long-form vs. short-form, visual vs. text, educational vs. entertaining
|
|
112
|
+
3. Identify platform-specific winning patterns
|
|
113
|
+
|
|
114
|
+
**Output Template**:
|
|
115
|
+
```markdown
|
|
116
|
+
## Format Performance by Platform
|
|
117
|
+
|
|
118
|
+
| Platform | Top Format | Engagement Rate | Audience Preference | Your Current Mix |
|
|
119
|
+
|----------|-----------|-----------------|--------------------|-----------------|
|
|
120
|
+
| Reddit | [format] | [score] | [what they respond to] | [what you post] |
|
|
121
|
+
| Twitter/X | [format] | [score] | [what they respond to] | [what you post] |
|
|
122
|
+
| YouTube | [format] | [score] | [what they respond to] | [what you post] |
|
|
123
|
+
| TikTok | [format] | [score] | [what they respond to] | [what you post] |
|
|
124
|
+
|
|
125
|
+
### Optimization Recommendations
|
|
126
|
+
- **Start doing**: [format/platform combination not currently used]
|
|
127
|
+
- **Do more of**: [format/platform that's working but underinvested]
|
|
128
|
+
- **Stop doing**: [format/platform that's underperforming]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 4. Voice & Tone Matching
|
|
132
|
+
|
|
133
|
+
Adapt brand voice to match how your audience actually communicates.
|
|
134
|
+
|
|
135
|
+
**Process**:
|
|
136
|
+
1. Analyze language patterns in high-engagement audience discussions
|
|
137
|
+
2. Extract: vocabulary, sentence structure, formality level, humor usage, emoji patterns
|
|
138
|
+
3. Compare with current brand voice
|
|
139
|
+
4. Generate voice guide that bridges brand identity and audience expectations
|
|
140
|
+
|
|
141
|
+
**Output Template**:
|
|
142
|
+
```markdown
|
|
143
|
+
## Audience Voice Profile
|
|
144
|
+
|
|
145
|
+
### How Your Audience Talks
|
|
146
|
+
- **Formality**: [Casual / Semi-formal / Professional]
|
|
147
|
+
- **Tone**: [Irreverent / Thoughtful / Urgent / Playful]
|
|
148
|
+
- **Vocabulary**: [Technical / Accessible / Slang-heavy]
|
|
149
|
+
- **Sentence length**: [Short punchy / Medium / Long analytical]
|
|
150
|
+
- **Common phrases**: "[phrase 1]", "[phrase 2]", "[phrase 3]"
|
|
151
|
+
|
|
152
|
+
### Voice Gap Analysis
|
|
153
|
+
| Dimension | Your Brand | Your Audience | Gap |
|
|
154
|
+
|-----------|-----------|---------------|-----|
|
|
155
|
+
| Formality | [level] | [level] | [match/mismatch] |
|
|
156
|
+
| Jargon use | [level] | [level] | [match/mismatch] |
|
|
157
|
+
| Humor | [level] | [level] | [match/mismatch] |
|
|
158
|
+
|
|
159
|
+
### Recommended Voice Adjustments
|
|
160
|
+
- [Specific adjustment with before/after example]
|
|
161
|
+
- [Specific adjustment with before/after example]
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 5. Campaign Tracking
|
|
165
|
+
|
|
166
|
+
Monitor real-time audience reaction during a campaign or launch window.
|
|
167
|
+
|
|
168
|
+
**Process**:
|
|
169
|
+
1. Define tracking window (pre-launch, launch day, post-launch)
|
|
170
|
+
2. Search for campaign-related keywords, hashtags, product mentions
|
|
171
|
+
3. Track sentiment at regular intervals (hourly during launch, daily after)
|
|
172
|
+
4. Identify sentiment inflection points and their causes
|
|
173
|
+
|
|
174
|
+
**Output Template**:
|
|
175
|
+
```markdown
|
|
176
|
+
## Launch Tracker — [Campaign Name]
|
|
177
|
+
|
|
178
|
+
### Sentiment Timeline
|
|
179
|
+
| Time | Sentiment | Volume | Key Driver |
|
|
180
|
+
|------|-----------|--------|-----------|
|
|
181
|
+
| Pre-launch | [score] | [count] | [anticipation/skepticism/neutral] |
|
|
182
|
+
| Launch +1h | [score] | [count] | [initial reactions] |
|
|
183
|
+
| Launch +24h | [score] | [count] | [settling sentiment] |
|
|
184
|
+
|
|
185
|
+
### Overall Reception
|
|
186
|
+
- **Net sentiment**: [positive/negative/mixed]
|
|
187
|
+
- **Volume vs. expectation**: [above/at/below] baseline
|
|
188
|
+
- **Surprise reactions**: [anything unexpected]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 6. Message Resonance Scoring
|
|
192
|
+
|
|
193
|
+
Evaluate which campaign messages land and which fall flat.
|
|
194
|
+
|
|
195
|
+
**Process**:
|
|
196
|
+
1. Identify distinct messages/claims in the campaign
|
|
197
|
+
2. Search for audience reactions to each specific message
|
|
198
|
+
3. Score resonance: echoed > engaged > ignored > rejected
|
|
199
|
+
|
|
200
|
+
**Output Template**:
|
|
201
|
+
```markdown
|
|
202
|
+
## Message Resonance — [Campaign Name]
|
|
203
|
+
|
|
204
|
+
| Message | Resonance | Echo Rate | Sentiment | Verdict |
|
|
205
|
+
|---------|-----------|-----------|-----------|---------|
|
|
206
|
+
| "[Message 1]" | [Echoed/Engaged/Ignored/Rejected] | [%] | [+/-] | [Keep/Refine/Drop] |
|
|
207
|
+
|
|
208
|
+
### Strongest Message: "[Message]"
|
|
209
|
+
**Why it resonates**: [analysis with audience quotes]
|
|
210
|
+
**Amplification opportunity**: [how to lean in]
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Integration with CrowdListen
|
|
214
|
+
|
|
215
|
+
This skill enhances CrowdListen analyses by:
|
|
216
|
+
- Transforming audience insights into actionable content plans
|
|
217
|
+
- Validating content ideas against real audience demand data
|
|
218
|
+
- Optimizing content distribution based on platform behavior patterns
|
|
219
|
+
- Aligning brand voice with audience expectations
|
|
220
|
+
- Measuring content strategy effectiveness through ongoing audience monitoring
|
|
221
|
+
- Providing real-time campaign intelligence during critical launch windows
|
|
222
|
+
- Enabling rapid response to negative sentiment shifts
|