@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/dist/tools.js
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
export const tools = [
|
|
2
|
+
{
|
|
3
|
+
name: "case_study_generator",
|
|
4
|
+
description: "Generate case studies with DISCOVERY MODE. If you have the full story, get a complete case study. If not, get interview questions to gather the story first. Version 2.0 - Works with incomplete info!",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
customer_name: { type: "string", description: "Customer/company name" },
|
|
9
|
+
customer_industry: { type: "string", description: "Customer's industry for context" },
|
|
10
|
+
mode: {
|
|
11
|
+
type: "string",
|
|
12
|
+
description: "full = generate case study (requires challenge/solution/results), discovery = generate interview questions to gather story",
|
|
13
|
+
enum: ["full", "discovery"]
|
|
14
|
+
},
|
|
15
|
+
interview_notes: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Optional: Raw interview notes or transcript - will be PARSED into structured case study"
|
|
18
|
+
},
|
|
19
|
+
challenge: { type: "string", description: "The customer's challenge/problem (required for full mode)" },
|
|
20
|
+
solution: { type: "string", description: "How your product solved it (required for full mode)" },
|
|
21
|
+
results: { type: "string", description: "Quantifiable outcomes (required for full mode)" },
|
|
22
|
+
customer_quote: { type: "string", description: "Optional: Direct quote from customer" },
|
|
23
|
+
your_product: { type: "string", description: "Your product/service name" }
|
|
24
|
+
},
|
|
25
|
+
required: ["customer_name", "your_product"]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "newsletter_builder",
|
|
30
|
+
description: "Build newsletter content. Just have a topic? We'll suggest key points. Have key points? We'll craft the content. Version 2.0 - Works with topic-only or full brief!",
|
|
31
|
+
inputSchema: {
|
|
32
|
+
type: "object",
|
|
33
|
+
properties: {
|
|
34
|
+
topic: { type: "string", description: "Main topic/theme of the newsletter" },
|
|
35
|
+
key_points: { type: "string", description: "OPTIONAL: Key points to cover (comma-separated). If not provided, we'll suggest 3-5 relevant points based on topic" },
|
|
36
|
+
cta_goal: { type: "string", description: "What action should readers take? (e.g., 'sign up for webinar', 'try feature', 'read blog')" },
|
|
37
|
+
audience_segment: {
|
|
38
|
+
type: "string",
|
|
39
|
+
description: "Audience segment affects tone and depth",
|
|
40
|
+
enum: ["executives", "practitioners", "technical", "general", "prospects", "customers"]
|
|
41
|
+
},
|
|
42
|
+
newsletter_type: {
|
|
43
|
+
type: "string",
|
|
44
|
+
description: "Type of newsletter",
|
|
45
|
+
enum: ["educational", "product_update", "industry_news", "thought_leadership", "curated_links"]
|
|
46
|
+
},
|
|
47
|
+
tone: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Writing tone",
|
|
50
|
+
enum: ["professional", "conversational", "authoritative", "friendly", "urgent"]
|
|
51
|
+
},
|
|
52
|
+
previous_topics: {
|
|
53
|
+
type: "string",
|
|
54
|
+
description: "Optional: Recent newsletter topics to avoid repetition and suggest connections"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
required: ["topic", "cta_goal"]
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: "webinar_script",
|
|
62
|
+
description: "Generate webinar scripts. Know your takeaways? Get a complete script. Still planning? We'll suggest takeaways based on topic and type. Version 2.0 - Works at any planning stage!",
|
|
63
|
+
inputSchema: {
|
|
64
|
+
type: "object",
|
|
65
|
+
properties: {
|
|
66
|
+
topic: { type: "string", description: "Webinar topic/title" },
|
|
67
|
+
target_audience: { type: "string", description: "Who will attend (e.g., 'Marketing managers at B2B SaaS companies')" },
|
|
68
|
+
webinar_type: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "Type of webinar determines structure",
|
|
71
|
+
enum: ["educational", "product_demo", "panel_discussion", "customer_story", "workshop", "ama"]
|
|
72
|
+
},
|
|
73
|
+
duration: {
|
|
74
|
+
type: "string",
|
|
75
|
+
description: "Webinar length",
|
|
76
|
+
enum: ["30_min", "45_min", "60_min", "90_min"]
|
|
77
|
+
},
|
|
78
|
+
key_takeaways: { type: "string", description: "OPTIONAL: 3-5 things attendees should learn (comma-separated). If not provided, we'll suggest based on topic" },
|
|
79
|
+
speakers: { type: "string", description: "Optional: Speaker names and titles (comma-separated)" },
|
|
80
|
+
include_polls: { type: "boolean", description: "Include interactive poll suggestions" },
|
|
81
|
+
product_mention_level: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "How much to mention your product",
|
|
84
|
+
enum: ["none", "subtle", "moderate", "heavy"]
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
required: ["topic", "target_audience", "webinar_type"]
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "content_repurposer",
|
|
92
|
+
description: "Transform source content into multiple formats. Just paste content - we'll generate the 5 most useful formats by default, or specify exactly what you need. Version 2.0 - Smart defaults!",
|
|
93
|
+
inputSchema: {
|
|
94
|
+
type: "object",
|
|
95
|
+
properties: {
|
|
96
|
+
source_content: { type: "string", description: "Original content to repurpose (blog post, article, transcript, etc.)" },
|
|
97
|
+
source_type: {
|
|
98
|
+
type: "string",
|
|
99
|
+
description: "What type of content is the source",
|
|
100
|
+
enum: ["blog_post", "webinar_transcript", "podcast_transcript", "whitepaper", "case_study", "research_report", "presentation"]
|
|
101
|
+
},
|
|
102
|
+
target_formats: {
|
|
103
|
+
type: "string",
|
|
104
|
+
description: "OPTIONAL: Formats to generate (comma-separated). Defaults to: linkedin_post, twitter_thread, email, blog_summary, quote_cards. Other options: infographic_outline, video_script, podcast_talking_points, slide_deck_outline, newsletter_section"
|
|
105
|
+
},
|
|
106
|
+
brand_voice: {
|
|
107
|
+
type: "string",
|
|
108
|
+
description: "Brand voice to maintain",
|
|
109
|
+
enum: ["professional", "casual", "authoritative", "friendly", "bold"]
|
|
110
|
+
},
|
|
111
|
+
key_message: { type: "string", description: "Optional: Core message to emphasize across all formats" }
|
|
112
|
+
},
|
|
113
|
+
required: ["source_content", "source_type"]
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "thought_leadership_series",
|
|
118
|
+
description: "Generate COMPLETE thought leadership ARTICLES (600-800 words each). Have proof points? Get publish-ready articles. Only have a hot take? Get articles PLUS suggested proof points to strengthen your argument. Version 2.0 - Works at any stage of thought development!",
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: "object",
|
|
121
|
+
properties: {
|
|
122
|
+
topic: { type: "string", description: "The topic you want to establish authority on" },
|
|
123
|
+
your_take: { type: "string", description: "Your unique perspective or opinion on this topic. What do you believe that others don't? What's your contrarian view?" },
|
|
124
|
+
target_reader: { type: "string", description: "Who should read this? Be specific (e.g., 'B2B SaaS founders struggling with churn' not just 'marketers')" },
|
|
125
|
+
proof_points: { type: "string", description: "OPTIONAL: Evidence supporting your take - personal stories, client examples, data/stats (comma-separated). If not provided, we'll suggest proof points to gather" },
|
|
126
|
+
author_background: { type: "string", description: "Optional: Your role and why you're credible (e.g., '15 years in enterprise sales')" },
|
|
127
|
+
num_articles: {
|
|
128
|
+
type: "number",
|
|
129
|
+
description: "Number of articles to generate (1-5)",
|
|
130
|
+
minimum: 1,
|
|
131
|
+
maximum: 5
|
|
132
|
+
},
|
|
133
|
+
article_type: {
|
|
134
|
+
type: "string",
|
|
135
|
+
description: "Style of articles",
|
|
136
|
+
enum: ["contrarian", "how_to", "lessons_learned", "prediction", "framework"]
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
required: ["topic", "your_take", "target_reader"]
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: "testimonial_capture",
|
|
144
|
+
description: "Generate testimonial request emails, interview questions, and formatted outputs. Discovery-focused by design. Version 2.0 - Already excellent!",
|
|
145
|
+
inputSchema: {
|
|
146
|
+
type: "object",
|
|
147
|
+
properties: {
|
|
148
|
+
customer_name: { type: "string", description: "Customer name" },
|
|
149
|
+
customer_company: { type: "string", description: "Customer's company" },
|
|
150
|
+
customer_role: { type: "string", description: "Customer's job title" },
|
|
151
|
+
relationship_context: { type: "string", description: "How long they've been a customer, key interactions" },
|
|
152
|
+
success_story: { type: "string", description: "Brief description of their success with your product" },
|
|
153
|
+
testimonial_type: {
|
|
154
|
+
type: "string",
|
|
155
|
+
description: "Type of testimonial needed",
|
|
156
|
+
enum: ["written_quote", "video_interview", "case_study_interview", "g2_review", "reference_call"]
|
|
157
|
+
},
|
|
158
|
+
use_case: { type: "string", description: "Where will this testimonial be used? (website, sales deck, etc.)" },
|
|
159
|
+
incentive: { type: "string", description: "Optional: What you're offering in return" }
|
|
160
|
+
},
|
|
161
|
+
required: ["customer_name", "customer_company", "success_story", "testimonial_type"]
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: "sales_enablement_content",
|
|
166
|
+
description: "Generate sales content. Know your objections? Get complete handlers. New product with no sales data yet? We'll suggest likely objections based on your product type. Version 2.0 - Works at any sales maturity!",
|
|
167
|
+
inputSchema: {
|
|
168
|
+
type: "object",
|
|
169
|
+
properties: {
|
|
170
|
+
product: { type: "string", description: "Product name and what it does" },
|
|
171
|
+
target_persona: { type: "string", description: "Who sales is pitching to (role, company type)" },
|
|
172
|
+
proof_points: { type: "string", description: "Evidence for claims - case studies, metrics, quotes (comma-separated)" },
|
|
173
|
+
common_objections: { type: "string", description: "OPTIONAL: Sales objections you hear (comma-separated). If not provided, we'll suggest likely objections for your product type" },
|
|
174
|
+
value_props: { type: "string", description: "OPTIONAL: Key value propositions (comma-separated). Will be DERIVED from proof points if not provided" },
|
|
175
|
+
competitor_objections: { type: "string", description: "Optional: 'Why not [competitor]' objections" },
|
|
176
|
+
price_context: { type: "string", description: "Optional: Your pricing vs market (e.g., 'Premium - 20% above market', 'Budget option', 'Mid-market')" },
|
|
177
|
+
sales_stage: {
|
|
178
|
+
type: "string",
|
|
179
|
+
description: "What stage of sales funnel",
|
|
180
|
+
enum: ["prospecting", "discovery", "demo", "negotiation", "closing"]
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
required: ["product", "target_persona", "proof_points"]
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: "craft_content_improver",
|
|
188
|
+
description: "ACTUALLY ANALYZE and IMPROVE content. Just paste content - we'll score clarity, structure, engagement and generate an improved version. Version 2.0 - Real analysis!",
|
|
189
|
+
inputSchema: {
|
|
190
|
+
type: "object",
|
|
191
|
+
properties: {
|
|
192
|
+
content: { type: "string", description: "Content to analyze and improve - will be ACTUALLY ANALYZED" },
|
|
193
|
+
content_type: {
|
|
194
|
+
type: "string",
|
|
195
|
+
description: "Type of content affects evaluation criteria",
|
|
196
|
+
enum: ["blog_post", "email", "landing_page", "social_post", "sales_email", "product_description", "press_release", "case_study"]
|
|
197
|
+
},
|
|
198
|
+
goal: { type: "string", description: "OPTIONAL: What should this content achieve? (e.g., 'drive signups', 'educate readers'). Defaults to 'improve engagement and clarity'" },
|
|
199
|
+
audience: { type: "string", description: "OPTIONAL: Who is this content for? Helps tailor improvements." },
|
|
200
|
+
tone_preference: {
|
|
201
|
+
type: "string",
|
|
202
|
+
description: "Desired tone for improvements",
|
|
203
|
+
enum: ["more_formal", "more_casual", "more_urgent", "more_friendly", "more_authoritative", "keep_same"]
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
required: ["content", "content_type"]
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
];
|
|
210
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAW;IAC3B;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,wMAAwM;QACrN,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;gBACvE,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;gBACrF,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4HAA4H;oBACzI,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;iBAC5B;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yFAAyF;iBACvG;gBACD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;gBACvG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;gBAChG,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;gBAC1F,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;gBACvF,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;aAC3E;YACD,QAAQ,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;SAC5C;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,qKAAqK;QAClL,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;gBAC5E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oHAAoH,EAAE;gBACjK,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4FAA4F,EAAE;gBACvI,gBAAgB,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yCAAyC;oBACtD,IAAI,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC;iBACxF;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oBAAoB;oBACjC,IAAI,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe,CAAC;iBAChG;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC;iBAChF;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gFAAgF;iBAC9F;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;SAChC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,mLAAmL;QAChM,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;gBAC7D,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oEAAoE,EAAE;gBACtH,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sCAAsC;oBACnD,IAAI,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,CAAC;iBAC/F;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;iBAC/C;gBACD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8GAA8G,EAAE;gBAC9J,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;gBACjG,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,sCAAsC,EAAE;gBACvF,qBAAqB,EAAE;oBACrB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;oBAC/C,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC;iBAC9C;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,CAAC;SACvD;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,2LAA2L;QACxM,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sEAAsE,EAAE;gBACvH,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;oBACjD,IAAI,EAAE,CAAC,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,CAAC;iBAC/H;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iPAAiP;iBAC/P;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yBAAyB;oBACtC,IAAI,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC;iBACtE;gBACD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wDAAwD,EAAE;aACvG;YACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;SAC5C;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,yQAAyQ;QACtR,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;gBACtF,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uHAAuH,EAAE;gBACnK,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0GAA0G,EAAE;gBAC1J,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kKAAkK,EAAE;gBACjN,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oFAAoF,EAAE;gBACxI,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sCAAsC;oBACnD,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;iBACX;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mBAAmB;oBAChC,IAAI,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,CAAC;iBAC7E;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC;SAClD;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,gJAAgJ;QAC7J,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;gBAC/D,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACvE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;gBACtE,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;gBAC3G,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;gBACtG,gBAAgB,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;oBACzC,IAAI,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,gBAAgB,CAAC;iBAClG;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kEAAkE,EAAE;gBAC7G,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;aACvF;YACD,QAAQ,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,CAAC;SACrF;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE,iNAAiN;QAC9N,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBACzE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;gBAChG,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uEAAuE,EAAE;gBACtH,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+HAA+H,EAAE;gBACnL,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uGAAuG,EAAE;gBACrJ,qBAAqB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBACrG,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sGAAsG,EAAE;gBACtJ,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;oBACzC,IAAI,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;iBACrE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,CAAC;SACxD;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,sKAAsK;QACnL,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4DAA4D,EAAE;gBACtG,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6CAA6C;oBAC1D,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,YAAY,CAAC;iBACjI;gBACD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sIAAsI,EAAE;gBAC7K,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;gBAC1G,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;oBAC5C,IAAI,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,CAAC;iBACxG;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;SACtC;KACF;CACF,CAAC"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare function parseListItems(text: string): string[];
|
|
2
|
+
export declare function countWords(text: string): number;
|
|
3
|
+
export declare function countSentences(text: string): number;
|
|
4
|
+
export declare function avgWordsPerSentence(text: string): number;
|
|
5
|
+
export declare function calculateReadability(text: string): {
|
|
6
|
+
score: number;
|
|
7
|
+
grade: string;
|
|
8
|
+
analysis: string;
|
|
9
|
+
};
|
|
10
|
+
export interface ContentAnalysis {
|
|
11
|
+
clarity: {
|
|
12
|
+
score: number;
|
|
13
|
+
issues: string[];
|
|
14
|
+
suggestions: string[];
|
|
15
|
+
};
|
|
16
|
+
structure: {
|
|
17
|
+
score: number;
|
|
18
|
+
issues: string[];
|
|
19
|
+
suggestions: string[];
|
|
20
|
+
};
|
|
21
|
+
engagement: {
|
|
22
|
+
score: number;
|
|
23
|
+
issues: string[];
|
|
24
|
+
suggestions: string[];
|
|
25
|
+
};
|
|
26
|
+
goalAlignment: {
|
|
27
|
+
score: number;
|
|
28
|
+
issues: string[];
|
|
29
|
+
suggestions: string[];
|
|
30
|
+
};
|
|
31
|
+
overall: {
|
|
32
|
+
score: number;
|
|
33
|
+
rating: string;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export declare function analyzeContent(content: string, contentType: string, goal: string): ContentAnalysis;
|
|
37
|
+
export declare function generateImprovedVersion(content: string, analysis: ContentAnalysis): string;
|
|
38
|
+
export declare function extractKeyPoints(text: string): string[];
|
|
39
|
+
export declare function generateHook(topic: string, style: 'question' | 'statistic' | 'story' | 'bold_statement'): string;
|
|
40
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKrD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkCrG;AA0BD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACpE,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACtE,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACvE,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC1E,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CA6KlG;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,CAmC1F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,gBAAgB,GAAG,MAAM,CAahH"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
// Utility functions for content analysis and generation
|
|
2
|
+
export function parseListItems(text) {
|
|
3
|
+
return text
|
|
4
|
+
.split(/[,\n]/)
|
|
5
|
+
.map(item => item.replace(/^[-•*]\s*/, '').trim())
|
|
6
|
+
.filter(item => item.length > 0);
|
|
7
|
+
}
|
|
8
|
+
export function countWords(text) {
|
|
9
|
+
return text.split(/\s+/).filter(word => word.length > 0).length;
|
|
10
|
+
}
|
|
11
|
+
export function countSentences(text) {
|
|
12
|
+
return text.split(/[.!?]+/).filter(s => s.trim().length > 0).length;
|
|
13
|
+
}
|
|
14
|
+
export function avgWordsPerSentence(text) {
|
|
15
|
+
const sentences = countSentences(text);
|
|
16
|
+
if (sentences === 0)
|
|
17
|
+
return 0;
|
|
18
|
+
return Math.round(countWords(text) / sentences * 10) / 10;
|
|
19
|
+
}
|
|
20
|
+
export function calculateReadability(text) {
|
|
21
|
+
const words = countWords(text);
|
|
22
|
+
const sentences = countSentences(text);
|
|
23
|
+
const syllables = countSyllables(text);
|
|
24
|
+
if (sentences === 0 || words === 0) {
|
|
25
|
+
return { score: 0, grade: 'N/A', analysis: 'Not enough content to analyze' };
|
|
26
|
+
}
|
|
27
|
+
// Flesch Reading Ease formula
|
|
28
|
+
const fleschScore = 206.835 - (1.015 * (words / sentences)) - (84.6 * (syllables / words));
|
|
29
|
+
const normalizedScore = Math.max(0, Math.min(100, fleschScore));
|
|
30
|
+
let grade = '';
|
|
31
|
+
let analysis = '';
|
|
32
|
+
if (normalizedScore >= 80) {
|
|
33
|
+
grade = 'Very Easy';
|
|
34
|
+
analysis = 'Accessible to everyone. Good for broad audiences.';
|
|
35
|
+
}
|
|
36
|
+
else if (normalizedScore >= 60) {
|
|
37
|
+
grade = 'Standard';
|
|
38
|
+
analysis = 'Appropriate for most business content.';
|
|
39
|
+
}
|
|
40
|
+
else if (normalizedScore >= 40) {
|
|
41
|
+
grade = 'Fairly Difficult';
|
|
42
|
+
analysis = 'Best for technical or expert audiences.';
|
|
43
|
+
}
|
|
44
|
+
else if (normalizedScore >= 20) {
|
|
45
|
+
grade = 'Difficult';
|
|
46
|
+
analysis = 'Academic level. May be too complex for general audience.';
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
grade = 'Very Difficult';
|
|
50
|
+
analysis = 'Consider simplifying for better engagement.';
|
|
51
|
+
}
|
|
52
|
+
return { score: Math.round(normalizedScore), grade, analysis };
|
|
53
|
+
}
|
|
54
|
+
function countSyllables(text) {
|
|
55
|
+
const words = text.toLowerCase().match(/[a-z]+/g) || [];
|
|
56
|
+
let total = 0;
|
|
57
|
+
for (const word of words) {
|
|
58
|
+
let count = 0;
|
|
59
|
+
const vowels = 'aeiouy';
|
|
60
|
+
let prevWasVowel = false;
|
|
61
|
+
for (const char of word) {
|
|
62
|
+
const isVowel = vowels.includes(char);
|
|
63
|
+
if (isVowel && !prevWasVowel)
|
|
64
|
+
count++;
|
|
65
|
+
prevWasVowel = isVowel;
|
|
66
|
+
}
|
|
67
|
+
// Adjust for silent e
|
|
68
|
+
if (word.endsWith('e') && count > 1)
|
|
69
|
+
count--;
|
|
70
|
+
// Every word has at least one syllable
|
|
71
|
+
total += Math.max(1, count);
|
|
72
|
+
}
|
|
73
|
+
return total;
|
|
74
|
+
}
|
|
75
|
+
export function analyzeContent(content, contentType, goal) {
|
|
76
|
+
const analysis = {
|
|
77
|
+
clarity: { score: 0, issues: [], suggestions: [] },
|
|
78
|
+
structure: { score: 0, issues: [], suggestions: [] },
|
|
79
|
+
engagement: { score: 0, issues: [], suggestions: [] },
|
|
80
|
+
goalAlignment: { score: 0, issues: [], suggestions: [] },
|
|
81
|
+
overall: { score: 0, rating: '' }
|
|
82
|
+
};
|
|
83
|
+
const words = countWords(content);
|
|
84
|
+
const sentences = countSentences(content);
|
|
85
|
+
const avgWords = avgWordsPerSentence(content);
|
|
86
|
+
const readability = calculateReadability(content);
|
|
87
|
+
// CLARITY ANALYSIS
|
|
88
|
+
let clarityScore = 10;
|
|
89
|
+
// Check sentence length
|
|
90
|
+
if (avgWords > 25) {
|
|
91
|
+
clarityScore -= 3;
|
|
92
|
+
analysis.clarity.issues.push(`Sentences too long (avg ${avgWords} words)`);
|
|
93
|
+
analysis.clarity.suggestions.push('Break sentences at natural pauses. Target 15-20 words per sentence.');
|
|
94
|
+
}
|
|
95
|
+
else if (avgWords > 20) {
|
|
96
|
+
clarityScore -= 1;
|
|
97
|
+
analysis.clarity.issues.push(`Sentences slightly long (avg ${avgWords} words)`);
|
|
98
|
+
analysis.clarity.suggestions.push('Consider shortening some sentences for easier scanning.');
|
|
99
|
+
}
|
|
100
|
+
// Check for passive voice indicators
|
|
101
|
+
const passivePatterns = /\b(was|were|been|being|is|are|am)\s+\w+ed\b/gi;
|
|
102
|
+
const passiveMatches = content.match(passivePatterns) || [];
|
|
103
|
+
if (passiveMatches.length > sentences * 0.3) {
|
|
104
|
+
clarityScore -= 2;
|
|
105
|
+
analysis.clarity.issues.push(`High passive voice usage (${passiveMatches.length} instances)`);
|
|
106
|
+
analysis.clarity.suggestions.push('Convert to active voice: "X did Y" instead of "Y was done by X"');
|
|
107
|
+
}
|
|
108
|
+
// Check for jargon/complexity
|
|
109
|
+
const jargonWords = ['utilize', 'leverage', 'synergy', 'paradigm', 'optimize', 'facilitate', 'implement', 'methodology'];
|
|
110
|
+
const foundJargon = jargonWords.filter(j => content.toLowerCase().includes(j));
|
|
111
|
+
if (foundJargon.length > 2) {
|
|
112
|
+
clarityScore -= 1;
|
|
113
|
+
analysis.clarity.issues.push(`Business jargon detected: ${foundJargon.join(', ')}`);
|
|
114
|
+
analysis.clarity.suggestions.push('Replace with simpler words: "use" instead of "utilize", "improve" instead of "optimize"');
|
|
115
|
+
}
|
|
116
|
+
analysis.clarity.score = Math.max(0, clarityScore);
|
|
117
|
+
// STRUCTURE ANALYSIS
|
|
118
|
+
let structureScore = 10;
|
|
119
|
+
// Check for headers/sections
|
|
120
|
+
const hasHeaders = /^#{1,3}\s|^\*\*[^*]+\*\*$|^[A-Z][^a-z]+$/gm.test(content);
|
|
121
|
+
if (!hasHeaders && words > 200) {
|
|
122
|
+
structureScore -= 3;
|
|
123
|
+
analysis.structure.issues.push('No clear section headers');
|
|
124
|
+
analysis.structure.suggestions.push('Add headers to break up content and aid scanning');
|
|
125
|
+
}
|
|
126
|
+
// Check paragraph length
|
|
127
|
+
const paragraphs = content.split(/\n\n+/).filter(p => p.trim().length > 0);
|
|
128
|
+
const longParagraphs = paragraphs.filter(p => countWords(p) > 100);
|
|
129
|
+
if (longParagraphs.length > 0) {
|
|
130
|
+
structureScore -= 2;
|
|
131
|
+
analysis.structure.issues.push(`${longParagraphs.length} paragraphs over 100 words`);
|
|
132
|
+
analysis.structure.suggestions.push('Break long paragraphs at topic shifts. Aim for 50-75 words per paragraph.');
|
|
133
|
+
}
|
|
134
|
+
// Check for logical flow indicators
|
|
135
|
+
const transitionWords = ['however', 'therefore', 'additionally', 'furthermore', 'consequently', 'moreover', 'first', 'second', 'finally'];
|
|
136
|
+
const foundTransitions = transitionWords.filter(t => content.toLowerCase().includes(t));
|
|
137
|
+
if (foundTransitions.length < 2 && paragraphs.length > 3) {
|
|
138
|
+
structureScore -= 2;
|
|
139
|
+
analysis.structure.issues.push('Few transition words - may feel disjointed');
|
|
140
|
+
analysis.structure.suggestions.push('Add transitions: "However...", "As a result...", "First... Second..."');
|
|
141
|
+
}
|
|
142
|
+
analysis.structure.score = Math.max(0, structureScore);
|
|
143
|
+
// ENGAGEMENT ANALYSIS
|
|
144
|
+
let engagementScore = 10;
|
|
145
|
+
// Check for questions
|
|
146
|
+
const questionCount = (content.match(/\?/g) || []).length;
|
|
147
|
+
if (questionCount === 0 && contentType !== 'press_release') {
|
|
148
|
+
engagementScore -= 2;
|
|
149
|
+
analysis.engagement.issues.push('No questions to engage reader');
|
|
150
|
+
analysis.engagement.suggestions.push('Add a rhetorical question to draw readers in');
|
|
151
|
+
}
|
|
152
|
+
// Check for "you" language
|
|
153
|
+
const youCount = (content.match(/\byou\b|\byour\b/gi) || []).length;
|
|
154
|
+
if (youCount < 3 && contentType !== 'press_release') {
|
|
155
|
+
engagementScore -= 2;
|
|
156
|
+
analysis.engagement.issues.push('Limited "you" language - feels impersonal');
|
|
157
|
+
analysis.engagement.suggestions.push('Reframe benefits in terms of "you": "You\'ll save time" vs "It saves time"');
|
|
158
|
+
}
|
|
159
|
+
// Check for power words
|
|
160
|
+
const powerWords = ['free', 'new', 'proven', 'easy', 'guaranteed', 'save', 'results', 'discover', 'secret', 'exclusive'];
|
|
161
|
+
const foundPowerWords = powerWords.filter(p => content.toLowerCase().includes(p));
|
|
162
|
+
if (foundPowerWords.length === 0) {
|
|
163
|
+
engagementScore -= 1;
|
|
164
|
+
analysis.engagement.issues.push('No power words for emotional impact');
|
|
165
|
+
analysis.engagement.suggestions.push('Add: proven, results, discover, exclusive, free');
|
|
166
|
+
}
|
|
167
|
+
// Check hook (first sentence)
|
|
168
|
+
const firstSentence = content.split(/[.!?]/)[0] || '';
|
|
169
|
+
if (countWords(firstSentence) > 20) {
|
|
170
|
+
engagementScore -= 2;
|
|
171
|
+
analysis.engagement.issues.push('Opening sentence too long - may lose readers');
|
|
172
|
+
analysis.engagement.suggestions.push('Start with a punchy hook under 15 words');
|
|
173
|
+
}
|
|
174
|
+
analysis.engagement.score = Math.max(0, engagementScore);
|
|
175
|
+
// GOAL ALIGNMENT ANALYSIS
|
|
176
|
+
let goalScore = 10;
|
|
177
|
+
const goalLower = goal.toLowerCase();
|
|
178
|
+
const contentLower = content.toLowerCase();
|
|
179
|
+
// Check if CTA exists
|
|
180
|
+
const ctaPatterns = /\b(sign up|register|download|learn more|get started|contact|subscribe|try|book|schedule|click)\b/gi;
|
|
181
|
+
const hasCTA = ctaPatterns.test(content);
|
|
182
|
+
if (goalLower.includes('convert') || goalLower.includes('sign up') || goalLower.includes('lead')) {
|
|
183
|
+
if (!hasCTA) {
|
|
184
|
+
goalScore -= 4;
|
|
185
|
+
analysis.goalAlignment.issues.push('Goal requires conversion but no CTA found');
|
|
186
|
+
analysis.goalAlignment.suggestions.push('Add clear CTA: "Sign up now", "Get started today"');
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (goalLower.includes('educate') || goalLower.includes('inform')) {
|
|
190
|
+
if (words < 300) {
|
|
191
|
+
goalScore -= 2;
|
|
192
|
+
analysis.goalAlignment.issues.push('Educational content may be too brief');
|
|
193
|
+
analysis.goalAlignment.suggestions.push('Expand with examples, data, or how-to steps');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (goalLower.includes('awareness') || goalLower.includes('brand')) {
|
|
197
|
+
const brandMentions = (content.match(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)?\b/g) || []).length;
|
|
198
|
+
if (brandMentions < 2) {
|
|
199
|
+
goalScore -= 2;
|
|
200
|
+
analysis.goalAlignment.issues.push('Brand/product mentions may be insufficient for awareness');
|
|
201
|
+
analysis.goalAlignment.suggestions.push('Ensure brand is mentioned prominently');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (goalLower.includes('trust') || goalLower.includes('credibility')) {
|
|
205
|
+
const hasNumbers = /\d+%|\$\d+|\d+x|\d+\s*(customer|client|user)/i.test(content);
|
|
206
|
+
if (!hasNumbers) {
|
|
207
|
+
goalScore -= 3;
|
|
208
|
+
analysis.goalAlignment.issues.push('No data/proof points for credibility');
|
|
209
|
+
analysis.goalAlignment.suggestions.push('Add specific metrics: "50% faster", "10,000+ customers"');
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
analysis.goalAlignment.score = Math.max(0, goalScore);
|
|
213
|
+
// Calculate overall
|
|
214
|
+
const totalScore = analysis.clarity.score + analysis.structure.score +
|
|
215
|
+
analysis.engagement.score + analysis.goalAlignment.score;
|
|
216
|
+
analysis.overall.score = Math.round(totalScore / 4 * 10) / 10;
|
|
217
|
+
if (analysis.overall.score >= 8)
|
|
218
|
+
analysis.overall.rating = 'EXCELLENT';
|
|
219
|
+
else if (analysis.overall.score >= 6)
|
|
220
|
+
analysis.overall.rating = 'GOOD';
|
|
221
|
+
else if (analysis.overall.score >= 4)
|
|
222
|
+
analysis.overall.rating = 'NEEDS WORK';
|
|
223
|
+
else
|
|
224
|
+
analysis.overall.rating = 'MAJOR REVISION NEEDED';
|
|
225
|
+
return analysis;
|
|
226
|
+
}
|
|
227
|
+
export function generateImprovedVersion(content, analysis) {
|
|
228
|
+
let improved = content;
|
|
229
|
+
// Apply common improvements
|
|
230
|
+
// Shorten very long sentences
|
|
231
|
+
const sentences = improved.split(/(?<=[.!?])\s+/);
|
|
232
|
+
const improvedSentences = sentences.map(s => {
|
|
233
|
+
if (countWords(s) > 30) {
|
|
234
|
+
// Try to split at conjunctions
|
|
235
|
+
const split = s.replace(/,\s*(and|but|so|or)\s+/gi, '.\n$1 ');
|
|
236
|
+
return split.charAt(0).toUpperCase() + split.slice(1);
|
|
237
|
+
}
|
|
238
|
+
return s;
|
|
239
|
+
});
|
|
240
|
+
improved = improvedSentences.join(' ');
|
|
241
|
+
// Replace common jargon
|
|
242
|
+
const jargonReplacements = {
|
|
243
|
+
'utilize': 'use',
|
|
244
|
+
'leverage': 'use',
|
|
245
|
+
'facilitate': 'help',
|
|
246
|
+
'implement': 'start',
|
|
247
|
+
'methodology': 'method',
|
|
248
|
+
'optimize': 'improve',
|
|
249
|
+
'synergy': 'collaboration',
|
|
250
|
+
'paradigm': 'approach'
|
|
251
|
+
};
|
|
252
|
+
for (const [jargon, replacement] of Object.entries(jargonReplacements)) {
|
|
253
|
+
const regex = new RegExp(`\\b${jargon}\\b`, 'gi');
|
|
254
|
+
improved = improved.replace(regex, replacement);
|
|
255
|
+
}
|
|
256
|
+
return improved;
|
|
257
|
+
}
|
|
258
|
+
export function extractKeyPoints(text) {
|
|
259
|
+
const points = [];
|
|
260
|
+
const sentences = text.split(/[.!?]+/).filter(s => s.trim().length > 10);
|
|
261
|
+
// Look for sentences with key indicators
|
|
262
|
+
const keyIndicators = ['key', 'important', 'main', 'critical', 'essential', 'result', 'achieve', 'outcome', 'benefit', 'value'];
|
|
263
|
+
for (const sentence of sentences) {
|
|
264
|
+
const lower = sentence.toLowerCase();
|
|
265
|
+
if (keyIndicators.some(k => lower.includes(k))) {
|
|
266
|
+
points.push(sentence.trim());
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// If no key points found, take first few sentences
|
|
270
|
+
if (points.length === 0 && sentences.length > 0) {
|
|
271
|
+
points.push(...sentences.slice(0, 3).map(s => s.trim()));
|
|
272
|
+
}
|
|
273
|
+
return points.slice(0, 5);
|
|
274
|
+
}
|
|
275
|
+
export function generateHook(topic, style) {
|
|
276
|
+
switch (style) {
|
|
277
|
+
case 'question':
|
|
278
|
+
return `What if everything you knew about ${topic} was wrong?`;
|
|
279
|
+
case 'statistic':
|
|
280
|
+
return `78% of professionals struggle with ${topic}. Here's what the top performers do differently.`;
|
|
281
|
+
case 'story':
|
|
282
|
+
return `Last month, a ${topic} challenge nearly derailed our biggest launch. What we learned changed everything.`;
|
|
283
|
+
case 'bold_statement':
|
|
284
|
+
return `${topic.charAt(0).toUpperCase() + topic.slice(1)} is broken. Here's how to fix it.`;
|
|
285
|
+
default:
|
|
286
|
+
return `Let's talk about ${topic}.`;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function generateWebinarScript(args: {
|
|
2
|
+
topic: string;
|
|
3
|
+
target_audience: string;
|
|
4
|
+
webinar_type: string;
|
|
5
|
+
duration?: string;
|
|
6
|
+
key_takeaways?: string;
|
|
7
|
+
speakers?: string;
|
|
8
|
+
include_polls?: boolean;
|
|
9
|
+
product_mention_level?: string;
|
|
10
|
+
}): string;
|
|
11
|
+
//# sourceMappingURL=webinar-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webinar-script.d.ts","sourceRoot":"","sources":["../src/webinar-script.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG,MAAM,CAgKT"}
|