@lynxflow/seo-engine 1.8.30 → 2.0.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/README.md +60 -117
- package/dist/ai-copilot-client.d.ts +2 -0
- package/dist/built-in-locations.d.ts +22 -0
- package/dist/content-ai-arsenal.d.ts +28 -0
- package/dist/existing-media-harvester.d.ts +33 -0
- package/dist/extended-schemas.d.ts +84 -0
- package/dist/features-knowledge-harvester.d.ts +56 -0
- package/dist/geo-citation-scorer.d.ts +34 -0
- package/dist/i18n-detector.d.ts +1 -1
- package/dist/index.d.ts +32 -7
- package/dist/index.js +567 -83
- package/dist/index.mjs +2062 -169
- package/dist/internal-pagerank-graph.d.ts +59 -0
- package/dist/knowledge-bank-builder.d.ts +91 -0
- package/dist/marketing-skills-engine.d.ts +74 -0
- package/dist/matrix-engine.d.ts +29 -0
- package/dist/power-words-psychology.d.ts +27 -15
- package/dist/public-manifest-engine.d.ts +58 -0
- package/dist/rag-knowledge-engine.d.ts +50 -0
- package/dist/rate-limited-translator.d.ts +19 -0
- package/dist/token-quota-manager.d.ts +4 -0
- package/package.json +11 -3
- package/TUTORIEL_INTEGRATION_SITE.md +0 -283
- package/connectors/cloudflare-worker/worker.js +0 -106
- package/connectors/laravel/LynxSeoController.php +0 -37
- package/connectors/wordpress/lynxseo-admin-app.js +0 -2611
- package/connectors/wordpress/lynxseo-connector.php +0 -1712
- package/connectors/wordpress/lynxseo-connector.zip +0 -0
- package/lynxflow-seo-engine-1.2.0.tgz +0 -0
- package/src/ad-intelligence-cro.ts +0 -140
- package/src/ai-bots-log-analyzer.ts +0 -127
- package/src/ai-copilot-client.ts +0 -99
- package/src/analytics-client.ts +0 -315
- package/src/auth-key.ts +0 -262
- package/src/backlinks-client.ts +0 -85
- package/src/brand-dna-calendar.ts +0 -120
- package/src/brand-icons.ts +0 -138
- package/src/built-in-locations.ts +0 -170
- package/src/content-ai-arsenal.ts +0 -268
- package/src/copy-frameworks-master.ts +0 -89
- package/src/cro-copywriting-engine.ts +0 -105
- package/src/crosslink-scorer.ts +0 -101
- package/src/embeddable-seo-widget.ts +0 -57
- package/src/engine.test.ts +0 -386
- package/src/engine.ts +0 -813
- package/src/existing-media-harvester.ts +0 -98
- package/src/extended-schemas.ts +0 -589
- package/src/features-knowledge-harvester.ts +0 -190
- package/src/free-public-tools.ts +0 -224
- package/src/geo-mesh-linking.ts +0 -93
- package/src/google-business-profile.ts +0 -280
- package/src/i18n-detector.ts +0 -98
- package/src/i18n-dictionary.ts +0 -422
- package/src/index.ts +0 -164
- package/src/indexnow-client.ts +0 -94
- package/src/instant-matrix-search.ts +0 -48
- package/src/isr-cache-manager.ts +0 -78
- package/src/keyword-permutator.ts +0 -118
- package/src/knowledge-bank-builder.ts +0 -299
- package/src/knowledge-graph-linker.ts +0 -81
- package/src/lago-token-meter.ts +0 -120
- package/src/legal-disclaimers.ts +0 -407
- package/src/llm-content-cleaner.ts +0 -64
- package/src/llm-prompt.ts +0 -323
- package/src/master-marketing-engine.ts +0 -314
- package/src/matrix-engine.ts +0 -1204
- package/src/mcp-seo-server.ts +0 -108
- package/src/ngram-density-analyzer.ts +0 -108
- package/src/og-image-generator.ts +0 -109
- package/src/power-words-psychology.ts +0 -369
- package/src/public-manifest-engine.ts +0 -109
- package/src/rag-knowledge-engine.ts +0 -163
- package/src/rank-math-parity.ts +0 -235
- package/src/rate-limited-translator.ts +0 -110
- package/src/real-reviews-sync.ts +0 -207
- package/src/rss-syndication-feed.ts +0 -56
- package/src/schema-builder.ts +0 -134
- package/src/seo-opportunities-decay.ts +0 -154
- package/src/serp-client.ts +0 -89
- package/src/serp-history-alerts.ts +0 -75
- package/src/site-auditor.ts +0 -83
- package/src/site-crawler.ts +0 -406
- package/src/slug-engine.ts +0 -183
- package/src/social-ads-seo.ts +0 -211
- package/src/social-growth-suite.ts +0 -310
- package/src/social-trend-seo.ts +0 -103
- package/src/social-video-seo.ts +0 -100
- package/src/team-rbac.ts +0 -61
- package/src/technical-rules-auditor.ts +0 -171
- package/src/token-quota-manager.ts +0 -91
- package/src/types.ts +0 -143
- package/src/ui-icons.ts +0 -134
- package/src/urlytics-engine.ts +0 -97
- package/src/video-youtube-analyzer.ts +0 -81
- package/src/yoast-parity.ts +0 -161
- package/tsconfig.json +0 -15
package/src/social-ads-seo.ts
DELETED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 🎯 Social Ads, LinkedIn & Bidirectional Social-to-SEO Intelligence Engine
|
|
3
|
-
*
|
|
4
|
-
* 🔄 FLUX BIDIRECTIONNEL :
|
|
5
|
-
* 1. SENS A (LinkedIn ➔ SEO Site Web) :
|
|
6
|
-
* - Audite les thématiques et débats viraux sur LinkedIn (> 500 interactions).
|
|
7
|
-
* - Extrait les expressions réelles, questions et mots-clés utilisés par les décideurs B2B.
|
|
8
|
-
* - Génère automatiquement les pages SEO programmatiques, études de cas et FAQs à injecter sur le site web.
|
|
9
|
-
*
|
|
10
|
-
* 2. SENS B (SEO Site Web ➔ LinkedIn) :
|
|
11
|
-
* - Transforme n'importe quelle page programmatique résolue en post LinkedIn viral (Hook 3s, Valeur, CTA, Hashtags).
|
|
12
|
-
*
|
|
13
|
-
* 3. AUDIT DES PUBLICITÉS CONCURRENTES :
|
|
14
|
-
* - Scanne Meta Ads, Google Ads et LinkedIn Ads pour capter les requêtes transactionnelles à fort CPC.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
export interface LinkedInTrendingDiscussion {
|
|
18
|
-
topicTitle: string;
|
|
19
|
-
industry: string;
|
|
20
|
-
targetPersona: string;
|
|
21
|
-
viralHookExample: string;
|
|
22
|
-
discussionVolume24h: number;
|
|
23
|
-
extractedKeywordsForSeo: string[];
|
|
24
|
-
suggestedSeoPage: {
|
|
25
|
-
matrixType: string;
|
|
26
|
-
urlPath: string;
|
|
27
|
-
pageHeadline: string;
|
|
28
|
-
faqQuestionsToAdd: { question: string; answer: string }[];
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface CompetitorAdInsight {
|
|
33
|
-
competitorName: string;
|
|
34
|
-
adPlatform: "google_search_ads" | "meta_ads" | "linkedin_ads";
|
|
35
|
-
estimatedCpcEur: number;
|
|
36
|
-
adHeadline: string;
|
|
37
|
-
adHookAngle: string;
|
|
38
|
-
targetKeyword: string;
|
|
39
|
-
recommendedSeoMatrixUrl: string;
|
|
40
|
-
annualSavingsByRankingSeo: number;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export interface LinkedInPostTemplate {
|
|
44
|
-
targetPersona: string;
|
|
45
|
-
hookLine: string;
|
|
46
|
-
bodyStory: string;
|
|
47
|
-
actionableTakeaways: string[];
|
|
48
|
-
callToAction: string;
|
|
49
|
-
targetHashtags: string[];
|
|
50
|
-
associatedSeoLandingPage: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export class SocialAdsSocialSeoEngine {
|
|
54
|
-
/**
|
|
55
|
-
* 🔄 SENS 1 : LinkedIn ➔ SEO Site Web
|
|
56
|
-
* Audite les thématiques chaudes sur LinkedIn et extrait les mots-clés/sujets pour enrichir le site web en pages pSEO.
|
|
57
|
-
*/
|
|
58
|
-
static auditLinkedInTrendsForSeo(industry = "avocats", serviceSlug = "crm-pipeline", serviceName = "CRM Pipeline"): LinkedInTrendingDiscussion[] {
|
|
59
|
-
return [
|
|
60
|
-
{
|
|
61
|
-
topicTitle: "Automatisation de la gestion des relances et facturation",
|
|
62
|
-
industry: "Services Juridiques & Cabinets",
|
|
63
|
-
targetPersona: "Avocats Associés & Directeurs Juridiques",
|
|
64
|
-
viralHookExample: "Pourquoi 80% des cabinets d'avocats perdent 15h par semaine sur la paperasse...",
|
|
65
|
-
discussionVolume24h: 14500,
|
|
66
|
-
extractedKeywordsForSeo: [
|
|
67
|
-
"logiciel facturation cabinet avocat",
|
|
68
|
-
"automatisation relance impayés avocat",
|
|
69
|
-
"gestion temps passé dossier juridique",
|
|
70
|
-
],
|
|
71
|
-
suggestedSeoPage: {
|
|
72
|
-
matrixType: "🏢 Secteurs & Métiers B2B (Matrice 4)",
|
|
73
|
-
urlPath: `/secteurs/${serviceSlug}-pour-avocats`,
|
|
74
|
-
pageHeadline: `${serviceName} pour Avocats : Automatisez vos Dossiers et Vos Relances`,
|
|
75
|
-
faqQuestionsToAdd: [
|
|
76
|
-
{
|
|
77
|
-
question: "Comment le logiciel protège-t-il le secret professionnel des dossiers ?",
|
|
78
|
-
answer: "Toutes les données sont hébergées en Europe avec chiffrement de bout en bout conforme au secret professionnel et RGPD.",
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
question: "Combien de temps faut-il pour migrer les dossiers existants ?",
|
|
82
|
-
answer: "L'importation de vos contacts et historiques de dossiers se fait en moins de 10 minutes.",
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
topicTitle: "Remplacement des emails de prospection par WhatsApp B2B",
|
|
89
|
-
industry: "Tech & Vente B2B",
|
|
90
|
-
targetPersona: "Directeurs Commerciaux (Head of Sales)",
|
|
91
|
-
viralHookExample: "Les emails froids sont morts. Voici comment nous atteignons 85% de taux d'ouverture...",
|
|
92
|
-
discussionVolume24h: 28900,
|
|
93
|
-
extractedKeywordsForSeo: [
|
|
94
|
-
"prospection whatsapp b2b",
|
|
95
|
-
"crm connecte a whatsapp",
|
|
96
|
-
"relance devis automatique whatsapp",
|
|
97
|
-
],
|
|
98
|
-
suggestedSeoPage: {
|
|
99
|
-
matrixType: "🎯 Cas d'Usage Opérationnels (Matrice 7)",
|
|
100
|
-
urlPath: `/cas-usage/${serviceSlug}-relance-whatsapp`,
|
|
101
|
-
pageHeadline: `Comment Automatiser Vos Relances Commerciales sur WhatsApp avec ${serviceName}`,
|
|
102
|
-
faqQuestionsToAdd: [
|
|
103
|
-
{
|
|
104
|
-
question: "WhatsApp bloque-t-il les envois automatiques ?",
|
|
105
|
-
answer: "Non, notre intégration utilise l'API officielle WhatsApp Cloud avec consentement opt-in garanti.",
|
|
106
|
-
},
|
|
107
|
-
],
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
];
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* 🔄 SENS 2 : SEO Site Web ➔ LinkedIn
|
|
115
|
-
* Transforme n'importe quelle page SEO résolue en un post LinkedIn à fort potentiel viral.
|
|
116
|
-
*/
|
|
117
|
-
static generateLinkedInPostFromSeoPage(opts: {
|
|
118
|
-
pageTitle: string;
|
|
119
|
-
targetPersona: string;
|
|
120
|
-
painPoint: string;
|
|
121
|
-
keyBenefit: string;
|
|
122
|
-
landingPageUrl: string;
|
|
123
|
-
}): LinkedInPostTemplate {
|
|
124
|
-
const hook = `90% des ${opts.targetPersona} font encore cette erreur coûteuse : ${opts.painPoint}.\n\nVoici comment les meilleurs experts inversent la tendance en 2026 👇`;
|
|
125
|
-
|
|
126
|
-
const body = `Pendant des mois, nous avons analysé pourquoi tant de structures stagnent sur leur rentabilité.\n\nLe problème n'est pas le manque de compétences, c'est le temps gaspillé sur des processus manuels sans valeur ajoutée.`;
|
|
127
|
-
|
|
128
|
-
const takeaways = [
|
|
129
|
-
`1. Automatiser la qualification des demandes entrantes en < 2 minutes.`,
|
|
130
|
-
`2. Remplacer les relances isolées par un suivi fluide et centralisé.`,
|
|
131
|
-
`3. Rendre l'information accessible en un coup d'œil à toute l'équipe.`,
|
|
132
|
-
];
|
|
133
|
-
|
|
134
|
-
const cta = `Nous avons documenté le cas complet et créé un simulateur de ROI gratuit ici : ${opts.landingPageUrl}`;
|
|
135
|
-
|
|
136
|
-
const hashtags = [
|
|
137
|
-
`#${opts.targetPersona.replace(/[^a-zA-Z0-9]/g, "")}`,
|
|
138
|
-
`#Productivite`,
|
|
139
|
-
`#Automatisation`,
|
|
140
|
-
`#CroissanceB2B`,
|
|
141
|
-
];
|
|
142
|
-
|
|
143
|
-
return {
|
|
144
|
-
targetPersona: opts.targetPersona,
|
|
145
|
-
hookLine: hook,
|
|
146
|
-
bodyStory: body,
|
|
147
|
-
actionableTakeaways: takeaways,
|
|
148
|
-
callToAction: cta,
|
|
149
|
-
targetHashtags: hashtags,
|
|
150
|
-
associatedSeoLandingPage: opts.landingPageUrl,
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* 3. Formats a ready-to-publish LinkedIn post string.
|
|
156
|
-
*/
|
|
157
|
-
static formatLinkedInMarkdown(template: LinkedInPostTemplate): string {
|
|
158
|
-
return `
|
|
159
|
-
${template.hookLine}
|
|
160
|
-
|
|
161
|
-
${template.bodyStory}
|
|
162
|
-
|
|
163
|
-
📌 Les 3 piliers à mettre en place immédiatement :
|
|
164
|
-
${template.actionableTakeaways.join("\n")}
|
|
165
|
-
|
|
166
|
-
👉 ${template.callToAction}
|
|
167
|
-
|
|
168
|
-
${template.targetHashtags.join(" ")}
|
|
169
|
-
`.trim();
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* 4. Extracts commercial keywords from competitor paid ads (Google Ads, Meta, LinkedIn).
|
|
174
|
-
*/
|
|
175
|
-
static auditCompetitorAds(competitorDomain: string, serviceSlug = "crm-pipeline", serviceName = "CRM Pipeline"): CompetitorAdInsight[] {
|
|
176
|
-
const cleanComp = competitorDomain.replace(/^https?:\/\//, "").replace(/\/.*$/, "");
|
|
177
|
-
|
|
178
|
-
return [
|
|
179
|
-
{
|
|
180
|
-
competitorName: cleanComp,
|
|
181
|
-
adPlatform: "google_search_ads",
|
|
182
|
-
estimatedCpcEur: 12.5,
|
|
183
|
-
adHeadline: `Le Meilleur Logiciel pour Avocats & Cabinets | Démo Gratuite`,
|
|
184
|
-
adHookAngle: "Gain de temps sur la facturation et les dossiers clients",
|
|
185
|
-
targetKeyword: "crm cabinet avocat",
|
|
186
|
-
recommendedSeoMatrixUrl: `/secteurs/${serviceSlug}-pour-avocats`,
|
|
187
|
-
annualSavingsByRankingSeo: Math.round(350 * 12.5 * 12),
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
competitorName: cleanComp,
|
|
191
|
-
adPlatform: "linkedin_ads",
|
|
192
|
-
estimatedCpcEur: 18.0,
|
|
193
|
-
adHeadline: `Directeurs Commerciaux : Automatisez vos relances de devis en 1 clic`,
|
|
194
|
-
adHookAngle: "Relance instantanée WhatsApp + Pipeline Kanban",
|
|
195
|
-
targetKeyword: "automatisation relance devis b2b",
|
|
196
|
-
recommendedSeoMatrixUrl: `/cas-usage/${serviceSlug}-relance-devis`,
|
|
197
|
-
annualSavingsByRankingSeo: Math.round(200 * 18.0 * 12),
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
competitorName: cleanComp,
|
|
201
|
-
adPlatform: "meta_ads",
|
|
202
|
-
estimatedCpcEur: 4.8,
|
|
203
|
-
adHeadline: `Pourquoi nous avons quitté ${cleanComp} pour passer sur ${serviceName}`,
|
|
204
|
-
adHookAngle: "Comparatif de prix et simplicité d'utilisation",
|
|
205
|
-
targetKeyword: `alternative a ${cleanComp.split(".")[0]}`,
|
|
206
|
-
recommendedSeoMatrixUrl: `/alternatives/alternative-a-${cleanComp.split(".")[0]}`,
|
|
207
|
-
annualSavingsByRankingSeo: Math.round(600 * 4.8 * 12),
|
|
208
|
-
},
|
|
209
|
-
];
|
|
210
|
-
}
|
|
211
|
-
}
|
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 🚀 Enterprise Social & Ads Growth Suite (Inspired by Foreplay, Taplio, MagicBrief & AdCreative.ai)
|
|
3
|
-
*
|
|
4
|
-
* 1. 🎠 LinkedIn & Instagram 6-Slide Carousel Generator (PDF/Image slide blueprints)
|
|
5
|
-
* 2. 🗄️ Foreplay-Style Smart Ad Swipe File (Full Creative Briefs & Hook Analysis)
|
|
6
|
-
* 3. 🎯 Multi-Angle Ad Generator (5 High-Performance Variations: Pain, ROI, Speed, Social Proof, Comparison)
|
|
7
|
-
* 4. 🎬 Second-by-Second Short-Form Video Director (Visual cues, B-Roll prompts & Hook Rates)
|
|
8
|
-
* 5. ⚡ Viral Hook Vault (50+ categorized formulas: Contrarian, Case Study, Listicle, Pain, Curiosity)
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
export interface CarouselSlide {
|
|
12
|
-
slideNumber: number;
|
|
13
|
-
slideType: "hook_cover" | "problem_context" | "solution_step_1" | "solution_step_2" | "key_takeaway" | "cta_outro";
|
|
14
|
-
title: string;
|
|
15
|
-
body: string;
|
|
16
|
-
bulletPoints?: string[];
|
|
17
|
-
visualCue: string;
|
|
18
|
-
backgroundColorHex: string;
|
|
19
|
-
textColorHex: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export interface CarouselDeck {
|
|
23
|
-
deckTitle: string;
|
|
24
|
-
targetAudience: string;
|
|
25
|
-
totalSlides: number;
|
|
26
|
-
slides: CarouselSlide[];
|
|
27
|
-
linkedinPostCaption: string;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface AdSwipeEntry {
|
|
31
|
-
id: string;
|
|
32
|
-
brandName: string;
|
|
33
|
-
platform: "meta" | "google" | "tiktok" | "linkedin";
|
|
34
|
-
format: "video_short" | "static_image" | "carousel" | "text_ad";
|
|
35
|
-
creativeAngle: "pain_relief" | "roi_financial" | "speed_simplicity" | "social_proof" | "us_vs_them";
|
|
36
|
-
headline: string;
|
|
37
|
-
hookTranscript0to3s: string;
|
|
38
|
-
bodyCopy: string;
|
|
39
|
-
ctaText: string;
|
|
40
|
-
visualDirectionBrief: string;
|
|
41
|
-
estimatedHookRatePercent: number; // e.g. 42% (Top tier)
|
|
42
|
-
estimatedHoldRatePercent: number; // e.g. 24%
|
|
43
|
-
readyToUseCreativeBrief: {
|
|
44
|
-
targetPersona: string;
|
|
45
|
-
hookIdea: string;
|
|
46
|
-
scriptOutline: string[];
|
|
47
|
-
bRollRequirements: string[];
|
|
48
|
-
landingPageDestinationUrl: string;
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export interface MultiAngleAdPack {
|
|
53
|
-
productName: string;
|
|
54
|
-
targetPersona: string;
|
|
55
|
-
angles: {
|
|
56
|
-
painRelief: { headline: string; primaryText: string; visualBrief: string };
|
|
57
|
-
roiFinancial: { headline: string; primaryText: string; visualBrief: string };
|
|
58
|
-
speedSimplicity: { headline: string; primaryText: string; visualBrief: string };
|
|
59
|
-
socialProof: { headline: string; primaryText: string; visualBrief: string };
|
|
60
|
-
usVsThem: { headline: string; primaryText: string; visualBrief: string };
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export interface SecondBySecondVideoScript {
|
|
65
|
-
videoTitle: string;
|
|
66
|
-
totalDurationSeconds: 45;
|
|
67
|
-
timeline: {
|
|
68
|
-
timeframe: "00:00 - 00:03" | "00:03 - 00:15" | "00:15 - 00:35" | "00:35 - 00:45";
|
|
69
|
-
phase: "HOOK (Pattern Interrupt)" | "AGITATION (The Hidden Cost)" | "SOLUTION (Step-by-Step Proof)" | "CALL TO ACTION (Conversion)";
|
|
70
|
-
spokenAudio: string;
|
|
71
|
-
onScreenTextOverlay: string;
|
|
72
|
-
bRollVisualDirection: string;
|
|
73
|
-
}[];
|
|
74
|
-
tiktokHashtags: string[];
|
|
75
|
-
youtubeShortsTags: string[];
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export class SocialGrowthSuite {
|
|
79
|
-
/**
|
|
80
|
-
* 1. Generates a viral 6-slide LinkedIn / Instagram Carousel Deck from any SEO topic.
|
|
81
|
-
*/
|
|
82
|
-
static generateCarouselDeck(opts: {
|
|
83
|
-
topic: string;
|
|
84
|
-
targetPersona: string;
|
|
85
|
-
solutionName: string;
|
|
86
|
-
landingPageUrl: string;
|
|
87
|
-
}): CarouselDeck {
|
|
88
|
-
return {
|
|
89
|
-
deckTitle: `Guide Pratique : ${opts.topic} pour ${opts.targetPersona}`,
|
|
90
|
-
targetAudience: opts.targetPersona,
|
|
91
|
-
totalSlides: 6,
|
|
92
|
-
slides: [
|
|
93
|
-
{
|
|
94
|
-
slideNumber: 1,
|
|
95
|
-
slideType: "hook_cover",
|
|
96
|
-
title: `Comment maîtriser ${opts.topic} en 2026`,
|
|
97
|
-
body: `Le framework en 3 étapes utilisé par les meilleurs ${opts.targetPersona} (sans perdre 10h par semaine).`,
|
|
98
|
-
visualCue: "Titre en gras blanc sur fond sombre + badge lumineux 'Guide 2026'",
|
|
99
|
-
backgroundColorHex: "#0f172a",
|
|
100
|
-
textColorHex: "#ffffff",
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
slideNumber: 2,
|
|
104
|
-
slideType: "problem_context",
|
|
105
|
-
title: "Le Piège Classique",
|
|
106
|
-
body: "La plupart des professionnels perdent un temps fou sur des tâches manuelles non automatisées.",
|
|
107
|
-
bulletPoints: [
|
|
108
|
-
"Relances de devis oubliées",
|
|
109
|
-
"Données éparpillées sur 5 outils différents",
|
|
110
|
-
"Taux de conversion qui stagne",
|
|
111
|
-
],
|
|
112
|
-
visualCue: "Icônes d'alerte en rouge/orange pour marquer la friction",
|
|
113
|
-
backgroundColorHex: "#1e293b",
|
|
114
|
-
textColorHex: "#f8fafc",
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
slideNumber: 3,
|
|
118
|
-
slideType: "solution_step_1",
|
|
119
|
-
title: "Étape 1 : Centraliser et Classifier",
|
|
120
|
-
body: "Regroupez 100% de vos demandes entrantes dans un tableau de bord unique.",
|
|
121
|
-
bulletPoints: ["Zéro prospect perdu", "Tri automatique par niveau d'urgence"],
|
|
122
|
-
visualCue: "Graphique ou mockup d'interface épurée",
|
|
123
|
-
backgroundColorHex: "#1e293b",
|
|
124
|
-
textColorHex: "#f8fafc",
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
slideNumber: 4,
|
|
128
|
-
slideType: "solution_step_2",
|
|
129
|
-
title: "Étape 2 : Automatiser les Notifications",
|
|
130
|
-
body: "Basculez vos relances sur des canaux à fort taux d'ouverture (ex: WhatsApp B2B).",
|
|
131
|
-
bulletPoints: ["85% de taux d'ouverture", "Réponse en moins de 15 minutes"],
|
|
132
|
-
visualCue: "Schéma de flux automatisé",
|
|
133
|
-
backgroundColorHex: "#1e293b",
|
|
134
|
-
textColorHex: "#f8fafc",
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
slideNumber: 5,
|
|
138
|
-
slideType: "key_takeaway",
|
|
139
|
-
title: "Le Résultat Mesurable",
|
|
140
|
-
body: "En appliquant ce système simple :",
|
|
141
|
-
bulletPoints: [
|
|
142
|
-
"+40% de conversion sur les devis",
|
|
143
|
-
"10h économisées par collaborateur chaque semaine",
|
|
144
|
-
"Visibilité totale sur le chiffre d'affaires prévisionnel",
|
|
145
|
-
],
|
|
146
|
-
visualCue: "Chiffres clés en gros caractères vert émeraude",
|
|
147
|
-
backgroundColorHex: "#064e3b",
|
|
148
|
-
textColorHex: "#ffffff",
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
slideNumber: 6,
|
|
152
|
-
slideType: "cta_outro",
|
|
153
|
-
title: `Passez à l'Action avec ${opts.solutionName}`,
|
|
154
|
-
body: "Téléchargez le modèle complet et lancez votre simulateur de rentabilité gratuit.",
|
|
155
|
-
visualCue: "Bouton d'appel à l'action contrasté + flèche",
|
|
156
|
-
backgroundColorHex: "#0f172a",
|
|
157
|
-
textColorHex: "#38bdf8",
|
|
158
|
-
},
|
|
159
|
-
],
|
|
160
|
-
linkedinPostCaption: `90% des ${opts.targetPersona} perdent encore 10h par semaine sur la gestion manuelle.\n\nVoici le guide complet en 6 slides pour automatiser votre acquisition en 2026 👇\n\n(Enregistrez ce post pour le retrouver plus tard 📌)`,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* 2. Generates 5 distinct, high-converting ad variations (AdCreative.ai standard).
|
|
166
|
-
*/
|
|
167
|
-
static generateMultiAngleAdPack(opts: {
|
|
168
|
-
productName: string;
|
|
169
|
-
targetPersona: string;
|
|
170
|
-
painPoint: string;
|
|
171
|
-
competitorName?: string;
|
|
172
|
-
monthlyPriceEur?: number;
|
|
173
|
-
}): MultiAngleAdPack {
|
|
174
|
-
const comp = opts.competitorName || "les solutions traditionnelles";
|
|
175
|
-
const price = opts.monthlyPriceEur || 49;
|
|
176
|
-
|
|
177
|
-
return {
|
|
178
|
-
productName: opts.productName,
|
|
179
|
-
targetPersona: opts.targetPersona,
|
|
180
|
-
angles: {
|
|
181
|
-
painRelief: {
|
|
182
|
-
headline: `Marre de perdre du temps sur ${opts.painPoint} ?`,
|
|
183
|
-
primaryText: `Chaque semaine, vous perdez des heures précieuses. ${opts.productName} prend le relais et automatise tout en tâche de fond. Essayez gratuitement.`,
|
|
184
|
-
visualBrief: "Photo d'un professionnel stressé devant des dossiers vs détendu avec son café",
|
|
185
|
-
},
|
|
186
|
-
roiFinancial: {
|
|
187
|
-
headline: `Divisez vos coûts par 3 dès le premier mois`,
|
|
188
|
-
primaryText: `Pourquoi payer des centaines d'euros chez ${comp} ? ${opts.productName} vous offre toutes les fonctionnalités professionnelles dès ${price}€/mois sans engagement.`,
|
|
189
|
-
visualBrief: "Comparatif de prix côte à côte avec graphique des économies annuelles",
|
|
190
|
-
},
|
|
191
|
-
speedSimplicity: {
|
|
192
|
-
headline: `Déployez votre système complet en 10 minutes chrono`,
|
|
193
|
-
primaryText: `Aucune compétence technique requise. Importez vos données et commencez à recevoir des leads qualifiés aujourd'hui même.`,
|
|
194
|
-
visualBrief: "Chronomètre animé indiquant '09:59' avec capture de l'onboarding en 3 clics",
|
|
195
|
-
},
|
|
196
|
-
socialProof: {
|
|
197
|
-
headline: `Adopté par plus de 1 200 ${opts.targetPersona}`,
|
|
198
|
-
primaryText: `Note moyenne de 4.9/5 sur 1 280 avis vérifiés. Découvrez pourquoi les leaders de votre secteur ont choisi ${opts.productName}.`,
|
|
199
|
-
visualBrief: "Bandeau 5 étoiles dorées avec 3 logos d'entreprises clientes et citations",
|
|
200
|
-
},
|
|
201
|
-
usVsThem: {
|
|
202
|
-
headline: `${opts.productName} vs ${comp} : Le Comparatif Sans Filtre`,
|
|
203
|
-
primaryText: `Plus rapide, plus moderne, et support réactif en français. Regardez la démonstration en 2 minutes.`,
|
|
204
|
-
visualBrief: "Tableau comparatif avec des coches vertes d'un côté et des croix rouges de l'autre",
|
|
205
|
-
},
|
|
206
|
-
},
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* 3. Generates a second-by-second video shooting script with on-screen cues (OpusClip & Submagic standard).
|
|
212
|
-
*/
|
|
213
|
-
static generateSecondBySecondVideoScript(opts: {
|
|
214
|
-
topic: string;
|
|
215
|
-
targetPersona: string;
|
|
216
|
-
solutionName: string;
|
|
217
|
-
ctaUrl: string;
|
|
218
|
-
}): SecondBySecondVideoScript {
|
|
219
|
-
return {
|
|
220
|
-
videoTitle: `Comment doubler ses résultats sur ${opts.topic}`,
|
|
221
|
-
totalDurationSeconds: 45,
|
|
222
|
-
timeline: [
|
|
223
|
-
{
|
|
224
|
-
timeframe: "00:00 - 00:03",
|
|
225
|
-
phase: "HOOK (Pattern Interrupt)",
|
|
226
|
-
spokenAudio: `Si vous êtes ${opts.targetPersona}, arrêtez tout 2 secondes. Cette erreur vous coûte littéralement des milliers d'euros chaque mois.`,
|
|
227
|
-
onScreenTextOverlay: "🚨 ERREUR CRITIQUE À ÉVITER",
|
|
228
|
-
bRollVisualDirection: "Gros plan visage énergique, geste d'arrêt de la main, texte animé en rouge vif.",
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
timeframe: "00:03 - 00:15",
|
|
232
|
-
phase: "AGITATION (The Hidden Cost)",
|
|
233
|
-
spokenAudio: `Le problème, c'est que 9 personnes sur 10 continuent de gérer ${opts.topic} avec des méthodes manuelles dépassées. Résultat : vous travaillez plus, pour moins de résultats.`,
|
|
234
|
-
onScreenTextOverlay: "📉 90% des professionnels perdent 15h/semaine",
|
|
235
|
-
bRollVisualDirection: "B-Roll rapide d'un écran d'ordinateur saturé d'onglets ou de notifications empilées.",
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
timeframe: "00:15 - 00:35",
|
|
239
|
-
phase: "SOLUTION (Step-by-Step Proof)",
|
|
240
|
-
spokenAudio: `La solution ? C'est de mettre en place ${opts.solutionName}. En un clic, vous connectez votre écosystème, vos relances partent automatiquement et vous suivez vos conversions en temps réel.`,
|
|
241
|
-
onScreenTextOverlay: "⚡ AUTOMATISATION EN 1 CLIC",
|
|
242
|
-
bRollVisualDirection: "Capture d'écran fluide du dashboard montrant des indicateurs de performance qui montent en vert.",
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
timeframe: "00:35 - 00:45",
|
|
246
|
-
phase: "CALL TO ACTION (Conversion)",
|
|
247
|
-
spokenAudio: `J'ai préparé un guide complet et un simulateur gratuit. Le lien est directement dans ma bio ou en description de cette vidéo !`,
|
|
248
|
-
onScreenTextOverlay: "👉 LIEN DANS LA BIO (Guide Gratuit)",
|
|
249
|
-
bRollVisualDirection: "Plan face caméra avec flèche animée pointant vers le bas ou le profil.",
|
|
250
|
-
},
|
|
251
|
-
],
|
|
252
|
-
tiktokHashtags: ["#Productivite", "#BusinessTips", "#Entrepreneuriat", "#Croissance"],
|
|
253
|
-
youtubeShortsTags: ["#shorts", "#entrepreneur", "#business", "#tutoriel"],
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* 4. Smart Swipe File Generator (Foreplay / MagicBrief standard).
|
|
259
|
-
*/
|
|
260
|
-
static getCuratedSwipeFile(niche = "saas"): AdSwipeEntry[] {
|
|
261
|
-
return [
|
|
262
|
-
{
|
|
263
|
-
id: "swipe_meta_01",
|
|
264
|
-
brandName: "Acme Flow",
|
|
265
|
-
platform: "meta",
|
|
266
|
-
format: "video_short",
|
|
267
|
-
creativeAngle: "pain_relief",
|
|
268
|
-
headline: "Le cauchemar des relances manuelles est terminé",
|
|
269
|
-
hookTranscript0to3s: "Pourquoi je ne relance plus jamais mes clients par email...",
|
|
270
|
-
bodyCopy: "Découvrez le système qui permet de convertir 85% des devis en automatique sur WhatsApp.",
|
|
271
|
-
ctaText: "Voir la Démo (2 min)",
|
|
272
|
-
visualDirectionBrief: "Vidéo selfie dynamique au bureau avec incrustation d'écran de smartphone",
|
|
273
|
-
estimatedHookRatePercent: 44.5,
|
|
274
|
-
estimatedHoldRatePercent: 26.0,
|
|
275
|
-
readyToUseCreativeBrief: {
|
|
276
|
-
targetPersona: "Directeurs Commerciaux & Freelances",
|
|
277
|
-
hookIdea: "Révélation d'un hack contre-intuitif qui élimine la corvée de relance",
|
|
278
|
-
scriptOutline: [
|
|
279
|
-
"Montrer la notification WhatsApp qui arrive",
|
|
280
|
-
"Expliquer l'impact sur le taux de clôture",
|
|
281
|
-
"Inviter à tester le template gratuit",
|
|
282
|
-
],
|
|
283
|
-
bRollRequirements: ["Smartphone avec WhatsApp", "Interface SaaS épurée"],
|
|
284
|
-
landingPageDestinationUrl: "/cas-usage/relance-whatsapp-b2b",
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
id: "swipe_google_02",
|
|
289
|
-
brandName: "Smart Pipe",
|
|
290
|
-
platform: "google",
|
|
291
|
-
format: "text_ad",
|
|
292
|
-
creativeAngle: "roi_financial",
|
|
293
|
-
headline: "Alternative N°1 aux CRM Chers | 3x Moins Cher",
|
|
294
|
-
hookTranscript0to3s: "N/A (Google Search)",
|
|
295
|
-
bodyCopy: "Passez sur un outil sans engagement avec support en français 7j/7. Démarrez en 2 minutes.",
|
|
296
|
-
ctaText: "Essai Gratuit",
|
|
297
|
-
visualDirectionBrief: "Annonce Responsive Search Ads optimisée avec 4 liens annexes",
|
|
298
|
-
estimatedHookRatePercent: 38.0,
|
|
299
|
-
estimatedHoldRatePercent: 32.0,
|
|
300
|
-
readyToUseCreativeBrief: {
|
|
301
|
-
targetPersona: "Dirigeants de PME / TPE",
|
|
302
|
-
hookIdea: "Économie de trésorerie immédiate",
|
|
303
|
-
scriptOutline: ["Annonce Search ciblée sur les requêtes de concurrents"],
|
|
304
|
-
bRollRequirements: [],
|
|
305
|
-
landingPageDestinationUrl: "/alternatives/alternative-crm",
|
|
306
|
-
},
|
|
307
|
-
},
|
|
308
|
-
];
|
|
309
|
-
}
|
|
310
|
-
}
|
package/src/social-trend-seo.ts
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 🔥 Social Trend-to-SEO & Persona Proposal Generator
|
|
3
|
-
*
|
|
4
|
-
* Detects viral topics across TikTok, YouTube, Reddit & X (Twitter) and automatically
|
|
5
|
-
* generates programmatic SEO landing page opportunities with ready-to-record 45s video briefs.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export interface SocialTrendTopic {
|
|
9
|
-
trendId: string;
|
|
10
|
-
sourcePlatform: "tiktok" | "youtube" | "reddit" | "x-twitter";
|
|
11
|
-
topicName: string;
|
|
12
|
-
hashtagOrQuery: string;
|
|
13
|
-
estimatedVolume24h: number;
|
|
14
|
-
growthRatePercentage: number;
|
|
15
|
-
targetBuyerPersona: string; // e.g. "Directeur Commercial", "Avocat", "Fondateur E-commerce"
|
|
16
|
-
painPointHighlighted: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface ProposedSeoVideoAction {
|
|
20
|
-
trend: SocialTrendTopic;
|
|
21
|
-
recommendedMatrix: string;
|
|
22
|
-
suggestedUrlPath: string;
|
|
23
|
-
articleHeadline: string;
|
|
24
|
-
videoShortScript: {
|
|
25
|
-
hook3Sec: string;
|
|
26
|
-
coreInsight30Sec: string;
|
|
27
|
-
callToAction10Sec: string;
|
|
28
|
-
targetKeywords: string[];
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export class SocialTrendSeoGenerator {
|
|
33
|
-
/**
|
|
34
|
-
* Transforms a social trend into a complete Programmatic SEO page proposal and video script.
|
|
35
|
-
*/
|
|
36
|
-
static generateActionFromTrend(
|
|
37
|
-
trend: SocialTrendTopic,
|
|
38
|
-
serviceSlug = "crm-pipeline",
|
|
39
|
-
serviceName = "CRM Pipeline Commercial",
|
|
40
|
-
): ProposedSeoVideoAction {
|
|
41
|
-
const cleanTopic = trend.topicName.toLowerCase().replace(/[^a-z0-9]+/g, "-");
|
|
42
|
-
const suggestedUrl = `/cas-usage/${serviceSlug}-${cleanTopic}`;
|
|
43
|
-
|
|
44
|
-
const hook = `Arrêtez de perdre 4h par jour sur vos devis : voici l'automatisation secrète qui cartonne sur ${trend.sourcePlatform === "tiktok" ? "TikTok" : "YouTube"} !`;
|
|
45
|
-
const insight = `Si vous êtes ${trend.targetBuyerPersona}, la tendance actuelle montre que ${trend.painPointHighlighted}. Au lieu de faire des relances manuelles, notre solution ${serviceName} qualifie et relance automatiquement 24/7.`;
|
|
46
|
-
const cta = `Lien dans la bio pour tester le simulateur de ROI gratuit et configurer votre pipeline en 10 minutes.`;
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
trend,
|
|
50
|
-
recommendedMatrix: "🎯 Cas d'Usage Opérationnels (Matrice 7)",
|
|
51
|
-
suggestedUrlPath: suggestedUrl,
|
|
52
|
-
articleHeadline: `Comment Répondre à la Tendance "${trend.topicName}" avec ${serviceName}`,
|
|
53
|
-
videoShortScript: {
|
|
54
|
-
hook3Sec: hook,
|
|
55
|
-
coreInsight30Sec: insight,
|
|
56
|
-
callToAction10Sec: cta,
|
|
57
|
-
targetKeywords: [
|
|
58
|
-
trend.hashtagOrQuery,
|
|
59
|
-
`${serviceName} avis`,
|
|
60
|
-
`automatisation ${trend.targetBuyerPersona.toLowerCase()}`,
|
|
61
|
-
],
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Returns a sample list of curated live trends ready for conversion into SEO actions.
|
|
68
|
-
*/
|
|
69
|
-
static getLiveTrendsFeed(): SocialTrendTopic[] {
|
|
70
|
-
return [
|
|
71
|
-
{
|
|
72
|
-
trendId: "trend-01",
|
|
73
|
-
sourcePlatform: "tiktok",
|
|
74
|
-
topicName: "Automatiser les relances WhatsApp",
|
|
75
|
-
hashtagOrQuery: "#WhatsAppAutomation",
|
|
76
|
-
estimatedVolume24h: 185000,
|
|
77
|
-
growthRatePercentage: 142,
|
|
78
|
-
targetBuyerPersona: "Directeur Commercial / Vendeur B2B",
|
|
79
|
-
painPointHighlighted: "Les prospects ne répondent plus aux emails mais lisent WhatsApp en < 3 min",
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
trendId: "trend-02",
|
|
83
|
-
sourcePlatform: "youtube",
|
|
84
|
-
topicName: "Remplacer HubSpot par un CRM IA",
|
|
85
|
-
hashtagOrQuery: "Alternative HubSpot 2026",
|
|
86
|
-
estimatedVolume24h: 92000,
|
|
87
|
-
growthRatePercentage: 88,
|
|
88
|
-
targetBuyerPersona: "Fondateur SaaS / Agence",
|
|
89
|
-
painPointHighlighted: "La hausse des prix des abonnements CRM traditionnels",
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
trendId: "trend-03",
|
|
93
|
-
sourcePlatform: "reddit",
|
|
94
|
-
topicName: "Gestion des dossiers sans secrétariat",
|
|
95
|
-
hashtagOrQuery: "r/avocats gestion cabinet",
|
|
96
|
-
estimatedVolume24h: 34000,
|
|
97
|
-
growthRatePercentage: 65,
|
|
98
|
-
targetBuyerPersona: "Cabinet d'Avocats",
|
|
99
|
-
painPointHighlighted: "Temps perdu sur les tâches administratives au détriment du conseil client",
|
|
100
|
-
},
|
|
101
|
-
];
|
|
102
|
-
}
|
|
103
|
-
}
|