@rankcli/agent-runtime 0.0.8 → 0.0.11
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 +90 -196
- package/dist/analyzer-GMURJADU.mjs +7 -0
- package/dist/chunk-2JADKV3Z.mjs +244 -0
- package/dist/chunk-3ZSCLNTW.mjs +557 -0
- package/dist/chunk-4E4MQOSP.mjs +374 -0
- package/dist/chunk-6BWS3CLP.mjs +16 -0
- package/dist/chunk-AK2IC22C.mjs +206 -0
- package/dist/chunk-K6VSXDD6.mjs +293 -0
- package/dist/chunk-M27NQCWW.mjs +303 -0
- package/dist/{chunk-YNZYHEYM.mjs → chunk-PJLNXOLN.mjs} +0 -14
- package/dist/chunk-VSQD74I7.mjs +474 -0
- package/dist/core-web-vitals-analyzer-TE6LQJMS.mjs +7 -0
- package/dist/geo-analyzer-D47LTMMA.mjs +25 -0
- package/dist/image-optimization-analyzer-XP4OQGRP.mjs +9 -0
- package/dist/index.d.mts +1523 -17
- package/dist/index.d.ts +1523 -17
- package/dist/index.js +9582 -2664
- package/dist/index.mjs +4812 -380
- package/dist/internal-linking-analyzer-MRMBV7NM.mjs +9 -0
- package/dist/mobile-seo-analyzer-67HNQ7IO.mjs +7 -0
- package/dist/security-headers-analyzer-3ZUQARS5.mjs +9 -0
- package/dist/structured-data-analyzer-2I4NQAUP.mjs +9 -0
- package/package.json +2 -2
- package/src/analyzers/core-web-vitals-analyzer.test.ts +236 -0
- package/src/analyzers/core-web-vitals-analyzer.ts +557 -0
- package/src/analyzers/geo-analyzer.test.ts +310 -0
- package/src/analyzers/geo-analyzer.ts +814 -0
- package/src/analyzers/image-optimization-analyzer.test.ts +145 -0
- package/src/analyzers/image-optimization-analyzer.ts +348 -0
- package/src/analyzers/index.ts +233 -0
- package/src/analyzers/internal-linking-analyzer.test.ts +141 -0
- package/src/analyzers/internal-linking-analyzer.ts +419 -0
- package/src/analyzers/mobile-seo-analyzer.test.ts +140 -0
- package/src/analyzers/mobile-seo-analyzer.ts +455 -0
- package/src/analyzers/security-headers-analyzer.test.ts +115 -0
- package/src/analyzers/security-headers-analyzer.ts +318 -0
- package/src/analyzers/structured-data-analyzer.test.ts +210 -0
- package/src/analyzers/structured-data-analyzer.ts +590 -0
- package/src/audit/engine.ts +3 -3
- package/src/audit/types.ts +3 -2
- package/src/fixer/framework-fixes.test.ts +489 -0
- package/src/fixer/framework-fixes.ts +3418 -0
- package/src/fixer/index.ts +1 -0
- package/src/fixer/schemas.ts +971 -0
- package/src/frameworks/detector.ts +642 -114
- package/src/frameworks/suggestion-engine.ts +38 -1
- package/src/index.ts +6 -0
- package/src/types.ts +15 -1
- package/dist/analyzer-2CSWIQGD.mjs +0 -6
package/dist/index.d.mts
CHANGED
|
@@ -90,14 +90,14 @@ interface HeadingStructure {
|
|
|
90
90
|
text: string;
|
|
91
91
|
level: number;
|
|
92
92
|
}
|
|
93
|
-
interface ImageInfo$
|
|
93
|
+
interface ImageInfo$2 {
|
|
94
94
|
src: string;
|
|
95
95
|
alt: string | null;
|
|
96
96
|
width?: string;
|
|
97
97
|
height?: string;
|
|
98
98
|
loading?: string;
|
|
99
99
|
}
|
|
100
|
-
interface LinkInfo {
|
|
100
|
+
interface LinkInfo$1 {
|
|
101
101
|
href: string;
|
|
102
102
|
text: string;
|
|
103
103
|
isInternal: boolean;
|
|
@@ -111,7 +111,8 @@ interface FrameworkInfo$1 {
|
|
|
111
111
|
name: string;
|
|
112
112
|
version?: string;
|
|
113
113
|
router?: 'app' | 'pages' | 'file-based' | 'custom';
|
|
114
|
-
|
|
114
|
+
language?: 'javascript' | 'typescript' | 'ruby' | 'python' | 'php' | 'java' | 'csharp' | 'go' | 'elixir' | 'rust';
|
|
115
|
+
metaPattern: 'metadata-export' | 'head-component' | 'frontmatter' | 'meta-function' | 'html-head' | 'erb-helpers' | 'blade-components' | 'thymeleaf' | 'razor' | 'heex' | 'go-templates' | 'django-templates' | 'server-rendered';
|
|
115
116
|
}
|
|
116
117
|
interface Fix {
|
|
117
118
|
issue: {
|
|
@@ -131,8 +132,8 @@ interface ToolResult {
|
|
|
131
132
|
}
|
|
132
133
|
type ToolFunction = (params: Record<string, unknown>) => Promise<ToolResult>;
|
|
133
134
|
|
|
134
|
-
type IssueSeverity = 'error' | 'warning' | 'notice';
|
|
135
|
-
type IssueCategory = 'crawlability' | 'indexability' | 'on-page' | 'content' | 'links' | 'images' | 'structured-data' | 'performance' | 'security' | 'mobile' | 'international' | 'ai-readiness' | 'social' | 'local-seo' | 'accessibility' | 'framework';
|
|
135
|
+
type IssueSeverity = 'critical' | 'error' | 'warning' | 'info' | 'notice';
|
|
136
|
+
type IssueCategory = 'crawlability' | 'indexability' | 'on-page' | 'content' | 'links' | 'images' | 'structured-data' | 'performance' | 'security' | 'mobile' | 'international' | 'ai-readiness' | 'social' | 'local-seo' | 'accessibility' | 'framework' | 'technical';
|
|
136
137
|
interface AuditIssue {
|
|
137
138
|
code: string;
|
|
138
139
|
severity: IssueSeverity;
|
|
@@ -319,7 +320,7 @@ interface ImageData {
|
|
|
319
320
|
lazyLoaded: number;
|
|
320
321
|
withDimensions: number;
|
|
321
322
|
}
|
|
322
|
-
declare function analyzeImages(html: string, baseUrl: string, checkBroken?: boolean): Promise<{
|
|
323
|
+
declare function analyzeImages$1(html: string, baseUrl: string, checkBroken?: boolean): Promise<{
|
|
323
324
|
issues: AuditIssue[];
|
|
324
325
|
data: ImageData;
|
|
325
326
|
}>;
|
|
@@ -376,18 +377,18 @@ declare function checkCertificate(url: string): Promise<{
|
|
|
376
377
|
issues: AuditIssue[];
|
|
377
378
|
}>;
|
|
378
379
|
|
|
379
|
-
interface SchemaItem {
|
|
380
|
+
interface SchemaItem$1 {
|
|
380
381
|
type: string;
|
|
381
382
|
data: Record<string, unknown>;
|
|
382
383
|
errors: string[];
|
|
383
384
|
warnings: string[];
|
|
384
385
|
}
|
|
385
386
|
interface StructuredDataData {
|
|
386
|
-
schemas: SchemaItem[];
|
|
387
|
+
schemas: SchemaItem$1[];
|
|
387
388
|
hasSchema: boolean;
|
|
388
389
|
schemaTypes: string[];
|
|
389
390
|
}
|
|
390
|
-
declare function analyzeStructuredData(html: string, url: string): {
|
|
391
|
+
declare function analyzeStructuredData$1(html: string, url: string): {
|
|
391
392
|
issues: AuditIssue[];
|
|
392
393
|
data: StructuredDataData;
|
|
393
394
|
};
|
|
@@ -690,7 +691,7 @@ interface SecurityHeadersData {
|
|
|
690
691
|
/**
|
|
691
692
|
* Analyze security headers
|
|
692
693
|
*/
|
|
693
|
-
declare function analyzeSecurityHeaders(url: string): Promise<{
|
|
694
|
+
declare function analyzeSecurityHeaders$1(url: string): Promise<{
|
|
694
695
|
issues: AuditIssue[];
|
|
695
696
|
data: SecurityHeadersData;
|
|
696
697
|
}>;
|
|
@@ -730,7 +731,7 @@ declare function analyzeDOMStructure(html: string, url: string): {
|
|
|
730
731
|
data: DOMAnalysisData;
|
|
731
732
|
};
|
|
732
733
|
|
|
733
|
-
interface ImageInfo {
|
|
734
|
+
interface ImageInfo$1 {
|
|
734
735
|
src: string;
|
|
735
736
|
alt: string | null;
|
|
736
737
|
width: number | null;
|
|
@@ -746,7 +747,7 @@ interface ModernImagesData {
|
|
|
746
747
|
modernFormatCount: number;
|
|
747
748
|
legacyFormatCount: number;
|
|
748
749
|
modernFormatPercentage: number;
|
|
749
|
-
images: ImageInfo[];
|
|
750
|
+
images: ImageInfo$1[];
|
|
750
751
|
hasSourceSet: boolean;
|
|
751
752
|
hasPictureElements: boolean;
|
|
752
753
|
}
|
|
@@ -3186,6 +3187,930 @@ declare function generateSvelteKitSEOHead(options: MetaFixOptions): GeneratedCod
|
|
|
3186
3187
|
declare function generateAngularSEOService(options: MetaFixOptions): GeneratedCode;
|
|
3187
3188
|
declare function getFrameworkSpecificFix(framework: FrameworkInfo$1, options: MetaFixOptions): GeneratedCode;
|
|
3188
3189
|
declare function generateNextJsPagesRouterHead(options: MetaFixOptions): GeneratedCode;
|
|
3190
|
+
declare function generateRailsSEOHelper(options: MetaFixOptions): GeneratedCode;
|
|
3191
|
+
declare function generateDjangoSEOHelper(options: MetaFixOptions): GeneratedCode;
|
|
3192
|
+
declare function generateLaravelSEOHelper(options: MetaFixOptions): GeneratedCode;
|
|
3193
|
+
declare function generateSpringBootSEO(options: MetaFixOptions): GeneratedCode;
|
|
3194
|
+
declare function generatePhoenixSEO(options: MetaFixOptions): GeneratedCode;
|
|
3195
|
+
declare function generateGoSEO(options: MetaFixOptions): GeneratedCode;
|
|
3196
|
+
declare function generateAspNetCoreSEO(options: MetaFixOptions): GeneratedCode;
|
|
3197
|
+
declare function generateHTMXSEO(options: MetaFixOptions): GeneratedCode;
|
|
3198
|
+
declare function generateHugoSEO(options: MetaFixOptions): GeneratedCode;
|
|
3199
|
+
declare function generateJekyllSEO(options: MetaFixOptions): GeneratedCode;
|
|
3200
|
+
declare function generateEleventySEO(options: MetaFixOptions): GeneratedCode;
|
|
3201
|
+
declare function generateRemixSEO(options: MetaFixOptions): GeneratedCode;
|
|
3202
|
+
declare function getFrameworkSpecificFixExtended(framework: FrameworkInfo$1, options: MetaFixOptions): GeneratedCode;
|
|
3203
|
+
|
|
3204
|
+
/**
|
|
3205
|
+
* World-Class JSON-LD Schema Generators
|
|
3206
|
+
*
|
|
3207
|
+
* Comprehensive schema.org structured data for all major content types.
|
|
3208
|
+
* Follows Google's structured data guidelines for rich results.
|
|
3209
|
+
*/
|
|
3210
|
+
interface OrganizationSchema {
|
|
3211
|
+
name: string;
|
|
3212
|
+
url: string;
|
|
3213
|
+
logo?: string;
|
|
3214
|
+
description?: string;
|
|
3215
|
+
foundingDate?: string;
|
|
3216
|
+
founders?: {
|
|
3217
|
+
name: string;
|
|
3218
|
+
url?: string;
|
|
3219
|
+
}[];
|
|
3220
|
+
address?: AddressSchema;
|
|
3221
|
+
contactPoint?: ContactPointSchema[];
|
|
3222
|
+
sameAs?: string[];
|
|
3223
|
+
}
|
|
3224
|
+
interface AddressSchema {
|
|
3225
|
+
streetAddress: string;
|
|
3226
|
+
addressLocality: string;
|
|
3227
|
+
addressRegion: string;
|
|
3228
|
+
postalCode: string;
|
|
3229
|
+
addressCountry: string;
|
|
3230
|
+
}
|
|
3231
|
+
interface ContactPointSchema {
|
|
3232
|
+
telephone: string;
|
|
3233
|
+
contactType: 'customer service' | 'technical support' | 'sales' | 'billing';
|
|
3234
|
+
availableLanguage?: string[];
|
|
3235
|
+
areaServed?: string[];
|
|
3236
|
+
}
|
|
3237
|
+
declare function generateOrganizationSchema(data: OrganizationSchema): {
|
|
3238
|
+
'@context': string;
|
|
3239
|
+
'@type': string;
|
|
3240
|
+
name: string;
|
|
3241
|
+
url: string;
|
|
3242
|
+
logo: string | undefined;
|
|
3243
|
+
description: string | undefined;
|
|
3244
|
+
foundingDate: string | undefined;
|
|
3245
|
+
founder: {
|
|
3246
|
+
'@type': string;
|
|
3247
|
+
name: string;
|
|
3248
|
+
url: string | undefined;
|
|
3249
|
+
}[] | undefined;
|
|
3250
|
+
address: {
|
|
3251
|
+
'@type': string;
|
|
3252
|
+
streetAddress: string;
|
|
3253
|
+
addressLocality: string;
|
|
3254
|
+
addressRegion: string;
|
|
3255
|
+
postalCode: string;
|
|
3256
|
+
addressCountry: string;
|
|
3257
|
+
} | undefined;
|
|
3258
|
+
contactPoint: {
|
|
3259
|
+
'@type': string;
|
|
3260
|
+
telephone: string;
|
|
3261
|
+
contactType: "sales" | "customer service" | "technical support" | "billing";
|
|
3262
|
+
availableLanguage: string[] | undefined;
|
|
3263
|
+
areaServed: string[] | undefined;
|
|
3264
|
+
}[] | undefined;
|
|
3265
|
+
sameAs: string[] | undefined;
|
|
3266
|
+
};
|
|
3267
|
+
interface WebSiteSchema {
|
|
3268
|
+
name: string;
|
|
3269
|
+
url: string;
|
|
3270
|
+
description?: string;
|
|
3271
|
+
publisher?: string;
|
|
3272
|
+
potentialAction?: {
|
|
3273
|
+
target: string;
|
|
3274
|
+
queryInput: string;
|
|
3275
|
+
};
|
|
3276
|
+
}
|
|
3277
|
+
declare function generateWebSiteSchema(data: WebSiteSchema): {
|
|
3278
|
+
'@context': string;
|
|
3279
|
+
'@type': string;
|
|
3280
|
+
name: string;
|
|
3281
|
+
url: string;
|
|
3282
|
+
description: string | undefined;
|
|
3283
|
+
publisher: {
|
|
3284
|
+
'@type': string;
|
|
3285
|
+
name: string;
|
|
3286
|
+
} | undefined;
|
|
3287
|
+
potentialAction: {
|
|
3288
|
+
'@type': string;
|
|
3289
|
+
target: {
|
|
3290
|
+
'@type': string;
|
|
3291
|
+
urlTemplate: string;
|
|
3292
|
+
};
|
|
3293
|
+
'query-input': string;
|
|
3294
|
+
} | undefined;
|
|
3295
|
+
};
|
|
3296
|
+
interface ArticleSchema {
|
|
3297
|
+
headline: string;
|
|
3298
|
+
description: string;
|
|
3299
|
+
image: string | string[];
|
|
3300
|
+
datePublished: string;
|
|
3301
|
+
dateModified?: string;
|
|
3302
|
+
author: PersonSchema | PersonSchema[];
|
|
3303
|
+
publisher: {
|
|
3304
|
+
name: string;
|
|
3305
|
+
logo: string;
|
|
3306
|
+
};
|
|
3307
|
+
mainEntityOfPage?: string;
|
|
3308
|
+
wordCount?: number;
|
|
3309
|
+
articleSection?: string;
|
|
3310
|
+
keywords?: string[];
|
|
3311
|
+
}
|
|
3312
|
+
interface PersonSchema {
|
|
3313
|
+
name: string;
|
|
3314
|
+
url?: string;
|
|
3315
|
+
image?: string;
|
|
3316
|
+
jobTitle?: string;
|
|
3317
|
+
sameAs?: string[];
|
|
3318
|
+
}
|
|
3319
|
+
declare function generateArticleSchema(data: ArticleSchema): {
|
|
3320
|
+
'@context': string;
|
|
3321
|
+
'@type': string;
|
|
3322
|
+
headline: string;
|
|
3323
|
+
description: string;
|
|
3324
|
+
image: string | string[];
|
|
3325
|
+
datePublished: string;
|
|
3326
|
+
dateModified: string;
|
|
3327
|
+
author: {
|
|
3328
|
+
'@type': string;
|
|
3329
|
+
name: string;
|
|
3330
|
+
url: string | undefined;
|
|
3331
|
+
image: string | undefined;
|
|
3332
|
+
jobTitle: string | undefined;
|
|
3333
|
+
sameAs: string[] | undefined;
|
|
3334
|
+
}[];
|
|
3335
|
+
publisher: {
|
|
3336
|
+
'@type': string;
|
|
3337
|
+
name: string;
|
|
3338
|
+
logo: {
|
|
3339
|
+
'@type': string;
|
|
3340
|
+
url: string;
|
|
3341
|
+
};
|
|
3342
|
+
};
|
|
3343
|
+
mainEntityOfPage: {
|
|
3344
|
+
'@type': string;
|
|
3345
|
+
'@id': string;
|
|
3346
|
+
} | undefined;
|
|
3347
|
+
wordCount: number | undefined;
|
|
3348
|
+
articleSection: string | undefined;
|
|
3349
|
+
keywords: string | undefined;
|
|
3350
|
+
};
|
|
3351
|
+
declare function generateBlogPostingSchema(data: ArticleSchema): {
|
|
3352
|
+
'@type': string;
|
|
3353
|
+
'@context': string;
|
|
3354
|
+
headline: string;
|
|
3355
|
+
description: string;
|
|
3356
|
+
image: string | string[];
|
|
3357
|
+
datePublished: string;
|
|
3358
|
+
dateModified: string;
|
|
3359
|
+
author: {
|
|
3360
|
+
'@type': string;
|
|
3361
|
+
name: string;
|
|
3362
|
+
url: string | undefined;
|
|
3363
|
+
image: string | undefined;
|
|
3364
|
+
jobTitle: string | undefined;
|
|
3365
|
+
sameAs: string[] | undefined;
|
|
3366
|
+
}[];
|
|
3367
|
+
publisher: {
|
|
3368
|
+
'@type': string;
|
|
3369
|
+
name: string;
|
|
3370
|
+
logo: {
|
|
3371
|
+
'@type': string;
|
|
3372
|
+
url: string;
|
|
3373
|
+
};
|
|
3374
|
+
};
|
|
3375
|
+
mainEntityOfPage: {
|
|
3376
|
+
'@type': string;
|
|
3377
|
+
'@id': string;
|
|
3378
|
+
} | undefined;
|
|
3379
|
+
wordCount: number | undefined;
|
|
3380
|
+
articleSection: string | undefined;
|
|
3381
|
+
keywords: string | undefined;
|
|
3382
|
+
};
|
|
3383
|
+
declare function generateNewsArticleSchema(data: ArticleSchema & {
|
|
3384
|
+
dateline?: string;
|
|
3385
|
+
}): {
|
|
3386
|
+
'@type': string;
|
|
3387
|
+
dateline: string | undefined;
|
|
3388
|
+
'@context': string;
|
|
3389
|
+
headline: string;
|
|
3390
|
+
description: string;
|
|
3391
|
+
image: string | string[];
|
|
3392
|
+
datePublished: string;
|
|
3393
|
+
dateModified: string;
|
|
3394
|
+
author: {
|
|
3395
|
+
'@type': string;
|
|
3396
|
+
name: string;
|
|
3397
|
+
url: string | undefined;
|
|
3398
|
+
image: string | undefined;
|
|
3399
|
+
jobTitle: string | undefined;
|
|
3400
|
+
sameAs: string[] | undefined;
|
|
3401
|
+
}[];
|
|
3402
|
+
publisher: {
|
|
3403
|
+
'@type': string;
|
|
3404
|
+
name: string;
|
|
3405
|
+
logo: {
|
|
3406
|
+
'@type': string;
|
|
3407
|
+
url: string;
|
|
3408
|
+
};
|
|
3409
|
+
};
|
|
3410
|
+
mainEntityOfPage: {
|
|
3411
|
+
'@type': string;
|
|
3412
|
+
'@id': string;
|
|
3413
|
+
} | undefined;
|
|
3414
|
+
wordCount: number | undefined;
|
|
3415
|
+
articleSection: string | undefined;
|
|
3416
|
+
keywords: string | undefined;
|
|
3417
|
+
};
|
|
3418
|
+
interface ProductSchema {
|
|
3419
|
+
name: string;
|
|
3420
|
+
description: string;
|
|
3421
|
+
image: string | string[];
|
|
3422
|
+
sku?: string;
|
|
3423
|
+
mpn?: string;
|
|
3424
|
+
gtin?: string;
|
|
3425
|
+
brand?: string;
|
|
3426
|
+
offers: OfferSchema | OfferSchema[];
|
|
3427
|
+
aggregateRating?: AggregateRatingSchema;
|
|
3428
|
+
review?: ReviewSchema[];
|
|
3429
|
+
category?: string;
|
|
3430
|
+
}
|
|
3431
|
+
interface OfferSchema {
|
|
3432
|
+
price: number | string;
|
|
3433
|
+
priceCurrency?: string;
|
|
3434
|
+
availability?: 'InStock' | 'OutOfStock' | 'PreOrder' | 'SoldOut' | 'BackOrder';
|
|
3435
|
+
priceValidUntil?: string;
|
|
3436
|
+
url?: string;
|
|
3437
|
+
seller?: string;
|
|
3438
|
+
itemCondition?: 'NewCondition' | 'UsedCondition' | 'RefurbishedCondition';
|
|
3439
|
+
}
|
|
3440
|
+
interface AggregateRatingSchema {
|
|
3441
|
+
ratingValue: number;
|
|
3442
|
+
reviewCount?: number;
|
|
3443
|
+
ratingCount?: number;
|
|
3444
|
+
bestRating?: number;
|
|
3445
|
+
worstRating?: number;
|
|
3446
|
+
}
|
|
3447
|
+
interface ReviewSchema {
|
|
3448
|
+
author: string;
|
|
3449
|
+
datePublished: string;
|
|
3450
|
+
reviewBody: string;
|
|
3451
|
+
reviewRating: {
|
|
3452
|
+
ratingValue: number;
|
|
3453
|
+
bestRating?: number;
|
|
3454
|
+
};
|
|
3455
|
+
}
|
|
3456
|
+
declare function generateProductSchema(data: ProductSchema): {
|
|
3457
|
+
'@context': string;
|
|
3458
|
+
'@type': string;
|
|
3459
|
+
name: string;
|
|
3460
|
+
description: string;
|
|
3461
|
+
image: string | string[];
|
|
3462
|
+
sku: string | undefined;
|
|
3463
|
+
mpn: string | undefined;
|
|
3464
|
+
gtin: string | undefined;
|
|
3465
|
+
brand: {
|
|
3466
|
+
'@type': string;
|
|
3467
|
+
name: string;
|
|
3468
|
+
} | undefined;
|
|
3469
|
+
category: string | undefined;
|
|
3470
|
+
offers: {
|
|
3471
|
+
'@type': string;
|
|
3472
|
+
price: string | number;
|
|
3473
|
+
priceCurrency: string;
|
|
3474
|
+
availability: string;
|
|
3475
|
+
priceValidUntil: string | undefined;
|
|
3476
|
+
url: string | undefined;
|
|
3477
|
+
seller: {
|
|
3478
|
+
'@type': string;
|
|
3479
|
+
name: string;
|
|
3480
|
+
} | undefined;
|
|
3481
|
+
itemCondition: string | undefined;
|
|
3482
|
+
}[];
|
|
3483
|
+
aggregateRating: {
|
|
3484
|
+
'@type': string;
|
|
3485
|
+
ratingValue: number;
|
|
3486
|
+
reviewCount: number | undefined;
|
|
3487
|
+
ratingCount: number | undefined;
|
|
3488
|
+
bestRating: number;
|
|
3489
|
+
worstRating: number;
|
|
3490
|
+
} | undefined;
|
|
3491
|
+
review: {
|
|
3492
|
+
'@type': string;
|
|
3493
|
+
author: {
|
|
3494
|
+
'@type': string;
|
|
3495
|
+
name: string;
|
|
3496
|
+
};
|
|
3497
|
+
datePublished: string;
|
|
3498
|
+
reviewBody: string;
|
|
3499
|
+
reviewRating: {
|
|
3500
|
+
'@type': string;
|
|
3501
|
+
ratingValue: number;
|
|
3502
|
+
bestRating: number;
|
|
3503
|
+
};
|
|
3504
|
+
}[] | undefined;
|
|
3505
|
+
};
|
|
3506
|
+
interface SoftwareApplicationSchema {
|
|
3507
|
+
name: string;
|
|
3508
|
+
description: string;
|
|
3509
|
+
applicationCategory: 'BusinessApplication' | 'DeveloperApplication' | 'EducationalApplication' | 'GameApplication' | 'LifestyleApplication' | 'MultimediaApplication' | 'SocialNetworkingApplication' | 'UtilitiesApplication';
|
|
3510
|
+
operatingSystem?: string;
|
|
3511
|
+
offers: OfferSchema | OfferSchema[];
|
|
3512
|
+
aggregateRating?: AggregateRatingSchema;
|
|
3513
|
+
screenshot?: string | string[];
|
|
3514
|
+
featureList?: string[];
|
|
3515
|
+
}
|
|
3516
|
+
declare function generateSoftwareApplicationSchema(data: SoftwareApplicationSchema): {
|
|
3517
|
+
'@context': string;
|
|
3518
|
+
'@type': string;
|
|
3519
|
+
name: string;
|
|
3520
|
+
description: string;
|
|
3521
|
+
applicationCategory: "BusinessApplication" | "DeveloperApplication" | "EducationalApplication" | "GameApplication" | "LifestyleApplication" | "MultimediaApplication" | "SocialNetworkingApplication" | "UtilitiesApplication";
|
|
3522
|
+
operatingSystem: string;
|
|
3523
|
+
offers: {
|
|
3524
|
+
'@type': string;
|
|
3525
|
+
price: string | number;
|
|
3526
|
+
priceCurrency: string;
|
|
3527
|
+
}[];
|
|
3528
|
+
aggregateRating: {
|
|
3529
|
+
'@type': string;
|
|
3530
|
+
ratingValue: number;
|
|
3531
|
+
reviewCount: number | undefined;
|
|
3532
|
+
bestRating: number;
|
|
3533
|
+
} | undefined;
|
|
3534
|
+
screenshot: string | string[] | undefined;
|
|
3535
|
+
featureList: string[] | undefined;
|
|
3536
|
+
};
|
|
3537
|
+
interface FAQSchema {
|
|
3538
|
+
questions: {
|
|
3539
|
+
question: string;
|
|
3540
|
+
answer: string;
|
|
3541
|
+
}[];
|
|
3542
|
+
}
|
|
3543
|
+
declare function generateFAQSchema$1(data: FAQSchema): {
|
|
3544
|
+
'@context': string;
|
|
3545
|
+
'@type': string;
|
|
3546
|
+
mainEntity: {
|
|
3547
|
+
'@type': string;
|
|
3548
|
+
name: string;
|
|
3549
|
+
acceptedAnswer: {
|
|
3550
|
+
'@type': string;
|
|
3551
|
+
text: string;
|
|
3552
|
+
};
|
|
3553
|
+
}[];
|
|
3554
|
+
};
|
|
3555
|
+
interface HowToSchema {
|
|
3556
|
+
name: string;
|
|
3557
|
+
description: string;
|
|
3558
|
+
image?: string;
|
|
3559
|
+
totalTime?: string;
|
|
3560
|
+
estimatedCost?: {
|
|
3561
|
+
currency: string;
|
|
3562
|
+
value: number;
|
|
3563
|
+
};
|
|
3564
|
+
supply?: string[];
|
|
3565
|
+
tool?: string[];
|
|
3566
|
+
steps: {
|
|
3567
|
+
name: string;
|
|
3568
|
+
text: string;
|
|
3569
|
+
image?: string;
|
|
3570
|
+
url?: string;
|
|
3571
|
+
}[];
|
|
3572
|
+
}
|
|
3573
|
+
declare function generateHowToSchema(data: HowToSchema): {
|
|
3574
|
+
'@context': string;
|
|
3575
|
+
'@type': string;
|
|
3576
|
+
name: string;
|
|
3577
|
+
description: string;
|
|
3578
|
+
image: string | undefined;
|
|
3579
|
+
totalTime: string | undefined;
|
|
3580
|
+
estimatedCost: {
|
|
3581
|
+
'@type': string;
|
|
3582
|
+
currency: string;
|
|
3583
|
+
value: number;
|
|
3584
|
+
} | undefined;
|
|
3585
|
+
supply: {
|
|
3586
|
+
'@type': string;
|
|
3587
|
+
name: string;
|
|
3588
|
+
}[] | undefined;
|
|
3589
|
+
tool: {
|
|
3590
|
+
'@type': string;
|
|
3591
|
+
name: string;
|
|
3592
|
+
}[] | undefined;
|
|
3593
|
+
step: {
|
|
3594
|
+
'@type': string;
|
|
3595
|
+
position: number;
|
|
3596
|
+
name: string;
|
|
3597
|
+
text: string;
|
|
3598
|
+
image: string | undefined;
|
|
3599
|
+
url: string | undefined;
|
|
3600
|
+
}[];
|
|
3601
|
+
};
|
|
3602
|
+
interface VideoSchema {
|
|
3603
|
+
name: string;
|
|
3604
|
+
description: string;
|
|
3605
|
+
thumbnailUrl: string | string[];
|
|
3606
|
+
uploadDate: string;
|
|
3607
|
+
duration?: string;
|
|
3608
|
+
contentUrl?: string;
|
|
3609
|
+
embedUrl?: string;
|
|
3610
|
+
interactionStatistic?: {
|
|
3611
|
+
watchCount?: number;
|
|
3612
|
+
likeCount?: number;
|
|
3613
|
+
commentCount?: number;
|
|
3614
|
+
};
|
|
3615
|
+
publication?: {
|
|
3616
|
+
isLiveBroadcast: boolean;
|
|
3617
|
+
startDate?: string;
|
|
3618
|
+
endDate?: string;
|
|
3619
|
+
};
|
|
3620
|
+
}
|
|
3621
|
+
declare function generateVideoSchema(data: VideoSchema): {
|
|
3622
|
+
'@context': string;
|
|
3623
|
+
'@type': string;
|
|
3624
|
+
name: string;
|
|
3625
|
+
description: string;
|
|
3626
|
+
thumbnailUrl: string | string[];
|
|
3627
|
+
uploadDate: string;
|
|
3628
|
+
duration: string | undefined;
|
|
3629
|
+
contentUrl: string | undefined;
|
|
3630
|
+
embedUrl: string | undefined;
|
|
3631
|
+
interactionStatistic: ({
|
|
3632
|
+
'@type': string;
|
|
3633
|
+
interactionType: {
|
|
3634
|
+
'@type': string;
|
|
3635
|
+
};
|
|
3636
|
+
userInteractionCount: number;
|
|
3637
|
+
} | null)[] | undefined;
|
|
3638
|
+
publication: {
|
|
3639
|
+
'@type': string;
|
|
3640
|
+
isLiveBroadcast: boolean;
|
|
3641
|
+
startDate: string | undefined;
|
|
3642
|
+
endDate: string | undefined;
|
|
3643
|
+
} | undefined;
|
|
3644
|
+
};
|
|
3645
|
+
interface EventSchema {
|
|
3646
|
+
name: string;
|
|
3647
|
+
description: string;
|
|
3648
|
+
startDate: string;
|
|
3649
|
+
endDate?: string;
|
|
3650
|
+
location: {
|
|
3651
|
+
type: 'Place' | 'VirtualLocation';
|
|
3652
|
+
name?: string;
|
|
3653
|
+
address?: AddressSchema;
|
|
3654
|
+
url?: string;
|
|
3655
|
+
};
|
|
3656
|
+
image?: string | string[];
|
|
3657
|
+
performer?: {
|
|
3658
|
+
name: string;
|
|
3659
|
+
url?: string;
|
|
3660
|
+
}[];
|
|
3661
|
+
organizer?: {
|
|
3662
|
+
name: string;
|
|
3663
|
+
url?: string;
|
|
3664
|
+
};
|
|
3665
|
+
offers?: OfferSchema[];
|
|
3666
|
+
eventStatus?: 'EventScheduled' | 'EventCancelled' | 'EventPostponed' | 'EventRescheduled';
|
|
3667
|
+
eventAttendanceMode?: 'OfflineEventAttendanceMode' | 'OnlineEventAttendanceMode' | 'MixedEventAttendanceMode';
|
|
3668
|
+
}
|
|
3669
|
+
declare function generateEventSchema(data: EventSchema): {
|
|
3670
|
+
'@context': string;
|
|
3671
|
+
'@type': string;
|
|
3672
|
+
name: string;
|
|
3673
|
+
description: string;
|
|
3674
|
+
startDate: string;
|
|
3675
|
+
endDate: string | undefined;
|
|
3676
|
+
image: string | string[] | undefined;
|
|
3677
|
+
eventStatus: string | undefined;
|
|
3678
|
+
eventAttendanceMode: string | undefined;
|
|
3679
|
+
location: {
|
|
3680
|
+
'@type': string;
|
|
3681
|
+
url: string | undefined;
|
|
3682
|
+
name?: undefined;
|
|
3683
|
+
address?: undefined;
|
|
3684
|
+
} | {
|
|
3685
|
+
'@type': string;
|
|
3686
|
+
name: string | undefined;
|
|
3687
|
+
address: {
|
|
3688
|
+
streetAddress: string;
|
|
3689
|
+
addressLocality: string;
|
|
3690
|
+
addressRegion: string;
|
|
3691
|
+
postalCode: string;
|
|
3692
|
+
addressCountry: string;
|
|
3693
|
+
'@type': string;
|
|
3694
|
+
} | undefined;
|
|
3695
|
+
url?: undefined;
|
|
3696
|
+
};
|
|
3697
|
+
performer: {
|
|
3698
|
+
'@type': string;
|
|
3699
|
+
name: string;
|
|
3700
|
+
url: string | undefined;
|
|
3701
|
+
}[] | undefined;
|
|
3702
|
+
organizer: {
|
|
3703
|
+
'@type': string;
|
|
3704
|
+
name: string;
|
|
3705
|
+
url: string | undefined;
|
|
3706
|
+
} | undefined;
|
|
3707
|
+
offers: {
|
|
3708
|
+
'@type': string;
|
|
3709
|
+
price: string | number;
|
|
3710
|
+
priceCurrency: string;
|
|
3711
|
+
availability: string;
|
|
3712
|
+
url: string | undefined;
|
|
3713
|
+
validFrom: string | undefined;
|
|
3714
|
+
}[] | undefined;
|
|
3715
|
+
};
|
|
3716
|
+
interface LocalBusinessSchema {
|
|
3717
|
+
name: string;
|
|
3718
|
+
description: string;
|
|
3719
|
+
url: string;
|
|
3720
|
+
telephone: string;
|
|
3721
|
+
address: AddressSchema;
|
|
3722
|
+
geo?: {
|
|
3723
|
+
latitude: number;
|
|
3724
|
+
longitude: number;
|
|
3725
|
+
};
|
|
3726
|
+
openingHours?: string[];
|
|
3727
|
+
priceRange?: string;
|
|
3728
|
+
image?: string | string[];
|
|
3729
|
+
servesCuisine?: string[];
|
|
3730
|
+
menu?: string;
|
|
3731
|
+
aggregateRating?: AggregateRatingSchema;
|
|
3732
|
+
review?: ReviewSchema[];
|
|
3733
|
+
}
|
|
3734
|
+
declare function generateLocalBusinessSchema(data: LocalBusinessSchema): {
|
|
3735
|
+
'@context': string;
|
|
3736
|
+
'@type': string;
|
|
3737
|
+
name: string;
|
|
3738
|
+
description: string;
|
|
3739
|
+
url: string;
|
|
3740
|
+
telephone: string;
|
|
3741
|
+
image: string | string[] | undefined;
|
|
3742
|
+
priceRange: string | undefined;
|
|
3743
|
+
servesCuisine: string[] | undefined;
|
|
3744
|
+
menu: string | undefined;
|
|
3745
|
+
address: {
|
|
3746
|
+
'@type': string;
|
|
3747
|
+
streetAddress: string;
|
|
3748
|
+
addressLocality: string;
|
|
3749
|
+
addressRegion: string;
|
|
3750
|
+
postalCode: string;
|
|
3751
|
+
addressCountry: string;
|
|
3752
|
+
};
|
|
3753
|
+
geo: {
|
|
3754
|
+
'@type': string;
|
|
3755
|
+
latitude: number;
|
|
3756
|
+
longitude: number;
|
|
3757
|
+
} | undefined;
|
|
3758
|
+
openingHoursSpecification: ({
|
|
3759
|
+
'@type': string;
|
|
3760
|
+
dayOfWeek: string[];
|
|
3761
|
+
opens: string;
|
|
3762
|
+
closes: string;
|
|
3763
|
+
} | null)[] | undefined;
|
|
3764
|
+
aggregateRating: {
|
|
3765
|
+
'@type': string;
|
|
3766
|
+
ratingValue: number;
|
|
3767
|
+
reviewCount: number | undefined;
|
|
3768
|
+
bestRating: number;
|
|
3769
|
+
} | undefined;
|
|
3770
|
+
review: {
|
|
3771
|
+
'@type': string;
|
|
3772
|
+
author: {
|
|
3773
|
+
'@type': string;
|
|
3774
|
+
name: string;
|
|
3775
|
+
};
|
|
3776
|
+
datePublished: string;
|
|
3777
|
+
reviewBody: string;
|
|
3778
|
+
reviewRating: {
|
|
3779
|
+
'@type': string;
|
|
3780
|
+
ratingValue: number;
|
|
3781
|
+
};
|
|
3782
|
+
}[] | undefined;
|
|
3783
|
+
};
|
|
3784
|
+
interface BreadcrumbSchema {
|
|
3785
|
+
items: {
|
|
3786
|
+
name: string;
|
|
3787
|
+
url: string;
|
|
3788
|
+
}[];
|
|
3789
|
+
}
|
|
3790
|
+
declare function generateBreadcrumbSchema(data: BreadcrumbSchema): {
|
|
3791
|
+
'@context': string;
|
|
3792
|
+
'@type': string;
|
|
3793
|
+
itemListElement: {
|
|
3794
|
+
'@type': string;
|
|
3795
|
+
position: number;
|
|
3796
|
+
name: string;
|
|
3797
|
+
item: string;
|
|
3798
|
+
}[];
|
|
3799
|
+
};
|
|
3800
|
+
interface JobPostingSchema {
|
|
3801
|
+
title: string;
|
|
3802
|
+
description: string;
|
|
3803
|
+
datePosted: string;
|
|
3804
|
+
validThrough?: string;
|
|
3805
|
+
employmentType?: ('FULL_TIME' | 'PART_TIME' | 'CONTRACTOR' | 'TEMPORARY' | 'INTERN')[];
|
|
3806
|
+
hiringOrganization: {
|
|
3807
|
+
name: string;
|
|
3808
|
+
url?: string;
|
|
3809
|
+
logo?: string;
|
|
3810
|
+
};
|
|
3811
|
+
jobLocation?: {
|
|
3812
|
+
address: AddressSchema;
|
|
3813
|
+
};
|
|
3814
|
+
jobLocationType?: 'TELECOMMUTE';
|
|
3815
|
+
baseSalary?: {
|
|
3816
|
+
value: {
|
|
3817
|
+
minValue: number;
|
|
3818
|
+
maxValue: number;
|
|
3819
|
+
} | number;
|
|
3820
|
+
currency: string;
|
|
3821
|
+
unitText: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR';
|
|
3822
|
+
};
|
|
3823
|
+
experienceRequirements?: string;
|
|
3824
|
+
educationRequirements?: string;
|
|
3825
|
+
skills?: string[];
|
|
3826
|
+
}
|
|
3827
|
+
declare function generateJobPostingSchema(data: JobPostingSchema): {
|
|
3828
|
+
'@context': string;
|
|
3829
|
+
'@type': string;
|
|
3830
|
+
title: string;
|
|
3831
|
+
description: string;
|
|
3832
|
+
datePosted: string;
|
|
3833
|
+
validThrough: string | undefined;
|
|
3834
|
+
employmentType: ("FULL_TIME" | "PART_TIME" | "CONTRACTOR" | "TEMPORARY" | "INTERN")[] | undefined;
|
|
3835
|
+
hiringOrganization: {
|
|
3836
|
+
'@type': string;
|
|
3837
|
+
name: string;
|
|
3838
|
+
sameAs: string | undefined;
|
|
3839
|
+
logo: string | undefined;
|
|
3840
|
+
};
|
|
3841
|
+
jobLocation: {
|
|
3842
|
+
'@type': string;
|
|
3843
|
+
address: {
|
|
3844
|
+
streetAddress: string;
|
|
3845
|
+
addressLocality: string;
|
|
3846
|
+
addressRegion: string;
|
|
3847
|
+
postalCode: string;
|
|
3848
|
+
addressCountry: string;
|
|
3849
|
+
'@type': string;
|
|
3850
|
+
};
|
|
3851
|
+
} | undefined;
|
|
3852
|
+
jobLocationType: "TELECOMMUTE" | undefined;
|
|
3853
|
+
baseSalary: {
|
|
3854
|
+
'@type': string;
|
|
3855
|
+
currency: string;
|
|
3856
|
+
value: {
|
|
3857
|
+
'@type': string;
|
|
3858
|
+
value: number;
|
|
3859
|
+
unitText: "HOUR" | "DAY" | "WEEK" | "MONTH" | "YEAR";
|
|
3860
|
+
minValue?: undefined;
|
|
3861
|
+
maxValue?: undefined;
|
|
3862
|
+
} | {
|
|
3863
|
+
'@type': string;
|
|
3864
|
+
minValue: number;
|
|
3865
|
+
maxValue: number;
|
|
3866
|
+
unitText: "HOUR" | "DAY" | "WEEK" | "MONTH" | "YEAR";
|
|
3867
|
+
value?: undefined;
|
|
3868
|
+
};
|
|
3869
|
+
} | undefined;
|
|
3870
|
+
experienceRequirements: string | undefined;
|
|
3871
|
+
educationRequirements: {
|
|
3872
|
+
'@type': string;
|
|
3873
|
+
credentialCategory: string;
|
|
3874
|
+
} | undefined;
|
|
3875
|
+
skills: string[] | undefined;
|
|
3876
|
+
};
|
|
3877
|
+
interface CourseSchema {
|
|
3878
|
+
name: string;
|
|
3879
|
+
description: string;
|
|
3880
|
+
provider: {
|
|
3881
|
+
name: string;
|
|
3882
|
+
url?: string;
|
|
3883
|
+
};
|
|
3884
|
+
offers?: OfferSchema;
|
|
3885
|
+
coursePrerequisites?: string[];
|
|
3886
|
+
educationalLevel?: string;
|
|
3887
|
+
timeRequired?: string;
|
|
3888
|
+
image?: string;
|
|
3889
|
+
aggregateRating?: AggregateRatingSchema;
|
|
3890
|
+
}
|
|
3891
|
+
declare function generateCourseSchema(data: CourseSchema): {
|
|
3892
|
+
'@context': string;
|
|
3893
|
+
'@type': string;
|
|
3894
|
+
name: string;
|
|
3895
|
+
description: string;
|
|
3896
|
+
provider: {
|
|
3897
|
+
'@type': string;
|
|
3898
|
+
name: string;
|
|
3899
|
+
sameAs: string | undefined;
|
|
3900
|
+
};
|
|
3901
|
+
offers: {
|
|
3902
|
+
'@type': string;
|
|
3903
|
+
price: string | number;
|
|
3904
|
+
priceCurrency: string;
|
|
3905
|
+
availability: string;
|
|
3906
|
+
} | undefined;
|
|
3907
|
+
coursePrerequisites: string[] | undefined;
|
|
3908
|
+
educationalLevel: string | undefined;
|
|
3909
|
+
timeRequired: string | undefined;
|
|
3910
|
+
image: string | undefined;
|
|
3911
|
+
aggregateRating: {
|
|
3912
|
+
'@type': string;
|
|
3913
|
+
ratingValue: number;
|
|
3914
|
+
reviewCount: number | undefined;
|
|
3915
|
+
} | undefined;
|
|
3916
|
+
};
|
|
3917
|
+
interface RecipeSchema {
|
|
3918
|
+
name: string;
|
|
3919
|
+
description: string;
|
|
3920
|
+
image: string | string[];
|
|
3921
|
+
author: {
|
|
3922
|
+
name: string;
|
|
3923
|
+
url?: string;
|
|
3924
|
+
};
|
|
3925
|
+
datePublished: string;
|
|
3926
|
+
prepTime?: string;
|
|
3927
|
+
cookTime?: string;
|
|
3928
|
+
totalTime?: string;
|
|
3929
|
+
recipeYield?: string;
|
|
3930
|
+
recipeCategory?: string;
|
|
3931
|
+
recipeCuisine?: string;
|
|
3932
|
+
recipeIngredient: string[];
|
|
3933
|
+
recipeInstructions: {
|
|
3934
|
+
name?: string;
|
|
3935
|
+
text: string;
|
|
3936
|
+
}[];
|
|
3937
|
+
nutrition?: {
|
|
3938
|
+
calories?: string;
|
|
3939
|
+
fatContent?: string;
|
|
3940
|
+
proteinContent?: string;
|
|
3941
|
+
carbohydrateContent?: string;
|
|
3942
|
+
};
|
|
3943
|
+
aggregateRating?: AggregateRatingSchema;
|
|
3944
|
+
video?: VideoSchema;
|
|
3945
|
+
}
|
|
3946
|
+
declare function generateRecipeSchema(data: RecipeSchema): {
|
|
3947
|
+
'@context': string;
|
|
3948
|
+
'@type': string;
|
|
3949
|
+
name: string;
|
|
3950
|
+
description: string;
|
|
3951
|
+
image: string | string[];
|
|
3952
|
+
author: {
|
|
3953
|
+
'@type': string;
|
|
3954
|
+
name: string;
|
|
3955
|
+
url: string | undefined;
|
|
3956
|
+
};
|
|
3957
|
+
datePublished: string;
|
|
3958
|
+
prepTime: string | undefined;
|
|
3959
|
+
cookTime: string | undefined;
|
|
3960
|
+
totalTime: string | undefined;
|
|
3961
|
+
recipeYield: string | undefined;
|
|
3962
|
+
recipeCategory: string | undefined;
|
|
3963
|
+
recipeCuisine: string | undefined;
|
|
3964
|
+
recipeIngredient: string[];
|
|
3965
|
+
recipeInstructions: {
|
|
3966
|
+
'@type': string;
|
|
3967
|
+
position: number;
|
|
3968
|
+
name: string | undefined;
|
|
3969
|
+
text: string;
|
|
3970
|
+
}[];
|
|
3971
|
+
nutrition: {
|
|
3972
|
+
'@type': string;
|
|
3973
|
+
calories: string | undefined;
|
|
3974
|
+
fatContent: string | undefined;
|
|
3975
|
+
proteinContent: string | undefined;
|
|
3976
|
+
carbohydrateContent: string | undefined;
|
|
3977
|
+
} | undefined;
|
|
3978
|
+
aggregateRating: {
|
|
3979
|
+
'@type': string;
|
|
3980
|
+
ratingValue: number;
|
|
3981
|
+
reviewCount: number | undefined;
|
|
3982
|
+
} | undefined;
|
|
3983
|
+
video: {
|
|
3984
|
+
'@context': string;
|
|
3985
|
+
'@type': string;
|
|
3986
|
+
name: string;
|
|
3987
|
+
description: string;
|
|
3988
|
+
thumbnailUrl: string | string[];
|
|
3989
|
+
uploadDate: string;
|
|
3990
|
+
duration: string | undefined;
|
|
3991
|
+
contentUrl: string | undefined;
|
|
3992
|
+
embedUrl: string | undefined;
|
|
3993
|
+
interactionStatistic: ({
|
|
3994
|
+
'@type': string;
|
|
3995
|
+
interactionType: {
|
|
3996
|
+
'@type': string;
|
|
3997
|
+
};
|
|
3998
|
+
userInteractionCount: number;
|
|
3999
|
+
} | null)[] | undefined;
|
|
4000
|
+
publication: {
|
|
4001
|
+
'@type': string;
|
|
4002
|
+
isLiveBroadcast: boolean;
|
|
4003
|
+
startDate: string | undefined;
|
|
4004
|
+
endDate: string | undefined;
|
|
4005
|
+
} | undefined;
|
|
4006
|
+
} | undefined;
|
|
4007
|
+
};
|
|
4008
|
+
interface BookSchema {
|
|
4009
|
+
name: string;
|
|
4010
|
+
description: string;
|
|
4011
|
+
author: {
|
|
4012
|
+
name: string;
|
|
4013
|
+
url?: string;
|
|
4014
|
+
} | {
|
|
4015
|
+
name: string;
|
|
4016
|
+
url?: string;
|
|
4017
|
+
}[];
|
|
4018
|
+
isbn?: string;
|
|
4019
|
+
numberOfPages?: number;
|
|
4020
|
+
bookFormat?: 'Hardcover' | 'Paperback' | 'EBook' | 'AudioBook';
|
|
4021
|
+
publisher?: string;
|
|
4022
|
+
datePublished?: string;
|
|
4023
|
+
image?: string;
|
|
4024
|
+
inLanguage?: string;
|
|
4025
|
+
aggregateRating?: AggregateRatingSchema;
|
|
4026
|
+
offers?: OfferSchema;
|
|
4027
|
+
}
|
|
4028
|
+
declare function generateBookSchema(data: BookSchema): {
|
|
4029
|
+
'@context': string;
|
|
4030
|
+
'@type': string;
|
|
4031
|
+
name: string;
|
|
4032
|
+
description: string;
|
|
4033
|
+
author: {
|
|
4034
|
+
'@type': string;
|
|
4035
|
+
name: string;
|
|
4036
|
+
url: string | undefined;
|
|
4037
|
+
}[];
|
|
4038
|
+
isbn: string | undefined;
|
|
4039
|
+
numberOfPages: number | undefined;
|
|
4040
|
+
bookFormat: string | undefined;
|
|
4041
|
+
publisher: {
|
|
4042
|
+
'@type': string;
|
|
4043
|
+
name: string;
|
|
4044
|
+
} | undefined;
|
|
4045
|
+
datePublished: string | undefined;
|
|
4046
|
+
image: string | undefined;
|
|
4047
|
+
inLanguage: string | undefined;
|
|
4048
|
+
aggregateRating: {
|
|
4049
|
+
'@type': string;
|
|
4050
|
+
ratingValue: number;
|
|
4051
|
+
reviewCount: number | undefined;
|
|
4052
|
+
} | undefined;
|
|
4053
|
+
offers: {
|
|
4054
|
+
'@type': string;
|
|
4055
|
+
price: string | number;
|
|
4056
|
+
priceCurrency: string;
|
|
4057
|
+
availability: string;
|
|
4058
|
+
} | undefined;
|
|
4059
|
+
};
|
|
4060
|
+
interface SpeakableSchema {
|
|
4061
|
+
url: string;
|
|
4062
|
+
cssSelector?: string[];
|
|
4063
|
+
xpath?: string[];
|
|
4064
|
+
}
|
|
4065
|
+
declare function generateSpeakableSchema(data: SpeakableSchema): {
|
|
4066
|
+
'@context': string;
|
|
4067
|
+
'@type': string;
|
|
4068
|
+
speakable: {
|
|
4069
|
+
'@type': string;
|
|
4070
|
+
cssSelector: string[] | undefined;
|
|
4071
|
+
xpath: string[] | undefined;
|
|
4072
|
+
};
|
|
4073
|
+
url: string;
|
|
4074
|
+
};
|
|
4075
|
+
interface SitelinksSearchboxSchema {
|
|
4076
|
+
url: string;
|
|
4077
|
+
searchUrl: string;
|
|
4078
|
+
queryInput?: string;
|
|
4079
|
+
}
|
|
4080
|
+
declare function generateSitelinksSearchboxSchema(data: SitelinksSearchboxSchema): {
|
|
4081
|
+
'@context': string;
|
|
4082
|
+
'@type': string;
|
|
4083
|
+
url: string;
|
|
4084
|
+
potentialAction: {
|
|
4085
|
+
'@type': string;
|
|
4086
|
+
target: {
|
|
4087
|
+
'@type': string;
|
|
4088
|
+
urlTemplate: string;
|
|
4089
|
+
};
|
|
4090
|
+
'query-input': string;
|
|
4091
|
+
};
|
|
4092
|
+
};
|
|
4093
|
+
declare const Schemas: {
|
|
4094
|
+
organization: typeof generateOrganizationSchema;
|
|
4095
|
+
webSite: typeof generateWebSiteSchema;
|
|
4096
|
+
article: typeof generateArticleSchema;
|
|
4097
|
+
blogPosting: typeof generateBlogPostingSchema;
|
|
4098
|
+
newsArticle: typeof generateNewsArticleSchema;
|
|
4099
|
+
product: typeof generateProductSchema;
|
|
4100
|
+
softwareApplication: typeof generateSoftwareApplicationSchema;
|
|
4101
|
+
faq: typeof generateFAQSchema$1;
|
|
4102
|
+
howTo: typeof generateHowToSchema;
|
|
4103
|
+
video: typeof generateVideoSchema;
|
|
4104
|
+
event: typeof generateEventSchema;
|
|
4105
|
+
localBusiness: typeof generateLocalBusinessSchema;
|
|
4106
|
+
breadcrumb: typeof generateBreadcrumbSchema;
|
|
4107
|
+
jobPosting: typeof generateJobPostingSchema;
|
|
4108
|
+
course: typeof generateCourseSchema;
|
|
4109
|
+
recipe: typeof generateRecipeSchema;
|
|
4110
|
+
book: typeof generateBookSchema;
|
|
4111
|
+
speakable: typeof generateSpeakableSchema;
|
|
4112
|
+
sitelinksSearchbox: typeof generateSitelinksSearchboxSchema;
|
|
4113
|
+
};
|
|
3189
4114
|
|
|
3190
4115
|
declare function crawlUrl(params: {
|
|
3191
4116
|
url: string;
|
|
@@ -3883,20 +4808,591 @@ declare function getAIVisibilitySummary(results: LLMCitationResult[]): {
|
|
|
3883
4808
|
overallSentiment: 'positive' | 'neutral' | 'negative' | 'mixed' | null;
|
|
3884
4809
|
};
|
|
3885
4810
|
|
|
4811
|
+
/**
|
|
4812
|
+
* Mobile SEO Analyzer
|
|
4813
|
+
*
|
|
4814
|
+
* Analyzes mobile-friendliness and mobile SEO best practices.
|
|
4815
|
+
* Critical for Google's mobile-first indexing.
|
|
4816
|
+
*/
|
|
4817
|
+
|
|
4818
|
+
interface MobileSEOResult {
|
|
4819
|
+
score: number;
|
|
4820
|
+
viewport: ViewportAnalysis;
|
|
4821
|
+
touchTargets: TouchTargetAnalysis;
|
|
4822
|
+
fontSizes: FontSizeAnalysis;
|
|
4823
|
+
contentWidth: ContentWidthAnalysis;
|
|
4824
|
+
mobileSpecific: MobileSpecificAnalysis;
|
|
4825
|
+
issues: AuditIssue[];
|
|
4826
|
+
recommendations: string[];
|
|
4827
|
+
}
|
|
4828
|
+
interface ViewportAnalysis {
|
|
4829
|
+
hasViewport: boolean;
|
|
4830
|
+
isResponsive: boolean;
|
|
4831
|
+
viewportContent?: string;
|
|
4832
|
+
issues: string[];
|
|
4833
|
+
}
|
|
4834
|
+
interface TouchTargetAnalysis {
|
|
4835
|
+
smallTargets: number;
|
|
4836
|
+
properTargets: number;
|
|
4837
|
+
issues: string[];
|
|
4838
|
+
}
|
|
4839
|
+
interface FontSizeAnalysis {
|
|
4840
|
+
hasResponsiveFonts: boolean;
|
|
4841
|
+
smallFontIndicators: number;
|
|
4842
|
+
issues: string[];
|
|
4843
|
+
}
|
|
4844
|
+
interface ContentWidthAnalysis {
|
|
4845
|
+
hasHorizontalScroll: boolean;
|
|
4846
|
+
fixedWidthElements: number;
|
|
4847
|
+
issues: string[];
|
|
4848
|
+
}
|
|
4849
|
+
interface MobileSpecificAnalysis {
|
|
4850
|
+
hasAppleTouchIcon: boolean;
|
|
4851
|
+
hasThemeColor: boolean;
|
|
4852
|
+
hasManifest: boolean;
|
|
4853
|
+
hasMobileOptimizedImages: boolean;
|
|
4854
|
+
avoidsMobilePopups: boolean;
|
|
4855
|
+
issues: string[];
|
|
4856
|
+
}
|
|
4857
|
+
/**
|
|
4858
|
+
* Main mobile SEO analysis
|
|
4859
|
+
*/
|
|
4860
|
+
declare function analyzeMobileSEO(html: string, url: string): MobileSEOResult;
|
|
4861
|
+
|
|
4862
|
+
/**
|
|
4863
|
+
* Internal Linking Analyzer
|
|
4864
|
+
*
|
|
4865
|
+
* Analyzes internal link structure for SEO optimization.
|
|
4866
|
+
* Checks link distribution, anchor text, orphan pages, and link depth.
|
|
4867
|
+
*/
|
|
4868
|
+
|
|
4869
|
+
interface InternalLinkingResult {
|
|
4870
|
+
score: number;
|
|
4871
|
+
totalLinks: number;
|
|
4872
|
+
internalLinks: number;
|
|
4873
|
+
externalLinks: number;
|
|
4874
|
+
navigationLinks: number;
|
|
4875
|
+
contentLinks: number;
|
|
4876
|
+
uniqueInternalTargets: number;
|
|
4877
|
+
linksWithKeywords: number;
|
|
4878
|
+
linksWithGenericText: number;
|
|
4879
|
+
orphanRisk: boolean;
|
|
4880
|
+
linkDetails: LinkInfo[];
|
|
4881
|
+
anchorTextAnalysis: AnchorTextStats;
|
|
4882
|
+
issues: AuditIssue[];
|
|
4883
|
+
recommendations: string[];
|
|
4884
|
+
}
|
|
4885
|
+
interface LinkInfo {
|
|
4886
|
+
href: string;
|
|
4887
|
+
text: string;
|
|
4888
|
+
isInternal: boolean;
|
|
4889
|
+
isNavigation: boolean;
|
|
4890
|
+
rel?: string;
|
|
4891
|
+
title?: string;
|
|
4892
|
+
issues: string[];
|
|
4893
|
+
}
|
|
4894
|
+
interface AnchorTextStats {
|
|
4895
|
+
total: number;
|
|
4896
|
+
descriptive: number;
|
|
4897
|
+
generic: number;
|
|
4898
|
+
empty: number;
|
|
4899
|
+
tooLong: number;
|
|
4900
|
+
imageLinks: number;
|
|
4901
|
+
patterns: {
|
|
4902
|
+
text: string;
|
|
4903
|
+
count: number;
|
|
4904
|
+
}[];
|
|
4905
|
+
}
|
|
4906
|
+
/**
|
|
4907
|
+
* Analyze internal linking structure
|
|
4908
|
+
*/
|
|
4909
|
+
declare function analyzeInternalLinking(html: string, url: string): InternalLinkingResult;
|
|
4910
|
+
/**
|
|
4911
|
+
* Suggest internal linking opportunities
|
|
4912
|
+
*/
|
|
4913
|
+
declare function suggestInternalLinks(content: string, availablePages: {
|
|
4914
|
+
url: string;
|
|
4915
|
+
title: string;
|
|
4916
|
+
keywords: string[];
|
|
4917
|
+
}[]): {
|
|
4918
|
+
keyword: string;
|
|
4919
|
+
suggestedUrl: string;
|
|
4920
|
+
suggestedTitle: string;
|
|
4921
|
+
relevance: number;
|
|
4922
|
+
}[];
|
|
4923
|
+
|
|
4924
|
+
/**
|
|
4925
|
+
* Image Optimization Analyzer
|
|
4926
|
+
*
|
|
4927
|
+
* Analyzes images for SEO and performance optimization.
|
|
4928
|
+
* Checks formats, dimensions, alt text, lazy loading, and compression indicators.
|
|
4929
|
+
*/
|
|
4930
|
+
|
|
4931
|
+
interface ImageAnalysisResult {
|
|
4932
|
+
score: number;
|
|
4933
|
+
totalImages: number;
|
|
4934
|
+
imagesWithAlt: number;
|
|
4935
|
+
imagesWithDimensions: number;
|
|
4936
|
+
imagesWithLazyLoading: number;
|
|
4937
|
+
modernFormats: number;
|
|
4938
|
+
legacyFormats: number;
|
|
4939
|
+
oversizedImages: ImageInfo[];
|
|
4940
|
+
missingAlt: ImageInfo[];
|
|
4941
|
+
decorativeWithoutRole: ImageInfo[];
|
|
4942
|
+
issues: AuditIssue[];
|
|
4943
|
+
recommendations: string[];
|
|
4944
|
+
}
|
|
4945
|
+
interface ImageInfo {
|
|
4946
|
+
src: string;
|
|
4947
|
+
alt?: string;
|
|
4948
|
+
width?: number;
|
|
4949
|
+
height?: number;
|
|
4950
|
+
format?: string;
|
|
4951
|
+
loading?: string;
|
|
4952
|
+
issues: string[];
|
|
4953
|
+
}
|
|
4954
|
+
/**
|
|
4955
|
+
* Analyze all images on a page
|
|
4956
|
+
*/
|
|
4957
|
+
declare function analyzeImages(html: string, url: string): ImageAnalysisResult;
|
|
4958
|
+
/**
|
|
4959
|
+
* Generate responsive image HTML
|
|
4960
|
+
*/
|
|
4961
|
+
declare function generateResponsiveImage(options: {
|
|
4962
|
+
src: string;
|
|
4963
|
+
alt: string;
|
|
4964
|
+
widths: number[];
|
|
4965
|
+
sizes?: string;
|
|
4966
|
+
loading?: 'lazy' | 'eager';
|
|
4967
|
+
className?: string;
|
|
4968
|
+
}): string;
|
|
4969
|
+
|
|
4970
|
+
/**
|
|
4971
|
+
* Structured Data / Schema.org Analyzer
|
|
4972
|
+
*
|
|
4973
|
+
* Validates JSON-LD structured data for SEO and AI search optimization.
|
|
4974
|
+
* Checks for common schema types, required properties, and best practices.
|
|
4975
|
+
*/
|
|
4976
|
+
|
|
4977
|
+
interface StructuredDataResult {
|
|
4978
|
+
score: number;
|
|
4979
|
+
schemas: SchemaItem[];
|
|
4980
|
+
hasOrganization: boolean;
|
|
4981
|
+
hasWebSite: boolean;
|
|
4982
|
+
hasWebPage: boolean;
|
|
4983
|
+
hasBreadcrumb: boolean;
|
|
4984
|
+
hasArticle: boolean;
|
|
4985
|
+
hasProduct: boolean;
|
|
4986
|
+
hasFAQ: boolean;
|
|
4987
|
+
hasHowTo: boolean;
|
|
4988
|
+
hasLocalBusiness: boolean;
|
|
4989
|
+
hasEvent: boolean;
|
|
4990
|
+
hasReview: boolean;
|
|
4991
|
+
issues: AuditIssue[];
|
|
4992
|
+
recommendations: string[];
|
|
4993
|
+
}
|
|
4994
|
+
interface SchemaItem {
|
|
4995
|
+
type: string;
|
|
4996
|
+
isValid: boolean;
|
|
4997
|
+
errors: string[];
|
|
4998
|
+
warnings: string[];
|
|
4999
|
+
properties: string[];
|
|
5000
|
+
}
|
|
5001
|
+
/**
|
|
5002
|
+
* Analyze all structured data on a page
|
|
5003
|
+
*/
|
|
5004
|
+
declare function analyzeStructuredData(html: string, url: string): StructuredDataResult;
|
|
5005
|
+
/**
|
|
5006
|
+
* Generate recommended schema for a page type
|
|
5007
|
+
*/
|
|
5008
|
+
declare function generateSchemaTemplate(pageType: 'article' | 'product' | 'faq' | 'local-business' | 'website', options: {
|
|
5009
|
+
siteName: string;
|
|
5010
|
+
siteUrl: string;
|
|
5011
|
+
authorName?: string;
|
|
5012
|
+
organizationName?: string;
|
|
5013
|
+
}): string;
|
|
5014
|
+
|
|
5015
|
+
/**
|
|
5016
|
+
* Security Headers Analyzer
|
|
5017
|
+
*
|
|
5018
|
+
* Analyzes HTTP security headers that impact SEO and trust signals.
|
|
5019
|
+
* Many security headers are now considered ranking factors.
|
|
5020
|
+
*/
|
|
5021
|
+
|
|
5022
|
+
interface SecurityHeadersResult {
|
|
5023
|
+
score: number;
|
|
5024
|
+
https: {
|
|
5025
|
+
enabled: boolean;
|
|
5026
|
+
hasHSTS: boolean;
|
|
5027
|
+
hstsMaxAge?: number;
|
|
5028
|
+
includesSubdomains: boolean;
|
|
5029
|
+
preload: boolean;
|
|
5030
|
+
};
|
|
5031
|
+
contentSecurity: {
|
|
5032
|
+
hasCSP: boolean;
|
|
5033
|
+
policy?: string;
|
|
5034
|
+
issues: string[];
|
|
5035
|
+
};
|
|
5036
|
+
frameOptions: {
|
|
5037
|
+
hasXFrameOptions: boolean;
|
|
5038
|
+
value?: string;
|
|
5039
|
+
};
|
|
5040
|
+
contentTypeOptions: {
|
|
5041
|
+
hasXContentTypeOptions: boolean;
|
|
5042
|
+
};
|
|
5043
|
+
xssProtection: {
|
|
5044
|
+
hasXXSSProtection: boolean;
|
|
5045
|
+
value?: string;
|
|
5046
|
+
};
|
|
5047
|
+
referrerPolicy: {
|
|
5048
|
+
hasReferrerPolicy: boolean;
|
|
5049
|
+
value?: string;
|
|
5050
|
+
};
|
|
5051
|
+
permissionsPolicy: {
|
|
5052
|
+
hasPermissionsPolicy: boolean;
|
|
5053
|
+
policy?: string;
|
|
5054
|
+
};
|
|
5055
|
+
issues: AuditIssue[];
|
|
5056
|
+
grade: 'A+' | 'A' | 'B' | 'C' | 'D' | 'F';
|
|
5057
|
+
}
|
|
5058
|
+
/**
|
|
5059
|
+
* Analyze security headers
|
|
5060
|
+
*/
|
|
5061
|
+
declare function analyzeSecurityHeaders(headers: Record<string, string>, url: string): SecurityHeadersResult;
|
|
5062
|
+
/**
|
|
5063
|
+
* Generate recommended security headers
|
|
5064
|
+
*/
|
|
5065
|
+
declare function generateSecurityHeaders(siteUrl: string): Record<string, string>;
|
|
5066
|
+
|
|
5067
|
+
/**
|
|
5068
|
+
* Core Web Vitals Analyzer
|
|
5069
|
+
*
|
|
5070
|
+
* Estimates Core Web Vitals from HTML analysis without actual page load.
|
|
5071
|
+
* Identifies common issues that impact LCP, FID, CLS, INP, and TTFB.
|
|
5072
|
+
*/
|
|
5073
|
+
|
|
5074
|
+
interface CoreWebVitalsEstimate {
|
|
5075
|
+
lcp: {
|
|
5076
|
+
estimate: 'good' | 'needs-improvement' | 'poor' | 'unknown';
|
|
5077
|
+
issues: string[];
|
|
5078
|
+
recommendations: string[];
|
|
5079
|
+
};
|
|
5080
|
+
fid: {
|
|
5081
|
+
estimate: 'good' | 'needs-improvement' | 'poor' | 'unknown';
|
|
5082
|
+
issues: string[];
|
|
5083
|
+
recommendations: string[];
|
|
5084
|
+
};
|
|
5085
|
+
cls: {
|
|
5086
|
+
estimate: 'good' | 'needs-improvement' | 'poor' | 'unknown';
|
|
5087
|
+
issues: string[];
|
|
5088
|
+
recommendations: string[];
|
|
5089
|
+
};
|
|
5090
|
+
inp: {
|
|
5091
|
+
estimate: 'good' | 'needs-improvement' | 'poor' | 'unknown';
|
|
5092
|
+
issues: string[];
|
|
5093
|
+
recommendations: string[];
|
|
5094
|
+
};
|
|
5095
|
+
ttfb: {
|
|
5096
|
+
estimate: 'good' | 'needs-improvement' | 'poor' | 'unknown';
|
|
5097
|
+
issues: string[];
|
|
5098
|
+
recommendations: string[];
|
|
5099
|
+
};
|
|
5100
|
+
overallScore: number;
|
|
5101
|
+
issues: AuditIssue[];
|
|
5102
|
+
}
|
|
5103
|
+
/**
|
|
5104
|
+
* Main Core Web Vitals analysis function
|
|
5105
|
+
*/
|
|
5106
|
+
declare function analyzeCoreWebVitals(html: string, url: string, headers?: Record<string, string>): CoreWebVitalsEstimate;
|
|
5107
|
+
|
|
5108
|
+
/**
|
|
5109
|
+
* GEO (Generative Engine Optimization) Analyzer
|
|
5110
|
+
*
|
|
5111
|
+
* Industry-first analyzer for AI search visibility.
|
|
5112
|
+
* Checks if your site is optimized for ChatGPT, Perplexity, Claude, and other AI search engines.
|
|
5113
|
+
*
|
|
5114
|
+
* Features:
|
|
5115
|
+
* - AI crawler accessibility detection
|
|
5116
|
+
* - LLM-friendly content structure analysis
|
|
5117
|
+
* - Citation-optimized formatting
|
|
5118
|
+
* - Entity and fact extraction readiness
|
|
5119
|
+
* - AI search ranking factors
|
|
5120
|
+
*/
|
|
5121
|
+
|
|
5122
|
+
interface GEOAnalysisResult {
|
|
5123
|
+
score: number;
|
|
5124
|
+
aiCrawlerAccess: AIAccessResult;
|
|
5125
|
+
contentStructure: ContentStructureResult;
|
|
5126
|
+
citationReadiness: CitationResult;
|
|
5127
|
+
entityExtraction: EntityResult;
|
|
5128
|
+
llmSignals: LLMSignalResult;
|
|
5129
|
+
issues: AuditIssue[];
|
|
5130
|
+
recommendations: string[];
|
|
5131
|
+
}
|
|
5132
|
+
interface AIAccessResult {
|
|
5133
|
+
robotsTxtAllowsAI: boolean;
|
|
5134
|
+
blockedCrawlers: string[];
|
|
5135
|
+
allowedCrawlers: string[];
|
|
5136
|
+
hasPrerendering: boolean;
|
|
5137
|
+
jsRenderingRequired: boolean;
|
|
5138
|
+
serverSideRendered: boolean;
|
|
5139
|
+
}
|
|
5140
|
+
interface ContentStructureResult {
|
|
5141
|
+
hasStructuredData: boolean;
|
|
5142
|
+
hasFAQSchema: boolean;
|
|
5143
|
+
hasHowToSchema: boolean;
|
|
5144
|
+
hasArticleSchema: boolean;
|
|
5145
|
+
hasProductSchema: boolean;
|
|
5146
|
+
hasBreadcrumbs: boolean;
|
|
5147
|
+
headingHierarchy: 'good' | 'needs-work' | 'poor';
|
|
5148
|
+
contentSections: number;
|
|
5149
|
+
listsAndTables: number;
|
|
5150
|
+
}
|
|
5151
|
+
interface CitationResult {
|
|
5152
|
+
hasCitations: boolean;
|
|
5153
|
+
hasExternalLinks: boolean;
|
|
5154
|
+
hasStatistics: boolean;
|
|
5155
|
+
hasQuotes: boolean;
|
|
5156
|
+
hasAuthorInfo: boolean;
|
|
5157
|
+
hasPublishDate: boolean;
|
|
5158
|
+
hasLastModified: boolean;
|
|
5159
|
+
trustSignals: string[];
|
|
5160
|
+
}
|
|
5161
|
+
interface EntityResult {
|
|
5162
|
+
namedEntities: string[];
|
|
5163
|
+
definedTerms: string[];
|
|
5164
|
+
hasDefinitions: boolean;
|
|
5165
|
+
hasComparisons: boolean;
|
|
5166
|
+
questionAnswerPairs: number;
|
|
5167
|
+
}
|
|
5168
|
+
interface LLMSignalResult {
|
|
5169
|
+
contentClarity: number;
|
|
5170
|
+
factDensity: number;
|
|
5171
|
+
structureQuality: number;
|
|
5172
|
+
citationQuality: number;
|
|
5173
|
+
overallLLMFriendliness: number;
|
|
5174
|
+
}
|
|
5175
|
+
/**
|
|
5176
|
+
* Analyze robots.txt for AI crawler permissions
|
|
5177
|
+
*/
|
|
5178
|
+
declare function analyzeRobotsTxtForAI(robotsTxt: string): {
|
|
5179
|
+
allowed: string[];
|
|
5180
|
+
blocked: string[];
|
|
5181
|
+
recommendations: string[];
|
|
5182
|
+
};
|
|
5183
|
+
/**
|
|
5184
|
+
* Detect if page is server-side rendered or requires JS
|
|
5185
|
+
*/
|
|
5186
|
+
declare function detectRenderingMode(html: string): {
|
|
5187
|
+
serverSideRendered: boolean;
|
|
5188
|
+
jsRenderingRequired: boolean;
|
|
5189
|
+
hasPrerendering: boolean;
|
|
5190
|
+
contentInHTML: boolean;
|
|
5191
|
+
signals: string[];
|
|
5192
|
+
};
|
|
5193
|
+
/**
|
|
5194
|
+
* Analyze content structure for LLM consumption
|
|
5195
|
+
*/
|
|
5196
|
+
declare function analyzeContentStructure(html: string): ContentStructureResult;
|
|
5197
|
+
/**
|
|
5198
|
+
* Analyze citation readiness (trust signals for AI)
|
|
5199
|
+
*/
|
|
5200
|
+
declare function analyzeCitationReadiness(html: string): CitationResult;
|
|
5201
|
+
/**
|
|
5202
|
+
* Extract entities and structured information
|
|
5203
|
+
*/
|
|
5204
|
+
declare function analyzeEntityExtraction(html: string): EntityResult;
|
|
5205
|
+
/**
|
|
5206
|
+
* Calculate LLM-friendliness signals
|
|
5207
|
+
*/
|
|
5208
|
+
declare function calculateLLMSignals(structure: ContentStructureResult, citation: CitationResult, entity: EntityResult, html: string): LLMSignalResult;
|
|
5209
|
+
/**
|
|
5210
|
+
* Main GEO analysis function
|
|
5211
|
+
*/
|
|
5212
|
+
declare function analyzeGEO(html: string, url: string, robotsTxt?: string): Promise<GEOAnalysisResult>;
|
|
5213
|
+
/**
|
|
5214
|
+
* Generate AI-optimized robots.txt
|
|
5215
|
+
*/
|
|
5216
|
+
declare function generateAIFriendlyRobotsTxt(siteUrl: string): string;
|
|
5217
|
+
declare const AI_CRAWLERS_INFO: {
|
|
5218
|
+
GPTBot: {
|
|
5219
|
+
userAgent: string;
|
|
5220
|
+
company: string;
|
|
5221
|
+
purpose: string;
|
|
5222
|
+
};
|
|
5223
|
+
ChatGPTUser: {
|
|
5224
|
+
userAgent: string;
|
|
5225
|
+
company: string;
|
|
5226
|
+
purpose: string;
|
|
5227
|
+
};
|
|
5228
|
+
OAI_SearchBot: {
|
|
5229
|
+
userAgent: string;
|
|
5230
|
+
company: string;
|
|
5231
|
+
purpose: string;
|
|
5232
|
+
};
|
|
5233
|
+
ClaudeBot: {
|
|
5234
|
+
userAgent: string;
|
|
5235
|
+
company: string;
|
|
5236
|
+
purpose: string;
|
|
5237
|
+
};
|
|
5238
|
+
anthropic_ai: {
|
|
5239
|
+
userAgent: string;
|
|
5240
|
+
company: string;
|
|
5241
|
+
purpose: string;
|
|
5242
|
+
};
|
|
5243
|
+
PerplexityBot: {
|
|
5244
|
+
userAgent: string;
|
|
5245
|
+
company: string;
|
|
5246
|
+
purpose: string;
|
|
5247
|
+
};
|
|
5248
|
+
GoogleOther: {
|
|
5249
|
+
userAgent: string;
|
|
5250
|
+
company: string;
|
|
5251
|
+
purpose: string;
|
|
5252
|
+
};
|
|
5253
|
+
Bingbot: {
|
|
5254
|
+
userAgent: string;
|
|
5255
|
+
company: string;
|
|
5256
|
+
purpose: string;
|
|
5257
|
+
};
|
|
5258
|
+
FacebookBot: {
|
|
5259
|
+
userAgent: string;
|
|
5260
|
+
company: string;
|
|
5261
|
+
purpose: string;
|
|
5262
|
+
};
|
|
5263
|
+
MetaAI: {
|
|
5264
|
+
userAgent: string;
|
|
5265
|
+
company: string;
|
|
5266
|
+
purpose: string;
|
|
5267
|
+
};
|
|
5268
|
+
Applebot: {
|
|
5269
|
+
userAgent: string;
|
|
5270
|
+
company: string;
|
|
5271
|
+
purpose: string;
|
|
5272
|
+
};
|
|
5273
|
+
Amazonbot: {
|
|
5274
|
+
userAgent: string;
|
|
5275
|
+
company: string;
|
|
5276
|
+
purpose: string;
|
|
5277
|
+
};
|
|
5278
|
+
YouBot: {
|
|
5279
|
+
userAgent: string;
|
|
5280
|
+
company: string;
|
|
5281
|
+
purpose: string;
|
|
5282
|
+
};
|
|
5283
|
+
CCBot: {
|
|
5284
|
+
userAgent: string;
|
|
5285
|
+
company: string;
|
|
5286
|
+
purpose: string;
|
|
5287
|
+
};
|
|
5288
|
+
cohere_ai: {
|
|
5289
|
+
userAgent: string;
|
|
5290
|
+
company: string;
|
|
5291
|
+
purpose: string;
|
|
5292
|
+
};
|
|
5293
|
+
};
|
|
5294
|
+
|
|
5295
|
+
/**
|
|
5296
|
+
* Comprehensive SEO Analysis
|
|
5297
|
+
*
|
|
5298
|
+
* Runs all analyzers and produces a unified report.
|
|
5299
|
+
*/
|
|
5300
|
+
interface ComprehensiveSEOResult {
|
|
5301
|
+
url: string;
|
|
5302
|
+
timestamp: string;
|
|
5303
|
+
overallScore: number;
|
|
5304
|
+
grades: {
|
|
5305
|
+
geo: number;
|
|
5306
|
+
coreWebVitals: number;
|
|
5307
|
+
security: string;
|
|
5308
|
+
structuredData: number;
|
|
5309
|
+
images: number;
|
|
5310
|
+
internalLinking: number;
|
|
5311
|
+
mobile: number;
|
|
5312
|
+
};
|
|
5313
|
+
geo: GEOAnalysisResult;
|
|
5314
|
+
coreWebVitals: CoreWebVitalsEstimate;
|
|
5315
|
+
security: SecurityHeadersResult;
|
|
5316
|
+
structuredData: StructuredDataResult;
|
|
5317
|
+
images: ImageAnalysisResult;
|
|
5318
|
+
internalLinking: InternalLinkingResult;
|
|
5319
|
+
mobile: MobileSEOResult;
|
|
5320
|
+
allIssues: AuditIssue[];
|
|
5321
|
+
prioritizedRecommendations: string[];
|
|
5322
|
+
}
|
|
5323
|
+
/**
|
|
5324
|
+
* Run comprehensive SEO analysis
|
|
5325
|
+
*/
|
|
5326
|
+
declare function analyzeComprehensive(html: string, url: string, options?: {
|
|
5327
|
+
robotsTxt?: string;
|
|
5328
|
+
headers?: Record<string, string>;
|
|
5329
|
+
}): Promise<ComprehensiveSEOResult>;
|
|
5330
|
+
|
|
5331
|
+
type index$1_AIAccessResult = AIAccessResult;
|
|
5332
|
+
declare const index$1_AI_CRAWLERS_INFO: typeof AI_CRAWLERS_INFO;
|
|
5333
|
+
type index$1_AnchorTextStats = AnchorTextStats;
|
|
5334
|
+
type index$1_CitationResult = CitationResult;
|
|
5335
|
+
type index$1_ComprehensiveSEOResult = ComprehensiveSEOResult;
|
|
5336
|
+
type index$1_ContentStructureResult = ContentStructureResult;
|
|
5337
|
+
type index$1_ContentWidthAnalysis = ContentWidthAnalysis;
|
|
5338
|
+
type index$1_CoreWebVitalsEstimate = CoreWebVitalsEstimate;
|
|
5339
|
+
type index$1_EntityResult = EntityResult;
|
|
5340
|
+
type index$1_FontSizeAnalysis = FontSizeAnalysis;
|
|
5341
|
+
type index$1_GEOAnalysisResult = GEOAnalysisResult;
|
|
5342
|
+
type index$1_ImageAnalysisResult = ImageAnalysisResult;
|
|
5343
|
+
type index$1_ImageInfo = ImageInfo;
|
|
5344
|
+
type index$1_InternalLinkingResult = InternalLinkingResult;
|
|
5345
|
+
type index$1_LLMSignalResult = LLMSignalResult;
|
|
5346
|
+
type index$1_LinkInfo = LinkInfo;
|
|
5347
|
+
type index$1_MobileSEOResult = MobileSEOResult;
|
|
5348
|
+
type index$1_MobileSpecificAnalysis = MobileSpecificAnalysis;
|
|
5349
|
+
type index$1_SchemaItem = SchemaItem;
|
|
5350
|
+
type index$1_SecurityHeadersResult = SecurityHeadersResult;
|
|
5351
|
+
type index$1_StructuredDataResult = StructuredDataResult;
|
|
5352
|
+
type index$1_TouchTargetAnalysis = TouchTargetAnalysis;
|
|
5353
|
+
type index$1_ViewportAnalysis = ViewportAnalysis;
|
|
5354
|
+
declare const index$1_analyzeCitationReadiness: typeof analyzeCitationReadiness;
|
|
5355
|
+
declare const index$1_analyzeComprehensive: typeof analyzeComprehensive;
|
|
5356
|
+
declare const index$1_analyzeContentStructure: typeof analyzeContentStructure;
|
|
5357
|
+
declare const index$1_analyzeCoreWebVitals: typeof analyzeCoreWebVitals;
|
|
5358
|
+
declare const index$1_analyzeEntityExtraction: typeof analyzeEntityExtraction;
|
|
5359
|
+
declare const index$1_analyzeGEO: typeof analyzeGEO;
|
|
5360
|
+
declare const index$1_analyzeImages: typeof analyzeImages;
|
|
5361
|
+
declare const index$1_analyzeInternalLinking: typeof analyzeInternalLinking;
|
|
5362
|
+
declare const index$1_analyzeMobileSEO: typeof analyzeMobileSEO;
|
|
5363
|
+
declare const index$1_analyzeRobotsTxtForAI: typeof analyzeRobotsTxtForAI;
|
|
5364
|
+
declare const index$1_analyzeSecurityHeaders: typeof analyzeSecurityHeaders;
|
|
5365
|
+
declare const index$1_analyzeStructuredData: typeof analyzeStructuredData;
|
|
5366
|
+
declare const index$1_calculateLLMSignals: typeof calculateLLMSignals;
|
|
5367
|
+
declare const index$1_detectRenderingMode: typeof detectRenderingMode;
|
|
5368
|
+
declare const index$1_generateAIFriendlyRobotsTxt: typeof generateAIFriendlyRobotsTxt;
|
|
5369
|
+
declare const index$1_generateResponsiveImage: typeof generateResponsiveImage;
|
|
5370
|
+
declare const index$1_generateSchemaTemplate: typeof generateSchemaTemplate;
|
|
5371
|
+
declare const index$1_generateSecurityHeaders: typeof generateSecurityHeaders;
|
|
5372
|
+
declare const index$1_suggestInternalLinks: typeof suggestInternalLinks;
|
|
5373
|
+
declare namespace index$1 {
|
|
5374
|
+
export { type index$1_AIAccessResult as AIAccessResult, index$1_AI_CRAWLERS_INFO as AI_CRAWLERS_INFO, type index$1_AnchorTextStats as AnchorTextStats, type index$1_CitationResult as CitationResult, type index$1_ComprehensiveSEOResult as ComprehensiveSEOResult, type index$1_ContentStructureResult as ContentStructureResult, type index$1_ContentWidthAnalysis as ContentWidthAnalysis, type index$1_CoreWebVitalsEstimate as CoreWebVitalsEstimate, type index$1_EntityResult as EntityResult, type index$1_FontSizeAnalysis as FontSizeAnalysis, type index$1_GEOAnalysisResult as GEOAnalysisResult, type index$1_ImageAnalysisResult as ImageAnalysisResult, type index$1_ImageInfo as ImageInfo, type index$1_InternalLinkingResult as InternalLinkingResult, type index$1_LLMSignalResult as LLMSignalResult, type index$1_LinkInfo as LinkInfo, type index$1_MobileSEOResult as MobileSEOResult, type index$1_MobileSpecificAnalysis as MobileSpecificAnalysis, type index$1_SchemaItem as SchemaItem, type index$1_SecurityHeadersResult as SecurityHeadersResult, type index$1_StructuredDataResult as StructuredDataResult, type index$1_TouchTargetAnalysis as TouchTargetAnalysis, type index$1_ViewportAnalysis as ViewportAnalysis, index$1_analyzeCitationReadiness as analyzeCitationReadiness, index$1_analyzeComprehensive as analyzeComprehensive, index$1_analyzeContentStructure as analyzeContentStructure, index$1_analyzeCoreWebVitals as analyzeCoreWebVitals, index$1_analyzeEntityExtraction as analyzeEntityExtraction, index$1_analyzeGEO as analyzeGEO, index$1_analyzeImages as analyzeImages, index$1_analyzeInternalLinking as analyzeInternalLinking, index$1_analyzeMobileSEO as analyzeMobileSEO, index$1_analyzeRobotsTxtForAI as analyzeRobotsTxtForAI, index$1_analyzeSecurityHeaders as analyzeSecurityHeaders, index$1_analyzeStructuredData as analyzeStructuredData, index$1_calculateLLMSignals as calculateLLMSignals, index$1_detectRenderingMode as detectRenderingMode, index$1_generateAIFriendlyRobotsTxt as generateAIFriendlyRobotsTxt, index$1_generateResponsiveImage as generateResponsiveImage, index$1_generateSchemaTemplate as generateSchemaTemplate, index$1_generateSecurityHeaders as generateSecurityHeaders, index$1_suggestInternalLinks as suggestInternalLinks };
|
|
5375
|
+
}
|
|
5376
|
+
|
|
3886
5377
|
/**
|
|
3887
5378
|
* Framework Detection
|
|
3888
5379
|
*
|
|
3889
5380
|
* Detects web frameworks from:
|
|
3890
5381
|
* 1. HTML signatures (data attributes, meta tags, scripts)
|
|
3891
|
-
* 2. package.json
|
|
5382
|
+
* 2. package.json / Gemfile / requirements.txt / composer.json / etc.
|
|
3892
5383
|
* 3. File structure patterns
|
|
5384
|
+
* 4. HTTP response headers
|
|
5385
|
+
*
|
|
5386
|
+
* Supports 25+ frameworks across JavaScript, Ruby, Python, PHP, Java, C#, Go, and Elixir.
|
|
3893
5387
|
*/
|
|
3894
|
-
type Framework = 'react' | 'nextjs' | 'vue' | 'nuxt' | 'angular' | 'svelte' | 'sveltekit' | 'astro' | 'remix' | 'gatsby' | 'rails' | 'laravel' | '
|
|
5388
|
+
type Framework = 'react' | 'nextjs' | 'vue' | 'nuxt' | 'angular' | 'svelte' | 'sveltekit' | 'astro' | 'remix' | 'gatsby' | 'solidjs' | 'qwik' | 'fresh' | 'rails' | 'django' | 'flask' | 'fastapi' | 'laravel' | 'symfony' | 'wordpress' | 'spring' | 'aspnet' | 'go' | 'phoenix' | 'htmx' | 'hotwire' | 'hugo' | 'jekyll' | 'eleventy' | 'pelican' | 'unknown';
|
|
5389
|
+
type Language = 'javascript' | 'typescript' | 'ruby' | 'python' | 'php' | 'java' | 'csharp' | 'go' | 'elixir' | 'rust' | 'unknown';
|
|
3895
5390
|
interface FrameworkInfo {
|
|
3896
5391
|
framework: Framework;
|
|
3897
5392
|
version?: string;
|
|
5393
|
+
language: Language;
|
|
3898
5394
|
confidence: 'high' | 'medium' | 'low';
|
|
3899
|
-
detected_from: 'html' | 'package.json' | 'files' | 'headers';
|
|
5395
|
+
detected_from: 'html' | 'package.json' | 'files' | 'headers' | 'gemfile' | 'requirements' | 'composer' | 'pom' | 'csproj' | 'go.mod' | 'mix.exs';
|
|
3900
5396
|
meta_framework?: Framework;
|
|
3901
5397
|
}
|
|
3902
5398
|
/**
|
|
@@ -3904,7 +5400,7 @@ interface FrameworkInfo {
|
|
|
3904
5400
|
*/
|
|
3905
5401
|
declare function detectFromHtml(html: string): FrameworkInfo | null;
|
|
3906
5402
|
/**
|
|
3907
|
-
* Detect framework from package.json content
|
|
5403
|
+
* Detect framework from package.json content (JavaScript/TypeScript)
|
|
3908
5404
|
*/
|
|
3909
5405
|
declare function detectFromPackageJson(packageJson: {
|
|
3910
5406
|
dependencies?: Record<string, string>;
|
|
@@ -3923,6 +5419,16 @@ declare function detectFramework(options: {
|
|
|
3923
5419
|
dependencies?: Record<string, string>;
|
|
3924
5420
|
devDependencies?: Record<string, string>;
|
|
3925
5421
|
};
|
|
5422
|
+
composerJson?: {
|
|
5423
|
+
require?: Record<string, string>;
|
|
5424
|
+
'require-dev'?: Record<string, string>;
|
|
5425
|
+
};
|
|
5426
|
+
gemfileContent?: string;
|
|
5427
|
+
requirementsContent?: string;
|
|
5428
|
+
pomXmlContent?: string;
|
|
5429
|
+
csprojContent?: string;
|
|
5430
|
+
goModContent?: string;
|
|
5431
|
+
mixExsContent?: string;
|
|
3926
5432
|
headers?: Record<string, string>;
|
|
3927
5433
|
files?: string[];
|
|
3928
5434
|
}): FrameworkInfo;
|
|
@@ -4101,4 +5607,4 @@ interface SyncAuditResult {
|
|
|
4101
5607
|
*/
|
|
4102
5608
|
declare function runSyncAudit(url: string, html: string, checksLimit: number): SyncAuditResult;
|
|
4103
5609
|
|
|
4104
|
-
export { type AIContentConfig, type AIKeywordResearchOptions, type AgentDefinition, type AgentTool, type AlertChannel, type AlertConfig, type AlertMessage, type AlertResult, type AlertSeverity, type AlertType, type AuditAlertPayload, type AuditIssue, type AuditIssueData, type AuditOptions, type AuditPRResult, type AuditReport, type AuditReportData, type AuditRunnerOptions, type AuditRunnerResult, type AuditSchedule, type BlogPostConfig, type BrandConfig, type CIAction, type CIKeywordOptions, type CIKeywordResult, COMMIT_TYPES, type ChangelogConfig, type ChangelogResult, type CitationCheckOptions, type CommitConfig, type ComparisonConfig, type ComparisonRow, type CompetitiveInsight, type CompetitiveSearchOptions, type CompetitiveSearchResult, type CompetitorComparison, type CompetitorKeywordResult, type CompetitorOverlap, type CompetitorTool, type ContentElements, type ContentGeneratorOptions, type ContentRecommendation, type ConventionalCommit, type CrawlResult, type CrawlStats, type CrawledPage, type CreateAuditPROptions, type CreatePROptions, type DataForSEOCredentials, type DiscoveredPage, type EnhancedToolIdea, type ExecOptions, type ExecuteOptions, type ExecutionResult, type FAQItem, type FAQSchemaOptions, type FeaturedSnippetAnalysis, type Fix, type FixFile, type FixGeneratorOptions, type FixResult, type FrameworkInfo$1 as FrameworkInfo, type FreeKeywordResult, type FreeToolIdea, type GA4Config, type GEOAlert, type GEOAlertType, type GEOHistory, type GEOHistoryOptions, type GEOQuery, type GEOReport, type GEOResult, type GEOTrend, type GSCConfig, type GSCCredentials, type GSCPerformanceData, type GSCQueryData, type GSCQueryResult, type GeneratedCode, type GeneratedContent, type GeneratedFix, type HeadingStructure, type HeadlineAnalysis, type HealthScore, ISSUE_DEFINITIONS, type ImageInfo$
|
|
5610
|
+
export { type AIContentConfig, type AIKeywordResearchOptions, type AgentDefinition, type AgentTool, type AlertChannel, type AlertConfig, type AlertMessage, type AlertResult, type AlertSeverity, type AlertType, type AuditAlertPayload, type AuditIssue, type AuditIssueData, type AuditOptions, type AuditPRResult, type AuditReport, type AuditReportData, type AuditRunnerOptions, type AuditRunnerResult, type AuditSchedule, type BlogPostConfig, type BrandConfig, type CIAction, type CIKeywordOptions, type CIKeywordResult, COMMIT_TYPES, type ChangelogConfig, type ChangelogResult, type CitationCheckOptions, type CommitConfig, type ComparisonConfig, type ComparisonRow, type CompetitiveInsight, type CompetitiveSearchOptions, type CompetitiveSearchResult, type CompetitorComparison, type CompetitorKeywordResult, type CompetitorOverlap, type CompetitorTool, type ContentElements, type ContentGeneratorOptions, type ContentRecommendation, type ConventionalCommit, type CrawlResult, type CrawlStats, type CrawledPage, type CreateAuditPROptions, type CreatePROptions, type DataForSEOCredentials, type DiscoveredPage, type EnhancedToolIdea, type ExecOptions, type ExecuteOptions, type ExecutionResult, type FAQItem, type FAQSchemaOptions, type FeaturedSnippetAnalysis, type Fix, type FixFile, type FixGeneratorOptions, type FixResult, type FrameworkInfo$1 as FrameworkInfo, type FreeKeywordResult, type FreeToolIdea, type GA4Config, type GEOAlert, type GEOAlertType, type GEOHistory, type GEOHistoryOptions, type GEOQuery, type GEOReport, type GEOResult, type GEOTrend, type GSCConfig, type GSCCredentials, type GSCPerformanceData, type GSCQueryData, type GSCQueryResult, type GeneratedCode, type GeneratedContent, type GeneratedFix, type HeadingStructure, type HeadlineAnalysis, type HealthScore, ISSUE_DEFINITIONS, type ImageInfo$2 as ImageInfo, type InjectionResult, type IntentAnalysis, type IssueCategory, type IssueDefinition, type IssueSeverity, type KeyFact, type KeyFactsOptions, type KeywordAction, type KeywordCluster, type KeywordData, type KeywordDensityAnalysis, type KeywordOpportunity, type KeywordRecommendation, type KeywordResearchOptions, type KeywordResearchResult, type KeywordStats, type KeywordTopic, type LLMCitationResult, type LLMJudgeOptions, type LLMProvider, LOCATION_CODES, type LSIKeyword, type LinkInfo$1 as LinkInfo, type Mention, type MentionType, type MetaData, type MetaFixOptions, type NGram, type NLPAnalysisResult, OG_IMAGE_SPECS, type OptimizeOptions, type PRConfig, type PRDescription, PRIORITY_WEIGHTS, type PRResult, type PageAudit, type PageData, type PageMeta, type PaidKeywordResult, type ParsedResponse, type PlanTier, type ProviderStats, type QuickWin, type ReadabilityResult, type ReadmeConfig, type ReadmeResult, type ReportBranding, type ReportConfig, type ReportData, type ReportPageData, type RouteInfo, type SEOAnalysisResult, type SEOFixCommit, type SEOFixSummary, type SEOIssue, type SEORecommendation, type SEOScore, SEO_SCOPES, SITE_PROFILE_QUESTIONS, type ScheduledAuditConfig, type ScheduledAuditResult, type SchemaData, Schemas, type SearchIntent, type Sentiment, type SiteCrawlResult, type SiteProfile, type SiteSummary, type SnippetRecommendation, type SnippetType, type SocialMetaConfig, type SocialMetaFix, type SummarizerOptions, type TFIDFResult, type ToolFeasibilityScore, type ToolFunction, type ToolResult, type TopicClusterResult, type TopicModel, type TrackingOptions, type TrendDirection, type UncertaintyAssessment, type WizardQuestion, type WizardResponse, type WizardResult, type WizardSession, type WorkflowConfig, addTrackingResult, analyzeAnchorText, analyzeCanonicalAdvanced, analyzeClientRendering, analyzeContentFreshness, analyzeConversionElements, analyzeDOMStructure, analyzeEntitySEO, analyzeFeaturedSnippetPotential, analyzeFreshnessSignals, analyzeFunnelIntent, analyzeHeadings, analyzeHeadline, analyzeHreflang, analyzeImages$1 as analyzeImages, analyzeInteractiveTools, analyzeKeywordDensity, analyzeKeywordPlacement, analyzeKeywords, analyzeLinks, analyzeLocalSEO, analyzeMobile, analyzeModernImages, analyzeNavBoostSignals, analyzeOnPage, analyzePagination, analyzePerformance, analyzePlatformPresence, analyzeReadability, analyzeRedirectChain, analyzeRedirects, analyzeResponsiveImages, analyzeSERPPreview, analyzeSecurity, analyzeSecurityHeaders$1 as analyzeSecurityHeaders, analyzeSocialMeta, analyzeStructuredData$1 as analyzeStructuredData, analyzeTopicalClusters, analyzeTrackerBloat, analyzeUrl, analyzeUrlSafety, index$1 as analyzers, applyFixes, buildGSCApiRequest, buildGSCRequest, calculateAIVisibilityScore, calculateBM25, calculateTFIDF$1 as calculateKeywordTFIDF, calculateNextRun, calculateTFIDF, checkAIBotBlocking, checkAMP, checkAdsTxt, checkAppleTouchIcon, checkBalance, checkCertificate, checkDMARC, checkGitHubCLI, checkInternalRedirects, checkJSRenderingRatio, checkLLMCitations, checkLlmsTxt, checkMobileResources, checkPlaintextEmails, checkRedirects, checkRobots, checkRobotsTxt, checkSPF, checkSitemap, classifyIntent, classifyIntents, clusterKeywordsByEmbedding, compareCompetitorVisibility, comparePeriods, completeWizard, crawlSite, crawlUrl, createAuditPR, createFallbackSummary, createGEOHistory, createPullRequest, createSEOCommit, createSEOCommits, detectDuplicates, detectFramework$1 as detectFramework, detectGitHubPages, detectMentions, detectSoft404, detectTechnologies, detectVisibilityChanges, discoverCompetitorKeywords, discoverPagesFromLinks, discoverRoutesFromRepo, enhanceSummaryWithCompetitors, enhanceToolIdea, enrichKeywordsWithEstimates, ensureGitRepo, evaluateAndEnhanceToolIdeas, evaluateToolFeasibility, executeAgent, extractContentHash, extractEntityPhrases, extractImages, extractKeyPhrases, extractLinks, extractMeta, extractNgrams, extractSchema, extractSeedKeywords, extractTopics, fetchCoreWebVitals, findAlmostPage1Keywords, findCTROpportunities, findHtmlEntry, findLSIKeywords, findPageFiles, findTopPerformers, formatAlertMessage, formatCIResult, formatCompetitorReport, formatConventionalCommit, formatFeaturedSnippetReport, formatHeadlineReport, formatIntentReport, formatKeywordDensityReport, formatKeywordReport, formatPRBody, formatPRTitle, formatReadabilityReport, formatReport, formatSEOCommitMessage, formatTopicReport, formatWizardProgress, index as frameworks, generateAICitableContent, generateAllFixes, generateAngularSEOService, generateAspNetCoreSEO, generateAstroBaseHead, generateAstroMeta, generateBlogPost, generateBranchName, generateChangelog, generateCommitSummary, generateComparisonTable, generateCompleteSocialMetaSetup, generateDjangoSEOHelper, generateDuplicateIssues, generateEleventySEO, generateFAQSchema, generateFixes, generateGA4EnvTemplate, generateGA4ReactComponent, generateGA4Script, generateGA4ViteScript, generateGEOReport, generateGSCVerificationTag, generateGitHubActionSetup, generateGoSEO, generateHTMLReport, generateHTMLSocialMeta, generateHTMXSEO, generateHeadlineVariations, generateHugoSEO, generateJekyllSEO, generateJsonReport, generateKeyFacts, generateLaravelSEOHelper, generateMarkdownReport, generateNextAppMetadata, generateNextJsAppRouterMetadata, generateNextJsPagesRouterHead, generateNextPagesHead, generateNuxtSEOHead, generatePDFReport, generatePRDescription, generatePhoenixSEO, generateRailsSEOHelper, generateReactHelmetSocialMeta, generateReactSEOHead, generateRecommendationQueries, generateRemixMeta, generateRemixSEO, generateSecretsDoc, generateSocialMetaFix, generateSpringBootSEO, generateSvelteKitMeta, generateSvelteKitSEOHead, generateUncertaintyQuestions, generateVueSEOHead, generateWizardQuestions, generateWorkflow, getAIVisibilitySummary, getAutocompleteSuggestions, getDateRange, getExpandedSuggestions, getFrameworkSpecificFix, getFrameworkSpecificFixExtended, getGSCSetupInstructions, getGitUser, getKeywordData, getKeywordSuggestions, getMaxKdThreshold, getNextQuestion, getRelatedKeywords, getVisibilityTrend, groupKeywordsByTopic, identifyQuickWins, injectGA4, injectGSCVerification, interpolatePrompt, isGitRepo, listFiles, loadAgent, loadAgentByName, mergePages, optimizeForAI, optimizeReadme, parseGEOResponse, parseGSCResponse, parseSitemap, prioritizeKeywords, processWizardResponse, readFile, routesToUrls, runAIKeywordResearch, runAIReadinessChecks, runAdditionalChecks, runAuditWithFixes, runCIKeywordResearch, runCrawlabilityChecks, runDirectAnalysis, runFullAudit, runKeywordResearch, runNLPAnalysis, runScheduledAudit, runSyncAudit, scoreContentSEO, scoreMention, searchCompetitors, searchFormatConverters, searchHackerNews, sendAlert, sendAlerts, sendDiscordAlert, sendSlackAlert, shouldRunAudit, shouldSendAlert, startWizardSession, suggestSchemaTypes, summarizeSite, tokenize, tools, trackLLMVisibility, transformGSCData, urlSafetyDatabase, wizardResponsesToContext, writeFile, writeGitHubActionFiles };
|