@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.
Files changed (49) hide show
  1. package/README.md +90 -196
  2. package/dist/analyzer-GMURJADU.mjs +7 -0
  3. package/dist/chunk-2JADKV3Z.mjs +244 -0
  4. package/dist/chunk-3ZSCLNTW.mjs +557 -0
  5. package/dist/chunk-4E4MQOSP.mjs +374 -0
  6. package/dist/chunk-6BWS3CLP.mjs +16 -0
  7. package/dist/chunk-AK2IC22C.mjs +206 -0
  8. package/dist/chunk-K6VSXDD6.mjs +293 -0
  9. package/dist/chunk-M27NQCWW.mjs +303 -0
  10. package/dist/{chunk-YNZYHEYM.mjs → chunk-PJLNXOLN.mjs} +0 -14
  11. package/dist/chunk-VSQD74I7.mjs +474 -0
  12. package/dist/core-web-vitals-analyzer-TE6LQJMS.mjs +7 -0
  13. package/dist/geo-analyzer-D47LTMMA.mjs +25 -0
  14. package/dist/image-optimization-analyzer-XP4OQGRP.mjs +9 -0
  15. package/dist/index.d.mts +1523 -17
  16. package/dist/index.d.ts +1523 -17
  17. package/dist/index.js +9582 -2664
  18. package/dist/index.mjs +4812 -380
  19. package/dist/internal-linking-analyzer-MRMBV7NM.mjs +9 -0
  20. package/dist/mobile-seo-analyzer-67HNQ7IO.mjs +7 -0
  21. package/dist/security-headers-analyzer-3ZUQARS5.mjs +9 -0
  22. package/dist/structured-data-analyzer-2I4NQAUP.mjs +9 -0
  23. package/package.json +2 -2
  24. package/src/analyzers/core-web-vitals-analyzer.test.ts +236 -0
  25. package/src/analyzers/core-web-vitals-analyzer.ts +557 -0
  26. package/src/analyzers/geo-analyzer.test.ts +310 -0
  27. package/src/analyzers/geo-analyzer.ts +814 -0
  28. package/src/analyzers/image-optimization-analyzer.test.ts +145 -0
  29. package/src/analyzers/image-optimization-analyzer.ts +348 -0
  30. package/src/analyzers/index.ts +233 -0
  31. package/src/analyzers/internal-linking-analyzer.test.ts +141 -0
  32. package/src/analyzers/internal-linking-analyzer.ts +419 -0
  33. package/src/analyzers/mobile-seo-analyzer.test.ts +140 -0
  34. package/src/analyzers/mobile-seo-analyzer.ts +455 -0
  35. package/src/analyzers/security-headers-analyzer.test.ts +115 -0
  36. package/src/analyzers/security-headers-analyzer.ts +318 -0
  37. package/src/analyzers/structured-data-analyzer.test.ts +210 -0
  38. package/src/analyzers/structured-data-analyzer.ts +590 -0
  39. package/src/audit/engine.ts +3 -3
  40. package/src/audit/types.ts +3 -2
  41. package/src/fixer/framework-fixes.test.ts +489 -0
  42. package/src/fixer/framework-fixes.ts +3418 -0
  43. package/src/fixer/index.ts +1 -0
  44. package/src/fixer/schemas.ts +971 -0
  45. package/src/frameworks/detector.ts +642 -114
  46. package/src/frameworks/suggestion-engine.ts +38 -1
  47. package/src/index.ts +6 -0
  48. package/src/types.ts +15 -1
  49. 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$1 {
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
- metaPattern: 'metadata-export' | 'head-component' | 'frontmatter' | 'meta-function' | 'html-head';
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 dependencies
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' | 'django' | 'wordpress' | 'unknown';
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$1 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, 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, 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, analyzeInteractiveTools, analyzeKeywordDensity, analyzeKeywordPlacement, analyzeKeywords, analyzeLinks, analyzeLocalSEO, analyzeMobile, analyzeModernImages, analyzeNavBoostSignals, analyzeOnPage, analyzePagination, analyzePerformance, analyzePlatformPresence, analyzeReadability, analyzeRedirectChain, analyzeRedirects, analyzeResponsiveImages, analyzeSERPPreview, analyzeSecurity, analyzeSecurityHeaders, analyzeSocialMeta, analyzeStructuredData, analyzeTopicalClusters, analyzeTrackerBloat, analyzeUrl, analyzeUrlSafety, 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, generateAstroBaseHead, generateAstroMeta, generateBlogPost, generateBranchName, generateChangelog, generateCommitSummary, generateComparisonTable, generateCompleteSocialMetaSetup, generateDuplicateIssues, generateFAQSchema, generateFixes, generateGA4EnvTemplate, generateGA4ReactComponent, generateGA4Script, generateGA4ViteScript, generateGEOReport, generateGSCVerificationTag, generateGitHubActionSetup, generateHTMLReport, generateHTMLSocialMeta, generateHeadlineVariations, generateJsonReport, generateKeyFacts, generateMarkdownReport, generateNextAppMetadata, generateNextJsAppRouterMetadata, generateNextJsPagesRouterHead, generateNextPagesHead, generateNuxtSEOHead, generatePDFReport, generatePRDescription, generateReactHelmetSocialMeta, generateReactSEOHead, generateRecommendationQueries, generateRemixMeta, generateSecretsDoc, generateSocialMetaFix, generateSvelteKitMeta, generateSvelteKitSEOHead, generateUncertaintyQuestions, generateVueSEOHead, generateWizardQuestions, generateWorkflow, getAIVisibilitySummary, getAutocompleteSuggestions, getDateRange, getExpandedSuggestions, getFrameworkSpecificFix, 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 };
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 };