seo 0.17.1 → 0.17.2
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/cli.js +87 -87
- package/dist/cli.js.map +1 -1
- package/dist/{dist-BjB7Lfd6.js → dist-CW8OlPkK.js} +107 -106
- package/dist/dist-CW8OlPkK.js.map +1 -0
- package/dist/{dist-B9mN7y6S.js → dist-Ck71nZiP.js} +1 -1
- package/dist/{esm-G8B5TPzB.js → esm-BR8_7rhM.js} +2 -2
- package/dist/{esm-G8B5TPzB.js.map → esm-BR8_7rhM.js.map} +1 -1
- package/dist/index.d.ts +451 -233
- package/dist/index.js +532 -112
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +532 -112
- package/dist/mcp.js.map +1 -1
- package/package.json +1 -1
- package/skills/seo/SKILL.md +1 -1
- package/dist/dist-BjB7Lfd6.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -773,13 +773,13 @@ declare const RULE_DEFINITIONS: readonly [{
|
|
|
773
773
|
readonly title: "Large HTML response";
|
|
774
774
|
readonly category: "performance";
|
|
775
775
|
readonly defaultSeverity: "low";
|
|
776
|
-
readonly whyItMatters: "
|
|
777
|
-
readonly howToFix: "
|
|
778
|
-
readonly impactIfIgnored: "
|
|
779
|
-
readonly howToVerify: "Re-run the crawl and confirm sizeBytes is
|
|
776
|
+
readonly whyItMatters: "Googlebot reads only the first 2MB of uncompressed HTML for Google Search and indexes the page as if the file ended there. When the h1 or main element, or most of the visible text, sits past that cut, Google may index the page without its main content. Large HTML is also slow to download and parse.";
|
|
777
|
+
readonly howToFix: "Move the main content earlier and trim what comes before it: large inline CSS, inline SVG, JSON data and duplicated markup. Load non-critical styles and scripts as separate files.";
|
|
778
|
+
readonly impactIfIgnored: "Content past the 2MB cut is not indexed, and every page of the template carries the same weight on slow connections.";
|
|
779
|
+
readonly howToVerify: "Re-run the crawl and confirm sizeBytes is under 2,097,152, or that mainContentStartBytes is well before it and few visible words sit after it. The word split is a heuristic from the raw HTML.";
|
|
780
780
|
readonly agentHints: {
|
|
781
|
-
readonly evidenceFields: ["page.sizeBytes", "issue.evidence.thresholdBytes"];
|
|
782
|
-
readonly suggestedCommands: ["seo crawl <url> --json"];
|
|
781
|
+
readonly evidenceFields: ["page.sizeBytes", "issue.evidence.thresholdBytes", "issue.evidence.mainContentStartBytes", "issue.evidence.bytesAfterLimit", "issue.evidence.visibleWordsAfterLimit", "issue.evidence.indexingRisk"];
|
|
782
|
+
readonly suggestedCommands: ["seo crawl <url> --mode page --json"];
|
|
783
783
|
};
|
|
784
784
|
}, {
|
|
785
785
|
readonly id: "no_compression";
|
|
@@ -2548,233 +2548,6 @@ export declare function contentOptimizationReport(input: {
|
|
|
2548
2548
|
refresh?: boolean;
|
|
2549
2549
|
js?: boolean | 'auto';
|
|
2550
2550
|
}): Promise<ContentOptimizationReport>;
|
|
2551
|
-
export type CrawlPageSnapshot = {
|
|
2552
|
-
url: string;
|
|
2553
|
-
finalUrl: string;
|
|
2554
|
-
status: number;
|
|
2555
|
-
contentType?: string;
|
|
2556
|
-
responseHeaders?: Record<string, string>;
|
|
2557
|
-
responseTimeMs?: number;
|
|
2558
|
-
sizeBytes?: number;
|
|
2559
|
-
usedJs?: boolean;
|
|
2560
|
-
fetchSource?: 'cache' | 'network' | 'rendered';
|
|
2561
|
-
cacheState?: 'hit' | 'miss' | 'bypass';
|
|
2562
|
-
fetchDiagnostics?: PageFetchDiagnostics;
|
|
2563
|
-
auditScope?: 'full' | 'status';
|
|
2564
|
-
accessBlock?: AccessBlockEvidence;
|
|
2565
|
-
blocked?: boolean;
|
|
2566
|
-
contentAuditAllowed?: boolean;
|
|
2567
|
-
crawlDepth?: number;
|
|
2568
|
-
error?: string;
|
|
2569
|
-
robotsTxt?: {
|
|
2570
|
-
url: string;
|
|
2571
|
-
allowed: boolean | null;
|
|
2572
|
-
availability: 'available' | 'absent' | 'access-blocked' | 'rate-limited' | 'unreachable' | 'unreadable';
|
|
2573
|
-
status?: number;
|
|
2574
|
-
error?: string;
|
|
2575
|
-
matchedLine?: string;
|
|
2576
|
-
};
|
|
2577
|
-
title?: string;
|
|
2578
|
-
metaDescription?: string;
|
|
2579
|
-
canonical?: string;
|
|
2580
|
-
canonicalRaw?: string;
|
|
2581
|
-
canonicalStatus?: CanonicalEvidence['status'];
|
|
2582
|
-
canonicalCandidates?: CanonicalCandidate[];
|
|
2583
|
-
metaRobots?: string;
|
|
2584
|
-
xRobotsTag?: string;
|
|
2585
|
-
h1?: string;
|
|
2586
|
-
h1Count?: number;
|
|
2587
|
-
h2Count?: number;
|
|
2588
|
-
h3Count?: number;
|
|
2589
|
-
indexable: boolean;
|
|
2590
|
-
indexability?: string;
|
|
2591
|
-
declaredIndexability?: 'indexable-candidate' | 'noindex' | 'robots-blocked' | 'canonical-conflict' | 'canonical-hint-other' | 'meta-refresh' | 'not-html' | 'unknown';
|
|
2592
|
-
extractionStatus?: 'complete' | 'failed' | 'not-applicable' | 'unknown-media-type';
|
|
2593
|
-
extractionError?: string;
|
|
2594
|
-
wordCount: number;
|
|
2595
|
-
contentExtraction?: ContentExtractionDiagnostics;
|
|
2596
|
-
warnings?: string[];
|
|
2597
|
-
contentHash: string;
|
|
2598
|
-
mainContentHash?: string;
|
|
2599
|
-
textRatio?: number;
|
|
2600
|
-
contentSample?: string;
|
|
2601
|
-
contentSketch?: ContentSketch;
|
|
2602
|
-
softAuthenticationGate?: {
|
|
2603
|
-
kind: 'login-form';
|
|
2604
|
-
indicators: string[];
|
|
2605
|
-
formActionPath?: string;
|
|
2606
|
-
};
|
|
2607
|
-
metaRefresh?: {
|
|
2608
|
-
targetUrl: string;
|
|
2609
|
-
delaySeconds: number;
|
|
2610
|
-
};
|
|
2611
|
-
tabbedContent?: {
|
|
2612
|
-
groups: number;
|
|
2613
|
-
panels: number;
|
|
2614
|
-
retainedPanels: number;
|
|
2615
|
-
truncated: boolean;
|
|
2616
|
-
panelSketches: Array<{
|
|
2617
|
-
label?: string;
|
|
2618
|
-
sketch: ContentSketch;
|
|
2619
|
-
}>;
|
|
2620
|
-
};
|
|
2621
|
-
lang?: string;
|
|
2622
|
-
hasViewport?: boolean;
|
|
2623
|
-
isHttps?: boolean;
|
|
2624
|
-
hasHsts?: boolean;
|
|
2625
|
-
compression?: string;
|
|
2626
|
-
hreflang?: Array<{
|
|
2627
|
-
hreflang: string;
|
|
2628
|
-
href: string;
|
|
2629
|
-
}>;
|
|
2630
|
-
mixedContentCount?: number;
|
|
2631
|
-
mixedContentSamples?: string[];
|
|
2632
|
-
imagesTotal?: number;
|
|
2633
|
-
imagesMissingAlt?: number;
|
|
2634
|
-
oversizedImageCandidates?: Array<{
|
|
2635
|
-
src: string;
|
|
2636
|
-
width?: number;
|
|
2637
|
-
height?: number;
|
|
2638
|
-
detectedFrom: string;
|
|
2639
|
-
}>;
|
|
2640
|
-
outgoingInternalCount: number;
|
|
2641
|
-
outgoingExternalCount?: number;
|
|
2642
|
-
internalInlinkCount?: number;
|
|
2643
|
-
internalLinkAuthorityScore?: number;
|
|
2644
|
-
sampleInternalLinks?: string[];
|
|
2645
|
-
sampleExternalLinks?: string[];
|
|
2646
|
-
internalAnchorSamples?: Array<{
|
|
2647
|
-
href: string;
|
|
2648
|
-
text: string;
|
|
2649
|
-
}>;
|
|
2650
|
-
externalAnchorSamples?: Array<{
|
|
2651
|
-
href: string;
|
|
2652
|
-
text: string;
|
|
2653
|
-
}>;
|
|
2654
|
-
markdownAlternates?: string[];
|
|
2655
|
-
describedBy?: string[];
|
|
2656
|
-
externalLinkChecks?: ExternalLinkCheck[];
|
|
2657
|
-
schemaTypes?: string[];
|
|
2658
|
-
structuredDataFormats?: Array<'json-ld' | 'microdata' | 'rdfa'>;
|
|
2659
|
-
googleRichResults?: GoogleRichResultAssessment[];
|
|
2660
|
-
googleRichResultsSelection?: GoogleRichResultAssessmentSelection;
|
|
2661
|
-
schemaSameAs?: string[];
|
|
2662
|
-
schemaSameAsEvidence?: Array<{
|
|
2663
|
-
url: string;
|
|
2664
|
-
block: number;
|
|
2665
|
-
path: string;
|
|
2666
|
-
subjectId?: string;
|
|
2667
|
-
subjectTypes: string[];
|
|
2668
|
-
}>;
|
|
2669
|
-
invalidSchemaSameAs?: Array<{
|
|
2670
|
-
block: number;
|
|
2671
|
-
path: string;
|
|
2672
|
-
value: string;
|
|
2673
|
-
}>;
|
|
2674
|
-
socialProfileLinks?: string[];
|
|
2675
|
-
invalidJsonLdCount?: number;
|
|
2676
|
-
invalidJsonLdSamples?: Array<{
|
|
2677
|
-
snippet: string;
|
|
2678
|
-
error: string;
|
|
2679
|
-
}>;
|
|
2680
|
-
unrecognizedJsonLdTypes?: Array<{
|
|
2681
|
-
block: number;
|
|
2682
|
-
path: string;
|
|
2683
|
-
value: string;
|
|
2684
|
-
reason: 'missing-schema-context' | 'unresolved-context' | 'unsupported-vocabulary';
|
|
2685
|
-
}>;
|
|
2686
|
-
openGraphTitle?: string;
|
|
2687
|
-
openGraphDescription?: string;
|
|
2688
|
-
openGraphImage?: string;
|
|
2689
|
-
twitterCard?: string;
|
|
2690
|
-
author?: string;
|
|
2691
|
-
hasDate?: boolean;
|
|
2692
|
-
geo?: {
|
|
2693
|
-
semanticHtml: boolean;
|
|
2694
|
-
structuredData: boolean;
|
|
2695
|
-
hasAuthor: boolean;
|
|
2696
|
-
hasDate: boolean;
|
|
2697
|
-
questionHeadings: number;
|
|
2698
|
-
listCount?: number;
|
|
2699
|
-
tableCount?: number;
|
|
2700
|
-
structuredBlocks: number;
|
|
2701
|
-
answerable: boolean;
|
|
2702
|
-
hasFaqSchema?: boolean;
|
|
2703
|
-
hasQapageSchema?: boolean;
|
|
2704
|
-
hasLlmsTxt?: boolean;
|
|
2705
|
-
llmsTxtUrl?: string;
|
|
2706
|
-
llmsTxtStatus?: number;
|
|
2707
|
-
};
|
|
2708
|
-
searchMetrics?: {
|
|
2709
|
-
clicks: number;
|
|
2710
|
-
impressions: number;
|
|
2711
|
-
ctr: number;
|
|
2712
|
-
position: number;
|
|
2713
|
-
};
|
|
2714
|
-
topQuery?: {
|
|
2715
|
-
query: string;
|
|
2716
|
-
clicks: number;
|
|
2717
|
-
impressions: number;
|
|
2718
|
-
ctr: number;
|
|
2719
|
-
position: number;
|
|
2720
|
-
};
|
|
2721
|
-
analytics?: {
|
|
2722
|
-
sessions: number;
|
|
2723
|
-
totalUsers?: number;
|
|
2724
|
-
conversions?: number;
|
|
2725
|
-
};
|
|
2726
|
-
};
|
|
2727
|
-
export type ExternalLinkCheckState = 'available' | 'confirmed-broken' | 'transient' | 'provider-blocked' | 'rate-limited' | 'method-rejected' | 'unavailable';
|
|
2728
|
-
export type ExternalLinkCheckAttempt = {
|
|
2729
|
-
method: 'HEAD' | 'GET';
|
|
2730
|
-
status?: number;
|
|
2731
|
-
error?: string;
|
|
2732
|
-
};
|
|
2733
|
-
export type ExternalLinkCheck = {
|
|
2734
|
-
url: string;
|
|
2735
|
-
status?: number;
|
|
2736
|
-
error?: string;
|
|
2737
|
-
state?: ExternalLinkCheckState;
|
|
2738
|
-
attempts?: ExternalLinkCheckAttempt[];
|
|
2739
|
-
};
|
|
2740
|
-
export type CrawlResponseObservation = {
|
|
2741
|
-
requestedUrl: string;
|
|
2742
|
-
outcome: 'response';
|
|
2743
|
-
finalUrl: string;
|
|
2744
|
-
status: number;
|
|
2745
|
-
contentType?: string;
|
|
2746
|
-
durationMs?: number;
|
|
2747
|
-
redirectChain?: PageFetchDiagnostics['redirectChain'];
|
|
2748
|
-
accessBlock?: AccessBlockEvidence;
|
|
2749
|
-
robotsTxt?: NonNullable<CrawlPageSnapshot['robotsTxt']>;
|
|
2750
|
-
} & ({
|
|
2751
|
-
extraction: 'complete' | 'not-applicable' | 'unknown-media-type';
|
|
2752
|
-
} | {
|
|
2753
|
-
extraction: 'failed';
|
|
2754
|
-
extractionError: string;
|
|
2755
|
-
});
|
|
2756
|
-
export type CrawlRequestObservation = CrawlResponseObservation | {
|
|
2757
|
-
requestedUrl: string;
|
|
2758
|
-
outcome: 'skipped';
|
|
2759
|
-
durationMs?: number;
|
|
2760
|
-
reason: 'robots-disallowed' | 'robots-deferred';
|
|
2761
|
-
robotsTxt: NonNullable<CrawlPageSnapshot['robotsTxt']>;
|
|
2762
|
-
extraction: 'not-applicable';
|
|
2763
|
-
} | {
|
|
2764
|
-
requestedUrl: string;
|
|
2765
|
-
outcome: 'skipped';
|
|
2766
|
-
durationMs?: number;
|
|
2767
|
-
reason: 'origin-backpressure';
|
|
2768
|
-
error: string;
|
|
2769
|
-
extraction: 'not-applicable';
|
|
2770
|
-
} | {
|
|
2771
|
-
requestedUrl: string;
|
|
2772
|
-
outcome: 'failure';
|
|
2773
|
-
durationMs?: number;
|
|
2774
|
-
failureKind: 'dns' | 'tls' | 'timeout' | 'redirect-limit' | 'redirect-loop' | 'aborted' | 'unknown';
|
|
2775
|
-
error: string;
|
|
2776
|
-
extraction: 'not-applicable';
|
|
2777
|
-
};
|
|
2778
2551
|
export type SitemapInvalidLoc = {
|
|
2779
2552
|
sitemapUrl: string;
|
|
2780
2553
|
kind: 'url' | 'sitemap';
|
|
@@ -3260,6 +3033,246 @@ export declare function createCrawlReport(input: {
|
|
|
3260
3033
|
generatedAt?: string;
|
|
3261
3034
|
}): CrawlReport;
|
|
3262
3035
|
export declare function normalizeLoadedCrawlReport(report: CrawlReport): CrawlReport;
|
|
3036
|
+
type GooglebotCutEvidence = {
|
|
3037
|
+
limitBytes: number;
|
|
3038
|
+
bytesAfterLimit: number;
|
|
3039
|
+
/** Byte offset of the first <h1> or <main>, whichever comes first. */
|
|
3040
|
+
mainContentStartBytes?: number;
|
|
3041
|
+
mainContentMarker?: 'h1' | 'main';
|
|
3042
|
+
mainContentStart: 'before-limit' | 'near-limit' | 'after-limit' | 'not-found';
|
|
3043
|
+
/** Heuristic: words of text outside tags, scripts and styles. */
|
|
3044
|
+
visibleWordsBeforeLimit: number;
|
|
3045
|
+
visibleWordsAfterLimit: number;
|
|
3046
|
+
};
|
|
3047
|
+
export type CrawlPageSnapshot = {
|
|
3048
|
+
url: string;
|
|
3049
|
+
finalUrl: string;
|
|
3050
|
+
status: number;
|
|
3051
|
+
contentType?: string;
|
|
3052
|
+
responseHeaders?: Record<string, string>;
|
|
3053
|
+
responseTimeMs?: number;
|
|
3054
|
+
sizeBytes?: number;
|
|
3055
|
+
/** Set only when the HTML is over Googlebot's 2MB limit. */
|
|
3056
|
+
googlebotCut?: GooglebotCutEvidence;
|
|
3057
|
+
usedJs?: boolean;
|
|
3058
|
+
fetchSource?: 'cache' | 'network' | 'rendered';
|
|
3059
|
+
cacheState?: 'hit' | 'miss' | 'bypass';
|
|
3060
|
+
fetchDiagnostics?: PageFetchDiagnostics;
|
|
3061
|
+
auditScope?: 'full' | 'status';
|
|
3062
|
+
accessBlock?: AccessBlockEvidence;
|
|
3063
|
+
blocked?: boolean;
|
|
3064
|
+
contentAuditAllowed?: boolean;
|
|
3065
|
+
crawlDepth?: number;
|
|
3066
|
+
error?: string;
|
|
3067
|
+
robotsTxt?: {
|
|
3068
|
+
url: string;
|
|
3069
|
+
allowed: boolean | null;
|
|
3070
|
+
availability: 'available' | 'absent' | 'access-blocked' | 'rate-limited' | 'unreachable' | 'unreadable';
|
|
3071
|
+
status?: number;
|
|
3072
|
+
error?: string;
|
|
3073
|
+
matchedLine?: string;
|
|
3074
|
+
};
|
|
3075
|
+
title?: string;
|
|
3076
|
+
metaDescription?: string;
|
|
3077
|
+
canonical?: string;
|
|
3078
|
+
canonicalRaw?: string;
|
|
3079
|
+
canonicalStatus?: CanonicalEvidence['status'];
|
|
3080
|
+
canonicalCandidates?: CanonicalCandidate[];
|
|
3081
|
+
metaRobots?: string;
|
|
3082
|
+
xRobotsTag?: string;
|
|
3083
|
+
h1?: string;
|
|
3084
|
+
h1Count?: number;
|
|
3085
|
+
h2Count?: number;
|
|
3086
|
+
h3Count?: number;
|
|
3087
|
+
indexable: boolean;
|
|
3088
|
+
indexability?: string;
|
|
3089
|
+
declaredIndexability?: 'indexable-candidate' | 'noindex' | 'robots-blocked' | 'canonical-conflict' | 'canonical-hint-other' | 'meta-refresh' | 'not-html' | 'unknown';
|
|
3090
|
+
extractionStatus?: 'complete' | 'failed' | 'not-applicable' | 'unknown-media-type';
|
|
3091
|
+
extractionError?: string;
|
|
3092
|
+
wordCount: number;
|
|
3093
|
+
contentExtraction?: ContentExtractionDiagnostics;
|
|
3094
|
+
warnings?: string[];
|
|
3095
|
+
contentHash: string;
|
|
3096
|
+
mainContentHash?: string;
|
|
3097
|
+
textRatio?: number;
|
|
3098
|
+
contentSample?: string;
|
|
3099
|
+
contentSketch?: ContentSketch;
|
|
3100
|
+
softAuthenticationGate?: {
|
|
3101
|
+
kind: 'login-form';
|
|
3102
|
+
indicators: string[];
|
|
3103
|
+
formActionPath?: string;
|
|
3104
|
+
};
|
|
3105
|
+
metaRefresh?: {
|
|
3106
|
+
targetUrl: string;
|
|
3107
|
+
delaySeconds: number;
|
|
3108
|
+
};
|
|
3109
|
+
tabbedContent?: {
|
|
3110
|
+
groups: number;
|
|
3111
|
+
panels: number;
|
|
3112
|
+
retainedPanels: number;
|
|
3113
|
+
truncated: boolean;
|
|
3114
|
+
panelSketches: Array<{
|
|
3115
|
+
label?: string;
|
|
3116
|
+
sketch: ContentSketch;
|
|
3117
|
+
}>;
|
|
3118
|
+
};
|
|
3119
|
+
lang?: string;
|
|
3120
|
+
hasViewport?: boolean;
|
|
3121
|
+
isHttps?: boolean;
|
|
3122
|
+
hasHsts?: boolean;
|
|
3123
|
+
compression?: string;
|
|
3124
|
+
hreflang?: Array<{
|
|
3125
|
+
hreflang: string;
|
|
3126
|
+
href: string;
|
|
3127
|
+
}>;
|
|
3128
|
+
mixedContentCount?: number;
|
|
3129
|
+
mixedContentSamples?: string[];
|
|
3130
|
+
imagesTotal?: number;
|
|
3131
|
+
imagesMissingAlt?: number;
|
|
3132
|
+
oversizedImageCandidates?: Array<{
|
|
3133
|
+
src: string;
|
|
3134
|
+
width?: number;
|
|
3135
|
+
height?: number;
|
|
3136
|
+
detectedFrom: string;
|
|
3137
|
+
}>;
|
|
3138
|
+
outgoingInternalCount: number;
|
|
3139
|
+
outgoingExternalCount?: number;
|
|
3140
|
+
internalInlinkCount?: number;
|
|
3141
|
+
internalLinkAuthorityScore?: number;
|
|
3142
|
+
sampleInternalLinks?: string[];
|
|
3143
|
+
sampleExternalLinks?: string[];
|
|
3144
|
+
internalAnchorSamples?: Array<{
|
|
3145
|
+
href: string;
|
|
3146
|
+
text: string;
|
|
3147
|
+
}>;
|
|
3148
|
+
externalAnchorSamples?: Array<{
|
|
3149
|
+
href: string;
|
|
3150
|
+
text: string;
|
|
3151
|
+
}>;
|
|
3152
|
+
markdownAlternates?: string[];
|
|
3153
|
+
describedBy?: string[];
|
|
3154
|
+
externalLinkChecks?: ExternalLinkCheck[];
|
|
3155
|
+
schemaTypes?: string[];
|
|
3156
|
+
structuredDataFormats?: Array<'json-ld' | 'microdata' | 'rdfa'>;
|
|
3157
|
+
googleRichResults?: GoogleRichResultAssessment[];
|
|
3158
|
+
googleRichResultsSelection?: GoogleRichResultAssessmentSelection;
|
|
3159
|
+
schemaSameAs?: string[];
|
|
3160
|
+
schemaSameAsEvidence?: Array<{
|
|
3161
|
+
url: string;
|
|
3162
|
+
block: number;
|
|
3163
|
+
path: string;
|
|
3164
|
+
subjectId?: string;
|
|
3165
|
+
subjectTypes: string[];
|
|
3166
|
+
}>;
|
|
3167
|
+
invalidSchemaSameAs?: Array<{
|
|
3168
|
+
block: number;
|
|
3169
|
+
path: string;
|
|
3170
|
+
value: string;
|
|
3171
|
+
}>;
|
|
3172
|
+
socialProfileLinks?: string[];
|
|
3173
|
+
invalidJsonLdCount?: number;
|
|
3174
|
+
invalidJsonLdSamples?: Array<{
|
|
3175
|
+
snippet: string;
|
|
3176
|
+
error: string;
|
|
3177
|
+
}>;
|
|
3178
|
+
unrecognizedJsonLdTypes?: Array<{
|
|
3179
|
+
block: number;
|
|
3180
|
+
path: string;
|
|
3181
|
+
value: string;
|
|
3182
|
+
reason: 'missing-schema-context' | 'unresolved-context' | 'unsupported-vocabulary';
|
|
3183
|
+
}>;
|
|
3184
|
+
openGraphTitle?: string;
|
|
3185
|
+
openGraphDescription?: string;
|
|
3186
|
+
openGraphImage?: string;
|
|
3187
|
+
twitterCard?: string;
|
|
3188
|
+
author?: string;
|
|
3189
|
+
hasDate?: boolean;
|
|
3190
|
+
geo?: {
|
|
3191
|
+
semanticHtml: boolean;
|
|
3192
|
+
structuredData: boolean;
|
|
3193
|
+
hasAuthor: boolean;
|
|
3194
|
+
hasDate: boolean;
|
|
3195
|
+
questionHeadings: number;
|
|
3196
|
+
listCount?: number;
|
|
3197
|
+
tableCount?: number;
|
|
3198
|
+
structuredBlocks: number;
|
|
3199
|
+
answerable: boolean;
|
|
3200
|
+
hasFaqSchema?: boolean;
|
|
3201
|
+
hasQapageSchema?: boolean;
|
|
3202
|
+
hasLlmsTxt?: boolean;
|
|
3203
|
+
llmsTxtUrl?: string;
|
|
3204
|
+
llmsTxtStatus?: number;
|
|
3205
|
+
};
|
|
3206
|
+
searchMetrics?: {
|
|
3207
|
+
clicks: number;
|
|
3208
|
+
impressions: number;
|
|
3209
|
+
ctr: number;
|
|
3210
|
+
position: number;
|
|
3211
|
+
};
|
|
3212
|
+
topQuery?: {
|
|
3213
|
+
query: string;
|
|
3214
|
+
clicks: number;
|
|
3215
|
+
impressions: number;
|
|
3216
|
+
ctr: number;
|
|
3217
|
+
position: number;
|
|
3218
|
+
};
|
|
3219
|
+
analytics?: {
|
|
3220
|
+
sessions: number;
|
|
3221
|
+
totalUsers?: number;
|
|
3222
|
+
conversions?: number;
|
|
3223
|
+
};
|
|
3224
|
+
};
|
|
3225
|
+
export type ExternalLinkCheckState = 'available' | 'confirmed-broken' | 'transient' | 'provider-blocked' | 'rate-limited' | 'method-rejected' | 'unavailable';
|
|
3226
|
+
export type ExternalLinkCheckAttempt = {
|
|
3227
|
+
method: 'HEAD' | 'GET';
|
|
3228
|
+
status?: number;
|
|
3229
|
+
error?: string;
|
|
3230
|
+
};
|
|
3231
|
+
export type ExternalLinkCheck = {
|
|
3232
|
+
url: string;
|
|
3233
|
+
status?: number;
|
|
3234
|
+
error?: string;
|
|
3235
|
+
state?: ExternalLinkCheckState;
|
|
3236
|
+
attempts?: ExternalLinkCheckAttempt[];
|
|
3237
|
+
};
|
|
3238
|
+
export type CrawlResponseObservation = {
|
|
3239
|
+
requestedUrl: string;
|
|
3240
|
+
outcome: 'response';
|
|
3241
|
+
finalUrl: string;
|
|
3242
|
+
status: number;
|
|
3243
|
+
contentType?: string;
|
|
3244
|
+
durationMs?: number;
|
|
3245
|
+
redirectChain?: PageFetchDiagnostics['redirectChain'];
|
|
3246
|
+
accessBlock?: AccessBlockEvidence;
|
|
3247
|
+
robotsTxt?: NonNullable<CrawlPageSnapshot['robotsTxt']>;
|
|
3248
|
+
} & ({
|
|
3249
|
+
extraction: 'complete' | 'not-applicable' | 'unknown-media-type';
|
|
3250
|
+
} | {
|
|
3251
|
+
extraction: 'failed';
|
|
3252
|
+
extractionError: string;
|
|
3253
|
+
});
|
|
3254
|
+
export type CrawlRequestObservation = CrawlResponseObservation | {
|
|
3255
|
+
requestedUrl: string;
|
|
3256
|
+
outcome: 'skipped';
|
|
3257
|
+
durationMs?: number;
|
|
3258
|
+
reason: 'robots-disallowed' | 'robots-deferred';
|
|
3259
|
+
robotsTxt: NonNullable<CrawlPageSnapshot['robotsTxt']>;
|
|
3260
|
+
extraction: 'not-applicable';
|
|
3261
|
+
} | {
|
|
3262
|
+
requestedUrl: string;
|
|
3263
|
+
outcome: 'skipped';
|
|
3264
|
+
durationMs?: number;
|
|
3265
|
+
reason: 'origin-backpressure';
|
|
3266
|
+
error: string;
|
|
3267
|
+
extraction: 'not-applicable';
|
|
3268
|
+
} | {
|
|
3269
|
+
requestedUrl: string;
|
|
3270
|
+
outcome: 'failure';
|
|
3271
|
+
durationMs?: number;
|
|
3272
|
+
failureKind: 'dns' | 'tls' | 'timeout' | 'redirect-limit' | 'redirect-loop' | 'aborted' | 'unknown';
|
|
3273
|
+
error: string;
|
|
3274
|
+
extraction: 'not-applicable';
|
|
3275
|
+
};
|
|
3263
3276
|
export declare function auditCrawlRequests(requests: CrawlRequestObservation[]): CrawlIssue[];
|
|
3264
3277
|
export declare function auditCrawlPages(pages: CrawlPageSnapshot[], opts?: {
|
|
3265
3278
|
startUrl?: string;
|
|
@@ -3383,6 +3396,23 @@ export declare const crawlPageSnapshotSchema: z.ZodObject<{
|
|
|
3383
3396
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
3384
3397
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
3385
3398
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
3399
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
3400
|
+
limitBytes: z.ZodNumber;
|
|
3401
|
+
bytesAfterLimit: z.ZodNumber;
|
|
3402
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
3403
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
3404
|
+
h1: "h1";
|
|
3405
|
+
main: "main";
|
|
3406
|
+
}>>;
|
|
3407
|
+
mainContentStart: z.ZodEnum<{
|
|
3408
|
+
"before-limit": "before-limit";
|
|
3409
|
+
"near-limit": "near-limit";
|
|
3410
|
+
"after-limit": "after-limit";
|
|
3411
|
+
"not-found": "not-found";
|
|
3412
|
+
}>;
|
|
3413
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
3414
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
3415
|
+
}, z.core.$strip>>;
|
|
3386
3416
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
3387
3417
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
3388
3418
|
cache: "cache";
|
|
@@ -4577,6 +4607,23 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
4577
4607
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
4578
4608
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
4579
4609
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
4610
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
4611
|
+
limitBytes: z.ZodNumber;
|
|
4612
|
+
bytesAfterLimit: z.ZodNumber;
|
|
4613
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
4614
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
4615
|
+
h1: "h1";
|
|
4616
|
+
main: "main";
|
|
4617
|
+
}>>;
|
|
4618
|
+
mainContentStart: z.ZodEnum<{
|
|
4619
|
+
"before-limit": "before-limit";
|
|
4620
|
+
"near-limit": "near-limit";
|
|
4621
|
+
"after-limit": "after-limit";
|
|
4622
|
+
"not-found": "not-found";
|
|
4623
|
+
}>;
|
|
4624
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
4625
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
4626
|
+
}, z.core.$strip>>;
|
|
4580
4627
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
4581
4628
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
4582
4629
|
cache: "cache";
|
|
@@ -5924,6 +5971,23 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
5924
5971
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
5925
5972
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
5926
5973
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
5974
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
5975
|
+
limitBytes: z.ZodNumber;
|
|
5976
|
+
bytesAfterLimit: z.ZodNumber;
|
|
5977
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
5978
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
5979
|
+
h1: "h1";
|
|
5980
|
+
main: "main";
|
|
5981
|
+
}>>;
|
|
5982
|
+
mainContentStart: z.ZodEnum<{
|
|
5983
|
+
"before-limit": "before-limit";
|
|
5984
|
+
"near-limit": "near-limit";
|
|
5985
|
+
"after-limit": "after-limit";
|
|
5986
|
+
"not-found": "not-found";
|
|
5987
|
+
}>;
|
|
5988
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
5989
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
5990
|
+
}, z.core.$strip>>;
|
|
5927
5991
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
5928
5992
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
5929
5993
|
cache: "cache";
|
|
@@ -7271,6 +7335,23 @@ export declare const crawlReportSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
7271
7335
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
7272
7336
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
7273
7337
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
7338
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
7339
|
+
limitBytes: z.ZodNumber;
|
|
7340
|
+
bytesAfterLimit: z.ZodNumber;
|
|
7341
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
7342
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
7343
|
+
h1: "h1";
|
|
7344
|
+
main: "main";
|
|
7345
|
+
}>>;
|
|
7346
|
+
mainContentStart: z.ZodEnum<{
|
|
7347
|
+
"before-limit": "before-limit";
|
|
7348
|
+
"near-limit": "near-limit";
|
|
7349
|
+
"after-limit": "after-limit";
|
|
7350
|
+
"not-found": "not-found";
|
|
7351
|
+
}>;
|
|
7352
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
7353
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
7354
|
+
}, z.core.$strip>>;
|
|
7274
7355
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
7275
7356
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
7276
7357
|
cache: "cache";
|
|
@@ -8620,6 +8701,23 @@ export declare const crawlerSchemas: {
|
|
|
8620
8701
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
8621
8702
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
8622
8703
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
8704
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
8705
|
+
limitBytes: z.ZodNumber;
|
|
8706
|
+
bytesAfterLimit: z.ZodNumber;
|
|
8707
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
8708
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
8709
|
+
h1: "h1";
|
|
8710
|
+
main: "main";
|
|
8711
|
+
}>>;
|
|
8712
|
+
mainContentStart: z.ZodEnum<{
|
|
8713
|
+
"before-limit": "before-limit";
|
|
8714
|
+
"near-limit": "near-limit";
|
|
8715
|
+
"after-limit": "after-limit";
|
|
8716
|
+
"not-found": "not-found";
|
|
8717
|
+
}>;
|
|
8718
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
8719
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
8720
|
+
}, z.core.$strip>>;
|
|
8623
8721
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
8624
8722
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
8625
8723
|
cache: "cache";
|
|
@@ -9967,6 +10065,23 @@ export declare const crawlerSchemas: {
|
|
|
9967
10065
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
9968
10066
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
9969
10067
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
10068
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
10069
|
+
limitBytes: z.ZodNumber;
|
|
10070
|
+
bytesAfterLimit: z.ZodNumber;
|
|
10071
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
10072
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
10073
|
+
h1: "h1";
|
|
10074
|
+
main: "main";
|
|
10075
|
+
}>>;
|
|
10076
|
+
mainContentStart: z.ZodEnum<{
|
|
10077
|
+
"before-limit": "before-limit";
|
|
10078
|
+
"near-limit": "near-limit";
|
|
10079
|
+
"after-limit": "after-limit";
|
|
10080
|
+
"not-found": "not-found";
|
|
10081
|
+
}>;
|
|
10082
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
10083
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
10084
|
+
}, z.core.$strip>>;
|
|
9970
10085
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
9971
10086
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
9972
10087
|
cache: "cache";
|
|
@@ -11314,6 +11429,23 @@ export declare const crawlerSchemas: {
|
|
|
11314
11429
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
11315
11430
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
11316
11431
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
11432
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
11433
|
+
limitBytes: z.ZodNumber;
|
|
11434
|
+
bytesAfterLimit: z.ZodNumber;
|
|
11435
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
11436
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
11437
|
+
h1: "h1";
|
|
11438
|
+
main: "main";
|
|
11439
|
+
}>>;
|
|
11440
|
+
mainContentStart: z.ZodEnum<{
|
|
11441
|
+
"before-limit": "before-limit";
|
|
11442
|
+
"near-limit": "near-limit";
|
|
11443
|
+
"after-limit": "after-limit";
|
|
11444
|
+
"not-found": "not-found";
|
|
11445
|
+
}>;
|
|
11446
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
11447
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
11448
|
+
}, z.core.$strip>>;
|
|
11317
11449
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
11318
11450
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
11319
11451
|
cache: "cache";
|
|
@@ -12787,6 +12919,23 @@ export declare const crawlerSchemas: {
|
|
|
12787
12919
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
12788
12920
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
12789
12921
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
12922
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
12923
|
+
limitBytes: z.ZodNumber;
|
|
12924
|
+
bytesAfterLimit: z.ZodNumber;
|
|
12925
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
12926
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
12927
|
+
h1: "h1";
|
|
12928
|
+
main: "main";
|
|
12929
|
+
}>>;
|
|
12930
|
+
mainContentStart: z.ZodEnum<{
|
|
12931
|
+
"before-limit": "before-limit";
|
|
12932
|
+
"near-limit": "near-limit";
|
|
12933
|
+
"after-limit": "after-limit";
|
|
12934
|
+
"not-found": "not-found";
|
|
12935
|
+
}>;
|
|
12936
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
12937
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
12938
|
+
}, z.core.$strip>>;
|
|
12790
12939
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
12791
12940
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
12792
12941
|
cache: "cache";
|
|
@@ -13596,6 +13745,23 @@ export declare const crawlerJsonSchemas: {
|
|
|
13596
13745
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
13597
13746
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
13598
13747
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
13748
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
13749
|
+
limitBytes: z.ZodNumber;
|
|
13750
|
+
bytesAfterLimit: z.ZodNumber;
|
|
13751
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
13752
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
13753
|
+
h1: "h1";
|
|
13754
|
+
main: "main";
|
|
13755
|
+
}>>;
|
|
13756
|
+
mainContentStart: z.ZodEnum<{
|
|
13757
|
+
"before-limit": "before-limit";
|
|
13758
|
+
"near-limit": "near-limit";
|
|
13759
|
+
"after-limit": "after-limit";
|
|
13760
|
+
"not-found": "not-found";
|
|
13761
|
+
}>;
|
|
13762
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
13763
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
13764
|
+
}, z.core.$strip>>;
|
|
13599
13765
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
13600
13766
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
13601
13767
|
cache: "cache";
|
|
@@ -14943,6 +15109,23 @@ export declare const crawlerJsonSchemas: {
|
|
|
14943
15109
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
14944
15110
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
14945
15111
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
15112
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
15113
|
+
limitBytes: z.ZodNumber;
|
|
15114
|
+
bytesAfterLimit: z.ZodNumber;
|
|
15115
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
15116
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
15117
|
+
h1: "h1";
|
|
15118
|
+
main: "main";
|
|
15119
|
+
}>>;
|
|
15120
|
+
mainContentStart: z.ZodEnum<{
|
|
15121
|
+
"before-limit": "before-limit";
|
|
15122
|
+
"near-limit": "near-limit";
|
|
15123
|
+
"after-limit": "after-limit";
|
|
15124
|
+
"not-found": "not-found";
|
|
15125
|
+
}>;
|
|
15126
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
15127
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
15128
|
+
}, z.core.$strip>>;
|
|
14946
15129
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
14947
15130
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
14948
15131
|
cache: "cache";
|
|
@@ -16290,6 +16473,23 @@ export declare const crawlerJsonSchemas: {
|
|
|
16290
16473
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
16291
16474
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
16292
16475
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
16476
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
16477
|
+
limitBytes: z.ZodNumber;
|
|
16478
|
+
bytesAfterLimit: z.ZodNumber;
|
|
16479
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
16480
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
16481
|
+
h1: "h1";
|
|
16482
|
+
main: "main";
|
|
16483
|
+
}>>;
|
|
16484
|
+
mainContentStart: z.ZodEnum<{
|
|
16485
|
+
"before-limit": "before-limit";
|
|
16486
|
+
"near-limit": "near-limit";
|
|
16487
|
+
"after-limit": "after-limit";
|
|
16488
|
+
"not-found": "not-found";
|
|
16489
|
+
}>;
|
|
16490
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
16491
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
16492
|
+
}, z.core.$strip>>;
|
|
16293
16493
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
16294
16494
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
16295
16495
|
cache: "cache";
|
|
@@ -17763,6 +17963,23 @@ export declare const crawlerJsonSchemas: {
|
|
|
17763
17963
|
responseHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
17764
17964
|
responseTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
17765
17965
|
sizeBytes: z.ZodOptional<z.ZodNumber>;
|
|
17966
|
+
googlebotCut: z.ZodOptional<z.ZodObject<{
|
|
17967
|
+
limitBytes: z.ZodNumber;
|
|
17968
|
+
bytesAfterLimit: z.ZodNumber;
|
|
17969
|
+
mainContentStartBytes: z.ZodOptional<z.ZodNumber>;
|
|
17970
|
+
mainContentMarker: z.ZodOptional<z.ZodEnum<{
|
|
17971
|
+
h1: "h1";
|
|
17972
|
+
main: "main";
|
|
17973
|
+
}>>;
|
|
17974
|
+
mainContentStart: z.ZodEnum<{
|
|
17975
|
+
"before-limit": "before-limit";
|
|
17976
|
+
"near-limit": "near-limit";
|
|
17977
|
+
"after-limit": "after-limit";
|
|
17978
|
+
"not-found": "not-found";
|
|
17979
|
+
}>;
|
|
17980
|
+
visibleWordsBeforeLimit: z.ZodNumber;
|
|
17981
|
+
visibleWordsAfterLimit: z.ZodNumber;
|
|
17982
|
+
}, z.core.$strip>>;
|
|
17766
17983
|
usedJs: z.ZodOptional<z.ZodBoolean>;
|
|
17767
17984
|
fetchSource: z.ZodOptional<z.ZodEnum<{
|
|
17768
17985
|
cache: "cache";
|
|
@@ -22116,6 +22333,7 @@ type WeekData = {
|
|
|
22116
22333
|
end: string;
|
|
22117
22334
|
account: string;
|
|
22118
22335
|
sites: WeekSite[];
|
|
22336
|
+
first?: boolean;
|
|
22119
22337
|
};
|
|
22120
22338
|
type WeekGoogleUpdate = {
|
|
22121
22339
|
name: string;
|