@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/README.md
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
# @lynxflow/seo-engine
|
|
2
2
|
|
|
3
|
-
High-Performance Programmatic SEO & Structured Data Engine for Modern Web Applications.
|
|
3
|
+
High-Performance Universal Programmatic SEO & Structured Data Engine for Modern Web Applications.
|
|
4
4
|
|
|
5
5
|
[](https://www.typescriptlang.org/)
|
|
6
6
|
[](LICENSE)
|
|
7
|
-
[](https://www.npmjs.com/package/@lynxflow/seo-engine)
|
|
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, strict market boundaries, 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
|
-
* **
|
|
16
|
+
* **Strict Geographic & Linguistic Scoping:** Easily lock your website to a single country (e.g. 100% US or 100% France) or expand globally across multiple languages and territories with `strictCountryBoundary`.
|
|
17
|
+
* **In-Memory Dynamic Execution:** Resolves millions of programmatic routes in RAM with zero database query overhead and zero MySQL/Postgres saturation.
|
|
18
|
+
* **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.
|
|
19
|
+
* **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.
|
|
20
|
+
* **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.).
|
|
21
|
+
* **50+ Schema.org Rich Structured Data Types:** Google-compliant JSON-LD generation for `LocalBusiness`, `Product`, `SoftwareApplication`, `HowTo`, `FAQPage`, `BreadcrumbList`, and `Organization`.
|
|
22
|
+
* **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
23
|
|
|
21
24
|
---
|
|
22
25
|
|
|
@@ -32,157 +35,97 @@ bun add @lynxflow/seo-engine
|
|
|
32
35
|
|
|
33
36
|
---
|
|
34
37
|
|
|
35
|
-
##
|
|
38
|
+
## Market Scoping: Single Country vs. Global Multi-Country
|
|
36
39
|
|
|
37
|
-
|
|
40
|
+
### Option 1: 100% US-Only or Local Single-Country Website
|
|
41
|
+
Prevent crawl waste on out-of-scope foreign locations by enabling `strictCountryBoundary`:
|
|
38
42
|
|
|
43
|
+
```typescript
|
|
44
|
+
export const SEO_CONFIG = {
|
|
45
|
+
brandName: "LoneStar HVAC Pro",
|
|
46
|
+
languages: ["en"],
|
|
47
|
+
countries: ["united-states"],
|
|
48
|
+
strictCountryBoundary: true, // 🛡️ Rejects non-US locations
|
|
49
|
+
defaultCurrency: "USD",
|
|
50
|
+
defaultCurrencySymbol: "$",
|
|
51
|
+
};
|
|
39
52
|
```
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
│ 🥊 /vs/{competitor} │ Optional / Modular │ Architectural Comparison & Differences │
|
|
50
|
-
│ 🔄 /alternatives/{competitor} │ Optional / Modular │ Clean Canonical Migration Guides │
|
|
51
|
-
│ 💰 /pricing/{competitor} │ Optional / Modular │ Transparent Plan Breakdown & Verified Disclaimers │
|
|
52
|
-
│ 📍 /solutions/{service}/{city} │ Local Geo Matrix │ Tiered Indexing (Crawl Budget) & Geodesic Mesh Links │
|
|
53
|
-
└──────────────────────────────────────┴────────────────────────┴────────────────────────────────────────────────────────┘
|
|
53
|
+
|
|
54
|
+
### Option 2: Worldwide Multi-Country / Multi-Lingual SaaS
|
|
55
|
+
```typescript
|
|
56
|
+
export const SEO_CONFIG = {
|
|
57
|
+
brandName: "Apex Global Cloud",
|
|
58
|
+
languages: ["en", "de", "es", "fr", "ja", "pt-BR"],
|
|
59
|
+
countries: ["united-states", "united-kingdom", "germany", "france", "japan"],
|
|
60
|
+
strictCountryBoundary: false, // Allows worldwide expansion
|
|
61
|
+
};
|
|
54
62
|
```
|
|
55
63
|
|
|
56
64
|
---
|
|
57
65
|
|
|
58
|
-
## Quickstart
|
|
66
|
+
## Quickstart & Contrasting Examples
|
|
59
67
|
|
|
60
|
-
### 1. Initialize Engine &
|
|
61
|
-
|
|
62
|
-
The SDK runs **in-memory inside the client application** (< 0.05ms) and automatically provisions verified cities, populations, GPS coordinates, and currencies from its built-in global demographic database.
|
|
68
|
+
### 1. Initialize Engine & Dataset
|
|
63
69
|
|
|
64
70
|
```typescript
|
|
65
71
|
import { PseoMatrixEngine } from "@lynxflow/seo-engine";
|
|
66
72
|
|
|
67
73
|
export const matrixEngine = new PseoMatrixEngine();
|
|
68
74
|
|
|
69
|
-
export const SEO_CONFIG = {
|
|
70
|
-
brandName: "Acme Cloud",
|
|
71
|
-
languages: ["fr", "en", "es"], // Supported site languages
|
|
72
|
-
countries: ["france", "espagne", "belgique"], // Or "europe" / "international" — SDK auto-provisions verified cities!
|
|
73
|
-
cleanDirectRoutes: true, // Eliminates parasite words (/solutions/, etc.) for direct /{service}/{city}
|
|
74
|
-
};
|
|
75
|
-
|
|
76
75
|
export const PSEO_DATASET = {
|
|
77
76
|
services: [
|
|
78
77
|
{
|
|
79
|
-
slug: "
|
|
80
|
-
name: "
|
|
81
|
-
category: "
|
|
82
|
-
keyFeatures: ["
|
|
83
|
-
description: "
|
|
78
|
+
slug: "commercial-hvac",
|
|
79
|
+
name: "Commercial HVAC Maintenance",
|
|
80
|
+
category: "Facility Management",
|
|
81
|
+
keyFeatures: ["24/7 Emergency Dispatch", "Certified Technicians", "Predictive Monitoring"],
|
|
82
|
+
description: "Enterprise climate control and ventilation services"
|
|
84
83
|
},
|
|
85
84
|
{
|
|
86
|
-
slug: "
|
|
87
|
-
name: "
|
|
88
|
-
category: "
|
|
89
|
-
keyFeatures: ["
|
|
90
|
-
description: "
|
|
85
|
+
slug: "cloud-backup",
|
|
86
|
+
name: "Automated Cloud Backup",
|
|
87
|
+
category: "Data Security",
|
|
88
|
+
keyFeatures: ["End-to-End Encryption", "Instant Recovery", "SOC2 Compliant"],
|
|
89
|
+
description: "Continuous enterprise backup and disaster recovery"
|
|
91
90
|
},
|
|
92
91
|
],
|
|
93
|
-
targets: [
|
|
94
|
-
{ slug: "agences", name: "Marketing Agencies", type: "industry", painPoints: ["Manual Posting"], benefits: ["10x Output"] }
|
|
95
|
-
],
|
|
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
92
|
};
|
|
106
93
|
```
|
|
107
94
|
|
|
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)
|
|
95
|
+
### 2. Standard vs. Arbitrary Custom Resolution (Side-by-Side)
|
|
145
96
|
|
|
146
97
|
```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
|
-
```
|
|
98
|
+
// Case 1: Standard Pre-Indexed City in English
|
|
99
|
+
const pageStandard = matrixEngine.resolvePage(["commercial-hvac", "new-york"], "https://example.com", PSEO_DATASET, SEO_CONFIG);
|
|
155
100
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const { isValid, errors } = validateSeoSlug(slug);
|
|
160
|
-
console.log(isValid); // true
|
|
101
|
+
// Case 2: Contrasting Case — Arbitrary Postal Code / Custom District
|
|
102
|
+
const pageCustom = matrixEngine.resolvePage(["commercial-hvac", "90210"], "https://example.com", PSEO_DATASET, SEO_CONFIG);
|
|
161
103
|
```
|
|
162
104
|
|
|
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:
|
|
105
|
+
### 3. Edge GeoIP Resolution Example
|
|
168
106
|
|
|
169
107
|
```typescript
|
|
170
|
-
import {
|
|
108
|
+
import { resolveLocationFromHeaders, PseoMatrixEngine } from "@lynxflow/seo-engine";
|
|
171
109
|
|
|
172
|
-
|
|
173
|
-
|
|
110
|
+
export function handleIncomingRequest(request: Request) {
|
|
111
|
+
const geo = resolveLocationFromHeaders(request.headers);
|
|
112
|
+
const userCity = geo.city || "new-york";
|
|
113
|
+
|
|
114
|
+
return matrixEngine.resolvePage(["commercial-hvac", userCity], "https://example.com", PSEO_DATASET, SEO_CONFIG);
|
|
115
|
+
}
|
|
174
116
|
```
|
|
175
117
|
|
|
176
118
|
---
|
|
177
119
|
|
|
178
120
|
## TypeScript API Reference
|
|
179
121
|
|
|
180
|
-
* **`PseoMatrixEngine`**: Core programmatic matrix compiler
|
|
122
|
+
* **`PseoMatrixEngine`**: Core programmatic matrix compiler with geographic boundaries and crawl budget protection.
|
|
123
|
+
* **`createDynamicLocation(slugOrInput, fallbackCountry, options)`**: Dynamic synthesis of any city, postal code or district worldwide.
|
|
124
|
+
* **`resolveLocationFromHeaders(headers)`**: Edge header GeoIP extractor for Cloudflare, Vercel, CloudFront, and Nginx.
|
|
181
125
|
* **`cleanSeoSlug(text, options)`**: Multilingual slug normalizer with stop-word removal for 10+ languages.
|
|
182
|
-
* **`validateSeoSlug(slug)`**: Strict slug validator.
|
|
183
126
|
* **`ExtendedSchemaGraphBuilder`**: 50+ Google Rich Result Schema.org JSON-LD generator.
|
|
184
127
|
* **`LegalDisclaimerEngine`**: Verified compliance notice manager with staleness guards (>90 days).
|
|
185
|
-
* **`getSeoAgentPrompt(context)`**: Built-in LLM operational prompt.
|
|
128
|
+
* **`getSeoAgentPrompt(context)`**: Built-in LLM operational prompt for AI coding agents.
|
|
186
129
|
|
|
187
130
|
---
|
|
188
131
|
|
|
@@ -10,3 +10,25 @@ 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, options?: {
|
|
19
|
+
currency?: string;
|
|
20
|
+
currencySymbol?: string;
|
|
21
|
+
region?: string;
|
|
22
|
+
}): PseoLocation;
|
|
23
|
+
/**
|
|
24
|
+
* 📍 GeoIP Edge Headers Resolver (Dynamic User Geolocation)
|
|
25
|
+
* Extracts the user's real-time city and country from Cloudflare / Vercel / Nginx Edge headers.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveLocationFromHeaders(headers: Record<string, string | null | undefined> | Headers | {
|
|
28
|
+
get(name: string): string | null;
|
|
29
|
+
}): {
|
|
30
|
+
city?: string;
|
|
31
|
+
country?: string;
|
|
32
|
+
region?: string;
|
|
33
|
+
postalCode?: string;
|
|
34
|
+
};
|
|
@@ -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;
|