@shashwatgtmalpha/craft-content-mcp 1.0.1 → 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/README.md +130 -103
- package/dist/case-study-generator.d.ts +12 -0
- package/dist/case-study-generator.d.ts.map +1 -0
- package/dist/case-study-generator.js +373 -0
- package/dist/case-study-generator.js.map +1 -0
- package/dist/content-improver.d.ts +8 -0
- package/dist/content-improver.d.ts.map +1 -0
- package/dist/content-improver.js +238 -0
- package/dist/content-improver.js.map +1 -0
- package/dist/content-repurposer.d.ts +8 -0
- package/dist/content-repurposer.d.ts.map +1 -0
- package/dist/content-repurposer.js +423 -0
- package/dist/content-repurposer.js.map +1 -0
- package/dist/index.js +86 -1236
- package/dist/index.js.map +1 -1
- package/dist/newsletter-builder.d.ts +10 -0
- package/dist/newsletter-builder.d.ts.map +1 -0
- package/dist/newsletter-builder.js +411 -0
- package/dist/newsletter-builder.js.map +1 -0
- package/dist/sales-enablement.d.ts +11 -0
- package/dist/sales-enablement.d.ts.map +1 -0
- package/dist/sales-enablement.js +455 -0
- package/dist/sales-enablement.js.map +1 -0
- package/dist/testimonial-capture.d.ts +11 -0
- package/dist/testimonial-capture.d.ts.map +1 -0
- package/dist/testimonial-capture.js +424 -0
- package/dist/testimonial-capture.js.map +1 -0
- package/dist/thought-leadership.d.ts +10 -0
- package/dist/thought-leadership.d.ts.map +1 -0
- package/dist/thought-leadership.js +475 -0
- package/dist/thought-leadership.js.map +1 -0
- package/dist/tools.d.ts +3 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +210 -0
- package/dist/tools.js.map +1 -0
- package/dist/utils.d.ts +40 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +289 -0
- package/dist/utils.js.map +1 -0
- package/dist/webinar-script.d.ts +11 -0
- package/dist/webinar-script.d.ts.map +1 -0
- package/dist/webinar-script.js +457 -0
- package/dist/webinar-script.js.map +1 -0
- package/package.json +15 -18
package/README.md
CHANGED
|
@@ -1,123 +1,150 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @shashwatgtm/craft-content-mcp v2.0.0
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
🎯 **CRAFT Content Framework MCP Server** - Complete redesign with user-centric inputs, actual content analysis, and publish-ready outputs.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Design Philosophy
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Every tool was redesigned using **chain of thought from the user's perspective**:
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
1. **What does the user actually want?** (Not what looks impressive in a demo)
|
|
10
|
+
2. **What do they already know?** (Keep inputs simple - don't ask for things they need to figure out)
|
|
11
|
+
3. **Does the output save them work?** (Publish-ready, not templates to fill)
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
## What's New in v2.0.0
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
|
|
15
|
+
| Tool | Before | After |
|
|
16
|
+
|------|--------|-------|
|
|
17
|
+
| **thought_leadership_series** | 🔴 200-300 word posts with `[Expand]` placeholders | ✅ **600-800 word byline articles** ready for publication |
|
|
18
|
+
| **craft_content_improver** | 🔴 Blank scorecard output | ✅ **Actually analyzes** content, scores dimensions, generates improved version |
|
|
19
|
+
| **case_study_generator** | 🟡 Requires full story | ✅ **Discovery mode** - generates interview questions if you don't have the story |
|
|
20
|
+
| **sales_enablement_content** | 🟡 Generic pitches | ✅ **Objection-mapped handlers** with specific proof points |
|
|
21
|
+
| newsletter_builder | 🟢 Good | ✅ Enhanced with A/B subject lines, 4 hooks, segment targeting |
|
|
22
|
+
| webinar_script | 🟢 Good | ✅ Type-specific structures (demo vs educational vs panel) |
|
|
23
|
+
| content_repurposer | 🟢 Excellent | ✅ Kept - transforms to 10+ formats |
|
|
24
|
+
| testimonial_capture | 🟢 Excellent | ✅ Kept - request emails, interview guides |
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
## Installation
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
| Tool | Purpose | Output |
|
|
28
|
-
|------|---------|--------|
|
|
29
|
-
| `case_study_generator` | Create customer stories | Full case study, one-pager, social snippets |
|
|
30
|
-
| `newsletter_builder` | Write newsletters | Complete issue, 10 subject lines, sections |
|
|
31
|
-
| `webinar_script` | Script webinars | Slide-by-slide script, Q&A prep, engagement prompts |
|
|
32
|
-
| `content_repurposer` | Multiply content | 1 piece → 10+ formats (LinkedIn, Twitter, email, etc.) |
|
|
33
|
-
| `thought_leadership_series` | Build authority | 5-post LinkedIn series with hooks |
|
|
34
|
-
| `testimonial_capture` | Collect social proof | Request emails, interview guide, formatted outputs |
|
|
35
|
-
| `sales_enablement_content` | Arm sales team | Pitches (30s/2min/5min), objection handlers |
|
|
36
|
-
| `craft_content_improver` | Improve any content | CRAFT score, improved version, A/B tests |
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 📦 Installation
|
|
41
|
-
|
|
42
|
-
### Claude Desktop
|
|
28
|
+
```bash
|
|
29
|
+
npm install -g @shashwatgtm/craft-content-mcp
|
|
30
|
+
```
|
|
43
31
|
|
|
44
|
-
|
|
32
|
+
Or add to Claude Desktop config:
|
|
45
33
|
|
|
46
34
|
```json
|
|
47
35
|
{
|
|
48
36
|
"mcpServers": {
|
|
49
37
|
"craft-content": {
|
|
50
38
|
"command": "npx",
|
|
51
|
-
"args": ["-y", "@
|
|
39
|
+
"args": ["-y", "@shashwatgtm/craft-content-mcp"]
|
|
52
40
|
}
|
|
53
41
|
}
|
|
54
42
|
}
|
|
55
43
|
```
|
|
56
44
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
###
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
45
|
+
## Tools
|
|
46
|
+
|
|
47
|
+
### 1. 💡 `thought_leadership_series` - **REDESIGNED!**
|
|
48
|
+
**600-800 word byline articles, not social posts!**
|
|
49
|
+
|
|
50
|
+
**Simplified inputs (just 4 required):**
|
|
51
|
+
- `topic` - What you're an expert on
|
|
52
|
+
- `your_take` - Your unique/contrarian perspective
|
|
53
|
+
- `proof_points` - Stories, data, experiences that support your take
|
|
54
|
+
- `target_reader` - Who should read this (be specific!)
|
|
55
|
+
|
|
56
|
+
**Output:** 3 complete articles (600-800 words each) with:
|
|
57
|
+
- Compelling headlines
|
|
58
|
+
- Hook → Problem → Evidence → Framework → Conclusion structure
|
|
59
|
+
- Ready for LinkedIn Articles, Medium, industry publications
|
|
60
|
+
- PLUS promotional social posts (200-300 words) to drive traffic
|
|
61
|
+
|
|
62
|
+
**Article types:** contrarian, how_to, lessons_learned, prediction, framework
|
|
63
|
+
|
|
64
|
+
### 2. 📝 `craft_content_improver` - **FIXED!**
|
|
65
|
+
**Actually analyzes your content now!**
|
|
66
|
+
|
|
67
|
+
Paste any content and get:
|
|
68
|
+
- Clarity score (sentence length, passive voice, jargon)
|
|
69
|
+
- Structure score (headers, paragraph length, transitions)
|
|
70
|
+
- Engagement score (hooks, power words, questions)
|
|
71
|
+
- Goal alignment score
|
|
72
|
+
- **Auto-improved version** with before/after
|
|
73
|
+
- Content-type specific tips
|
|
74
|
+
|
|
75
|
+
### 3. 📊 `case_study_generator` - Discovery Mode
|
|
76
|
+
**Don't have the full story? No problem!**
|
|
77
|
+
|
|
78
|
+
- **Discovery mode:** Interview questions, email templates, note templates
|
|
79
|
+
- **Full mode:** Complete case study with challenge/solution/results
|
|
80
|
+
- **Parse mode:** Feed raw interview notes → structured case study
|
|
81
|
+
|
|
82
|
+
### 4. 🎯 `sales_enablement_content` - Objection Mapping
|
|
83
|
+
**Uses YOUR objections and proof points!**
|
|
84
|
+
|
|
85
|
+
For each objection you provide, get:
|
|
86
|
+
- Acknowledge statement
|
|
87
|
+
- Reframe question
|
|
88
|
+
- Specific proof point reference
|
|
89
|
+
- Bridge to value
|
|
90
|
+
- Full response script
|
|
91
|
+
|
|
92
|
+
Plus: Stage-specific pitch scripts, discovery questions, follow-up templates.
|
|
93
|
+
|
|
94
|
+
### 5. 📧 `newsletter_builder`
|
|
95
|
+
- 4 subject line options (A/B test ready)
|
|
96
|
+
- 4 hook styles (question, statistic, story, bold)
|
|
97
|
+
- Segment-specific content (executives vs practitioners vs technical)
|
|
98
|
+
- Send time recommendations
|
|
99
|
+
|
|
100
|
+
### 6. 🎬 `webinar_script`
|
|
101
|
+
Type-specific structures:
|
|
102
|
+
- Educational webinar (teach something)
|
|
103
|
+
- Product demo (show features)
|
|
104
|
+
- Panel discussion (multiple speakers)
|
|
105
|
+
- Customer story (case study format)
|
|
106
|
+
- Workshop (hands-on)
|
|
107
|
+
- AMA (Q&A focused)
|
|
108
|
+
|
|
109
|
+
Includes: Run of show, full scripts, Q&A prep, follow-up email sequence.
|
|
110
|
+
|
|
111
|
+
### 7. 🔄 `content_repurposer`
|
|
112
|
+
Transform source content into 10+ formats:
|
|
113
|
+
- LinkedIn post
|
|
114
|
+
- Twitter thread
|
|
115
|
+
- Email version
|
|
116
|
+
- Blog summary
|
|
117
|
+
- Infographic outline
|
|
118
|
+
- Video script
|
|
119
|
+
- Podcast talking points
|
|
120
|
+
- Slide deck outline
|
|
121
|
+
- Quote cards
|
|
122
|
+
- Newsletter section
|
|
123
|
+
|
|
124
|
+
### 8. 🌟 `testimonial_capture`
|
|
125
|
+
- Request email templates by type (written, video, case study, G2, reference)
|
|
126
|
+
- Interview questions
|
|
127
|
+
- Multiple quote formats (short/medium/long)
|
|
128
|
+
- Process checklists
|
|
129
|
+
|
|
130
|
+
## Input Design Principles
|
|
131
|
+
|
|
132
|
+
1. **Only ask for what users actually know** - Don't require "value propositions" if they're calling because they haven't articulated them yet
|
|
133
|
+
2. **Make required inputs minimal** - 3-4 required, rest optional with smart defaults
|
|
134
|
+
3. **Use natural language** - "your_take" not "contrarian_perspective_thesis"
|
|
135
|
+
4. **Derive what you can** - If user gives topic, auto-generate related elements
|
|
136
|
+
|
|
137
|
+
## Output Design Principles
|
|
138
|
+
|
|
139
|
+
1. **Publish-ready** - No `[Fill in]` or `[Expand]` placeholders
|
|
140
|
+
2. **Right length for the format** - Bylines = 600-800 words, Social posts = 200-300 words
|
|
141
|
+
3. **Include metadata** - Word counts, posting times, headlines
|
|
142
|
+
4. **Add promotional content** - Social snippets to promote longer content
|
|
143
|
+
|
|
144
|
+
## Author
|
|
145
|
+
|
|
146
|
+
**Shashwat Ghosh** - [Helix GTM Consulting](https://helixgtm.com)
|
|
147
|
+
|
|
148
|
+
## License
|
|
149
|
+
|
|
150
|
+
MIT
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function generateCaseStudy(args: {
|
|
2
|
+
customer_name: string;
|
|
3
|
+
customer_industry?: string;
|
|
4
|
+
mode?: string;
|
|
5
|
+
interview_notes?: string;
|
|
6
|
+
challenge?: string;
|
|
7
|
+
solution?: string;
|
|
8
|
+
results?: string;
|
|
9
|
+
customer_quote?: string;
|
|
10
|
+
your_product: string;
|
|
11
|
+
}): string;
|
|
12
|
+
//# sourceMappingURL=case-study-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-study-generator.d.ts","sourceRoot":"","sources":["../src/case-study-generator.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CA0BT"}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import { parseListItems, extractKeyPoints } from './utils.js';
|
|
2
|
+
export function generateCaseStudy(args) {
|
|
3
|
+
const customerName = args.customer_name;
|
|
4
|
+
const industry = args.customer_industry || 'technology';
|
|
5
|
+
const mode = args.mode || (args.challenge && args.solution && args.results ? 'full' : 'discovery');
|
|
6
|
+
const product = args.your_product;
|
|
7
|
+
// DISCOVERY MODE - Generate interview questions
|
|
8
|
+
if (mode === 'discovery' || (!args.challenge && !args.solution && !args.results && !args.interview_notes)) {
|
|
9
|
+
return generateDiscoveryKit(customerName, industry, product);
|
|
10
|
+
}
|
|
11
|
+
// If interview notes provided, parse them
|
|
12
|
+
if (args.interview_notes && (!args.challenge || !args.solution || !args.results)) {
|
|
13
|
+
return generateFromNotes(args.interview_notes, customerName, industry, product, args.customer_quote);
|
|
14
|
+
}
|
|
15
|
+
// FULL MODE - Generate complete case study
|
|
16
|
+
return generateFullCaseStudy(customerName, industry, args.challenge, args.solution, args.results, args.customer_quote, product);
|
|
17
|
+
}
|
|
18
|
+
function generateDiscoveryKit(customerName, industry, product) {
|
|
19
|
+
return `# 🔍 Case Study Discovery Kit
|
|
20
|
+
## For: ${customerName}
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 📋 Information Needed
|
|
25
|
+
|
|
26
|
+
Before we can create a compelling case study, we need to gather the customer story. Here's your interview guide.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 🎙️ Customer Interview Questions
|
|
31
|
+
|
|
32
|
+
### Part 1: The Challenge (5-7 minutes)
|
|
33
|
+
|
|
34
|
+
Ask these questions to understand their "before" state:
|
|
35
|
+
|
|
36
|
+
1. **"Take me back to before you started using ${product}. What was happening in your business?"**
|
|
37
|
+
- Listen for: Pain points, frustrations, failed solutions
|
|
38
|
+
|
|
39
|
+
2. **"What specific problem were you trying to solve?"**
|
|
40
|
+
- Listen for: Quantifiable issues (time, money, efficiency)
|
|
41
|
+
|
|
42
|
+
3. **"How was this problem affecting your team/customers/revenue?"**
|
|
43
|
+
- Listen for: Business impact metrics
|
|
44
|
+
|
|
45
|
+
4. **"What had you tried before? Why didn't it work?"**
|
|
46
|
+
- Listen for: Competitor mentions, DIY attempts
|
|
47
|
+
|
|
48
|
+
5. **"What made you start looking for a solution when you did?"**
|
|
49
|
+
- Listen for: Trigger event, urgency
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### Part 2: The Solution (5-7 minutes)
|
|
54
|
+
|
|
55
|
+
Ask these questions about their journey to ${product}:
|
|
56
|
+
|
|
57
|
+
6. **"How did you first hear about ${product}?"**
|
|
58
|
+
- Listen for: Channel attribution
|
|
59
|
+
|
|
60
|
+
7. **"What made you choose ${product} over alternatives?"**
|
|
61
|
+
- Listen for: Key differentiators, decision criteria
|
|
62
|
+
|
|
63
|
+
8. **"Walk me through your implementation. What was that like?"**
|
|
64
|
+
- Listen for: Onboarding experience, time to value
|
|
65
|
+
|
|
66
|
+
9. **"What was the 'aha moment' when you knew this was working?"**
|
|
67
|
+
- Listen for: Quotable moments, early wins
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### Part 3: The Results (5-7 minutes)
|
|
72
|
+
|
|
73
|
+
Ask these questions to capture outcomes:
|
|
74
|
+
|
|
75
|
+
10. **"What results have you seen since implementing ${product}?"**
|
|
76
|
+
- Listen for: Metrics, before/after comparisons
|
|
77
|
+
|
|
78
|
+
11. **"Can you put numbers on that? Percentage improvement, time saved, revenue impact?"**
|
|
79
|
+
- Listen for: Specific, quotable statistics
|
|
80
|
+
|
|
81
|
+
12. **"How has this affected your team's day-to-day work?"**
|
|
82
|
+
- Listen for: Quality of life improvements
|
|
83
|
+
|
|
84
|
+
13. **"What would you tell someone considering ${product}?"**
|
|
85
|
+
- Listen for: Ready-made testimonial quote
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### Bonus Questions for Rich Stories
|
|
90
|
+
|
|
91
|
+
14. **"Was there a moment where ${product} really saved the day?"**
|
|
92
|
+
- Listen for: Anecdotes, crisis averted stories
|
|
93
|
+
|
|
94
|
+
15. **"What surprised you most about working with us?"**
|
|
95
|
+
- Listen for: Unexpected benefits, delighters
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 📝 Interview Notes Template
|
|
100
|
+
|
|
101
|
+
Use this structure to capture responses:
|
|
102
|
+
|
|
103
|
+
\`\`\`
|
|
104
|
+
CUSTOMER: ${customerName}
|
|
105
|
+
INDUSTRY: ${industry}
|
|
106
|
+
DATE: [Interview date]
|
|
107
|
+
INTERVIEWER: [Your name]
|
|
108
|
+
|
|
109
|
+
CHALLENGE:
|
|
110
|
+
- Main problem:
|
|
111
|
+
- Business impact:
|
|
112
|
+
- Previous attempts:
|
|
113
|
+
- Trigger event:
|
|
114
|
+
|
|
115
|
+
SOLUTION:
|
|
116
|
+
- Discovery channel:
|
|
117
|
+
- Why ${product}:
|
|
118
|
+
- Implementation experience:
|
|
119
|
+
- Time to value:
|
|
120
|
+
|
|
121
|
+
RESULTS:
|
|
122
|
+
- Key metric 1:
|
|
123
|
+
- Key metric 2:
|
|
124
|
+
- Key metric 3:
|
|
125
|
+
- Team impact:
|
|
126
|
+
|
|
127
|
+
QUOTES:
|
|
128
|
+
- Best quote:
|
|
129
|
+
- Backup quote:
|
|
130
|
+
|
|
131
|
+
STORY ANGLE:
|
|
132
|
+
- Unique aspect:
|
|
133
|
+
- Emotional hook:
|
|
134
|
+
\`\`\`
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 📧 Interview Request Email Template
|
|
139
|
+
|
|
140
|
+
Subject: Quick favor - share your ${product} success story?
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
Hi [First Name],
|
|
145
|
+
|
|
146
|
+
I hope this finds you well!
|
|
147
|
+
|
|
148
|
+
I'm reaching out because your team has achieved some impressive results with ${product}, and I'd love to share your story with others who might benefit.
|
|
149
|
+
|
|
150
|
+
Would you be open to a 20-minute call where I ask a few questions about your experience? Here's what it would involve:
|
|
151
|
+
|
|
152
|
+
- **Time:** 20-minute video call at your convenience
|
|
153
|
+
- **Topics:** Your challenges before, how you use ${product}, results you've seen
|
|
154
|
+
- **Approval:** You'll review the final case study before it goes live
|
|
155
|
+
- **Benefit:** Increased visibility for ${customerName} + potential backlinks to your site
|
|
156
|
+
|
|
157
|
+
[OPTIONAL: We'd also love to feature you in our customer spotlight and share your story with our 50,000+ newsletter subscribers.]
|
|
158
|
+
|
|
159
|
+
Would next [Day] at [Time] work for a quick call?
|
|
160
|
+
|
|
161
|
+
Thanks,
|
|
162
|
+
[Your name]
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 🔄 Once You Have the Story
|
|
167
|
+
|
|
168
|
+
Run this tool again with mode="full" and include:
|
|
169
|
+
- **challenge:** What they were struggling with
|
|
170
|
+
- **solution:** How ${product} helped
|
|
171
|
+
- **results:** Quantifiable outcomes
|
|
172
|
+
- **customer_quote:** Their best testimonial quote
|
|
173
|
+
|
|
174
|
+
`;
|
|
175
|
+
}
|
|
176
|
+
function generateFromNotes(notes, customerName, industry, product, quote) {
|
|
177
|
+
// Parse the interview notes to extract structure
|
|
178
|
+
const keyPoints = extractKeyPoints(notes);
|
|
179
|
+
// Look for challenge indicators
|
|
180
|
+
const challengePatterns = /(?:problem|struggle|challenge|issue|pain|before|difficult|hard|couldn't|wasn't|weren't)[^.]*[.!?]/gi;
|
|
181
|
+
const challengeMatches = notes.match(challengePatterns) || [];
|
|
182
|
+
const challenge = challengeMatches.slice(0, 2).join(' ') || 'Customer faced operational challenges';
|
|
183
|
+
// Look for solution indicators
|
|
184
|
+
const solutionPatterns = /(?:implemented|started using|switched to|chose|selected|adopted|began|onboard)[^.]*[.!?]/gi;
|
|
185
|
+
const solutionMatches = notes.match(solutionPatterns) || [];
|
|
186
|
+
const solution = solutionMatches.slice(0, 2).join(' ') || `Implemented ${product}`;
|
|
187
|
+
// Look for results indicators
|
|
188
|
+
const resultsPatterns = /(?:\d+%|\$\d+|\d+x|reduced|increased|improved|saved|grew|achieved)[^.]*[.!?]/gi;
|
|
189
|
+
const resultsMatches = notes.match(resultsPatterns) || [];
|
|
190
|
+
const results = resultsMatches.slice(0, 3).join(' ') || 'Significant improvements achieved';
|
|
191
|
+
// Look for quotes
|
|
192
|
+
const quotePatterns = /"[^"]+"/g;
|
|
193
|
+
const foundQuotes = notes.match(quotePatterns) || [];
|
|
194
|
+
const bestQuote = quote || foundQuotes[0]?.replace(/"/g, '') || '';
|
|
195
|
+
return `# 📝 Case Study Draft (Parsed from Notes)
|
|
196
|
+
## ${customerName} + ${product}
|
|
197
|
+
|
|
198
|
+
⚠️ **Note:** This case study was auto-generated from interview notes. Please review and enhance with specific details.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
${generateFullCaseStudy(customerName, industry, challenge, solution, results, bestQuote, product)}
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 🔍 Key Points Extracted from Notes
|
|
207
|
+
|
|
208
|
+
${keyPoints.map((p, i) => `${i + 1}. ${p}`).join('\n')}
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## ⚠️ Items to Verify/Enhance
|
|
213
|
+
|
|
214
|
+
1. **Challenge section:** Add specific metrics (time wasted, money lost, etc.)
|
|
215
|
+
2. **Solution section:** Verify implementation timeline and process
|
|
216
|
+
3. **Results section:** Confirm exact percentages and timeframes
|
|
217
|
+
4. **Quote:** Get customer approval for the extracted quote
|
|
218
|
+
5. **Company description:** Add accurate ${customerName} company info
|
|
219
|
+
|
|
220
|
+
`;
|
|
221
|
+
}
|
|
222
|
+
function generateFullCaseStudy(customerName, industry, challenge, solution, results, quote, product) {
|
|
223
|
+
// Parse results into bullet points
|
|
224
|
+
const resultPoints = parseListItems(results);
|
|
225
|
+
// Extract any numbers from results for headline
|
|
226
|
+
const numbers = results.match(/\d+%|\$[\d,]+|\d+x|\d+\+/g) || [];
|
|
227
|
+
const headlineNumber = numbers[0] || 'significant';
|
|
228
|
+
return `# 📊 Case Study: ${customerName}
|
|
229
|
+
|
|
230
|
+
## ${headlineNumber} ${getResultVerb(headlineNumber)} with ${product}
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
### About ${customerName}
|
|
235
|
+
|
|
236
|
+
**Industry:** ${industry}
|
|
237
|
+
**Challenge:** ${getSummaryChallenge(challenge)}
|
|
238
|
+
**Solution:** ${product}
|
|
239
|
+
**Key Result:** ${resultPoints[0] || results}
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## The Challenge
|
|
244
|
+
|
|
245
|
+
${challenge}
|
|
246
|
+
|
|
247
|
+
${generateChallengeContext(industry)}
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## The Solution
|
|
252
|
+
|
|
253
|
+
${solution}
|
|
254
|
+
|
|
255
|
+
### Why ${customerName} Chose ${product}
|
|
256
|
+
|
|
257
|
+
${generateWhyChose(product, industry)}
|
|
258
|
+
|
|
259
|
+
### Implementation
|
|
260
|
+
|
|
261
|
+
${generateImplementationSection(product)}
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## The Results
|
|
266
|
+
|
|
267
|
+
${resultPoints.map((r, i) => `### ${i + 1}. ${r}
|
|
268
|
+
|
|
269
|
+
${generateResultContext(r)}`).join('\n\n')}
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
${quote ? `## In Their Words
|
|
274
|
+
|
|
275
|
+
> "${quote}"
|
|
276
|
+
>
|
|
277
|
+
> — ${customerName}
|
|
278
|
+
|
|
279
|
+
---` : ''}
|
|
280
|
+
|
|
281
|
+
## Key Takeaways
|
|
282
|
+
|
|
283
|
+
1. **Challenge:** ${getSummaryChallenge(challenge)}
|
|
284
|
+
2. **Solution:** ${product} provided the tools needed to transform their approach
|
|
285
|
+
3. **Impact:** ${resultPoints[0] || 'Measurable business improvements'}
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Ready to Achieve Similar Results?
|
|
290
|
+
|
|
291
|
+
[CTA: Schedule a demo / Get started / Talk to sales]
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## 📋 Distribution Formats
|
|
296
|
+
|
|
297
|
+
### One-Line Version (for testimonial pages):
|
|
298
|
+
"${customerName} achieved ${headlineNumber} ${getResultVerb(headlineNumber).toLowerCase()} after implementing ${product}."
|
|
299
|
+
|
|
300
|
+
### Social Media Version:
|
|
301
|
+
🎯 ${customerName} was struggling with ${getSummaryChallenge(challenge).toLowerCase()}.
|
|
302
|
+
|
|
303
|
+
Then they implemented ${product}.
|
|
304
|
+
|
|
305
|
+
The results?
|
|
306
|
+
${resultPoints.slice(0, 3).map(r => `✅ ${r}`).join('\n')}
|
|
307
|
+
|
|
308
|
+
${quote ? `"${quote.substring(0, 100)}..."` : ''}
|
|
309
|
+
|
|
310
|
+
Want similar results? Link in bio.
|
|
311
|
+
|
|
312
|
+
### Email Snippet:
|
|
313
|
+
Quick success story: ${customerName} (${industry}) faced ${getSummaryChallenge(challenge).toLowerCase()}. After implementing ${product}, they saw ${resultPoints[0]?.toLowerCase() || 'significant improvements'}. [Read the full story →]
|
|
314
|
+
|
|
315
|
+
`;
|
|
316
|
+
}
|
|
317
|
+
function getResultVerb(result) {
|
|
318
|
+
if (result.includes('%')) {
|
|
319
|
+
if (result.includes('-') || result.toLowerCase().includes('reduc'))
|
|
320
|
+
return 'reduction';
|
|
321
|
+
return 'improvement';
|
|
322
|
+
}
|
|
323
|
+
if (result.includes('$'))
|
|
324
|
+
return 'in savings';
|
|
325
|
+
if (result.includes('x'))
|
|
326
|
+
return 'growth';
|
|
327
|
+
return 'results';
|
|
328
|
+
}
|
|
329
|
+
function getSummaryChallenge(challenge) {
|
|
330
|
+
const words = challenge.split(/\s+/).slice(0, 10);
|
|
331
|
+
return words.join(' ') + (challenge.split(/\s+/).length > 10 ? '...' : '');
|
|
332
|
+
}
|
|
333
|
+
function generateChallengeContext(industry) {
|
|
334
|
+
const contexts = {
|
|
335
|
+
technology: 'In the fast-paced tech industry, this challenge was costing them competitive advantage.',
|
|
336
|
+
healthcare: 'In healthcare, where efficiency directly impacts patient outcomes, this challenge demanded immediate attention.',
|
|
337
|
+
finance: 'In the highly regulated financial services sector, this challenge posed both operational and compliance risks.',
|
|
338
|
+
retail: 'In retail, where margins are thin and customer experience is everything, this challenge was unsustainable.',
|
|
339
|
+
manufacturing: 'In manufacturing, where downtime equals lost revenue, this challenge was impacting the bottom line daily.'
|
|
340
|
+
};
|
|
341
|
+
return contexts[industry.toLowerCase()] || 'This challenge was impacting multiple areas of their business.';
|
|
342
|
+
}
|
|
343
|
+
function generateWhyChose(product, industry) {
|
|
344
|
+
return `After evaluating several options, ${product} stood out for its:
|
|
345
|
+
- Proven track record in the ${industry} industry
|
|
346
|
+
- Ease of implementation and time to value
|
|
347
|
+
- Comprehensive feature set that addressed their specific needs
|
|
348
|
+
- Responsive customer support team`;
|
|
349
|
+
}
|
|
350
|
+
function generateImplementationSection(product) {
|
|
351
|
+
return `The ${product} team worked closely with the customer to ensure a smooth rollout:
|
|
352
|
+
|
|
353
|
+
1. **Discovery:** Understanding specific workflows and requirements
|
|
354
|
+
2. **Configuration:** Customizing ${product} to their needs
|
|
355
|
+
3. **Training:** Ensuring team adoption and proficiency
|
|
356
|
+
4. **Launch:** Going live with ongoing support`;
|
|
357
|
+
}
|
|
358
|
+
function generateResultContext(result) {
|
|
359
|
+
if (result.toLowerCase().includes('time') || result.toLowerCase().includes('hour')) {
|
|
360
|
+
return 'This time savings allowed the team to focus on higher-value activities and strategic initiatives.';
|
|
361
|
+
}
|
|
362
|
+
if (result.toLowerCase().includes('revenue') || result.toLowerCase().includes('$')) {
|
|
363
|
+
return 'This financial impact went straight to the bottom line, proving ROI within the first quarter.';
|
|
364
|
+
}
|
|
365
|
+
if (result.toLowerCase().includes('customer') || result.toLowerCase().includes('satisfaction')) {
|
|
366
|
+
return 'Improved customer experience translated into higher retention and increased referrals.';
|
|
367
|
+
}
|
|
368
|
+
if (result.toLowerCase().includes('efficiency') || result.toLowerCase().includes('%')) {
|
|
369
|
+
return 'This efficiency gain compounded across the organization, multiplying the impact.';
|
|
370
|
+
}
|
|
371
|
+
return 'This result exceeded initial expectations and validated the decision to partner with us.';
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=case-study-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"case-study-generator.js","sourceRoot":"","sources":["../src/case-study-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-improver.d.ts","sourceRoot":"","sources":["../src/content-improver.ts"],"names":[],"mappings":"AAcA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAkIT"}
|