@forgespace/branding-mcp 0.31.0 → 0.55.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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/branding-core/generators/brand-affiliate.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-affiliate.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-affiliate.js +249 -0
- package/dist/lib/branding-core/generators/brand-affiliate.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-analytics.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-analytics.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-analytics.js +208 -0
- package/dist/lib/branding-core/generators/brand-analytics.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-audio.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-audio.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-audio.js +200 -0
- package/dist/lib/branding-core/generators/brand-audio.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-b2b.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-b2b.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-b2b.js +236 -0
- package/dist/lib/branding-core/generators/brand-b2b.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-chatbot.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-chatbot.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-chatbot.js +174 -0
- package/dist/lib/branding-core/generators/brand-chatbot.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-community.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-community.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-community.js +164 -0
- package/dist/lib/branding-core/generators/brand-community.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-competitive.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-competitive.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-competitive.js +274 -0
- package/dist/lib/branding-core/generators/brand-competitive.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-crisis.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-crisis.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-crisis.js +256 -0
- package/dist/lib/branding-core/generators/brand-crisis.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-customer.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-customer.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-customer.js +270 -0
- package/dist/lib/branding-core/generators/brand-customer.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.js +255 -0
- package/dist/lib/branding-core/generators/brand-ecommerce.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-fintech.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-fintech.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-fintech.js +225 -0
- package/dist/lib/branding-core/generators/brand-fintech.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-globalisation.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-globalisation.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-globalisation.js +222 -0
- package/dist/lib/branding-core/generators/brand-globalisation.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-influencer.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-influencer.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-influencer.js +262 -0
- package/dist/lib/branding-core/generators/brand-influencer.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-innovation.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-innovation.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-innovation.js +229 -0
- package/dist/lib/branding-core/generators/brand-innovation.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-loyalty.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-loyalty.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-loyalty.js +231 -0
- package/dist/lib/branding-core/generators/brand-loyalty.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-marketplace.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-marketplace.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-marketplace.js +251 -0
- package/dist/lib/branding-core/generators/brand-marketplace.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-newsletter.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-newsletter.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-newsletter.js +173 -0
- package/dist/lib/branding-core/generators/brand-newsletter.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-podcast.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-podcast.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-podcast.js +217 -0
- package/dist/lib/branding-core/generators/brand-podcast.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-saas.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-saas.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-saas.js +212 -0
- package/dist/lib/branding-core/generators/brand-saas.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-seo.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-seo.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-seo.js +269 -0
- package/dist/lib/branding-core/generators/brand-seo.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-subscription.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-subscription.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-subscription.js +218 -0
- package/dist/lib/branding-core/generators/brand-subscription.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-training.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-training.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-training.js +261 -0
- package/dist/lib/branding-core/generators/brand-training.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-video.d.ts +3 -0
- package/dist/lib/branding-core/generators/brand-video.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-video.js +228 -0
- package/dist/lib/branding-core/generators/brand-video.js.map +1 -0
- package/dist/lib/branding-core/generators/brand-webinar.d.ts +4 -0
- package/dist/lib/branding-core/generators/brand-webinar.d.ts.map +1 -0
- package/dist/lib/branding-core/generators/brand-webinar.js +165 -0
- package/dist/lib/branding-core/generators/brand-webinar.js.map +1 -0
- package/dist/lib/branding-core/index.d.ts +24 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -1
- package/dist/lib/branding-core/index.js +24 -0
- package/dist/lib/branding-core/index.js.map +1 -1
- package/dist/lib/types.d.ts +391 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tools/generate-brand-affiliate.d.ts +3 -0
- package/dist/tools/generate-brand-affiliate.d.ts.map +1 -0
- package/dist/tools/generate-brand-affiliate.js +14 -0
- package/dist/tools/generate-brand-affiliate.js.map +1 -0
- package/dist/tools/generate-brand-analytics.d.ts +3 -0
- package/dist/tools/generate-brand-analytics.d.ts.map +1 -0
- package/dist/tools/generate-brand-analytics.js +19 -0
- package/dist/tools/generate-brand-analytics.js.map +1 -0
- package/dist/tools/generate-brand-audio.d.ts +3 -0
- package/dist/tools/generate-brand-audio.d.ts.map +1 -0
- package/dist/tools/generate-brand-audio.js +14 -0
- package/dist/tools/generate-brand-audio.js.map +1 -0
- package/dist/tools/generate-brand-b2b.d.ts +3 -0
- package/dist/tools/generate-brand-b2b.d.ts.map +1 -0
- package/dist/tools/generate-brand-b2b.js +10 -0
- package/dist/tools/generate-brand-b2b.js.map +1 -0
- package/dist/tools/generate-brand-chatbot.d.ts +3 -0
- package/dist/tools/generate-brand-chatbot.d.ts.map +1 -0
- package/dist/tools/generate-brand-chatbot.js +10 -0
- package/dist/tools/generate-brand-chatbot.js.map +1 -0
- package/dist/tools/generate-brand-community.d.ts +3 -0
- package/dist/tools/generate-brand-community.d.ts.map +1 -0
- package/dist/tools/generate-brand-community.js +14 -0
- package/dist/tools/generate-brand-community.js.map +1 -0
- package/dist/tools/generate-brand-competitive.d.ts +3 -0
- package/dist/tools/generate-brand-competitive.d.ts.map +1 -0
- package/dist/tools/generate-brand-competitive.js +14 -0
- package/dist/tools/generate-brand-competitive.js.map +1 -0
- package/dist/tools/generate-brand-crisis.d.ts +3 -0
- package/dist/tools/generate-brand-crisis.d.ts.map +1 -0
- package/dist/tools/generate-brand-crisis.js +14 -0
- package/dist/tools/generate-brand-crisis.js.map +1 -0
- package/dist/tools/generate-brand-customer.d.ts +3 -0
- package/dist/tools/generate-brand-customer.d.ts.map +1 -0
- package/dist/tools/generate-brand-customer.js +19 -0
- package/dist/tools/generate-brand-customer.js.map +1 -0
- package/dist/tools/generate-brand-ecommerce.d.ts +3 -0
- package/dist/tools/generate-brand-ecommerce.d.ts.map +1 -0
- package/dist/tools/generate-brand-ecommerce.js +14 -0
- package/dist/tools/generate-brand-ecommerce.js.map +1 -0
- package/dist/tools/generate-brand-fintech.d.ts +3 -0
- package/dist/tools/generate-brand-fintech.d.ts.map +1 -0
- package/dist/tools/generate-brand-fintech.js +14 -0
- package/dist/tools/generate-brand-fintech.js.map +1 -0
- package/dist/tools/generate-brand-globalisation.d.ts +3 -0
- package/dist/tools/generate-brand-globalisation.d.ts.map +1 -0
- package/dist/tools/generate-brand-globalisation.js +14 -0
- package/dist/tools/generate-brand-globalisation.js.map +1 -0
- package/dist/tools/generate-brand-influencer.d.ts +3 -0
- package/dist/tools/generate-brand-influencer.d.ts.map +1 -0
- package/dist/tools/generate-brand-influencer.js +10 -0
- package/dist/tools/generate-brand-influencer.js.map +1 -0
- package/dist/tools/generate-brand-innovation.d.ts +3 -0
- package/dist/tools/generate-brand-innovation.d.ts.map +1 -0
- package/dist/tools/generate-brand-innovation.js +19 -0
- package/dist/tools/generate-brand-innovation.js.map +1 -0
- package/dist/tools/generate-brand-loyalty.d.ts +3 -0
- package/dist/tools/generate-brand-loyalty.d.ts.map +1 -0
- package/dist/tools/generate-brand-loyalty.js +14 -0
- package/dist/tools/generate-brand-loyalty.js.map +1 -0
- package/dist/tools/generate-brand-marketplace.d.ts +3 -0
- package/dist/tools/generate-brand-marketplace.d.ts.map +1 -0
- package/dist/tools/generate-brand-marketplace.js +14 -0
- package/dist/tools/generate-brand-marketplace.js.map +1 -0
- package/dist/tools/generate-brand-newsletter.d.ts +3 -0
- package/dist/tools/generate-brand-newsletter.d.ts.map +1 -0
- package/dist/tools/generate-brand-newsletter.js +14 -0
- package/dist/tools/generate-brand-newsletter.js.map +1 -0
- package/dist/tools/generate-brand-podcast.d.ts +3 -0
- package/dist/tools/generate-brand-podcast.d.ts.map +1 -0
- package/dist/tools/generate-brand-podcast.js +10 -0
- package/dist/tools/generate-brand-podcast.js.map +1 -0
- package/dist/tools/generate-brand-saas.d.ts +3 -0
- package/dist/tools/generate-brand-saas.d.ts.map +1 -0
- package/dist/tools/generate-brand-saas.js +14 -0
- package/dist/tools/generate-brand-saas.js.map +1 -0
- package/dist/tools/generate-brand-seo.d.ts +3 -0
- package/dist/tools/generate-brand-seo.d.ts.map +1 -0
- package/dist/tools/generate-brand-seo.js +14 -0
- package/dist/tools/generate-brand-seo.js.map +1 -0
- package/dist/tools/generate-brand-subscription.d.ts +3 -0
- package/dist/tools/generate-brand-subscription.d.ts.map +1 -0
- package/dist/tools/generate-brand-subscription.js +14 -0
- package/dist/tools/generate-brand-subscription.js.map +1 -0
- package/dist/tools/generate-brand-training.d.ts +3 -0
- package/dist/tools/generate-brand-training.d.ts.map +1 -0
- package/dist/tools/generate-brand-training.js +14 -0
- package/dist/tools/generate-brand-training.js.map +1 -0
- package/dist/tools/generate-brand-video.d.ts +3 -0
- package/dist/tools/generate-brand-video.d.ts.map +1 -0
- package/dist/tools/generate-brand-video.js +14 -0
- package/dist/tools/generate-brand-video.js.map +1 -0
- package/dist/tools/generate-brand-webinar.d.ts +3 -0
- package/dist/tools/generate-brand-webinar.d.ts.map +1 -0
- package/dist/tools/generate-brand-webinar.js +10 -0
- package/dist/tools/generate-brand-webinar.js.map +1 -0
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
const VALID_STYLES = new Set([
|
|
2
|
+
'minimal',
|
|
3
|
+
'bold',
|
|
4
|
+
'elegant',
|
|
5
|
+
'playful',
|
|
6
|
+
'corporate',
|
|
7
|
+
'tech',
|
|
8
|
+
'organic',
|
|
9
|
+
'retro',
|
|
10
|
+
]);
|
|
11
|
+
const STYLE_SHOW_CONCEPT = {
|
|
12
|
+
minimal: "A focused, signal-over-noise show with concise episodes that respect the listener's time",
|
|
13
|
+
bold: 'A high-energy show with strong opinions, memorable moments, and an unapologetic point of view',
|
|
14
|
+
elegant: 'A refined, curated conversation series that attracts discerning listeners seeking depth',
|
|
15
|
+
playful: 'A fun, energetic show packed with personality, humour, and listener interaction',
|
|
16
|
+
corporate: 'A professional thought-leadership series that builds credibility and drives enterprise trust',
|
|
17
|
+
tech: 'A technically rich show for builders and innovators—detailed, precise, and community-driven',
|
|
18
|
+
organic: 'A values-led show exploring sustainability, purpose, and authentic living',
|
|
19
|
+
retro: 'A nostalgic, story-driven show celebrating heritage, craft, and timeless ideas',
|
|
20
|
+
};
|
|
21
|
+
const STYLE_FORMAT = {
|
|
22
|
+
minimal: [
|
|
23
|
+
'Solo deep-dive (15–20 min)',
|
|
24
|
+
'Focused Q&A (20–25 min)',
|
|
25
|
+
'Weekly curated round-up (10–15 min)',
|
|
26
|
+
],
|
|
27
|
+
bold: [
|
|
28
|
+
'Debate format (30–45 min)',
|
|
29
|
+
'Unfiltered hot-takes (20–30 min)',
|
|
30
|
+
'Live audience Q&A (45–60 min)',
|
|
31
|
+
],
|
|
32
|
+
elegant: [
|
|
33
|
+
'Long-form interview (45–60 min)',
|
|
34
|
+
'Narrative documentary (30–40 min)',
|
|
35
|
+
'Curated panel (40–50 min)',
|
|
36
|
+
],
|
|
37
|
+
playful: [
|
|
38
|
+
'Comedy chat (25–35 min)',
|
|
39
|
+
'Listener story submissions (20–30 min)',
|
|
40
|
+
'Games and challenges (30–40 min)',
|
|
41
|
+
],
|
|
42
|
+
corporate: [
|
|
43
|
+
'Executive interview (30–40 min)',
|
|
44
|
+
'Industry trend briefing (20–30 min)',
|
|
45
|
+
'Case study deep-dive (35–45 min)',
|
|
46
|
+
],
|
|
47
|
+
tech: [
|
|
48
|
+
'Technical tutorial (25–35 min)',
|
|
49
|
+
'Code review / live build (40–60 min)',
|
|
50
|
+
'Open-source spotlight (20–30 min)',
|
|
51
|
+
],
|
|
52
|
+
organic: [
|
|
53
|
+
'Farm-to-table story (30–40 min)',
|
|
54
|
+
'Founder impact interview (35–50 min)',
|
|
55
|
+
'Community voices (25–35 min)',
|
|
56
|
+
],
|
|
57
|
+
retro: [
|
|
58
|
+
'Archive dive (30–45 min)',
|
|
59
|
+
'Oral history interview (40–55 min)',
|
|
60
|
+
'Listener nostalgia segment (20–30 min)',
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
const STYLE_CADENCE = {
|
|
64
|
+
minimal: 'Weekly — one tight episode, published Monday',
|
|
65
|
+
bold: 'Twice weekly — Tuesday for main episode, Thursday for bonus clip',
|
|
66
|
+
elegant: 'Bi-weekly — alternating Wednesdays for long-form quality',
|
|
67
|
+
playful: 'Weekly — Friday release to kick off the weekend',
|
|
68
|
+
corporate: 'Bi-weekly — alternating Tuesdays aligned with business news cycle',
|
|
69
|
+
tech: 'Weekly — Wednesday release timed with developer news cycles',
|
|
70
|
+
organic: 'Weekly — Sunday release to complement a mindful start to the week',
|
|
71
|
+
retro: 'Bi-weekly — Saturday morning release for leisurely listening',
|
|
72
|
+
};
|
|
73
|
+
const STYLE_HOST_PERSONA = {
|
|
74
|
+
minimal: 'Thoughtful curator — asks sharp questions, stays out of the way',
|
|
75
|
+
bold: 'Energetic provocateur — takes positions, challenges guests, creates moments',
|
|
76
|
+
elegant: 'Gracious interviewer — creates space for nuance and reflection',
|
|
77
|
+
playful: 'Enthusiastic companion — laughs easily, brings the fun',
|
|
78
|
+
corporate: 'Credible authority — well-prepared, data-literate, professionally warm',
|
|
79
|
+
tech: 'Curious builder — digs into implementation, respects technical depth',
|
|
80
|
+
organic: 'Empathetic storyteller — listens deeply, centres human impact',
|
|
81
|
+
retro: 'Nostalgic historian — delights in detail, honours the past',
|
|
82
|
+
};
|
|
83
|
+
const STYLE_GUEST_CRITERIA = {
|
|
84
|
+
minimal: [
|
|
85
|
+
'Practitioner with specific, actionable insight',
|
|
86
|
+
'Avoids over-promotion',
|
|
87
|
+
'Communicates concisely',
|
|
88
|
+
],
|
|
89
|
+
bold: [
|
|
90
|
+
'Strong opinion and willingness to debate',
|
|
91
|
+
'Audience draw or cultural relevance',
|
|
92
|
+
'Authentic and unscripted',
|
|
93
|
+
],
|
|
94
|
+
elegant: [
|
|
95
|
+
'Accomplished in their field',
|
|
96
|
+
'Articulate and reflective',
|
|
97
|
+
'Comfortable with long-form conversation',
|
|
98
|
+
],
|
|
99
|
+
playful: ['Personality-forward', 'Able to improvise and laugh', 'Relatable to core audience'],
|
|
100
|
+
corporate: [
|
|
101
|
+
'C-suite or recognised industry leader',
|
|
102
|
+
'Data-backed perspectives',
|
|
103
|
+
'Willing to share proprietary insight',
|
|
104
|
+
],
|
|
105
|
+
tech: [
|
|
106
|
+
'Active practitioner or open-source contributor',
|
|
107
|
+
'Technical depth without jargon overload',
|
|
108
|
+
'Community respected',
|
|
109
|
+
],
|
|
110
|
+
organic: ['Mission-aligned values', 'Authentic impact story', 'Not primarily sales-motivated'],
|
|
111
|
+
retro: [
|
|
112
|
+
'Deep domain knowledge or lived experience',
|
|
113
|
+
'Archival or historical access',
|
|
114
|
+
'Passionate storyteller',
|
|
115
|
+
],
|
|
116
|
+
};
|
|
117
|
+
const STYLE_DISTRIBUTION = {
|
|
118
|
+
minimal: ['Apple Podcasts', 'Spotify', 'RSS'],
|
|
119
|
+
bold: ['Spotify', 'YouTube', 'Apple Podcasts', 'TikTok clips'],
|
|
120
|
+
elegant: ['Apple Podcasts', 'Spotify', 'Dedicated website player'],
|
|
121
|
+
playful: ['Spotify', 'YouTube', 'TikTok clips', 'Instagram Reels'],
|
|
122
|
+
corporate: ['Apple Podcasts', 'Spotify', 'LinkedIn Audio', 'Company intranet'],
|
|
123
|
+
tech: ['Spotify', 'Apple Podcasts', 'YouTube', 'Dev.to embeds', 'RSS'],
|
|
124
|
+
organic: ['Apple Podcasts', 'Spotify', 'Community newsletter embed'],
|
|
125
|
+
retro: ['Apple Podcasts', 'Spotify', 'Dedicated archive website'],
|
|
126
|
+
};
|
|
127
|
+
const STYLE_MONETISATION = {
|
|
128
|
+
minimal: [
|
|
129
|
+
'Branded sponsorship (single mid-roll)',
|
|
130
|
+
'Premium ad-free tier',
|
|
131
|
+
'Listener support (Patreon)',
|
|
132
|
+
],
|
|
133
|
+
bold: ['Dynamic ad insertion', 'Merchandise', 'Live event tickets', 'Premium bonus content'],
|
|
134
|
+
elegant: ['Single luxury brand sponsorship', 'Private member feed', 'Paid premium series'],
|
|
135
|
+
playful: ['Listener support community', 'Merchandise', 'Live shows'],
|
|
136
|
+
corporate: ['B2B sponsored segments', 'Paid executive access episodes', 'Lead-gen integrations'],
|
|
137
|
+
tech: ['Developer tool sponsorships', 'Paid workshop extensions', 'Affiliate developer products'],
|
|
138
|
+
organic: ['Mission-aligned brand sponsorships', 'Community membership', 'Digital course upsell'],
|
|
139
|
+
retro: ['Heritage brand sponsorships', 'Archival content membership', 'Listener donations'],
|
|
140
|
+
};
|
|
141
|
+
function buildProductionChecklist(brand) {
|
|
142
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
143
|
+
const base = [
|
|
144
|
+
'Condenser or dynamic XLR microphone (budget: £100–400)',
|
|
145
|
+
'Acoustic treatment: foam panels or reflection filter',
|
|
146
|
+
'Audio interface (e.g. Focusrite Scarlett Solo)',
|
|
147
|
+
'DAW: Adobe Audition, GarageBand, or Descript',
|
|
148
|
+
'Consistent intro/outro music licensed for podcast use',
|
|
149
|
+
`Episode template: intro (60s) → main content → CTA → outro (30s)`,
|
|
150
|
+
'Show notes with timestamped highlights and guest links',
|
|
151
|
+
'Transcripts for SEO and accessibility',
|
|
152
|
+
];
|
|
153
|
+
if (safeStyle === 'tech') {
|
|
154
|
+
base.push('Screen-share recording for tutorial segments (OBS or Loom)');
|
|
155
|
+
base.push('Chapter markers in mp3 ID3 tags for developer-friendly navigation');
|
|
156
|
+
}
|
|
157
|
+
if (safeStyle === 'bold') {
|
|
158
|
+
base.push('Video recording setup for YouTube and clip repurposing');
|
|
159
|
+
base.push('Live recording capability for audience episodes');
|
|
160
|
+
}
|
|
161
|
+
if (safeStyle === 'elegant') {
|
|
162
|
+
base.push('Professional sound mastering before publish');
|
|
163
|
+
base.push('Custom composer for original theme music');
|
|
164
|
+
}
|
|
165
|
+
return base;
|
|
166
|
+
}
|
|
167
|
+
function buildGrowthStrategy(safeStyle) {
|
|
168
|
+
const base = [
|
|
169
|
+
'Submit to Apple Podcasts, Spotify, Google Podcasts, and Amazon Music on day 1',
|
|
170
|
+
'Launch with 3 episodes to reduce new-listener drop-off',
|
|
171
|
+
'Swap guest appearances on complementary shows (cross-pollination)',
|
|
172
|
+
'Repurpose audiograms and quote cards for social media',
|
|
173
|
+
'Email newsletter episode round-up each publish day',
|
|
174
|
+
'Request reviews from early listeners in episodes 1–5',
|
|
175
|
+
];
|
|
176
|
+
if (safeStyle === 'tech')
|
|
177
|
+
base.push('Share episodes in relevant Discord servers, subreddits, and Hacker News');
|
|
178
|
+
if (safeStyle === 'corporate')
|
|
179
|
+
base.push('Submit to industry press and analyst briefing distribution lists');
|
|
180
|
+
if (safeStyle === 'organic')
|
|
181
|
+
base.push('Partner with aligned NGOs and impact organisations for co-promotion');
|
|
182
|
+
return base;
|
|
183
|
+
}
|
|
184
|
+
function buildAccessibilityNotes() {
|
|
185
|
+
return [
|
|
186
|
+
'Full episode transcripts published alongside every episode (WCAG 1.2.1)',
|
|
187
|
+
'Auto-generated captions on all YouTube versions — reviewed for accuracy',
|
|
188
|
+
'Show notes include all links spoken in the episode in accessible anchor text',
|
|
189
|
+
'Avoid relying solely on audio cues for meaning — reinforce in show notes',
|
|
190
|
+
'Ensure website podcast player is keyboard-navigable and screen-reader compatible',
|
|
191
|
+
'Audio levels normalised to -16 LUFS for consistent listening across devices',
|
|
192
|
+
'Background music mixed below dialogue (minimum 20 dB below voice)',
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
function buildPodcastBriefSummary(brand, safeStyle) {
|
|
196
|
+
const taglinePart = brand.tagline ? ` — "${brand.tagline}"` : '';
|
|
197
|
+
const concept = STYLE_SHOW_CONCEPT[safeStyle];
|
|
198
|
+
const cadence = STYLE_CADENCE[safeStyle];
|
|
199
|
+
return `${brand.name}${taglinePart} podcast: ${concept}. ${cadence}.`;
|
|
200
|
+
}
|
|
201
|
+
export function generateBrandPodcast(brand) {
|
|
202
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
203
|
+
return {
|
|
204
|
+
showConcept: STYLE_SHOW_CONCEPT[safeStyle],
|
|
205
|
+
recommendedFormats: STYLE_FORMAT[safeStyle],
|
|
206
|
+
publishingCadence: STYLE_CADENCE[safeStyle],
|
|
207
|
+
hostPersona: STYLE_HOST_PERSONA[safeStyle],
|
|
208
|
+
guestSelectionCriteria: STYLE_GUEST_CRITERIA[safeStyle],
|
|
209
|
+
distributionChannels: STYLE_DISTRIBUTION[safeStyle],
|
|
210
|
+
monetisationStrategy: STYLE_MONETISATION[safeStyle],
|
|
211
|
+
productionChecklist: buildProductionChecklist(brand),
|
|
212
|
+
growthStrategy: buildGrowthStrategy(safeStyle),
|
|
213
|
+
accessibilityNotes: buildAccessibilityNotes(),
|
|
214
|
+
podcastBriefSummary: buildPodcastBriefSummary(brand, safeStyle),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=brand-podcast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-podcast.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-podcast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-saas.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-saas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAiNjF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAevE"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
const VALID_STYLES = new Set([
|
|
2
|
+
'minimal',
|
|
3
|
+
'bold',
|
|
4
|
+
'elegant',
|
|
5
|
+
'playful',
|
|
6
|
+
'corporate',
|
|
7
|
+
'tech',
|
|
8
|
+
'organic',
|
|
9
|
+
'retro',
|
|
10
|
+
]);
|
|
11
|
+
const STYLE_POSITIONING = {
|
|
12
|
+
minimal: 'Simple, focused software that removes complexity and gets out of the way.',
|
|
13
|
+
bold: 'Powerful, high-energy platform that drives measurable results fast.',
|
|
14
|
+
elegant: 'Premium, beautifully crafted software for discerning professionals.',
|
|
15
|
+
playful: 'Delightfully fun tool that makes work feel less like work.',
|
|
16
|
+
corporate: 'Enterprise-grade solution built for scale, compliance, and governance.',
|
|
17
|
+
tech: 'Developer-first platform with powerful APIs, extensibility, and open-source DNA.',
|
|
18
|
+
organic: 'Purposeful software that respects your data, values, and the planet.',
|
|
19
|
+
retro: 'Thoughtfully nostalgic tool with timeless UX and proven reliability.',
|
|
20
|
+
};
|
|
21
|
+
const STYLE_PRICING_MODEL = {
|
|
22
|
+
minimal: ['Flat-rate simplicity', 'One plan, all features', 'No per-seat surprises'],
|
|
23
|
+
bold: ['Usage-based pricing', 'Scales with your growth', 'No artificial limits'],
|
|
24
|
+
elegant: [
|
|
25
|
+
'Bespoke pricing on request',
|
|
26
|
+
'White-glove onboarding included',
|
|
27
|
+
'Annual contracts preferred',
|
|
28
|
+
],
|
|
29
|
+
playful: ['Freemium with generous free tier', 'Pay as you play', 'Team plans with fun perks'],
|
|
30
|
+
corporate: [
|
|
31
|
+
'Volume licensing',
|
|
32
|
+
'ELA (Enterprise License Agreement) option',
|
|
33
|
+
'Dedicated CSM from 500 seats',
|
|
34
|
+
],
|
|
35
|
+
tech: [
|
|
36
|
+
'Free tier for individuals',
|
|
37
|
+
'Developer Pro tier',
|
|
38
|
+
'Team and Enterprise tiers',
|
|
39
|
+
'OSS sponsors discount',
|
|
40
|
+
],
|
|
41
|
+
organic: ['Fair pricing, no hidden fees', 'Non-profit discount 50%', 'B Corp pricing programme'],
|
|
42
|
+
retro: [
|
|
43
|
+
'Perpetual licence option',
|
|
44
|
+
'Subscription with annual discount',
|
|
45
|
+
'Lifetime deal for early adopters',
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
const STYLE_ONBOARDING = {
|
|
49
|
+
minimal: ['Zero-config setup', 'Import in 60 seconds', 'Interactive quick-start guide'],
|
|
50
|
+
bold: [
|
|
51
|
+
'Guided activation wizard',
|
|
52
|
+
'Video walkthroughs for each feature',
|
|
53
|
+
'Live chat onboarding support',
|
|
54
|
+
],
|
|
55
|
+
elegant: [
|
|
56
|
+
'Dedicated onboarding consultant',
|
|
57
|
+
'White-label welcome portal',
|
|
58
|
+
'Customised training sessions',
|
|
59
|
+
],
|
|
60
|
+
playful: [
|
|
61
|
+
'Gamified onboarding checklist',
|
|
62
|
+
'Confetti rewards on milestones',
|
|
63
|
+
'Buddy system pairing',
|
|
64
|
+
],
|
|
65
|
+
corporate: [
|
|
66
|
+
'Implementation project manager',
|
|
67
|
+
'Change management playbook',
|
|
68
|
+
'Admin console training',
|
|
69
|
+
'SSO and directory sync setup',
|
|
70
|
+
],
|
|
71
|
+
tech: [
|
|
72
|
+
'API quickstart docs',
|
|
73
|
+
'SDK scaffolding CLI',
|
|
74
|
+
'GitHub integration in 5 min',
|
|
75
|
+
'Developer sandbox environment',
|
|
76
|
+
],
|
|
77
|
+
organic: [
|
|
78
|
+
'Self-paced learning library',
|
|
79
|
+
'Community-led onboarding webinars',
|
|
80
|
+
'Eco impact dashboard tour',
|
|
81
|
+
],
|
|
82
|
+
retro: ['Printable getting-started guide', 'Video tutorial library', 'Vintage help-desk chat'],
|
|
83
|
+
};
|
|
84
|
+
const STYLE_RETENTION_TACTICS = {
|
|
85
|
+
minimal: [
|
|
86
|
+
'Weekly digest of key metrics',
|
|
87
|
+
'Frictionless renewal flow',
|
|
88
|
+
'Pause instead of cancel option',
|
|
89
|
+
],
|
|
90
|
+
bold: ['Power user of the month spotlight', 'Feature unlock milestones', 'ROI calculator in-app'],
|
|
91
|
+
elegant: [
|
|
92
|
+
'Quarterly executive business reviews',
|
|
93
|
+
'Exclusive product roadmap previews',
|
|
94
|
+
'Concierge renewal process',
|
|
95
|
+
],
|
|
96
|
+
playful: [
|
|
97
|
+
'Streak rewards and badges',
|
|
98
|
+
'Seasonal challenges',
|
|
99
|
+
'Referral programme with gift cards',
|
|
100
|
+
],
|
|
101
|
+
corporate: [
|
|
102
|
+
'Dedicated customer success manager',
|
|
103
|
+
'Quarterly health-check reports',
|
|
104
|
+
'Executive sponsor programme',
|
|
105
|
+
'Annual user conference invitation',
|
|
106
|
+
],
|
|
107
|
+
tech: [
|
|
108
|
+
'Developer changelog digest',
|
|
109
|
+
'Beta tester programme',
|
|
110
|
+
'Open-source contribution credits',
|
|
111
|
+
'API usage dashboards',
|
|
112
|
+
],
|
|
113
|
+
organic: [
|
|
114
|
+
'Impact report showing environmental savings',
|
|
115
|
+
'Community forum engagement score',
|
|
116
|
+
'Values-aligned renewal messaging',
|
|
117
|
+
],
|
|
118
|
+
retro: ['Loyalty anniversary perks', 'Print newsletter for power users', 'Vintage reward badges'],
|
|
119
|
+
};
|
|
120
|
+
const STYLE_INTEGRATIONS = {
|
|
121
|
+
minimal: ['Zapier', 'Webhooks', 'CSV import/export'],
|
|
122
|
+
bold: ['Salesforce', 'HubSpot', 'Slack', 'Microsoft Teams', 'Zapier'],
|
|
123
|
+
elegant: ['Salesforce', 'Microsoft 365', 'SAP', 'Custom API', 'White-label SSO'],
|
|
124
|
+
playful: ['Slack', 'Notion', 'Figma', 'Zapier', 'Discord'],
|
|
125
|
+
corporate: ['SAP', 'Workday', 'Salesforce', 'ServiceNow', 'LDAP/SCIM', 'Okta'],
|
|
126
|
+
tech: ['GitHub', 'GitLab', 'Jira', 'CI/CD pipelines', 'Terraform', 'REST & GraphQL APIs', 'SDKs'],
|
|
127
|
+
organic: ['Google Workspace', 'Mailchimp', 'Stripe', 'Carbon footprint APIs'],
|
|
128
|
+
retro: ['Email import', 'CSV/Excel', 'Zapier', 'Browser extension'],
|
|
129
|
+
};
|
|
130
|
+
const STYLE_SUPPORT_MODEL = {
|
|
131
|
+
minimal: 'Self-serve knowledge base with community forum and email support.',
|
|
132
|
+
bold: 'Live chat during business hours, dedicated Slack channel for paying customers.',
|
|
133
|
+
elegant: 'Named account manager, priority phone support, and SLA-backed response times.',
|
|
134
|
+
playful: 'In-app chat support with friendly tone, community Discord, and live office hours.',
|
|
135
|
+
corporate: '24/7 enterprise support with P1 hotline, dedicated CSM, and SLA guarantees.',
|
|
136
|
+
tech: 'GitHub Issues for OSS, developer forum, Slack community, and Pro email support.',
|
|
137
|
+
organic: 'Community-first support via forum, async email, and volunteer-run live sessions.',
|
|
138
|
+
retro: 'Email support with 24-hour response pledge and a curated FAQ library.',
|
|
139
|
+
};
|
|
140
|
+
function buildTrialStrategy(brand, safeStyle) {
|
|
141
|
+
const trialMap = {
|
|
142
|
+
minimal: '14-day free trial, no credit card required.',
|
|
143
|
+
bold: '7-day trial with full access and a personalised kick-off call.',
|
|
144
|
+
elegant: '30-day pilot programme with a dedicated success consultant.',
|
|
145
|
+
playful: 'Free tier forever; upgrade when you need more.',
|
|
146
|
+
corporate: 'Proof-of-concept engagement for 30 days with enterprise-tier access.',
|
|
147
|
+
tech: 'Free tier with API access; unlimited dev sandboxes for 30 days.',
|
|
148
|
+
organic: '30-day trial with full transparency on data usage and exit portability.',
|
|
149
|
+
retro: '21-day free trial; lifetime licence option for committed users.',
|
|
150
|
+
};
|
|
151
|
+
return trialMap[safeStyle];
|
|
152
|
+
}
|
|
153
|
+
function buildChurnSignals(safeStyle) {
|
|
154
|
+
const base = [
|
|
155
|
+
'Login frequency drops below once per week',
|
|
156
|
+
'Feature adoption rate under 30% of core workflows',
|
|
157
|
+
'Support ticket volume spike with negative sentiment',
|
|
158
|
+
'Invoice payment delay or failed renewal',
|
|
159
|
+
'Key champion changes role or leaves company',
|
|
160
|
+
];
|
|
161
|
+
if (safeStyle === 'tech') {
|
|
162
|
+
base.push('API call volume drops > 50% week-over-week');
|
|
163
|
+
base.push('GitHub integration disconnected');
|
|
164
|
+
}
|
|
165
|
+
if (safeStyle === 'corporate' || safeStyle === 'elegant') {
|
|
166
|
+
base.push('Executive sponsor disengagement from QBRs');
|
|
167
|
+
base.push('Procurement team requests data export');
|
|
168
|
+
}
|
|
169
|
+
return base;
|
|
170
|
+
}
|
|
171
|
+
function buildComplianceCertifications(safeStyle) {
|
|
172
|
+
const base = [
|
|
173
|
+
'SOC 2 Type II',
|
|
174
|
+
'GDPR compliant',
|
|
175
|
+
'CCPA compliant',
|
|
176
|
+
'Data Processing Agreement (DPA) available',
|
|
177
|
+
];
|
|
178
|
+
if (safeStyle === 'corporate' || safeStyle === 'elegant') {
|
|
179
|
+
base.push('ISO 27001 certified', 'HIPAA BAA available', 'FedRAMP ready');
|
|
180
|
+
}
|
|
181
|
+
if (safeStyle === 'tech') {
|
|
182
|
+
base.push('SLSA Level 2 supply chain security', 'Bug bounty programme (HackerOne)');
|
|
183
|
+
}
|
|
184
|
+
if (safeStyle === 'organic') {
|
|
185
|
+
base.push('Privacy-first architecture (no third-party ad tracking)', 'B Corp certified');
|
|
186
|
+
}
|
|
187
|
+
return base;
|
|
188
|
+
}
|
|
189
|
+
function buildSaasBriefSummary(brand, safeStyle) {
|
|
190
|
+
const pricing = (STYLE_PRICING_MODEL[safeStyle] ?? STYLE_PRICING_MODEL.minimal)[0];
|
|
191
|
+
const integration = (STYLE_INTEGRATIONS[safeStyle] ?? STYLE_INTEGRATIONS.minimal)
|
|
192
|
+
.slice(0, 2)
|
|
193
|
+
.join(' and ');
|
|
194
|
+
const taglinePart = brand.tagline ? ` \u2014 "${brand.tagline}"` : '';
|
|
195
|
+
return `${brand.name}${taglinePart} is a ${brand.industry} SaaS platform. Positioning: ${STYLE_POSITIONING[safeStyle]} Pricing approach: ${pricing}. Key integrations: ${integration}. Support: ${STYLE_SUPPORT_MODEL[safeStyle]}`;
|
|
196
|
+
}
|
|
197
|
+
export function generateBrandSaas(brand) {
|
|
198
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
199
|
+
return {
|
|
200
|
+
positioning: STYLE_POSITIONING[safeStyle],
|
|
201
|
+
pricingModel: STYLE_PRICING_MODEL[safeStyle] ?? STYLE_PRICING_MODEL.minimal,
|
|
202
|
+
trialStrategy: buildTrialStrategy(brand, safeStyle),
|
|
203
|
+
onboardingFlow: STYLE_ONBOARDING[safeStyle] ?? STYLE_ONBOARDING.minimal,
|
|
204
|
+
retentionTactics: STYLE_RETENTION_TACTICS[safeStyle] ?? STYLE_RETENTION_TACTICS.minimal,
|
|
205
|
+
keyIntegrations: STYLE_INTEGRATIONS[safeStyle] ?? STYLE_INTEGRATIONS.minimal,
|
|
206
|
+
supportModel: STYLE_SUPPORT_MODEL[safeStyle],
|
|
207
|
+
churnWarningSignals: buildChurnSignals(safeStyle),
|
|
208
|
+
complianceCertifications: buildComplianceCertifications(safeStyle),
|
|
209
|
+
saasBriefSummary: buildSaasBriefSummary(brand, safeStyle),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=brand-saas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-saas.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-saas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-seo.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-seo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAgRrD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAcrE"}
|