@lynxflow/seo-engine 1.8.30 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -93
- package/dist/ai-copilot-client.d.ts +2 -0
- package/dist/built-in-locations.d.ts +18 -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 +538 -82
- package/dist/index.mjs +2028 -163
- 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 +26 -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/README.md
CHANGED
|
@@ -4,19 +4,21 @@ High-Performance Programmatic SEO & Structured Data Engine for Modern Web Applic
|
|
|
4
4
|
|
|
5
5
|
[](https://www.typescriptlang.org/)
|
|
6
6
|
[](LICENSE)
|
|
7
|
-
[](package.json)
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Overview
|
|
12
12
|
|
|
13
|
-
`@lynxflow/seo-engine` is an enterprise developer SDK providing in-memory programmatic SEO matrix generation, Google-compliant Schema.org structured data, and
|
|
13
|
+
`@lynxflow/seo-engine` is an enterprise developer SDK providing in-memory programmatic SEO matrix generation, Google-compliant Schema.org structured data, infinite geographic location synthesis, and real-time GeoIP Edge detection worldwide.
|
|
14
14
|
|
|
15
15
|
* **10 Canonical Root Pillars & 50+ Specialized Sub-Matrices:** Scales across industries, regulatory frameworks, role KPIs, multi-format templates, integration ecosystems, and ROI tools.
|
|
16
|
-
* **
|
|
17
|
-
* **
|
|
18
|
-
* **
|
|
19
|
-
* **Multi-
|
|
16
|
+
* **In-Memory Dynamic Execution:** Resolves millions of programmatic routes in RAM with zero database query overhead and zero MySQL/Postgres saturation.
|
|
17
|
+
* **Infinite Geographic Resolution (`createDynamicLocation`):** Dynamically synthesizes any municipality, county, state, or postal code worldwide (e.g. `austin`, `scottsdale`, `75015`, `90210`, `ec1a-1bb`, `shinjuku`) on the fly without 404 errors.
|
|
18
|
+
* **Edge GeoIP Location Detection (`resolveLocationFromHeaders`):** Reads Cloudflare (`cf-ipcity`, `cf-postal-code`), Vercel, AWS CloudFront, and Nginx edge headers to adapt pages to the visitor's real-time location.
|
|
19
|
+
* **Universal Multi-Locale Support:** Works with any ISO-639-1 / BCP-47 locale code (`en`, `de`, `es`, `fr`, `ja`, `pt-BR`, `ar`, `zh-CN`, etc.).
|
|
20
|
+
* **50+ Schema.org Rich Structured Data Types:** Google-compliant JSON-LD generation for `LocalBusiness`, `Product`, `SoftwareApplication`, `HowTo`, `FAQPage`, `BreadcrumbList`, and `Organization`.
|
|
21
|
+
* **Multi-Framework Support:** Seamless operation on Next.js 15/16 (App & Pages Router), TanStack Start, Astro 5, Cloudflare Workers/Pages, Bun, Remix, and Node.js.
|
|
20
22
|
|
|
21
23
|
---
|
|
22
24
|
|
|
@@ -55,122 +57,72 @@ The SDK structures programmatic content across **10 canonical root pillars** exp
|
|
|
55
57
|
|
|
56
58
|
---
|
|
57
59
|
|
|
58
|
-
## Quickstart
|
|
60
|
+
## Quickstart & Contrasting Examples
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
> **Important Note:** All examples below are **non-limiting illustrations**. You can pass any arbitrary language code and any arbitrary city or postal code worldwide.
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
### 1. Initialize Engine & Dataset
|
|
63
65
|
|
|
64
66
|
```typescript
|
|
65
67
|
import { PseoMatrixEngine } from "@lynxflow/seo-engine";
|
|
66
68
|
|
|
67
69
|
export const matrixEngine = new PseoMatrixEngine();
|
|
68
70
|
|
|
71
|
+
// Non-limiting example configuration (Supports ANY country or locale)
|
|
69
72
|
export const SEO_CONFIG = {
|
|
70
|
-
brandName: "
|
|
71
|
-
languages: ["
|
|
72
|
-
countries: ["
|
|
73
|
-
cleanDirectRoutes: true,
|
|
73
|
+
brandName: "Apex Global",
|
|
74
|
+
languages: ["en", "de", "es", "fr", "ja", "pt-BR"], // Any ISO-639-1 / BCP-47 locale
|
|
75
|
+
countries: ["united-states", "united-kingdom", "germany", "japan"], // Or "international" / any country
|
|
76
|
+
cleanDirectRoutes: true,
|
|
74
77
|
};
|
|
75
78
|
|
|
76
79
|
export const PSEO_DATASET = {
|
|
77
80
|
services: [
|
|
78
81
|
{
|
|
79
|
-
slug: "
|
|
80
|
-
name: "
|
|
81
|
-
category: "
|
|
82
|
-
keyFeatures: ["
|
|
83
|
-
description: "
|
|
82
|
+
slug: "commercial-hvac",
|
|
83
|
+
name: "Commercial HVAC Maintenance",
|
|
84
|
+
category: "Facility Management",
|
|
85
|
+
keyFeatures: ["24/7 Emergency Dispatch", "Certified Technicians", "Predictive Monitoring"],
|
|
86
|
+
description: "Enterprise climate control and ventilation services"
|
|
84
87
|
},
|
|
85
88
|
{
|
|
86
|
-
slug: "
|
|
87
|
-
name: "
|
|
88
|
-
category: "
|
|
89
|
-
keyFeatures: ["
|
|
90
|
-
description: "
|
|
89
|
+
slug: "cloud-backup",
|
|
90
|
+
name: "Automated Cloud Backup",
|
|
91
|
+
category: "Data Security",
|
|
92
|
+
keyFeatures: ["End-to-End Encryption", "Instant Recovery", "SOC2 Compliant"],
|
|
93
|
+
description: "Continuous enterprise backup and disaster recovery"
|
|
91
94
|
},
|
|
92
95
|
],
|
|
93
96
|
targets: [
|
|
94
|
-
{ slug: "
|
|
97
|
+
{ slug: "enterprises", name: "Enterprise Organizations", type: "b2b", painPoints: ["Downtime Risk"], benefits: ["99.99% SLA"] },
|
|
98
|
+
{ slug: "healthcare", name: "Healthcare Providers", type: "industry", painPoints: ["HIPAA Compliance"], benefits: ["Audit-Ready Storage"] }
|
|
95
99
|
],
|
|
96
|
-
integrations: [
|
|
97
|
-
{ slug: "shopify", name: "Shopify", category: "E-Commerce", syncFeatures: ["Catalog sync"] }
|
|
98
|
-
],
|
|
99
|
-
templates: [
|
|
100
|
-
{ slug: "social-calendar-excel", title: "Social Media Calendar", topic: "Social Media", format: "excel", benefits: ["Free download"] }
|
|
101
|
-
],
|
|
102
|
-
glossaryTerms: [
|
|
103
|
-
{ slug: "engagement-rate", term: "Engagement Rate", shortDefinition: "Percentage of audience interacting with content" }
|
|
104
|
-
]
|
|
105
100
|
};
|
|
106
101
|
```
|
|
107
102
|
|
|
108
|
-
### 2.
|
|
109
|
-
|
|
110
|
-
```tsx
|
|
111
|
-
import { notFound } from "next/navigation";
|
|
112
|
-
import { matrixEngine, SEO_CONFIG, PSEO_DATASET } from "@/lib/seo";
|
|
113
|
-
|
|
114
|
-
export async function generateMetadata({ params }: { params: { slug: string[] } }) {
|
|
115
|
-
const domain = process.env.NEXT_PUBLIC_SITE_URL || "https://example.com";
|
|
116
|
-
const page = matrixEngine.resolvePage(params.slug, domain, PSEO_DATASET, SEO_CONFIG);
|
|
117
|
-
if (!page) return {};
|
|
118
|
-
return { title: page.title, description: page.description, alternates: { canonical: page.canonicalUrl }, robots: page.robots };
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
export default async function ProgrammaticPage({ params }: { params: { slug: string[] } }) {
|
|
122
|
-
const domain = process.env.NEXT_PUBLIC_SITE_URL || "https://example.com";
|
|
123
|
-
// ⚡ Resolved mathematically in local RAM in < 0.05ms
|
|
124
|
-
const page = matrixEngine.resolvePage(params.slug, domain, PSEO_DATASET, SEO_CONFIG);
|
|
125
|
-
if (!page) notFound();
|
|
126
|
-
|
|
127
|
-
return (
|
|
128
|
-
<article className="min-h-screen bg-background text-foreground py-12 px-6 max-w-5xl mx-auto space-y-8">
|
|
129
|
-
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(page.schemaGraph) }} />
|
|
130
|
-
<h1 className="text-4xl font-extrabold">{page.h1}</h1>
|
|
131
|
-
<p className="text-lg text-muted-foreground">{page.description}</p>
|
|
132
|
-
{page.neighboringLinks && (
|
|
133
|
-
<nav className="flex flex-wrap gap-2 pt-6">
|
|
134
|
-
{page.neighboringLinks.map((l) => (
|
|
135
|
-
<a key={l.url} href={l.url} className="px-3 py-1 bg-secondary rounded text-xs">{l.name}</a>
|
|
136
|
-
))}
|
|
137
|
-
</nav>
|
|
138
|
-
)}
|
|
139
|
-
</article>
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### 3. XML Sitemap & `/llms.txt` Feeds (1 Line of Code)
|
|
103
|
+
### 2. Standard vs. Arbitrary Custom Resolution (Side-by-Side)
|
|
145
104
|
|
|
146
105
|
```typescript
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
const domain = process.env.NEXT_PUBLIC_SITE_URL || "https://example.com";
|
|
150
|
-
return matrixEngine.generateAllMatrices(domain, PSEO_DATASET, SEO_CONFIG)
|
|
151
|
-
.filter(p => p.robots.includes("index"))
|
|
152
|
-
.map(p => ({ url: p.canonicalUrl, lastModified: new Date() }));
|
|
153
|
-
}
|
|
154
|
-
```
|
|
106
|
+
// Case 1: Standard Pre-Indexed City in English
|
|
107
|
+
const pageStandard = matrixEngine.resolvePage(["commercial-hvac", "london"], "https://example.com", PSEO_DATASET, SEO_CONFIG);
|
|
155
108
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const { isValid, errors } = validateSeoSlug(slug);
|
|
160
|
-
console.log(isValid); // true
|
|
109
|
+
// Case 2: Contrasting Case — Arbitrary Postal Code / Custom District in Japanese
|
|
110
|
+
const pageCustom = matrixEngine.resolvePage(["commercial-hvac", "90210"], "https://example.com", PSEO_DATASET, SEO_CONFIG);
|
|
111
|
+
const pageJapanese = matrixEngine.resolvePage(["ja", "commercial-hvac", "shinjuku"], "https://example.com", PSEO_DATASET, SEO_CONFIG);
|
|
161
112
|
```
|
|
162
113
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
## AI Agents & LLM Prompt Integration
|
|
166
|
-
|
|
167
|
-
Extract the full internal operational prompt to instruct autonomous AI coding agents (Claude, Cursor, Copilot, ChatGPT, Antigravity) without revealing proprietary logic:
|
|
114
|
+
### 3. Edge GeoIP Resolution Example
|
|
168
115
|
|
|
169
116
|
```typescript
|
|
170
|
-
import {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
117
|
+
import { resolveLocationFromHeaders, PseoMatrixEngine } from "@lynxflow/seo-engine";
|
|
118
|
+
|
|
119
|
+
export function handleIncomingRequest(request: Request) {
|
|
120
|
+
const geo = resolveLocationFromHeaders(request.headers);
|
|
121
|
+
// Extracted dynamically from Cloudflare / Vercel / CloudFront headers
|
|
122
|
+
const userCity = geo.city || "new-york";
|
|
123
|
+
|
|
124
|
+
return matrixEngine.resolvePage(["commercial-hvac", userCity], "https://example.com", PSEO_DATASET, SEO_CONFIG);
|
|
125
|
+
}
|
|
174
126
|
```
|
|
175
127
|
|
|
176
128
|
---
|
|
@@ -178,11 +130,13 @@ const prompt = getSeoAgentPrompt({ brandName: "Acme", domain: "https://example.c
|
|
|
178
130
|
## TypeScript API Reference
|
|
179
131
|
|
|
180
132
|
* **`PseoMatrixEngine`**: Core programmatic matrix compiler across all 10 root pillars and 50+ sub-matrices.
|
|
133
|
+
* **`createDynamicLocation(slugOrInput, fallbackCountry)`**: Dynamic synthesis of any city, postal code or district worldwide at runtime.
|
|
134
|
+
* **`resolveLocationFromHeaders(headers)`**: Edge header GeoIP extractor for Cloudflare, Vercel, CloudFront, and Nginx.
|
|
181
135
|
* **`cleanSeoSlug(text, options)`**: Multilingual slug normalizer with stop-word removal for 10+ languages.
|
|
182
136
|
* **`validateSeoSlug(slug)`**: Strict slug validator.
|
|
183
137
|
* **`ExtendedSchemaGraphBuilder`**: 50+ Google Rich Result Schema.org JSON-LD generator.
|
|
184
138
|
* **`LegalDisclaimerEngine`**: Verified compliance notice manager with staleness guards (>90 days).
|
|
185
|
-
* **`getSeoAgentPrompt(context)`**: Built-in LLM operational prompt.
|
|
139
|
+
* **`getSeoAgentPrompt(context)`**: Built-in LLM operational prompt for AI coding agents.
|
|
186
140
|
|
|
187
141
|
---
|
|
188
142
|
|
|
@@ -10,3 +10,21 @@ export declare const BUILT_IN_LOCATIONS_DATABASE: Record<string, PseoLocation[]>
|
|
|
10
10
|
* Supports: "fr", "france", "es", "spain", "de", "germany", "uk", "us", "be", "ch", "it", "ca", "europe", "international", "all"
|
|
11
11
|
*/
|
|
12
12
|
export declare function resolveBuiltInLocations(territories?: string[] | string): PseoLocation[];
|
|
13
|
+
/**
|
|
14
|
+
* 🚀 Dynamic On-The-Fly Location Synthesizer (Infinite Geo Expansion)
|
|
15
|
+
* Allows resolving ANY unlisted city, commune, district, or postal code dynamically on demand
|
|
16
|
+
* without returning 404 or requiring hardcoded databases.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createDynamicLocation(slugOrInput: string, fallbackCountry?: string): PseoLocation;
|
|
19
|
+
/**
|
|
20
|
+
* 📍 GeoIP Edge Headers Resolver (Dynamic User Geolocation)
|
|
21
|
+
* Extracts the user's real-time city and country from Cloudflare / Vercel / Nginx Edge headers.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveLocationFromHeaders(headers: Record<string, string | null | undefined> | Headers | {
|
|
24
|
+
get(name: string): string | null;
|
|
25
|
+
}): {
|
|
26
|
+
city?: string;
|
|
27
|
+
country?: string;
|
|
28
|
+
region?: string;
|
|
29
|
+
postalCode?: string;
|
|
30
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🪄 LynxSEO Content AI Master Arsenal (40+ Tools & Copywriting Formulas)
|
|
3
|
+
*
|
|
4
|
+
* Provides complete parity and superiority over Rank Math Content AI, Yoast AI, and AIOSEO:
|
|
5
|
+
* - 40+ Dedicated AI Generation Tools
|
|
6
|
+
* - 6 Master Copywriting Formulas (AIDA, PAS, BAB, HERO, SPIN, IDCA)
|
|
7
|
+
* - 1-Click Long-Form Blog Post Wizard
|
|
8
|
+
* - AI Link Genius & Internal Link Opportunities
|
|
9
|
+
* - 1-Click Fix Failed SEO Tests with AI
|
|
10
|
+
* - AI Brand Visibility & AI Search Tracker
|
|
11
|
+
* - 125+ Curated SEO Prompt Templates
|
|
12
|
+
*/
|
|
13
|
+
export interface ContentAiToolDefinition {
|
|
14
|
+
id: string;
|
|
15
|
+
category: "blogging" | "seo_meta" | "copywriting" | "ecommerce" | "social" | "workflow";
|
|
16
|
+
name: string;
|
|
17
|
+
icon: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputs: {
|
|
20
|
+
name: string;
|
|
21
|
+
label: string;
|
|
22
|
+
placeholder: string;
|
|
23
|
+
type?: "text" | "textarea" | "select";
|
|
24
|
+
options?: string[];
|
|
25
|
+
}[];
|
|
26
|
+
systemPrompt: string;
|
|
27
|
+
}
|
|
28
|
+
export declare const CONTENT_AI_40_TOOLS: ContentAiToolDefinition[];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 📸 Existing Media Harvester & Asset Pool Engine
|
|
3
|
+
*
|
|
4
|
+
* Reuses real, pre-existing photos from the client's website & WordPress Media Library:
|
|
5
|
+
* 1. 0 € GPU Cost & 0s Compute (Zero VRAM Saturation Guarantee)
|
|
6
|
+
* 2. Maximum Google E-E-A-T Authenticity (Real brand photos > Generic AI images)
|
|
7
|
+
* 3. Rotates existing photos across the 6 page variations
|
|
8
|
+
* 4. Dynamically injects localized <img alt="..."> tags across 40+ languages in RAM (< 0.01ms)
|
|
9
|
+
*/
|
|
10
|
+
export interface HarvestedMediaAsset {
|
|
11
|
+
id?: string | number;
|
|
12
|
+
url: string;
|
|
13
|
+
originalAlt?: string;
|
|
14
|
+
matchedKeywords?: string[];
|
|
15
|
+
width?: number;
|
|
16
|
+
height?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class ExistingMediaHarvester {
|
|
19
|
+
/**
|
|
20
|
+
* Extracts all existing image URLs from HTML pages or WordPress Media API
|
|
21
|
+
*/
|
|
22
|
+
static harvestFromHtml(htmlContent: string, baseUrl?: string): HarvestedMediaAsset[];
|
|
23
|
+
/**
|
|
24
|
+
* Matches the best existing photo from the pool for a given service & variation
|
|
25
|
+
*/
|
|
26
|
+
static selectBestImageForVariant(params: {
|
|
27
|
+
serviceName: string;
|
|
28
|
+
variantIndex: number;
|
|
29
|
+
mediaPool: HarvestedMediaAsset[];
|
|
30
|
+
fallbackPlaceholderUrl?: string;
|
|
31
|
+
}): string;
|
|
32
|
+
private static extractKeywordsFromUrl;
|
|
33
|
+
}
|
|
@@ -141,4 +141,88 @@ export declare class ExtendedSchemaGraphBuilder {
|
|
|
141
141
|
url: string;
|
|
142
142
|
searchUrlTemplate?: string;
|
|
143
143
|
}): Record<string, unknown>;
|
|
144
|
+
/**
|
|
145
|
+
* 11. Speakable Schema (Google Assistant & Voice Search) - Rank Math Pro Parity
|
|
146
|
+
*/
|
|
147
|
+
static buildSpeakable(opts: {
|
|
148
|
+
cssSelectors?: string[];
|
|
149
|
+
xpaths?: string[];
|
|
150
|
+
}): Record<string, unknown>;
|
|
151
|
+
/**
|
|
152
|
+
* 12. Podcast & PodcastEpisode Schema
|
|
153
|
+
*/
|
|
154
|
+
static buildPodcastEpisode(opts: {
|
|
155
|
+
title: string;
|
|
156
|
+
description: string;
|
|
157
|
+
audioUrl: string;
|
|
158
|
+
duration?: string;
|
|
159
|
+
publishedDate: string;
|
|
160
|
+
seriesName: string;
|
|
161
|
+
}): Record<string, unknown>;
|
|
162
|
+
/**
|
|
163
|
+
* 13. Restaurant Schema (with Menu & Cuisine)
|
|
164
|
+
*/
|
|
165
|
+
static buildRestaurant(opts: {
|
|
166
|
+
name: string;
|
|
167
|
+
url: string;
|
|
168
|
+
servesCuisine: string[];
|
|
169
|
+
menuUrl?: string;
|
|
170
|
+
priceRange?: string;
|
|
171
|
+
telephone?: string;
|
|
172
|
+
address: {
|
|
173
|
+
street: string;
|
|
174
|
+
city: string;
|
|
175
|
+
postalCode: string;
|
|
176
|
+
country: string;
|
|
177
|
+
};
|
|
178
|
+
}): Record<string, unknown>;
|
|
179
|
+
/**
|
|
180
|
+
* 14. Book Schema
|
|
181
|
+
*/
|
|
182
|
+
static buildBook(opts: {
|
|
183
|
+
name: string;
|
|
184
|
+
author: string;
|
|
185
|
+
isbn?: string;
|
|
186
|
+
bookFormat?: string;
|
|
187
|
+
url?: string;
|
|
188
|
+
}): Record<string, unknown>;
|
|
189
|
+
/**
|
|
190
|
+
* 15. Dataset Schema (Data Search & Research)
|
|
191
|
+
*/
|
|
192
|
+
static buildDataset(opts: {
|
|
193
|
+
name: string;
|
|
194
|
+
description: string;
|
|
195
|
+
url: string;
|
|
196
|
+
keywords: string[];
|
|
197
|
+
temporalCoverage?: string;
|
|
198
|
+
distributionUrl?: string;
|
|
199
|
+
}): Record<string, unknown>;
|
|
200
|
+
/**
|
|
201
|
+
* 16. FactCheck Schema (Google ClaimReview)
|
|
202
|
+
*/
|
|
203
|
+
static buildFactCheck(opts: {
|
|
204
|
+
claimReviewed: string;
|
|
205
|
+
ratingValue: string;
|
|
206
|
+
authorName: string;
|
|
207
|
+
url: string;
|
|
208
|
+
}): Record<string, unknown>;
|
|
209
|
+
/**
|
|
210
|
+
* 17. Carousel / ItemList Schema
|
|
211
|
+
*/
|
|
212
|
+
static buildCarousel(items: Array<{
|
|
213
|
+
name: string;
|
|
214
|
+
url: string;
|
|
215
|
+
position: number;
|
|
216
|
+
image?: string;
|
|
217
|
+
}>): Record<string, unknown>;
|
|
218
|
+
/**
|
|
219
|
+
* 18. QAPage Schema (bbPress / Forums / Community QA)
|
|
220
|
+
*/
|
|
221
|
+
static buildQAPage(opts: {
|
|
222
|
+
questionText: string;
|
|
223
|
+
authorName: string;
|
|
224
|
+
answerText: string;
|
|
225
|
+
answerAuthor: string;
|
|
226
|
+
upvoteCount?: number;
|
|
227
|
+
}): Record<string, unknown>;
|
|
144
228
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 📚 Features & Documentation Knowledge Harvester (Automated Content Extractor)
|
|
3
|
+
*
|
|
4
|
+
* Automatically crawls and ingests public documentation, feature pages, and WordPress sitemaps.
|
|
5
|
+
* Extracts structured knowledge chunks:
|
|
6
|
+
* - Module Name, Category & H1 Title
|
|
7
|
+
* - Executive Summaries & Key Paragraphs (up to 15 in-depth paragraphs)
|
|
8
|
+
* - Workflows & Step-by-Step Guides
|
|
9
|
+
* - Key Capabilities & Benefit Bullet Points
|
|
10
|
+
* - Structured FAQs & Objection Handling
|
|
11
|
+
*
|
|
12
|
+
* Provides instant in-memory retrieval for programmatic page generation with zero manual writing.
|
|
13
|
+
*/
|
|
14
|
+
export interface ExtractedFeatureKnowledge {
|
|
15
|
+
slug: string;
|
|
16
|
+
url: string;
|
|
17
|
+
title: string;
|
|
18
|
+
headline?: string;
|
|
19
|
+
category: string;
|
|
20
|
+
executiveSummary: string;
|
|
21
|
+
paragraphs: string[];
|
|
22
|
+
keyBenefits: string[];
|
|
23
|
+
workflowSteps: {
|
|
24
|
+
step: number;
|
|
25
|
+
title: string;
|
|
26
|
+
description: string;
|
|
27
|
+
}[];
|
|
28
|
+
faqs: {
|
|
29
|
+
question: string;
|
|
30
|
+
answer: string;
|
|
31
|
+
}[];
|
|
32
|
+
rawTextLength: number;
|
|
33
|
+
}
|
|
34
|
+
export declare class FeaturesKnowledgeHarvester {
|
|
35
|
+
private static knowledgeStore;
|
|
36
|
+
/**
|
|
37
|
+
* Extract knowledge from raw HTML or Markdown content of a public page
|
|
38
|
+
*/
|
|
39
|
+
static extractFromHtml(url: string, html: string, slug?: string): ExtractedFeatureKnowledge;
|
|
40
|
+
/**
|
|
41
|
+
* Batch ingest multiple pages from a sitemap or list of URLs
|
|
42
|
+
*/
|
|
43
|
+
static ingestPagesFromSitemap(sitemapUrl: string): Promise<number>;
|
|
44
|
+
/**
|
|
45
|
+
* Retrieve extracted knowledge for any module by slug
|
|
46
|
+
*/
|
|
47
|
+
static getKnowledge(slug: string): ExtractedFeatureKnowledge | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Get all registered module knowledge chunks
|
|
50
|
+
*/
|
|
51
|
+
static getAllKnowledge(): ExtractedFeatureKnowledge[];
|
|
52
|
+
/**
|
|
53
|
+
* Generate an ultra-complete, 1000-word programmatic page using harvested knowledge
|
|
54
|
+
*/
|
|
55
|
+
static buildEnrichedPage(slug: string, locationOrSector: string): string;
|
|
56
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🤖 Generative Engine Optimization (GEO) & AI Citation Scorer
|
|
3
|
+
*
|
|
4
|
+
* Analyzes web content and predicts citation probability by Large Language Models
|
|
5
|
+
* (ChatGPT Search, Perplexity Pro, Claude, Google Gemini / AI Overviews).
|
|
6
|
+
*
|
|
7
|
+
* Evaluates:
|
|
8
|
+
* 1. Direct-Answer Conciseness (Definition / Key Takeaway in first 200 chars)
|
|
9
|
+
* 2. Fact / Statistical Density (Numbers, %, $, specific dates)
|
|
10
|
+
* 3. Structured Data & Schema Presence (JSON-LD FAQPage, HowTo, Product)
|
|
11
|
+
* 4. Entity Salience & Semantic Precision
|
|
12
|
+
* 5. Citation Marker Friendliness (Bulleted lists, comparison tables, clear definitions)
|
|
13
|
+
*/
|
|
14
|
+
export interface GeoScoreBreakdown {
|
|
15
|
+
overallScore: number;
|
|
16
|
+
grade: "S" | "A" | "B" | "C" | "F";
|
|
17
|
+
aiCitationProbability: "TRÈS FORTE" | "FORTE" | "MOYENNE" | "FAIBLE";
|
|
18
|
+
metrics: {
|
|
19
|
+
directAnswerScore: number;
|
|
20
|
+
factDensityScore: number;
|
|
21
|
+
structuredDataScore: number;
|
|
22
|
+
entityClarityScore: number;
|
|
23
|
+
formatReadabilityScore: number;
|
|
24
|
+
};
|
|
25
|
+
keyFindings: {
|
|
26
|
+
passed: string[];
|
|
27
|
+
warnings: string[];
|
|
28
|
+
criticalFixes: string[];
|
|
29
|
+
};
|
|
30
|
+
suggestedPromptInjection: string;
|
|
31
|
+
}
|
|
32
|
+
export declare class GeoCitationScorer {
|
|
33
|
+
static analyzeContent(title: string, content: string, schemaTypes?: string[], hasTables?: boolean): GeoScoreBreakdown;
|
|
34
|
+
}
|
package/dist/i18n-detector.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Compatible with next-intl, next-i18next, i18next, Paraglide, and Astro i18n.
|
|
5
5
|
*/
|
|
6
6
|
export declare const SUPPORTED_CANONICAL_LOCALES: readonly ["en", "fr", "es", "de", "it", "pt", "nl", "ru", "tr", "zh", "ja", "ko", "hi", "id", "ar", "pl", "sv", "no", "da", "fi", "cs", "el", "ro", "hu", "uk", "vi", "th", "ms", "bg", "hr", "sk", "sl", "et", "lv", "lt", "fa", "bn", "ta", "sw", "af", "tl"];
|
|
7
|
-
export type SupportedLocale = (typeof SUPPORTED_CANONICAL_LOCALES)[number];
|
|
7
|
+
export type SupportedLocale = (typeof SUPPORTED_CANONICAL_LOCALES)[number] | (string & {});
|
|
8
8
|
export declare class I18nDetector {
|
|
9
9
|
/**
|
|
10
10
|
* Resolves a clean 2-letter ISO language code from any locale string (e.g. "fr-FR" -> "fr").
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 🦁 @lynxflow/seo-engine
|
|
3
3
|
*
|
|
4
|
-
* Proprietary Zero-Load Edge SEO Engine & Automated Marketing Suite.
|
|
5
|
-
* - On-Demand Page Generation
|
|
4
|
+
* Proprietary Zero-SQL-Load Edge SEO Engine & Automated Marketing Suite.
|
|
5
|
+
* - On-Demand In-Memory Dynamic Page Generation
|
|
6
6
|
* - Product Marketing & CRO Injection (PAS Framework, Friction Reducers)
|
|
7
|
-
* - Google
|
|
7
|
+
* - Verified Real Reviews & Google Rich Snippets Schema (Google Places / Trustpilot API Sync)
|
|
8
8
|
* - Direct-Answer GEO Blocks for AI Search (ChatGPT, Perplexity)
|
|
9
|
-
* -
|
|
10
|
-
* -
|
|
9
|
+
* - Universal Dynamic Location Synthesis & Real-Time GeoIP Edge Resolution
|
|
10
|
+
* - Universal Multi-Locale i18n Detection (Any ISO-639-1 / BCP-47 Code)
|
|
11
11
|
*/
|
|
12
12
|
export * from "./engine";
|
|
13
13
|
export * from "./slug-engine";
|
|
@@ -65,6 +65,8 @@ export * from "./real-reviews-sync";
|
|
|
65
65
|
export * from "./google-business-profile";
|
|
66
66
|
export * from "./video-youtube-analyzer";
|
|
67
67
|
export * from "./power-words-psychology";
|
|
68
|
+
export * from "./existing-media-harvester";
|
|
69
|
+
export * from "./content-ai-arsenal";
|
|
68
70
|
import { LynxSeoEngine, type EngineConfig } from "./engine";
|
|
69
71
|
import { ApiKeyGuardian } from "./auth-key";
|
|
70
72
|
import { TokenQuotaManager } from "./token-quota-manager";
|
|
@@ -98,9 +100,16 @@ import { SocialAdsSocialSeoEngine } from "./social-ads-seo";
|
|
|
98
100
|
import { AdIntelligenceCroEngine } from "./ad-intelligence-cro";
|
|
99
101
|
import { RankMathParityEngine } from "./rank-math-parity";
|
|
100
102
|
import { YoastParityEngine } from "./yoast-parity";
|
|
101
|
-
import { SocialGrowthSuite } from "./social-growth-suite";
|
|
102
103
|
import { TeamRbacEngine } from "./team-rbac";
|
|
103
104
|
import { RealReviewsSyncEngine } from "./real-reviews-sync";
|
|
105
|
+
import { FeaturesKnowledgeHarvester } from "./features-knowledge-harvester";
|
|
106
|
+
import { PublicRoutesManifestEngine } from "./public-manifest-engine";
|
|
107
|
+
import { KnowledgeBankBuilder } from "./knowledge-bank-builder";
|
|
108
|
+
import { LynxRagKnowledgeEngine } from "./rag-knowledge-engine";
|
|
109
|
+
import { LynxRateLimitedTranslator } from "./rate-limited-translator";
|
|
110
|
+
import { InternalPageRankEngine } from "./internal-pagerank-graph";
|
|
111
|
+
import { GeoCitationScorer } from "./geo-citation-scorer";
|
|
112
|
+
import { MarketingSkillsEngine } from "./marketing-skills-engine";
|
|
104
113
|
export declare function createLynxSeoEngine(config: EngineConfig): LynxSeoEngine;
|
|
105
114
|
export declare const LynxSeo: {
|
|
106
115
|
createEngine: typeof createLynxSeoEngine;
|
|
@@ -138,8 +147,24 @@ export declare const LynxSeo: {
|
|
|
138
147
|
adIntelligence: typeof AdIntelligenceCroEngine;
|
|
139
148
|
rankMathScore: typeof RankMathParityEngine;
|
|
140
149
|
yoastReadability: typeof YoastParityEngine;
|
|
141
|
-
socialGrowth: typeof SocialGrowthSuite;
|
|
142
150
|
rbac: typeof TeamRbacEngine;
|
|
143
151
|
realReviews: typeof RealReviewsSyncEngine;
|
|
152
|
+
knowledgeHarvester: typeof FeaturesKnowledgeHarvester;
|
|
153
|
+
manifest: typeof PublicRoutesManifestEngine;
|
|
154
|
+
knowledgeBank: typeof KnowledgeBankBuilder;
|
|
155
|
+
rag: typeof LynxRagKnowledgeEngine;
|
|
156
|
+
translator: typeof LynxRateLimitedTranslator;
|
|
157
|
+
pageRankGraph: typeof InternalPageRankEngine;
|
|
158
|
+
geoCitation: typeof GeoCitationScorer;
|
|
159
|
+
marketingSkills: typeof MarketingSkillsEngine;
|
|
144
160
|
};
|
|
161
|
+
export * from "./internal-pagerank-graph";
|
|
162
|
+
export * from "./geo-citation-scorer";
|
|
163
|
+
export * from "./marketing-skills-engine";
|
|
164
|
+
export * from "./built-in-locations";
|
|
165
|
+
export { FeaturesKnowledgeHarvester, type ExtractedFeatureKnowledge } from "./features-knowledge-harvester";
|
|
166
|
+
export { PublicRoutesManifestEngine, type PublicRouteItem, type FrameworkManifestConfig } from "./public-manifest-engine";
|
|
167
|
+
export { KnowledgeBankBuilder, type ModuleKnowledgeDocument, type HighEntropySlotVariations } from "./knowledge-bank-builder";
|
|
168
|
+
export { LynxRagKnowledgeEngine, type KnowledgeChunk, type RagRetrievalResult } from "./rag-knowledge-engine";
|
|
169
|
+
export { LynxRateLimitedTranslator, type TranslationClientConfig } from "./rate-limited-translator";
|
|
145
170
|
export default LynxSeo;
|