@forgespace/branding-mcp 0.32.0 → 0.55.1
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 +47 -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-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 +23 -0
- package/dist/lib/branding-core/index.d.ts.map +1 -1
- package/dist/lib/branding-core/index.js +23 -0
- package/dist/lib/branding-core/index.js.map +1 -1
- package/dist/lib/types.d.ts +379 -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-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 +2 -2
- package/server.json +3 -3
|
@@ -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"}
|
|
@@ -0,0 +1,269 @@
|
|
|
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_SEO_APPROACH = {
|
|
12
|
+
minimal: 'Clean, content-first SEO with precise targeting and minimal technical complexity',
|
|
13
|
+
bold: 'Aggressive content volume strategy with high-impact headlines and competitive keyword targeting',
|
|
14
|
+
elegant: 'Authoritative long-form content, editorial backlinks, and premium brand signals',
|
|
15
|
+
playful: 'Viral content hooks, community-driven link building, and social search integration',
|
|
16
|
+
corporate: 'Enterprise SEO with structured data, governance frameworks, and multi-site orchestration',
|
|
17
|
+
tech: 'Developer-focused SEO with API documentation, technical content hubs, and GitHub presence signals',
|
|
18
|
+
organic: 'Educational content SEO, E-E-A-T authority building, and values-aligned backlink acquisition',
|
|
19
|
+
retro: 'Niche community SEO, vintage aesthetic long-tail keywords, and cultural reference anchoring',
|
|
20
|
+
};
|
|
21
|
+
const STYLE_CONTENT_TYPES = {
|
|
22
|
+
minimal: ['Clear explainer pages', 'Concise how-to guides', 'Comparison tables', 'FAQ pages'],
|
|
23
|
+
bold: [
|
|
24
|
+
'High-energy listicles',
|
|
25
|
+
'Opinion pieces',
|
|
26
|
+
'Data-driven reports',
|
|
27
|
+
'Controversy-led content',
|
|
28
|
+
],
|
|
29
|
+
elegant: ['Long-form editorial', 'Expert interviews', 'White papers', 'Case studies'],
|
|
30
|
+
playful: [
|
|
31
|
+
'Interactive quizzes',
|
|
32
|
+
'Shareable infographics',
|
|
33
|
+
'Trending topic reactive content',
|
|
34
|
+
'UGC spotlights',
|
|
35
|
+
],
|
|
36
|
+
corporate: [
|
|
37
|
+
'Industry thought leadership',
|
|
38
|
+
'Regulatory compliance guides',
|
|
39
|
+
'Analyst-ready reports',
|
|
40
|
+
'Client success stories',
|
|
41
|
+
],
|
|
42
|
+
tech: [
|
|
43
|
+
'Technical tutorials',
|
|
44
|
+
'API documentation',
|
|
45
|
+
'Open-source project pages',
|
|
46
|
+
'Developer blog posts',
|
|
47
|
+
],
|
|
48
|
+
organic: [
|
|
49
|
+
'Educational guides',
|
|
50
|
+
'Sustainability deep-dives',
|
|
51
|
+
'Origin stories',
|
|
52
|
+
'Community impact reports',
|
|
53
|
+
],
|
|
54
|
+
retro: [
|
|
55
|
+
'Nostalgia content',
|
|
56
|
+
'Era-specific guides',
|
|
57
|
+
'Collector deep-dives',
|
|
58
|
+
'Cultural history pieces',
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
const STYLE_LINK_STRATEGY = {
|
|
62
|
+
minimal: [
|
|
63
|
+
'Guest posts on niche blogs',
|
|
64
|
+
'Resource page link building',
|
|
65
|
+
'Unlinked brand mention reclamation',
|
|
66
|
+
],
|
|
67
|
+
bold: ['Digital PR for data studies', 'Reactive newsjacking', 'Influencer collaboration links'],
|
|
68
|
+
elegant: [
|
|
69
|
+
'Premium editorial placements',
|
|
70
|
+
'Award and accreditation listings',
|
|
71
|
+
'Industry association memberships',
|
|
72
|
+
],
|
|
73
|
+
playful: [
|
|
74
|
+
'Viral campaign link bait',
|
|
75
|
+
'Meme-culture partnerships',
|
|
76
|
+
'Community forum participation',
|
|
77
|
+
],
|
|
78
|
+
corporate: [
|
|
79
|
+
'Analyst report citations',
|
|
80
|
+
'Partner ecosystem cross-links',
|
|
81
|
+
'Conference and event sponsorships',
|
|
82
|
+
],
|
|
83
|
+
tech: ['GitHub README links', 'Developer tool directories', 'Open-source contribution mentions'],
|
|
84
|
+
organic: [
|
|
85
|
+
'Sustainable brand directories',
|
|
86
|
+
'NGO and cause partnerships',
|
|
87
|
+
'Certification body listings',
|
|
88
|
+
],
|
|
89
|
+
retro: [
|
|
90
|
+
'Collector community forums',
|
|
91
|
+
'Niche vintage directories',
|
|
92
|
+
'Museum and archive citations',
|
|
93
|
+
],
|
|
94
|
+
};
|
|
95
|
+
const STYLE_TECHNICAL_PRIORITIES = {
|
|
96
|
+
minimal: ['Core Web Vitals optimisation', 'Lean page structure', 'Fast-loading asset delivery'],
|
|
97
|
+
bold: [
|
|
98
|
+
'Rich snippets and FAQ schema',
|
|
99
|
+
'Video SEO integration',
|
|
100
|
+
'Dynamic rendering for interactive content',
|
|
101
|
+
],
|
|
102
|
+
elegant: ['Structured data for articles', 'AMP for editorial pages', 'Canonical tag governance'],
|
|
103
|
+
playful: [
|
|
104
|
+
'Open Graph and Twitter Cards',
|
|
105
|
+
'Social sharing optimisation',
|
|
106
|
+
'Image SEO for visual content',
|
|
107
|
+
],
|
|
108
|
+
corporate: [
|
|
109
|
+
'Enterprise XML sitemaps',
|
|
110
|
+
'Hreflang for international',
|
|
111
|
+
'Log file analysis pipelines',
|
|
112
|
+
],
|
|
113
|
+
tech: [
|
|
114
|
+
'Developer documentation schema',
|
|
115
|
+
'Code snippet indexing',
|
|
116
|
+
'API reference structured data',
|
|
117
|
+
],
|
|
118
|
+
organic: [
|
|
119
|
+
'Local SEO for community presence',
|
|
120
|
+
'Recipe and product schema',
|
|
121
|
+
'Sustainability badge integration',
|
|
122
|
+
],
|
|
123
|
+
retro: [
|
|
124
|
+
'Image alt text for archival photos',
|
|
125
|
+
'Historical date structured data',
|
|
126
|
+
'Niche directory submissions',
|
|
127
|
+
],
|
|
128
|
+
};
|
|
129
|
+
const STYLE_LOCAL_SEO = {
|
|
130
|
+
minimal: 'Lean Google Business Profile with accurate NAP and concise descriptions',
|
|
131
|
+
bold: 'High-energy GBP posts, photo uploads, and review solicitation campaigns',
|
|
132
|
+
elegant: 'Curated GBP presence with premium photography and selective citation building',
|
|
133
|
+
playful: 'Frequent GBP updates with event posts, playful Q&A responses, and local hashtags',
|
|
134
|
+
corporate: 'Multi-location GBP management with centralised review response governance',
|
|
135
|
+
tech: 'Developer-friendly local schema, event listings for meetups, and GitHub office pages',
|
|
136
|
+
organic: 'Community-rooted citations, farmers market and co-op directory listings',
|
|
137
|
+
retro: 'Vintage neighbourhood directories, local history pages, and heritage trail listings',
|
|
138
|
+
};
|
|
139
|
+
function buildKeywordStrategy(brand, safeStyle) {
|
|
140
|
+
const industryKeywords = extractIndustryKeywords(brand.industry);
|
|
141
|
+
const styleModifiers = {
|
|
142
|
+
minimal: ['simple', 'clean', 'straightforward'],
|
|
143
|
+
bold: ['best', 'top', 'powerful', 'ultimate'],
|
|
144
|
+
elegant: ['premium', 'luxury', 'exclusive', 'refined'],
|
|
145
|
+
playful: ['fun', 'easy', 'quick', 'cool'],
|
|
146
|
+
corporate: ['enterprise', 'professional', 'scalable', 'reliable'],
|
|
147
|
+
tech: ['developer', 'API', 'open-source', 'integration'],
|
|
148
|
+
organic: ['natural', 'sustainable', 'eco-friendly', 'ethical'],
|
|
149
|
+
retro: ['vintage', 'classic', 'original', 'heritage'],
|
|
150
|
+
};
|
|
151
|
+
const modifiers = styleModifiers[safeStyle];
|
|
152
|
+
return [
|
|
153
|
+
`${brand.name} ${industryKeywords[0] ?? 'solutions'}`,
|
|
154
|
+
`${modifiers[0]} ${industryKeywords[0] ?? 'products'}`,
|
|
155
|
+
`${modifiers[1]} ${brand.industry}`,
|
|
156
|
+
`${brand.industry} ${modifiers[2] ?? 'services'}`,
|
|
157
|
+
`${brand.name} reviews`,
|
|
158
|
+
`${brand.industry} guide ${new Date().getFullYear()}`,
|
|
159
|
+
`how to choose ${brand.industry}`,
|
|
160
|
+
`${brand.industry} comparison`,
|
|
161
|
+
];
|
|
162
|
+
}
|
|
163
|
+
function extractIndustryKeywords(industry) {
|
|
164
|
+
const lower = industry.toLowerCase();
|
|
165
|
+
if (lower.includes('tech') || lower.includes('software') || lower.includes('saas')) {
|
|
166
|
+
return ['software', 'platform', 'tools', 'automation'];
|
|
167
|
+
}
|
|
168
|
+
if (lower.includes('fashion') || lower.includes('apparel') || lower.includes('clothing')) {
|
|
169
|
+
return ['fashion', 'style', 'apparel', 'collection'];
|
|
170
|
+
}
|
|
171
|
+
if (lower.includes('food') || lower.includes('restaurant') || lower.includes('cafe')) {
|
|
172
|
+
return ['food', 'menu', 'dining', 'cuisine'];
|
|
173
|
+
}
|
|
174
|
+
if (lower.includes('health') || lower.includes('wellness') || lower.includes('fitness')) {
|
|
175
|
+
return ['health', 'wellness', 'fitness', 'wellbeing'];
|
|
176
|
+
}
|
|
177
|
+
if (lower.includes('finance') || lower.includes('banking') || lower.includes('investment')) {
|
|
178
|
+
return ['finance', 'investment', 'banking', 'financial'];
|
|
179
|
+
}
|
|
180
|
+
if (lower.includes('education') || lower.includes('learning') || lower.includes('training')) {
|
|
181
|
+
return ['education', 'learning', 'courses', 'training'];
|
|
182
|
+
}
|
|
183
|
+
return [industry.split(' ')[0]?.toLowerCase() ?? 'products', 'services', 'solutions', 'brand'];
|
|
184
|
+
}
|
|
185
|
+
function buildOnPageChecklist(brand) {
|
|
186
|
+
return [
|
|
187
|
+
`Title tags: include primary keyword + ${brand.name} within 60 characters`,
|
|
188
|
+
'Meta descriptions: compelling 155-character summaries with clear CTAs',
|
|
189
|
+
'H1 tags: one per page, containing primary keyword naturally',
|
|
190
|
+
'H2/H3 hierarchy: logical heading structure for featured snippet eligibility',
|
|
191
|
+
'Internal linking: contextual anchor text, minimum 3 internal links per page',
|
|
192
|
+
'Image optimisation: descriptive alt text, next-gen formats (WebP/AVIF), lazy loading',
|
|
193
|
+
'URL structure: short, keyword-rich, hyphens not underscores',
|
|
194
|
+
'Schema markup: appropriate type per page (Article, Product, FAQ, BreadcrumbList)',
|
|
195
|
+
'Canonical tags: self-referencing canonicals on all pages, cross-domain where applicable',
|
|
196
|
+
'Page speed: Core Web Vitals targets — LCP <2.5s, FID <100ms, CLS <0.1',
|
|
197
|
+
];
|
|
198
|
+
}
|
|
199
|
+
function buildContentCalendar(safeStyle) {
|
|
200
|
+
const cadence = {
|
|
201
|
+
minimal: [
|
|
202
|
+
'Month 1: Cornerstone pillar page creation',
|
|
203
|
+
'Month 2: Supporting cluster content (5 posts)',
|
|
204
|
+
'Month 3: Link building outreach and content refresh',
|
|
205
|
+
],
|
|
206
|
+
bold: [
|
|
207
|
+
'Week 1: 3 high-volume keyword posts',
|
|
208
|
+
'Week 2: 1 data study or original research',
|
|
209
|
+
'Week 3: 3 reactive trend posts',
|
|
210
|
+
'Week 4: 1 video transcript article',
|
|
211
|
+
],
|
|
212
|
+
elegant: [
|
|
213
|
+
'Month 1: 2 long-form editorial features (3000+ words)',
|
|
214
|
+
'Month 2: 1 expert interview + 1 case study',
|
|
215
|
+
'Month 3: 1 white paper + supporting content',
|
|
216
|
+
],
|
|
217
|
+
playful: [
|
|
218
|
+
'Week 1: 1 interactive quiz or tool',
|
|
219
|
+
'Week 2: 2 listicles with shareable assets',
|
|
220
|
+
'Week 3: 1 trending topic reactive piece',
|
|
221
|
+
'Week 4: 1 UGC or community spotlight',
|
|
222
|
+
],
|
|
223
|
+
corporate: [
|
|
224
|
+
'Month 1: Industry report publication',
|
|
225
|
+
'Month 2: 4 thought leadership articles',
|
|
226
|
+
'Month 3: Client case study + compliance guide',
|
|
227
|
+
],
|
|
228
|
+
tech: [
|
|
229
|
+
'Week 1: 1 technical tutorial or how-to',
|
|
230
|
+
'Week 2: 1 API/integration guide',
|
|
231
|
+
'Week 3: 1 comparison or benchmark post',
|
|
232
|
+
'Week 4: 1 developer news or changelog post',
|
|
233
|
+
],
|
|
234
|
+
organic: [
|
|
235
|
+
'Month 1: Educational cornerstone guide',
|
|
236
|
+
'Month 2: 3 sustainability deep-dives',
|
|
237
|
+
'Month 3: Impact report + community story',
|
|
238
|
+
],
|
|
239
|
+
retro: [
|
|
240
|
+
'Month 1: Historical era deep-dive content',
|
|
241
|
+
'Month 2: Collector guide series (3 posts)',
|
|
242
|
+
'Month 3: Culture and nostalgia editorial',
|
|
243
|
+
],
|
|
244
|
+
};
|
|
245
|
+
return cadence[safeStyle];
|
|
246
|
+
}
|
|
247
|
+
function buildSeoBriefSummary(brand, safeStyle) {
|
|
248
|
+
const approach = STYLE_SEO_APPROACH[safeStyle];
|
|
249
|
+
const contentTypes = STYLE_CONTENT_TYPES[safeStyle];
|
|
250
|
+
return (`${brand.name}${brand.tagline ? ` — "${brand.tagline}"` : ''} SEO strategy: ` +
|
|
251
|
+
`${approach.split(',')[0]}. ` +
|
|
252
|
+
`Primary content formats: ${contentTypes.slice(0, 2).join(' and ')}. ` +
|
|
253
|
+
`Industry: ${brand.industry}.`);
|
|
254
|
+
}
|
|
255
|
+
export function generateBrandSeo(brand) {
|
|
256
|
+
const safeStyle = VALID_STYLES.has(brand.style) ? brand.style : 'minimal';
|
|
257
|
+
return {
|
|
258
|
+
seoApproach: STYLE_SEO_APPROACH[safeStyle],
|
|
259
|
+
targetKeywords: buildKeywordStrategy(brand, safeStyle),
|
|
260
|
+
contentTypes: STYLE_CONTENT_TYPES[safeStyle],
|
|
261
|
+
linkBuildingStrategy: STYLE_LINK_STRATEGY[safeStyle],
|
|
262
|
+
technicalPriorities: STYLE_TECHNICAL_PRIORITIES[safeStyle],
|
|
263
|
+
localSeoGuidance: STYLE_LOCAL_SEO[safeStyle],
|
|
264
|
+
onPageChecklist: buildOnPageChecklist(brand),
|
|
265
|
+
contentCalendar: buildContentCalendar(safeStyle),
|
|
266
|
+
seoBriefSummary: buildSeoBriefSummary(brand, safeStyle),
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=brand-seo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-seo.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-seo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-subscription.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAgO9D,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,uBAAuB,CAsBvF"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { generateBrandVoice } from './brand-voice.js';
|
|
2
|
+
const VALID_STYLES = new Set([
|
|
3
|
+
'minimal',
|
|
4
|
+
'bold',
|
|
5
|
+
'elegant',
|
|
6
|
+
'playful',
|
|
7
|
+
'corporate',
|
|
8
|
+
'tech',
|
|
9
|
+
'organic',
|
|
10
|
+
'retro',
|
|
11
|
+
]);
|
|
12
|
+
const STYLE_MODEL_APPROACH = {
|
|
13
|
+
minimal: 'Single-tier, transparent flat-rate subscription with a generous free trial',
|
|
14
|
+
bold: 'Tiered plans with bold feature differentiation and aggressive annual discounts',
|
|
15
|
+
elegant: 'Curated membership tiers with white-glove onboarding and concierge upgrades',
|
|
16
|
+
playful: 'Gamified tiers with badges, surprise perks, and referral rewards',
|
|
17
|
+
corporate: 'Volume-based enterprise licensing with custom SLAs and dedicated support',
|
|
18
|
+
tech: 'Usage-based pricing with a developer free tier, API access, and per-seat upgrades',
|
|
19
|
+
organic: 'Mission-aligned membership with community benefits and impact transparency',
|
|
20
|
+
retro: 'Nostalgia-inspired collector tiers with exclusive vintage editions and early access',
|
|
21
|
+
};
|
|
22
|
+
const STYLE_TIERS = {
|
|
23
|
+
minimal: ['Free', 'Pro'],
|
|
24
|
+
bold: ['Starter', 'Growth', 'Scale'],
|
|
25
|
+
elegant: ['Member', 'Premium', 'Elite'],
|
|
26
|
+
playful: ['Friend', 'Fan', 'Superfan'],
|
|
27
|
+
corporate: ['Essentials', 'Business', 'Enterprise'],
|
|
28
|
+
tech: ['Free', 'Developer', 'Team', 'Enterprise'],
|
|
29
|
+
organic: ['Supporter', 'Community', 'Champion'],
|
|
30
|
+
retro: ['Collector', 'Curator', 'Archivist'],
|
|
31
|
+
};
|
|
32
|
+
const STYLE_RETENTION_TACTICS = {
|
|
33
|
+
minimal: [
|
|
34
|
+
'Annual billing discount (20% off monthly rate)',
|
|
35
|
+
'Usage milestone emails celebrating progress',
|
|
36
|
+
'Win-back campaign: simple one-click reactivation',
|
|
37
|
+
],
|
|
38
|
+
bold: [
|
|
39
|
+
'Power-user feature unlocks at engagement milestones',
|
|
40
|
+
'Loyalty discount ladder: 10% > 20% > 30% at 3/6/12 months',
|
|
41
|
+
'Exclusive beta access for long-tenure subscribers',
|
|
42
|
+
],
|
|
43
|
+
elegant: [
|
|
44
|
+
'Personalised anniversary gift at 1-year mark',
|
|
45
|
+
'Concierge upgrade call at 90-day mark',
|
|
46
|
+
'Early access to new collections for members 6+ months',
|
|
47
|
+
],
|
|
48
|
+
playful: [
|
|
49
|
+
'Gamified streak rewards (30/60/90-day badges)',
|
|
50
|
+
'Surprise monthly micro-gift for active subscribers',
|
|
51
|
+
'Refer-a-friend: both parties receive next month free',
|
|
52
|
+
],
|
|
53
|
+
corporate: [
|
|
54
|
+
'Quarterly executive business reviews for Enterprise tier',
|
|
55
|
+
'Volume commit discounts at 50/100/500 seats',
|
|
56
|
+
'Dedicated success manager at 3-month mark',
|
|
57
|
+
],
|
|
58
|
+
tech: [
|
|
59
|
+
'Usage-alert emails helping users stay within plan limits',
|
|
60
|
+
'Developer changelog digest to showcase value monthly',
|
|
61
|
+
'Free seat for open-source contributors',
|
|
62
|
+
],
|
|
63
|
+
organic: [
|
|
64
|
+
'Impact report showing subscriber-funded outcomes',
|
|
65
|
+
'Community co-creation: members vote on next initiative',
|
|
66
|
+
'Subscription pause option to reduce churn',
|
|
67
|
+
],
|
|
68
|
+
retro: [
|
|
69
|
+
'Limited-edition renewal bonus (exclusive print/item)',
|
|
70
|
+
'Early access to limited drops for long-term subscribers',
|
|
71
|
+
'Curator letters from founders on 6-month anniversary',
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
const STYLE_CHURN_PREVENTION = {
|
|
75
|
+
minimal: [
|
|
76
|
+
'In-app cancellation friction: show usage stats before exit',
|
|
77
|
+
'Pause subscription option (up to 3 months)',
|
|
78
|
+
'Downgrade path to free tier instead of full cancel',
|
|
79
|
+
],
|
|
80
|
+
bold: [
|
|
81
|
+
'Cancel survey with immediate personalised counter-offer',
|
|
82
|
+
'Downgrade path prevents 40% of churns',
|
|
83
|
+
'Win-back sequence: day 0, day 7, day 30 emails',
|
|
84
|
+
],
|
|
85
|
+
elegant: [
|
|
86
|
+
'Cancellation concierge call for Premium/Elite tiers',
|
|
87
|
+
'Loyalty hold: freeze billing for 30 days instead of cancel',
|
|
88
|
+
'Personalised win-back with curated product recommendation',
|
|
89
|
+
],
|
|
90
|
+
playful: [
|
|
91
|
+
'Cancel-save flow with streak-loss warning and fun copy',
|
|
92
|
+
'Surprise discount pop-up on final confirm step',
|
|
93
|
+
'Re-engagement push notification after 7-day lapse',
|
|
94
|
+
],
|
|
95
|
+
corporate: [
|
|
96
|
+
'Contract renewal notifications 90/60/30 days before expiry',
|
|
97
|
+
'Usage report showing ROI prior to renewal conversation',
|
|
98
|
+
'Executive sponsor alignment meeting for at-risk accounts',
|
|
99
|
+
],
|
|
100
|
+
tech: [
|
|
101
|
+
'Automated usage digest 2 weeks before renewal',
|
|
102
|
+
'Credit rollover option reduces cancellation intent',
|
|
103
|
+
'Downgrade to free tier preserves data and reduces churn',
|
|
104
|
+
],
|
|
105
|
+
organic: [
|
|
106
|
+
'Impact summary email: what your membership funded this year',
|
|
107
|
+
'Community loss messaging: your contributions matter',
|
|
108
|
+
'Subscription pause up to 6 months for financial hardship',
|
|
109
|
+
],
|
|
110
|
+
retro: [
|
|
111
|
+
'Cancellation warning: you will lose access to archive',
|
|
112
|
+
'Limited farewell offer: keep your collection tier at cost',
|
|
113
|
+
'Win-back: exclusive limited item for reactivated subscribers',
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
const STYLE_BILLING_CADENCE = {
|
|
117
|
+
minimal: 'Monthly default; annual at 20% discount',
|
|
118
|
+
bold: 'Monthly, annual (25% off), biennial (35% off)',
|
|
119
|
+
elegant: 'Monthly or annual; custom billing for Elite tier',
|
|
120
|
+
playful: 'Monthly by default; annual unlocks bonus perks',
|
|
121
|
+
corporate: 'Annual contract standard; quarterly available for SMB',
|
|
122
|
+
tech: 'Monthly, annual (2 months free), or usage-based metered',
|
|
123
|
+
organic: 'Monthly by default; annual donation-style commitment option',
|
|
124
|
+
retro: 'Monthly or seasonal (4× per year for collector boxes)',
|
|
125
|
+
};
|
|
126
|
+
const STYLE_FREE_TRIAL = {
|
|
127
|
+
minimal: '14-day free trial, no credit card required',
|
|
128
|
+
bold: '7-day free trial with full access; credit card required',
|
|
129
|
+
elegant: '30-day complimentary membership for invited guests',
|
|
130
|
+
playful: 'Free forever tier with upgrade prompts at key moments',
|
|
131
|
+
corporate: '30-day proof-of-concept with dedicated onboarding',
|
|
132
|
+
tech: 'Free tier with usage limits; no time restriction',
|
|
133
|
+
organic: '14-day trial; cancel any time, no questions asked',
|
|
134
|
+
retro: 'First box at cost price (trial with tangible product)',
|
|
135
|
+
};
|
|
136
|
+
function buildPricingTiers(brand, safeStyle) {
|
|
137
|
+
const tiers = STYLE_TIERS[safeStyle];
|
|
138
|
+
const name = brand.name;
|
|
139
|
+
return tiers.map((tier, i) => {
|
|
140
|
+
const isFirst = i === 0;
|
|
141
|
+
const isLast = i === tiers.length - 1;
|
|
142
|
+
return {
|
|
143
|
+
tier,
|
|
144
|
+
price: isFirst ? 'Free' : isLast && tiers.length > 2 ? 'Custom' : `$${(i + 1) * 29}/mo`,
|
|
145
|
+
features: [
|
|
146
|
+
isFirst ? `Core ${name} features` : `Everything in ${tiers[i - 1]} tier`,
|
|
147
|
+
isLast && tiers.length > 2 ? 'Custom integrations and SLA' : `${tier}-tier feature set`,
|
|
148
|
+
i > 0 ? 'Priority support' : 'Community support',
|
|
149
|
+
isLast ? 'Dedicated account manager' : 'Self-serve onboarding',
|
|
150
|
+
],
|
|
151
|
+
cta: isFirst
|
|
152
|
+
? 'Get started free'
|
|
153
|
+
: isLast && tiers.length > 2
|
|
154
|
+
? 'Contact sales'
|
|
155
|
+
: `Start ${tier} trial`,
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function buildOnboardingFlow(safeStyle) {
|
|
160
|
+
const base = [
|
|
161
|
+
'Welcome email with quick-start checklist',
|
|
162
|
+
'In-product onboarding tour highlighting top 3 features',
|
|
163
|
+
'Day-3 check-in email with tips and tutorials',
|
|
164
|
+
'Day-7 milestone email celebrating first-week usage',
|
|
165
|
+
'Day-14 value email: "Here is what you have achieved"',
|
|
166
|
+
];
|
|
167
|
+
if (safeStyle === 'tech') {
|
|
168
|
+
base.push('Developer quickstart guide and API key setup', 'Integration wizard for popular tools');
|
|
169
|
+
}
|
|
170
|
+
if (safeStyle === 'corporate') {
|
|
171
|
+
base.push('Dedicated implementation call within 48 hours', 'Admin training session for team leads');
|
|
172
|
+
}
|
|
173
|
+
if (safeStyle === 'elegant') {
|
|
174
|
+
base.push('Personalised welcome call from a concierge', 'Curated getting-started guide tailored to profile');
|
|
175
|
+
}
|
|
176
|
+
return base;
|
|
177
|
+
}
|
|
178
|
+
function buildAccessibilityNotes() {
|
|
179
|
+
return [
|
|
180
|
+
'Pricing tables must use semantic HTML table markup (WCAG 1.3.1)',
|
|
181
|
+
'Plan comparison checkmarks must have text equivalents, not just icons',
|
|
182
|
+
'CTA buttons must have 4.5:1 contrast ratio against background (WCAG 1.4.3)',
|
|
183
|
+
'Cancellation flow must be keyboard-navigable (WCAG 2.1.1)',
|
|
184
|
+
'Error messages in billing forms must be descriptive (WCAG 3.3.1)',
|
|
185
|
+
'Subscription confirmation emails must have a plain-text alternative',
|
|
186
|
+
'Annual vs monthly toggle must be accessible to screen readers (WCAG 4.1.2)',
|
|
187
|
+
];
|
|
188
|
+
}
|
|
189
|
+
function buildBriefSummary(brand, safeStyle) {
|
|
190
|
+
const tiers = STYLE_TIERS[safeStyle];
|
|
191
|
+
const tagline = brand.tagline ? ` \u2014 "${brand.tagline}"` : '';
|
|
192
|
+
return (`${brand.name}${tagline} offers a ${safeStyle}-style subscription model ` +
|
|
193
|
+
`with ${tiers.length} tiers (${tiers.join(', ')}). ` +
|
|
194
|
+
`Billing: ${STYLE_BILLING_CADENCE[safeStyle]}. ` +
|
|
195
|
+
`Trial: ${STYLE_FREE_TRIAL[safeStyle]}.`);
|
|
196
|
+
}
|
|
197
|
+
export function generateBrandSubscription(brand) {
|
|
198
|
+
const rawStyle = brand.style;
|
|
199
|
+
const safeStyle = VALID_STYLES.has(rawStyle) ? rawStyle : 'minimal';
|
|
200
|
+
const voice = generateBrandVoice(brand);
|
|
201
|
+
const pricingTiers = buildPricingTiers(brand, safeStyle);
|
|
202
|
+
const onboardingFlow = buildOnboardingFlow(safeStyle);
|
|
203
|
+
const accessibilityNotes = buildAccessibilityNotes();
|
|
204
|
+
return {
|
|
205
|
+
modelApproach: STYLE_MODEL_APPROACH[safeStyle],
|
|
206
|
+
tiers: STYLE_TIERS[safeStyle],
|
|
207
|
+
pricingTiers,
|
|
208
|
+
billingCadence: STYLE_BILLING_CADENCE[safeStyle],
|
|
209
|
+
freeTrialOffer: STYLE_FREE_TRIAL[safeStyle],
|
|
210
|
+
retentionTactics: STYLE_RETENTION_TACTICS[safeStyle],
|
|
211
|
+
churnPreventionFlow: STYLE_CHURN_PREVENTION[safeStyle],
|
|
212
|
+
onboardingFlow,
|
|
213
|
+
accessibilityNotes,
|
|
214
|
+
copyTone: voice.tone,
|
|
215
|
+
subscriptionBriefSummary: buildBriefSummary(brand, safeStyle),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=brand-subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-subscription.js","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-subscription.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-training.d.ts","sourceRoot":"","sources":["../../../../src/lib/branding-core/generators/brand-training.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAgC,MAAM,gBAAgB,CAAC;AAoQxF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAc/E"}
|