@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.
Files changed (44) hide show
  1. package/README.md +130 -103
  2. package/dist/case-study-generator.d.ts +12 -0
  3. package/dist/case-study-generator.d.ts.map +1 -0
  4. package/dist/case-study-generator.js +373 -0
  5. package/dist/case-study-generator.js.map +1 -0
  6. package/dist/content-improver.d.ts +8 -0
  7. package/dist/content-improver.d.ts.map +1 -0
  8. package/dist/content-improver.js +238 -0
  9. package/dist/content-improver.js.map +1 -0
  10. package/dist/content-repurposer.d.ts +8 -0
  11. package/dist/content-repurposer.d.ts.map +1 -0
  12. package/dist/content-repurposer.js +423 -0
  13. package/dist/content-repurposer.js.map +1 -0
  14. package/dist/index.js +86 -1236
  15. package/dist/index.js.map +1 -1
  16. package/dist/newsletter-builder.d.ts +10 -0
  17. package/dist/newsletter-builder.d.ts.map +1 -0
  18. package/dist/newsletter-builder.js +411 -0
  19. package/dist/newsletter-builder.js.map +1 -0
  20. package/dist/sales-enablement.d.ts +11 -0
  21. package/dist/sales-enablement.d.ts.map +1 -0
  22. package/dist/sales-enablement.js +455 -0
  23. package/dist/sales-enablement.js.map +1 -0
  24. package/dist/testimonial-capture.d.ts +11 -0
  25. package/dist/testimonial-capture.d.ts.map +1 -0
  26. package/dist/testimonial-capture.js +424 -0
  27. package/dist/testimonial-capture.js.map +1 -0
  28. package/dist/thought-leadership.d.ts +10 -0
  29. package/dist/thought-leadership.d.ts.map +1 -0
  30. package/dist/thought-leadership.js +475 -0
  31. package/dist/thought-leadership.js.map +1 -0
  32. package/dist/tools.d.ts +3 -0
  33. package/dist/tools.d.ts.map +1 -0
  34. package/dist/tools.js +210 -0
  35. package/dist/tools.js.map +1 -0
  36. package/dist/utils.d.ts +40 -0
  37. package/dist/utils.d.ts.map +1 -0
  38. package/dist/utils.js +289 -0
  39. package/dist/utils.js.map +1 -0
  40. package/dist/webinar-script.d.ts +11 -0
  41. package/dist/webinar-script.d.ts.map +1 -0
  42. package/dist/webinar-script.js +457 -0
  43. package/dist/webinar-script.js.map +1 -0
  44. package/package.json +15 -18
package/README.md CHANGED
@@ -1,123 +1,150 @@
1
- # CRAFT Content MCP Server
1
+ # @shashwatgtm/craft-content-mcp v2.0.0
2
2
 
3
- **8 Content Creation Execution Tools** powered by the CRAFT Framework.
3
+ 🎯 **CRAFT Content Framework MCP Server** - Complete redesign with user-centric inputs, actual content analysis, and publish-ready outputs.
4
4
 
5
- Created by [Shashwat Ghosh](https://gtmexpert.com) | Top 30 PLG Creator Worldwide
5
+ ## Design Philosophy
6
6
 
7
- ---
7
+ Every tool was redesigned using **chain of thought from the user's perspective**:
8
8
 
9
- ## ✍️ What is CRAFT Content?
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
- CRAFT Content provides ready-to-execute content tools for **content marketers, SDRs, and growth teams** who need to create:
13
+ ## What's New in v2.0.0
12
14
 
13
- - Case Studies & Social Proof
14
- - Newsletters & Email Content
15
- - Webinar Scripts
16
- - Repurposed Content (10+ formats)
17
- - Thought Leadership Series
18
- - Testimonial Collection
19
- - Sales Enablement Content
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
- **Typical use:** Daily/weekly content creation (15-45 minutes per asset)
26
+ ## Installation
22
27
 
23
- ---
24
-
25
- ## 🛠️ Tools Included
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
- Add to your `claude_desktop_config.json`:
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", "@shashwatah/craft-content-mcp"]
39
+ "args": ["-y", "@shashwatgtm/craft-content-mcp"]
52
40
  }
53
41
  }
54
42
  }
55
43
  ```
56
44
 
57
- ### Manual Installation
58
-
59
- ```bash
60
- npm install -g @shashwatah/craft-content-mcp
61
- craft-content-mcp
62
- ```
63
-
64
- ---
65
-
66
- ## 💡 Example Usage
67
-
68
- ### Case Study
69
- ```
70
- "Create a case study for [Customer].
71
- Challenge: Manual reporting taking 20 hours/week.
72
- Solution: Our analytics platform automated reports.
73
- Results: 80% time saved, $50K cost reduction."
74
- ```
75
-
76
- ### Content Repurposing
77
- ```
78
- "Repurpose this blog post into LinkedIn posts, Twitter thread, email section, and video script:
79
- [paste blog content]"
80
- ```
81
-
82
- ### Thought Leadership
83
- ```
84
- "Create a 5-post LinkedIn series on 'Why traditional marketing metrics are broken.'
85
- My perspective: Attribution is a vanity exercise.
86
- Audience: B2B marketing leaders."
87
- ```
88
-
89
- ### Sales Enablement
90
- ```
91
- "Create sales content for [Product].
92
- Value props: 50% faster implementation, 3x ROI, enterprise security.
93
- Target: VP Engineering at mid-market SaaS.
94
- Common objections: Price, integration complexity, change management."
95
- ```
96
-
97
- ---
98
-
99
- ## 🔗 Related
100
-
101
- - **[CRAFT GTM MCP](https://github.com/anthropics/craft-gtm-mcp)** - 8 strategic GTM tools (PMF, launches, retention)
102
- - **[IMPACT MCP](https://github.com/shashwatgtm/impact-mcp)** - Positioning framework
103
- - **[EPIC MCP](https://github.com/shashwatgtm/epic-mcp)** - GTM strategy framework
104
-
105
- ---
106
-
107
- ## 📚 The CRAFT Framework
108
-
109
- **C**haracter - Who executes this?
110
- **R**esult - What's the desired outcome?
111
- **A**rtifact - What gets produced?
112
- **F**rame - What's the context?
113
- **T**imeline - What are the steps?
114
-
115
- ---
116
-
117
- ## 📄 License
118
-
119
- MIT License - Created by Shashwat Ghosh
120
-
121
- ---
122
-
123
- *Part of the GTM Alpha Toolkit | [gtmexpert.com](https://gtmexpert.com)*
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,8 @@
1
+ export declare function generateContentImprover(args: {
2
+ content: string;
3
+ content_type: string;
4
+ goal?: string;
5
+ audience?: string;
6
+ tone_preference?: string;
7
+ }): string;
8
+ //# sourceMappingURL=content-improver.d.ts.map
@@ -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"}