seo 0.15.2 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -198,7 +198,7 @@ export interface PageFetchDiagnostics {
198
198
  };
199
199
  documentDifference?: RenderingDocumentDifference;
200
200
  browser?: {
201
- source: 'environment' | 'playwright-cache' | 'system';
201
+ source: 'environment' | 'playwright-cache' | 'agent-browser-cache' | 'system';
202
202
  product: string;
203
203
  version?: string;
204
204
  };
@@ -680,6 +680,19 @@ declare const RULE_DEFINITIONS: readonly [{
680
680
  readonly evidenceFields: ["page.wordCount", "page.contentSample", "page.outgoingInternalCount", "page.fetchDiagnostics.rendering"];
681
681
  readonly suggestedCommands: ["seo crawl <url> --max-pages 1 --json"];
682
682
  };
683
+ }, {
684
+ readonly id: "crawl_single_page_reach";
685
+ readonly title: "Crawl could reach only the start page";
686
+ readonly category: "links";
687
+ readonly defaultSeverity: "high";
688
+ readonly whyItMatters: "The start page had no crawlable internal links and no sitemap returned URLs, so the crawl checked one page. Every other finding in this report covers that page only. The page probably builds its links with JavaScript.";
689
+ readonly howToFix: "Rerun with `--rendering on` so the crawler reads the links a browser sees, or pass the pages to check with `--mode list`. For crawlers that do not run JavaScript, put plain `<a href>` links in the initial HTML and publish a sitemap.";
690
+ readonly impactIfIgnored: "Crawlers and audits that do not run JavaScript can find only this page, so the rest of the site stays unchecked and harder to discover.";
691
+ readonly howToVerify: "Rerun the crawl and confirm it retains more than one page and the start page reports internal links.";
692
+ readonly agentHints: {
693
+ readonly evidenceFields: ["page.outgoingInternalCount", "report.sitemapDiscovery.urlsReturned", "page.fetchDiagnostics.rendering"];
694
+ readonly suggestedCommands: ["seo crawl <url> --rendering on --json", "seo crawl --mode list --urls <url>,<url> --json"];
695
+ };
683
696
  }, {
684
697
  readonly id: "soft_404";
685
698
  readonly title: "Unknown URLs return a successful response";
@@ -688,7 +701,7 @@ declare const RULE_DEFINITIONS: readonly [{
688
701
  readonly whyItMatters: "Known-nonexistent URLs returned a successful response or redirected to another successful page. Search engines and users cannot reliably distinguish missing content from a real page.";
689
702
  readonly howToFix: "Return 404 or 410 for missing URLs. If a replacement exists, redirect only the specific retired URL to its closest relevant replacement rather than sending every unknown path to a generic page.";
690
703
  readonly impactIfIgnored: "Missing URLs can remain in crawl queues, waste crawl attention, and create confusing search or monitoring evidence.";
691
- readonly howToVerify: "Request several known-nonexistent paths and confirm each returns 404 or 410 without redirecting to a generic successful page.";
704
+ readonly howToVerify: "Request several made-up paths, including one at the site root and one nested path, and confirm each returns 404 or 410 without redirecting to a generic successful page.";
692
705
  readonly agentHints: {
693
706
  readonly evidenceFields: ["report.siteChecks.soft404"];
694
707
  readonly suggestedCommands: ["seo crawl <url> --json"];
@@ -2818,7 +2831,7 @@ export declare function fetchSitemapUrls(input: {
2818
2831
  limit?: number;
2819
2832
  maxNested?: number;
2820
2833
  }): Promise<SitemapFetchResult>;
2821
- export declare const CRAWL_SKIP_REASONS: readonly ["asset-url", "configured-exclusion", "duplicate-normalization", "invalid-url", "memory-pressure", "off-origin", "origin-backpressure", "queue-safety-limit", "robots-disallowed", "robots-uncertain", "legacy-unclassified"];
2834
+ export declare const CRAWL_SKIP_REASONS: readonly ["asset-url", "configured-exclusion", "duplicate-normalization", "invalid-url", "memory-pressure", "off-origin", "origin-backpressure", "queue-safety-limit", "query-variant-limit", "robots-disallowed", "robots-uncertain", "legacy-unclassified"];
2822
2835
  export type CrawlSkipReason = (typeof CRAWL_SKIP_REASONS)[number];
2823
2836
  export type CrawlSkipImpact = 'coverage-affecting' | 'non-impacting';
2824
2837
  export type CrawlSkipReasonCount = {
@@ -3568,6 +3581,7 @@ export declare const crawlPageSnapshotSchema: z.ZodObject<{
3568
3581
  source: z.ZodEnum<{
3569
3582
  environment: "environment";
3570
3583
  "playwright-cache": "playwright-cache";
3584
+ "agent-browser-cache": "agent-browser-cache";
3571
3585
  system: "system";
3572
3586
  }>;
3573
3587
  product: z.ZodString;
@@ -4314,6 +4328,7 @@ export declare const crawlReportSummarySchema: z.ZodObject<{
4314
4328
  "memory-pressure": "memory-pressure";
4315
4329
  "off-origin": "off-origin";
4316
4330
  "queue-safety-limit": "queue-safety-limit";
4331
+ "query-variant-limit": "query-variant-limit";
4317
4332
  "robots-uncertain": "robots-uncertain";
4318
4333
  "legacy-unclassified": "legacy-unclassified";
4319
4334
  }>;
@@ -4480,6 +4495,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4480
4495
  "memory-pressure": "memory-pressure";
4481
4496
  "off-origin": "off-origin";
4482
4497
  "queue-safety-limit": "queue-safety-limit";
4498
+ "query-variant-limit": "query-variant-limit";
4483
4499
  "robots-uncertain": "robots-uncertain";
4484
4500
  "legacy-unclassified": "legacy-unclassified";
4485
4501
  }>;
@@ -4751,6 +4767,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4751
4767
  source: z.ZodEnum<{
4752
4768
  environment: "environment";
4753
4769
  "playwright-cache": "playwright-cache";
4770
+ "agent-browser-cache": "agent-browser-cache";
4754
4771
  system: "system";
4755
4772
  }>;
4756
4773
  product: z.ZodString;
@@ -5795,6 +5812,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5795
5812
  "memory-pressure": "memory-pressure";
5796
5813
  "off-origin": "off-origin";
5797
5814
  "queue-safety-limit": "queue-safety-limit";
5815
+ "query-variant-limit": "query-variant-limit";
5798
5816
  "robots-uncertain": "robots-uncertain";
5799
5817
  "legacy-unclassified": "legacy-unclassified";
5800
5818
  }>;
@@ -6066,6 +6084,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
6066
6084
  source: z.ZodEnum<{
6067
6085
  environment: "environment";
6068
6086
  "playwright-cache": "playwright-cache";
6087
+ "agent-browser-cache": "agent-browser-cache";
6069
6088
  system: "system";
6070
6089
  }>;
6071
6090
  product: z.ZodString;
@@ -7110,6 +7129,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7110
7129
  "memory-pressure": "memory-pressure";
7111
7130
  "off-origin": "off-origin";
7112
7131
  "queue-safety-limit": "queue-safety-limit";
7132
+ "query-variant-limit": "query-variant-limit";
7113
7133
  "robots-uncertain": "robots-uncertain";
7114
7134
  "legacy-unclassified": "legacy-unclassified";
7115
7135
  }>;
@@ -7381,6 +7401,7 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
7381
7401
  source: z.ZodEnum<{
7382
7402
  environment: "environment";
7383
7403
  "playwright-cache": "playwright-cache";
7404
+ "agent-browser-cache": "agent-browser-cache";
7384
7405
  system: "system";
7385
7406
  }>;
7386
7407
  product: z.ZodString;
@@ -8427,6 +8448,7 @@ export declare const crawlerSchemas: {
8427
8448
  "memory-pressure": "memory-pressure";
8428
8449
  "off-origin": "off-origin";
8429
8450
  "queue-safety-limit": "queue-safety-limit";
8451
+ "query-variant-limit": "query-variant-limit";
8430
8452
  "robots-uncertain": "robots-uncertain";
8431
8453
  "legacy-unclassified": "legacy-unclassified";
8432
8454
  }>;
@@ -8698,6 +8720,7 @@ export declare const crawlerSchemas: {
8698
8720
  source: z.ZodEnum<{
8699
8721
  environment: "environment";
8700
8722
  "playwright-cache": "playwright-cache";
8723
+ "agent-browser-cache": "agent-browser-cache";
8701
8724
  system: "system";
8702
8725
  }>;
8703
8726
  product: z.ZodString;
@@ -9742,6 +9765,7 @@ export declare const crawlerSchemas: {
9742
9765
  "memory-pressure": "memory-pressure";
9743
9766
  "off-origin": "off-origin";
9744
9767
  "queue-safety-limit": "queue-safety-limit";
9768
+ "query-variant-limit": "query-variant-limit";
9745
9769
  "robots-uncertain": "robots-uncertain";
9746
9770
  "legacy-unclassified": "legacy-unclassified";
9747
9771
  }>;
@@ -10013,6 +10037,7 @@ export declare const crawlerSchemas: {
10013
10037
  source: z.ZodEnum<{
10014
10038
  environment: "environment";
10015
10039
  "playwright-cache": "playwright-cache";
10040
+ "agent-browser-cache": "agent-browser-cache";
10016
10041
  system: "system";
10017
10042
  }>;
10018
10043
  product: z.ZodString;
@@ -11057,6 +11082,7 @@ export declare const crawlerSchemas: {
11057
11082
  "memory-pressure": "memory-pressure";
11058
11083
  "off-origin": "off-origin";
11059
11084
  "queue-safety-limit": "queue-safety-limit";
11085
+ "query-variant-limit": "query-variant-limit";
11060
11086
  "robots-uncertain": "robots-uncertain";
11061
11087
  "legacy-unclassified": "legacy-unclassified";
11062
11088
  }>;
@@ -11328,6 +11354,7 @@ export declare const crawlerSchemas: {
11328
11354
  source: z.ZodEnum<{
11329
11355
  environment: "environment";
11330
11356
  "playwright-cache": "playwright-cache";
11357
+ "agent-browser-cache": "agent-browser-cache";
11331
11358
  system: "system";
11332
11359
  }>;
11333
11360
  product: z.ZodString;
@@ -12767,6 +12794,7 @@ export declare const crawlerSchemas: {
12767
12794
  source: z.ZodEnum<{
12768
12795
  environment: "environment";
12769
12796
  "playwright-cache": "playwright-cache";
12797
+ "agent-browser-cache": "agent-browser-cache";
12770
12798
  system: "system";
12771
12799
  }>;
12772
12800
  product: z.ZodString;
@@ -13300,6 +13328,7 @@ export declare const crawlerJsonSchemas: {
13300
13328
  "memory-pressure": "memory-pressure";
13301
13329
  "off-origin": "off-origin";
13302
13330
  "queue-safety-limit": "queue-safety-limit";
13331
+ "query-variant-limit": "query-variant-limit";
13303
13332
  "robots-uncertain": "robots-uncertain";
13304
13333
  "legacy-unclassified": "legacy-unclassified";
13305
13334
  }>;
@@ -13571,6 +13600,7 @@ export declare const crawlerJsonSchemas: {
13571
13600
  source: z.ZodEnum<{
13572
13601
  environment: "environment";
13573
13602
  "playwright-cache": "playwright-cache";
13603
+ "agent-browser-cache": "agent-browser-cache";
13574
13604
  system: "system";
13575
13605
  }>;
13576
13606
  product: z.ZodString;
@@ -14615,6 +14645,7 @@ export declare const crawlerJsonSchemas: {
14615
14645
  "memory-pressure": "memory-pressure";
14616
14646
  "off-origin": "off-origin";
14617
14647
  "queue-safety-limit": "queue-safety-limit";
14648
+ "query-variant-limit": "query-variant-limit";
14618
14649
  "robots-uncertain": "robots-uncertain";
14619
14650
  "legacy-unclassified": "legacy-unclassified";
14620
14651
  }>;
@@ -14886,6 +14917,7 @@ export declare const crawlerJsonSchemas: {
14886
14917
  source: z.ZodEnum<{
14887
14918
  environment: "environment";
14888
14919
  "playwright-cache": "playwright-cache";
14920
+ "agent-browser-cache": "agent-browser-cache";
14889
14921
  system: "system";
14890
14922
  }>;
14891
14923
  product: z.ZodString;
@@ -15930,6 +15962,7 @@ export declare const crawlerJsonSchemas: {
15930
15962
  "memory-pressure": "memory-pressure";
15931
15963
  "off-origin": "off-origin";
15932
15964
  "queue-safety-limit": "queue-safety-limit";
15965
+ "query-variant-limit": "query-variant-limit";
15933
15966
  "robots-uncertain": "robots-uncertain";
15934
15967
  "legacy-unclassified": "legacy-unclassified";
15935
15968
  }>;
@@ -16201,6 +16234,7 @@ export declare const crawlerJsonSchemas: {
16201
16234
  source: z.ZodEnum<{
16202
16235
  environment: "environment";
16203
16236
  "playwright-cache": "playwright-cache";
16237
+ "agent-browser-cache": "agent-browser-cache";
16204
16238
  system: "system";
16205
16239
  }>;
16206
16240
  product: z.ZodString;
@@ -17640,6 +17674,7 @@ export declare const crawlerJsonSchemas: {
17640
17674
  source: z.ZodEnum<{
17641
17675
  environment: "environment";
17642
17676
  "playwright-cache": "playwright-cache";
17677
+ "agent-browser-cache": "agent-browser-cache";
17643
17678
  system: "system";
17644
17679
  }>;
17645
17680
  product: z.ZodString;
@@ -18056,12 +18091,12 @@ export declare const providerPackageNameSchema: z.ZodString;
18056
18091
  export declare const providerExactVersionSchema: z.ZodString;
18057
18092
  export declare const providerIntegritySchema: z.ZodString;
18058
18093
  export declare const providerKindSchema: z.ZodEnum<{
18094
+ "local-search": "local-search";
18059
18095
  "traffic-analytics": "traffic-analytics";
18060
18096
  "search-results": "search-results";
18061
18097
  "keyword-data": "keyword-data";
18062
18098
  "domain-data": "domain-data";
18063
18099
  "link-data": "link-data";
18064
- "local-search": "local-search";
18065
18100
  "ai-data": "ai-data";
18066
18101
  other: "other";
18067
18102
  }>;
@@ -18104,12 +18139,12 @@ export declare const providerRegistrationSchema: z.ZodObject<{
18104
18139
  displayName: z.ZodString;
18105
18140
  description: z.ZodString;
18106
18141
  kinds: z.ZodArray<z.ZodEnum<{
18142
+ "local-search": "local-search";
18107
18143
  "traffic-analytics": "traffic-analytics";
18108
18144
  "search-results": "search-results";
18109
18145
  "keyword-data": "keyword-data";
18110
18146
  "domain-data": "domain-data";
18111
18147
  "link-data": "link-data";
18112
- "local-search": "local-search";
18113
18148
  "ai-data": "ai-data";
18114
18149
  other: "other";
18115
18150
  }>>;
@@ -18174,10 +18209,9 @@ export declare const providerIdSchema: z.ZodString;
18174
18209
  export type ProviderId = z.infer<typeof providerIdSchema>;
18175
18210
  export type ExternalServiceId = string;
18176
18211
  export declare const providerCapabilitySchema: z.ZodEnum<{
18177
- "local-search": "local-search";
18178
- "serp-snapshot": "serp-snapshot";
18179
18212
  "keyword-metrics": "keyword-metrics";
18180
18213
  "keyword-discovery": "keyword-discovery";
18214
+ "serp-snapshot": "serp-snapshot";
18181
18215
  "domain-overview": "domain-overview";
18182
18216
  "ranked-keywords": "ranked-keywords";
18183
18217
  "relevant-pages": "relevant-pages";
@@ -18186,6 +18220,7 @@ export declare const providerCapabilitySchema: z.ZodEnum<{
18186
18220
  "referring-domains": "referring-domains";
18187
18221
  backlinks: "backlinks";
18188
18222
  "domain-rating": "domain-rating";
18223
+ "local-search": "local-search";
18189
18224
  "ai-mentions": "ai-mentions";
18190
18225
  "ai-prompt-observation": "ai-prompt-observation";
18191
18226
  }>;
@@ -21616,6 +21651,7 @@ type WeekSite = {
21616
21651
  previous: number;
21617
21652
  } | null;
21618
21653
  opportunities?: WeekOpportunities | null;
21654
+ google_updates?: WeekGoogleUpdate[];
21619
21655
  measured?: {
21620
21656
  total: number;
21621
21657
  items: (IssueMeasure & {
@@ -21653,6 +21689,18 @@ type WeekData = {
21653
21689
  account: string;
21654
21690
  sites: WeekSite[];
21655
21691
  };
21692
+ type WeekGoogleUpdate = {
21693
+ name: string;
21694
+ start: string;
21695
+ end: string | null;
21696
+ ready: boolean;
21697
+ result: {
21698
+ verdict: 'within-normal' | 'outside-normal' | 'not-enough-data';
21699
+ clicks: number;
21700
+ previous: number;
21701
+ days: number;
21702
+ } | null;
21703
+ };
21656
21704
  export declare const CLOUD_URL = "https://seoskill.dev";
21657
21705
  type Pending = {
21658
21706
  device: string;