@lynxflow/seo-engine 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +84 -339
  2. package/TUTORIEL_INTEGRATION_SITE.md +283 -0
  3. package/connectors/wordpress/lynxseo-connector.php +5 -5
  4. package/connectors/wordpress/lynxseo-connector.zip +0 -0
  5. package/dist/ad-intelligence-cro.d.ts +58 -0
  6. package/dist/ai-bots-log-analyzer.d.ts +36 -0
  7. package/dist/analytics-client.d.ts +48 -11
  8. package/dist/auth-key.d.ts +9 -0
  9. package/dist/brand-dna-calendar.d.ts +35 -0
  10. package/dist/copy-frameworks-master.d.ts +56 -0
  11. package/dist/cro-copywriting-engine.d.ts +46 -0
  12. package/dist/crosslink-scorer.d.ts +33 -0
  13. package/dist/embeddable-seo-widget.d.ts +12 -0
  14. package/dist/engine.d.ts +32 -1
  15. package/dist/engine.test.d.ts +1 -0
  16. package/dist/extended-schemas.d.ts +106 -0
  17. package/dist/geo-mesh-linking.d.ts +33 -0
  18. package/dist/index.d.ts +88 -0
  19. package/dist/index.js +4164 -130
  20. package/dist/index.mjs +4092 -100
  21. package/dist/instant-matrix-search.d.ts +19 -0
  22. package/dist/isr-cache-manager.d.ts +35 -0
  23. package/dist/knowledge-graph-linker.d.ts +29 -0
  24. package/dist/legal-disclaimers.d.ts +46 -0
  25. package/dist/llm-content-cleaner.d.ts +16 -0
  26. package/dist/llm-prompt.d.ts +13 -0
  27. package/dist/master-marketing-engine.d.ts +114 -0
  28. package/dist/matrix-engine.d.ts +201 -0
  29. package/dist/mcp-seo-server.d.ts +21 -0
  30. package/dist/ngram-density-analyzer.d.ts +35 -0
  31. package/dist/rank-math-parity.d.ts +58 -0
  32. package/dist/real-reviews-sync.d.ts +73 -0
  33. package/dist/rss-syndication-feed.d.ts +25 -0
  34. package/dist/schema-builder.d.ts +6 -0
  35. package/dist/seo-opportunities-decay.d.ts +54 -0
  36. package/dist/serp-history-alerts.d.ts +27 -0
  37. package/dist/slug-engine.d.ts +32 -0
  38. package/dist/social-ads-seo.d.ts +77 -0
  39. package/dist/social-growth-suite.d.ts +125 -0
  40. package/dist/social-trend-seo.d.ts +38 -0
  41. package/dist/social-video-seo.d.ts +62 -0
  42. package/dist/team-rbac.d.ts +17 -0
  43. package/dist/technical-rules-auditor.d.ts +50 -0
  44. package/dist/types.d.ts +4 -44
  45. package/dist/yoast-parity.d.ts +45 -0
  46. package/package.json +8 -5
  47. package/src/ad-intelligence-cro.ts +140 -0
  48. package/src/ai-bots-log-analyzer.ts +127 -0
  49. package/src/analytics-client.ts +222 -48
  50. package/src/auth-key.ts +60 -1
  51. package/src/brand-dna-calendar.ts +120 -0
  52. package/src/copy-frameworks-master.ts +89 -0
  53. package/src/cro-copywriting-engine.ts +105 -0
  54. package/src/crosslink-scorer.ts +101 -0
  55. package/src/embeddable-seo-widget.ts +57 -0
  56. package/src/engine.test.ts +136 -0
  57. package/src/engine.ts +229 -28
  58. package/src/extended-schemas.ts +279 -0
  59. package/src/geo-mesh-linking.ts +93 -0
  60. package/src/index.ts +89 -0
  61. package/src/instant-matrix-search.ts +48 -0
  62. package/src/isr-cache-manager.ts +78 -0
  63. package/src/knowledge-graph-linker.ts +81 -0
  64. package/src/legal-disclaimers.ts +407 -0
  65. package/src/llm-content-cleaner.ts +64 -0
  66. package/src/llm-prompt.ts +70 -0
  67. package/src/master-marketing-engine.ts +314 -0
  68. package/src/matrix-engine.ts +818 -0
  69. package/src/mcp-seo-server.ts +108 -0
  70. package/src/ngram-density-analyzer.ts +108 -0
  71. package/src/rank-math-parity.ts +235 -0
  72. package/src/real-reviews-sync.ts +207 -0
  73. package/src/rss-syndication-feed.ts +56 -0
  74. package/src/schema-builder.ts +71 -24
  75. package/src/seo-opportunities-decay.ts +154 -0
  76. package/src/serp-history-alerts.ts +75 -0
  77. package/src/slug-engine.ts +183 -0
  78. package/src/social-ads-seo.ts +211 -0
  79. package/src/social-growth-suite.ts +310 -0
  80. package/src/social-trend-seo.ts +103 -0
  81. package/src/social-video-seo.ts +100 -0
  82. package/src/team-rbac.ts +61 -0
  83. package/src/technical-rules-auditor.ts +171 -0
  84. package/src/types.ts +22 -47
  85. package/src/yoast-parity.ts +161 -0
  86. package/tsconfig.json +2 -1
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 📰 RSS 2.0 & Atom Syndication Feed Generator (Inspiration: pages-seo/feed.xml.js)
3
+ *
4
+ * Automatically generates standards-compliant RSS 2.0 and Atom feeds for published
5
+ * programmatic landing pages and articles to accelerate syndication and indexing.
6
+ */
7
+ export interface FeedItem {
8
+ title: string;
9
+ url: string;
10
+ description: string;
11
+ publishedAt: string;
12
+ author?: string;
13
+ category?: string;
14
+ }
15
+ export declare class RssSyndicationFeedGenerator {
16
+ /**
17
+ * Generates a valid RSS 2.0 XML string.
18
+ */
19
+ static generateRss2(opts: {
20
+ siteTitle: string;
21
+ siteUrl: string;
22
+ description: string;
23
+ items: FeedItem[];
24
+ }): string;
25
+ }
@@ -23,5 +23,11 @@ export declare class SchemaGraphBuilder {
23
23
  ratingValue?: string;
24
24
  reviewCount?: string;
25
25
  locale?: string;
26
+ reviews?: Array<{
27
+ authorName: string;
28
+ ratingValue: number;
29
+ reviewText: string;
30
+ datePublished?: string;
31
+ }>;
26
32
  }): Record<string, unknown>;
27
33
  }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * 🎯 Advanced SEO Opportunities & Content Decay Detector (Inspiration: crawlseo/seo-opportunities.ts)
3
+ *
4
+ * Implements mathematical models to detect:
5
+ * 1. Striking Distance Keywords (Positions 4 to 20 with high impressions)
6
+ * 2. Low CTR Gaps (Real CTR < Expected Industry Curve)
7
+ * 3. Content Decay (Pages losing > 30% traffic over 28-day windows)
8
+ * 4. Keyword Cannibalization (Multiple internal URLs splitting Google rankings)
9
+ */
10
+ export interface KeywordMetric {
11
+ query: string;
12
+ url: string;
13
+ position: number;
14
+ clicks: number;
15
+ impressions: number;
16
+ ctr: number;
17
+ }
18
+ export interface ContentDecayInput {
19
+ url: string;
20
+ previous28DaysClicks: number;
21
+ last28DaysClicks: number;
22
+ }
23
+ export interface OpportunityFinding {
24
+ type: "striking_distance" | "low_ctr" | "content_decay" | "cannibalization";
25
+ severity: "critical" | "high" | "medium" | "low";
26
+ title: string;
27
+ detail: string;
28
+ query?: string;
29
+ url?: string;
30
+ potentialTrafficGain?: number;
31
+ suggestedAction: string;
32
+ }
33
+ export declare class SeoOpportunitiesDecayDetector {
34
+ /**
35
+ * Expected organic CTR curve by Google SERP rank position.
36
+ */
37
+ static getExpectedCtr(position: number): number;
38
+ /**
39
+ * Detects Striking Distance opportunities (Keywords ranked between #4 and #20).
40
+ */
41
+ static detectStrikingDistance(keywords: KeywordMetric[], minImpressions?: number): OpportunityFinding[];
42
+ /**
43
+ * Detects Low CTR Gaps (Ranked in top 15 but underperforming in clicks).
44
+ */
45
+ static detectLowCtrGaps(keywords: KeywordMetric[], minImpressions?: number): OpportunityFinding[];
46
+ /**
47
+ * Detects Content Decay (Pages losing more than 30% of traffic).
48
+ */
49
+ static detectContentDecay(pages: ContentDecayInput[]): OpportunityFinding[];
50
+ /**
51
+ * Detects Keyword Cannibalization across internal URLs.
52
+ */
53
+ static detectCannibalization(keywords: KeywordMetric[]): OpportunityFinding[];
54
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 📈 SERP Chronological History & Webhook Alert Engine (Pole 5)
3
+ *
4
+ * Tracks keyword rank history over time, detects ranking shifts,
5
+ * and triggers automated alerts (Top 3, Top 10, rank drop).
6
+ */
7
+ export interface KeywordRankSnapshot {
8
+ keyword: string;
9
+ date: string;
10
+ position: number;
11
+ url: string;
12
+ searchEngine: "google-mobile" | "google-desktop" | "bing";
13
+ }
14
+ export interface RankShiftAlert {
15
+ keyword: string;
16
+ previousPosition: number;
17
+ newPosition: number;
18
+ shiftType: "entered-top-3" | "entered-top-10" | "critical-drop" | "improved";
19
+ message: string;
20
+ timestamp: string;
21
+ }
22
+ export declare class SerpRankHistoryEngine {
23
+ /**
24
+ * Evaluates position shifts between two snapshots and returns alerts if thresholds are breached.
25
+ */
26
+ static analyzeRankShift(previousSnapshot: KeywordRankSnapshot, currentSnapshot: KeywordRankSnapshot): RankShiftAlert | null;
27
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Global Multilingual Programmatic SEO Slug Engine
3
+ * Enforces the 6 golden rules of SEO-optimized URL paths across 10+ languages:
4
+ * English, French, German, Spanish, Italian, Portuguese, Dutch, Russian, Swedish, Polish.
5
+ *
6
+ * 1. Short & focused (3-5 target keywords)
7
+ * 2. Hyphen (-) as the sole delimiter
8
+ * 3. 100% lowercase, diacritics/accents stripped
9
+ * 4. Stop words removed for 10+ international languages
10
+ * 5. Zero dates/numbers for evergreen content
11
+ * 6. Primary keyword positioned first
12
+ */
13
+ export declare const MULTILINGUAL_STOP_WORDS: Record<string, Set<string>>;
14
+ export interface SlugOptions {
15
+ language?: string;
16
+ removeStopWords?: boolean;
17
+ stripDates?: boolean;
18
+ maxWords?: number;
19
+ maxLength?: number;
20
+ }
21
+ /**
22
+ * Normalizes any text into a clean, canonical SEO slug with multilingual stop word filtering.
23
+ */
24
+ export declare function cleanSeoSlug(input: string, options?: SlugOptions): string;
25
+ export interface SlugValidationResult {
26
+ isValid: boolean;
27
+ errors: string[];
28
+ }
29
+ /**
30
+ * Validates a slug against universal SEO golden rules.
31
+ */
32
+ export declare function validateSeoSlug(slug: string): SlugValidationResult;
@@ -0,0 +1,77 @@
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
+ export interface LinkedInTrendingDiscussion {
17
+ topicTitle: string;
18
+ industry: string;
19
+ targetPersona: string;
20
+ viralHookExample: string;
21
+ discussionVolume24h: number;
22
+ extractedKeywordsForSeo: string[];
23
+ suggestedSeoPage: {
24
+ matrixType: string;
25
+ urlPath: string;
26
+ pageHeadline: string;
27
+ faqQuestionsToAdd: {
28
+ question: string;
29
+ answer: string;
30
+ }[];
31
+ };
32
+ }
33
+ export interface CompetitorAdInsight {
34
+ competitorName: string;
35
+ adPlatform: "google_search_ads" | "meta_ads" | "linkedin_ads";
36
+ estimatedCpcEur: number;
37
+ adHeadline: string;
38
+ adHookAngle: string;
39
+ targetKeyword: string;
40
+ recommendedSeoMatrixUrl: string;
41
+ annualSavingsByRankingSeo: number;
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
+ export declare class SocialAdsSocialSeoEngine {
53
+ /**
54
+ * 🔄 SENS 1 : LinkedIn ➔ SEO Site Web
55
+ * Audite les thématiques chaudes sur LinkedIn et extrait les mots-clés/sujets pour enrichir le site web en pages pSEO.
56
+ */
57
+ static auditLinkedInTrendsForSeo(industry?: string, serviceSlug?: string, serviceName?: string): LinkedInTrendingDiscussion[];
58
+ /**
59
+ * 🔄 SENS 2 : SEO Site Web ➔ LinkedIn
60
+ * Transforme n'importe quelle page SEO résolue en un post LinkedIn à fort potentiel viral.
61
+ */
62
+ static generateLinkedInPostFromSeoPage(opts: {
63
+ pageTitle: string;
64
+ targetPersona: string;
65
+ painPoint: string;
66
+ keyBenefit: string;
67
+ landingPageUrl: string;
68
+ }): LinkedInPostTemplate;
69
+ /**
70
+ * 3. Formats a ready-to-publish LinkedIn post string.
71
+ */
72
+ static formatLinkedInMarkdown(template: LinkedInPostTemplate): string;
73
+ /**
74
+ * 4. Extracts commercial keywords from competitor paid ads (Google Ads, Meta, LinkedIn).
75
+ */
76
+ static auditCompetitorAds(competitorDomain: string, serviceSlug?: string, serviceName?: string): CompetitorAdInsight[];
77
+ }
@@ -0,0 +1,125 @@
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
+ export interface CarouselSlide {
11
+ slideNumber: number;
12
+ slideType: "hook_cover" | "problem_context" | "solution_step_1" | "solution_step_2" | "key_takeaway" | "cta_outro";
13
+ title: string;
14
+ body: string;
15
+ bulletPoints?: string[];
16
+ visualCue: string;
17
+ backgroundColorHex: string;
18
+ textColorHex: string;
19
+ }
20
+ export interface CarouselDeck {
21
+ deckTitle: string;
22
+ targetAudience: string;
23
+ totalSlides: number;
24
+ slides: CarouselSlide[];
25
+ linkedinPostCaption: string;
26
+ }
27
+ export interface AdSwipeEntry {
28
+ id: string;
29
+ brandName: string;
30
+ platform: "meta" | "google" | "tiktok" | "linkedin";
31
+ format: "video_short" | "static_image" | "carousel" | "text_ad";
32
+ creativeAngle: "pain_relief" | "roi_financial" | "speed_simplicity" | "social_proof" | "us_vs_them";
33
+ headline: string;
34
+ hookTranscript0to3s: string;
35
+ bodyCopy: string;
36
+ ctaText: string;
37
+ visualDirectionBrief: string;
38
+ estimatedHookRatePercent: number;
39
+ estimatedHoldRatePercent: number;
40
+ readyToUseCreativeBrief: {
41
+ targetPersona: string;
42
+ hookIdea: string;
43
+ scriptOutline: string[];
44
+ bRollRequirements: string[];
45
+ landingPageDestinationUrl: string;
46
+ };
47
+ }
48
+ export interface MultiAngleAdPack {
49
+ productName: string;
50
+ targetPersona: string;
51
+ angles: {
52
+ painRelief: {
53
+ headline: string;
54
+ primaryText: string;
55
+ visualBrief: string;
56
+ };
57
+ roiFinancial: {
58
+ headline: string;
59
+ primaryText: string;
60
+ visualBrief: string;
61
+ };
62
+ speedSimplicity: {
63
+ headline: string;
64
+ primaryText: string;
65
+ visualBrief: string;
66
+ };
67
+ socialProof: {
68
+ headline: string;
69
+ primaryText: string;
70
+ visualBrief: string;
71
+ };
72
+ usVsThem: {
73
+ headline: string;
74
+ primaryText: string;
75
+ visualBrief: string;
76
+ };
77
+ };
78
+ }
79
+ export interface SecondBySecondVideoScript {
80
+ videoTitle: string;
81
+ totalDurationSeconds: 45;
82
+ timeline: {
83
+ timeframe: "00:00 - 00:03" | "00:03 - 00:15" | "00:15 - 00:35" | "00:35 - 00:45";
84
+ phase: "HOOK (Pattern Interrupt)" | "AGITATION (The Hidden Cost)" | "SOLUTION (Step-by-Step Proof)" | "CALL TO ACTION (Conversion)";
85
+ spokenAudio: string;
86
+ onScreenTextOverlay: string;
87
+ bRollVisualDirection: string;
88
+ }[];
89
+ tiktokHashtags: string[];
90
+ youtubeShortsTags: string[];
91
+ }
92
+ export declare class SocialGrowthSuite {
93
+ /**
94
+ * 1. Generates a viral 6-slide LinkedIn / Instagram Carousel Deck from any SEO topic.
95
+ */
96
+ static generateCarouselDeck(opts: {
97
+ topic: string;
98
+ targetPersona: string;
99
+ solutionName: string;
100
+ landingPageUrl: string;
101
+ }): CarouselDeck;
102
+ /**
103
+ * 2. Generates 5 distinct, high-converting ad variations (AdCreative.ai standard).
104
+ */
105
+ static generateMultiAngleAdPack(opts: {
106
+ productName: string;
107
+ targetPersona: string;
108
+ painPoint: string;
109
+ competitorName?: string;
110
+ monthlyPriceEur?: number;
111
+ }): MultiAngleAdPack;
112
+ /**
113
+ * 3. Generates a second-by-second video shooting script with on-screen cues (OpusClip & Submagic standard).
114
+ */
115
+ static generateSecondBySecondVideoScript(opts: {
116
+ topic: string;
117
+ targetPersona: string;
118
+ solutionName: string;
119
+ ctaUrl: string;
120
+ }): SecondBySecondVideoScript;
121
+ /**
122
+ * 4. Smart Swipe File Generator (Foreplay / MagicBrief standard).
123
+ */
124
+ static getCuratedSwipeFile(niche?: string): AdSwipeEntry[];
125
+ }
@@ -0,0 +1,38 @@
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
+ export interface SocialTrendTopic {
8
+ trendId: string;
9
+ sourcePlatform: "tiktok" | "youtube" | "reddit" | "x-twitter";
10
+ topicName: string;
11
+ hashtagOrQuery: string;
12
+ estimatedVolume24h: number;
13
+ growthRatePercentage: number;
14
+ targetBuyerPersona: string;
15
+ painPointHighlighted: string;
16
+ }
17
+ export interface ProposedSeoVideoAction {
18
+ trend: SocialTrendTopic;
19
+ recommendedMatrix: string;
20
+ suggestedUrlPath: string;
21
+ articleHeadline: string;
22
+ videoShortScript: {
23
+ hook3Sec: string;
24
+ coreInsight30Sec: string;
25
+ callToAction10Sec: string;
26
+ targetKeywords: string[];
27
+ };
28
+ }
29
+ export declare class SocialTrendSeoGenerator {
30
+ /**
31
+ * Transforms a social trend into a complete Programmatic SEO page proposal and video script.
32
+ */
33
+ static generateActionFromTrend(trend: SocialTrendTopic, serviceSlug?: string, serviceName?: string): ProposedSeoVideoAction;
34
+ /**
35
+ * Returns a sample list of curated live trends ready for conversion into SEO actions.
36
+ */
37
+ static getLiveTrendsFeed(): SocialTrendTopic[];
38
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * 🎬 Video & Social SEO Analytics Engine (YouTube, TikTok, Instagram Reels)
3
+ *
4
+ * Tracks video rankings in Google Video Carousels and YouTube/TikTok Search,
5
+ * measures search attribution, and generates Google-compliant Schema.org `VideoObject` graphs.
6
+ */
7
+ export interface TrackedVideoRecord {
8
+ id: string;
9
+ platform: "youtube" | "tiktok" | "instagram-reels";
10
+ title: string;
11
+ videoUrl: string;
12
+ thumbnailUrl: string;
13
+ views: number;
14
+ likes: number;
15
+ shares: number;
16
+ commentsCount: number;
17
+ durationSec: number;
18
+ publishedAt: string;
19
+ targetKeywords: string[];
20
+ googleVideoCarouselRank?: number;
21
+ youtubeSearchRank?: number;
22
+ tiktokSearchRank?: number;
23
+ associatedLandingPageUrl?: string;
24
+ estimatedSearchVisitsGenerated: number;
25
+ }
26
+ export interface VideoSchemaOpts {
27
+ name: string;
28
+ description: string;
29
+ thumbnailUrl: string;
30
+ uploadDate: string;
31
+ contentUrl: string;
32
+ embedUrl: string;
33
+ durationIso: string;
34
+ transcript?: string;
35
+ chapters?: {
36
+ name: string;
37
+ startOffsetSeconds: number;
38
+ }[];
39
+ }
40
+ export declare class SocialVideoSeoAnalyticsEngine {
41
+ /**
42
+ * Generates a Google-verified Schema.org `VideoObject` with chapters (Clip / SeekToAction).
43
+ */
44
+ static buildVideoObjectSchema(opts: VideoSchemaOpts): Record<string, unknown>;
45
+ /**
46
+ * Analyzes an array of videos to calculate total social reach and search traffic attribution.
47
+ */
48
+ static calculateVideoPortfolioStats(videos: TrackedVideoRecord[]): {
49
+ totalVideosTracked: number;
50
+ totalViews: number;
51
+ totalEngagement: number;
52
+ avgEngagementRate: number;
53
+ inGoogleCarouselCount: number;
54
+ totalSearchVisits: number;
55
+ platformBreakdown: {
56
+ youtube: number;
57
+ tiktok: number;
58
+ instagram: number;
59
+ };
60
+ topPerformingVideos: TrackedVideoRecord[];
61
+ };
62
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * 👥 Team IAM & Multi-User RBAC Engine (Issue #87)
3
+ *
4
+ * Provides granular permissions per team member across SEO projects:
5
+ * - `owner`: Full project control, billing, domain deletion.
6
+ * - `admin`: Add/remove tracked keywords, run crawls, edit AI prompts.
7
+ * - `editor`: View rankings, generate pSEO pages, run audits.
8
+ * - `viewer`: Read-only access to dashboards and CSV exports.
9
+ */
10
+ export type TeamRole = "owner" | "admin" | "editor" | "viewer";
11
+ export type PermissionAction = "project:delete" | "project:update" | "keywords:add" | "keywords:delete" | "keywords:export" | "audit:run" | "pseo:generate" | "ai_copilot:execute";
12
+ export declare class TeamRbacEngine {
13
+ /**
14
+ * Checks if a user role has permission to perform an action.
15
+ */
16
+ static can(role: TeamRole, action: PermissionAction): boolean;
17
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * 🔬 Technical SEO Rules Auditor (Inspiration: seonaut/internal/issues/)
3
+ *
4
+ * Implements strict, production-grade automated checks:
5
+ * 1. Heading Hierarchy Integrity (Missing H1, Multiple H1s, Hierarchy Gaps like H1->H3)
6
+ * 2. Redirect Chain & Loop Detection (301/302 > 1 hop)
7
+ * 3. Thin Content Detection (< 300 words)
8
+ * 4. Canonical URL Auditing (Missing, relative, mismatched)
9
+ * 5. Hreflang Symmetrical Validation (Missing return tags)
10
+ * 6. Image Optimization (Missing Alt text, heavy assets > 100KB)
11
+ */
12
+ export interface PageAuditInput {
13
+ url: string;
14
+ statusCode: number;
15
+ headings: {
16
+ tag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
17
+ text: string;
18
+ }[];
19
+ wordCount: number;
20
+ canonicalUrl?: string;
21
+ hreflangs?: {
22
+ lang: string;
23
+ url: string;
24
+ }[];
25
+ images?: {
26
+ src: string;
27
+ alt?: string;
28
+ sizeBytes?: number;
29
+ }[];
30
+ redirectChain?: {
31
+ url: string;
32
+ statusCode: number;
33
+ }[];
34
+ timeToFirstByteMs?: number;
35
+ }
36
+ export type IssueSeverity = "critical" | "warning" | "info";
37
+ export interface TechnicalIssue {
38
+ code: string;
39
+ category: "headings" | "redirects" | "content" | "canonical" | "hreflang" | "images" | "performance";
40
+ severity: IssueSeverity;
41
+ title: string;
42
+ description: string;
43
+ recommendation: string;
44
+ }
45
+ export declare class TechnicalRulesAuditor {
46
+ /**
47
+ * Audits a single page payload across all technical rules.
48
+ */
49
+ static auditPage(page: PageAuditInput): TechnicalIssue[];
50
+ }
package/dist/types.d.ts CHANGED
@@ -23,50 +23,8 @@ export interface LynxServiceDefinition {
23
23
  answer: string;
24
24
  }[];
25
25
  }
26
- export interface PseoIndustry {
27
- slug: string;
28
- name: string;
29
- singular: string;
30
- category: string;
31
- badge?: string;
32
- painPoints?: string[];
33
- targetSolutions?: string[];
34
- roiMonthlySavings?: number;
35
- hoursSavedWeekly?: number;
36
- conversionBoost?: string;
37
- }
38
- export interface PseoCompetitor {
39
- slug: string;
40
- name: string;
41
- badge?: string;
42
- category: string;
43
- priceRange?: string;
44
- strengths?: string[];
45
- weaknesses?: string[];
46
- whySwitchToUs?: string[];
47
- }
48
- export interface PseoIntegration {
49
- slug: string;
50
- name: string;
51
- category: string;
52
- badge?: string;
53
- syncFeatures?: string[];
54
- setupTimeMinutes?: number;
55
- }
56
- export interface PseoUseCase {
57
- slug: string;
58
- title: string;
59
- problem: string;
60
- aiSolution: string;
61
- measurableOutcome?: string;
62
- }
63
- export interface PseoPersona {
64
- slug: string;
65
- role: string;
66
- department: string;
67
- topResponsibilities?: string[];
68
- timeWastersAutomated?: string[];
69
- }
26
+ import type { PseoIndustry, PseoCompetitor, PseoIntegration, PseoUseCase, PseoPersona, PseoService, PseoLocation, PseoCalculator } from "./matrix-engine";
27
+ export type { PseoIndustry, PseoCompetitor, PseoIntegration, PseoUseCase, PseoPersona, PseoService, PseoLocation, PseoCalculator, };
70
28
  export interface PseoCity {
71
29
  slug: string;
72
30
  name: string;
@@ -100,6 +58,8 @@ export interface LynxSeoConfig {
100
58
  personas?: PseoPersona[];
101
59
  useCases?: PseoUseCase[];
102
60
  cities?: PseoCity[];
61
+ locations?: PseoLocation[];
62
+ phone?: string;
103
63
  }
104
64
  export interface LynxResolvedPage {
105
65
  url: string;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * 🟢 Yoast SEO Parity & Real-Time Readability Engine
3
+ *
4
+ * Implements the iconic Yoast SEO features (13M+ installs):
5
+ * 1. Readability Analysis (Analyse de Lisibilité aux pastilles Vertes/Oranges/Rouges) :
6
+ * - Flesch Reading Ease Formula (Score de lisibilité)
7
+ * - Transition Words Detection (Mots de transition > 30%)
8
+ * - Passive Voice Detection (Voix passive < 10%)
9
+ * - Sentence Length Distribution (Phrases > 20 mots < 25%)
10
+ * - Paragraph Length (< 150 mots par paragraphe)
11
+ * - Subheading Distribution (< 300 mots sous un sous-titre)
12
+ * 2. Google SERP Pixel Width Calculator (Titre max 600px, Description max 960px)
13
+ * 3. Cornerstone Content (Contenu Pilier & Priorisation du Maillage)
14
+ */
15
+ export interface YoastReadabilityBullet {
16
+ id: string;
17
+ label: string;
18
+ status: "green" | "orange" | "red";
19
+ scoreValue: number;
20
+ message: string;
21
+ }
22
+ export interface YoastAnalysisResult {
23
+ overallReadability: "green" | "orange" | "red";
24
+ fleschReadingScore: number;
25
+ fleschGrade: string;
26
+ transitionWordsPercent: number;
27
+ passiveVoicePercent: number;
28
+ longSentencesPercent: number;
29
+ bullets: YoastReadabilityBullet[];
30
+ serpPreview: {
31
+ titlePixelWidth: number;
32
+ titlePixelLimit: 600;
33
+ titleIsTruncated: boolean;
34
+ descPixelWidth: number;
35
+ descPixelLimit: 960;
36
+ descIsTruncated: boolean;
37
+ };
38
+ }
39
+ export declare class YoastParityEngine {
40
+ private static frenchTransitionWords;
41
+ /**
42
+ * 1. Full Yoast-Style Readability Analysis.
43
+ */
44
+ static analyzeReadability(text: string, title?: string, description?: string): YoastAnalysisResult;
45
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lynxflow/seo-engine",
3
- "version": "1.4.0",
4
- "description": "Proprietary High-Performance pSEO & AI Search Engine SDK by LynxFlow",
3
+ "version": "1.5.0",
4
+ "description": "High-Performance Multilingual Programmatic SEO & AI Search Engine SDK",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",
@@ -20,11 +20,14 @@
20
20
  "seo",
21
21
  "pseo",
22
22
  "programmatic-seo",
23
- "lynxflow",
24
- "indexnow",
23
+ "multilingual-seo",
25
24
  "schema-org",
25
+ "rich-snippets",
26
+ "ai-search",
27
+ "aeo",
26
28
  "geo",
27
- "ai-search"
29
+ "slug-engine",
30
+ "seedrank-legal"
28
31
  ],
29
32
  "author": "LynxFlow Technologies",
30
33
  "license": "Proprietary"