@rivi-software/agentic-seo-check 0.4.0 → 0.6.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/README.md +49 -7
- package/dist/cli.js +28 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/aeo/audit.d.ts +8 -0
- package/dist/core/aeo/audit.js +101 -17
- package/dist/core/aeo/audit.js.map +1 -1
- package/dist/core/aeo/bots.d.ts +48 -0
- package/dist/core/aeo/bots.js +151 -5
- package/dist/core/aeo/bots.js.map +1 -1
- package/dist/core/aeo/fixes.d.ts +38 -0
- package/dist/core/aeo/fixes.js +111 -0
- package/dist/core/aeo/fixes.js.map +1 -0
- package/dist/core/aeo/site-rules.d.ts +5 -0
- package/dist/core/aeo/site-rules.js +293 -10
- package/dist/core/aeo/site-rules.js.map +1 -1
- package/dist/core/audit.d.ts +8 -0
- package/dist/core/audit.js +144 -25
- package/dist/core/audit.js.map +1 -1
- package/dist/core/crawl.js +43 -4
- package/dist/core/crawl.js.map +1 -1
- package/dist/core/html/answer.d.ts +5 -2
- package/dist/core/html/answer.js +25 -7
- package/dist/core/html/answer.js.map +1 -1
- package/dist/core/html/dom.d.ts +13 -1
- package/dist/core/html/dom.js +30 -2
- package/dist/core/html/dom.js.map +1 -1
- package/dist/core/html/extract.js +122 -30
- package/dist/core/html/extract.js.map +1 -1
- package/dist/core/html/head.js +114 -19
- package/dist/core/html/head.js.map +1 -1
- package/dist/core/html/resources.js +15 -7
- package/dist/core/html/resources.js.map +1 -1
- package/dist/core/html/structured-data.js +21 -5
- package/dist/core/html/structured-data.js.map +1 -1
- package/dist/core/lighthouse.d.ts +5 -6
- package/dist/core/lighthouse.js +297 -7
- package/dist/core/lighthouse.js.map +1 -1
- package/dist/core/performance-fixes.d.ts +25 -0
- package/dist/core/performance-fixes.js +446 -0
- package/dist/core/performance-fixes.js.map +1 -0
- package/dist/core/performance-rules.js +56 -8
- package/dist/core/performance-rules.js.map +1 -1
- package/dist/core/recheck.d.ts +68 -0
- package/dist/core/recheck.js +247 -0
- package/dist/core/recheck.js.map +1 -0
- package/dist/core/render-fixes.d.ts +27 -0
- package/dist/core/render-fixes.js +164 -0
- package/dist/core/render-fixes.js.map +1 -0
- package/dist/core/render-rules.js +60 -21
- package/dist/core/render-rules.js.map +1 -1
- package/dist/core/render.d.ts +9 -1
- package/dist/core/render.js +36 -2
- package/dist/core/render.js.map +1 -1
- package/dist/core/report/markdown.js +68 -1
- package/dist/core/report/markdown.js.map +1 -1
- package/dist/core/robots.d.ts +5 -0
- package/dist/core/robots.js +8 -0
- package/dist/core/robots.js.map +1 -1
- package/dist/core/rules/aeo.js +339 -25
- package/dist/core/rules/aeo.js.map +1 -1
- package/dist/core/rules/canonical.js +107 -11
- package/dist/core/rules/canonical.js.map +1 -1
- package/dist/core/rules/content.js +65 -7
- package/dist/core/rules/content.js.map +1 -1
- package/dist/core/rules/document.js +73 -8
- package/dist/core/rules/document.js.map +1 -1
- package/dist/core/rules/fix.d.ts +55 -0
- package/dist/core/rules/fix.js +159 -0
- package/dist/core/rules/fix.js.map +1 -0
- package/dist/core/rules/head.js +81 -4
- package/dist/core/rules/head.js.map +1 -1
- package/dist/core/rules/headings.js +92 -9
- package/dist/core/rules/headings.js.map +1 -1
- package/dist/core/rules/hreflang.js +79 -9
- package/dist/core/rules/hreflang.js.map +1 -1
- package/dist/core/rules/images.js +49 -0
- package/dist/core/rules/images.js.map +1 -1
- package/dist/core/rules/index.d.ts +11 -0
- package/dist/core/rules/index.js +21 -1
- package/dist/core/rules/index.js.map +1 -1
- package/dist/core/rules/indexing.js +108 -1
- package/dist/core/rules/indexing.js.map +1 -1
- package/dist/core/rules/keyword.js +91 -1
- package/dist/core/rules/keyword.js.map +1 -1
- package/dist/core/rules/links.js +42 -0
- package/dist/core/rules/links.js.map +1 -1
- package/dist/core/rules/loading.js +54 -1
- package/dist/core/rules/loading.js.map +1 -1
- package/dist/core/rules/meta.js +36 -5
- package/dist/core/rules/meta.js.map +1 -1
- package/dist/core/rules/page-fixes.d.ts +39 -0
- package/dist/core/rules/page-fixes.js +107 -0
- package/dist/core/rules/page-fixes.js.map +1 -0
- package/dist/core/rules/quoted-tags.d.ts +23 -0
- package/dist/core/rules/quoted-tags.js +79 -0
- package/dist/core/rules/quoted-tags.js.map +1 -0
- package/dist/core/rules/response.js +71 -7
- package/dist/core/rules/response.js.map +1 -1
- package/dist/core/rules/rule.d.ts +17 -4
- package/dist/core/rules/rule.js +11 -2
- package/dist/core/rules/rule.js.map +1 -1
- package/dist/core/rules/social.js +101 -10
- package/dist/core/rules/social.js.map +1 -1
- package/dist/core/rules/structured-data-fixes.d.ts +33 -0
- package/dist/core/rules/structured-data-fixes.js +469 -0
- package/dist/core/rules/structured-data-fixes.js.map +1 -0
- package/dist/core/rules/structured-data-values.js +242 -31
- package/dist/core/rules/structured-data-values.js.map +1 -1
- package/dist/core/rules/structured-data.js +171 -4
- package/dist/core/rules/structured-data.js.map +1 -1
- package/dist/core/rules/title.js +39 -5
- package/dist/core/rules/title.js.map +1 -1
- package/dist/core/rules/urls.js +166 -0
- package/dist/core/rules/urls.js.map +1 -1
- package/dist/core/site-fixes.d.ts +111 -0
- package/dist/core/site-fixes.js +650 -0
- package/dist/core/site-fixes.js.map +1 -0
- package/dist/core/site-rules.js +474 -53
- package/dist/core/site-rules.js.map +1 -1
- package/dist/core/sitemap.d.ts +16 -0
- package/dist/core/sitemap.js +34 -0
- package/dist/core/sitemap.js.map +1 -1
- package/dist/core/types.d.ts +223 -3
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +16 -2
- package/dist/mcp.js.map +1 -1
- package/package.json +5 -7
- package/skills/seo-audit/SKILL.md +23 -6
package/dist/core/types.d.ts
CHANGED
|
@@ -18,6 +18,42 @@ export interface RuleMeta {
|
|
|
18
18
|
/** Only runs when this capability/mode is active. */
|
|
19
19
|
requires?: Requirement;
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* What a fix edits: `html` is the page as served (change the template, component or file that
|
|
23
|
+
* renders it), `http` the server's response for a URL (status line, headers, redirects: server, CDN
|
|
24
|
+
* or framework config), `robots.txt`, `sitemap` and `llms.txt` those files, and `asset` another file
|
|
25
|
+
* the site serves, such as an image or a script.
|
|
26
|
+
*/
|
|
27
|
+
export type FixTarget = "html" | "http" | "robots.txt" | "sitemap" | "llms.txt" | "asset";
|
|
28
|
+
/**
|
|
29
|
+
* One edit of a fix. `current` is quoted from what the server sent, so an agent can find it in the
|
|
30
|
+
* source; `code` is what to write instead. A quote cut short at 500 characters ends in "…".
|
|
31
|
+
*/
|
|
32
|
+
export interface FixEdit {
|
|
33
|
+
in: FixTarget;
|
|
34
|
+
/**
|
|
35
|
+
* `replace` swaps `current` for `code`, `add` writes `code` at `at`, `remove` deletes `current`.
|
|
36
|
+
* An `asset` replace at "whole file" has no `current`: the file itself changes (a script split, an
|
|
37
|
+
* image re-encoded), as `write` says.
|
|
38
|
+
*/
|
|
39
|
+
action: "add" | "replace" | "remove";
|
|
40
|
+
/** The URL whose file or response to change, when it is not the finding's own page. */
|
|
41
|
+
url?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Where in the file: a CSS selector in HTML ("head" for an edit that adds to <head>), a header
|
|
44
|
+
* name, a robots.txt group ("User-agent: *"), a JSON-LD object ("Product").
|
|
45
|
+
*/
|
|
46
|
+
at?: string;
|
|
47
|
+
/** What is there now: the tag, header, line or value to replace or remove, as the server sent it. */
|
|
48
|
+
current?: string;
|
|
49
|
+
/**
|
|
50
|
+
* The code to write. Text in `{{` `}}` is a slot for words only the author can write, such as a
|
|
51
|
+
* title; `write` says what goes in it. Everything else is exact.
|
|
52
|
+
*/
|
|
53
|
+
code?: string;
|
|
54
|
+
/** What goes in the `{{…}}` slots, or the part of the edit code cannot show. */
|
|
55
|
+
write?: string;
|
|
56
|
+
}
|
|
21
57
|
/** One actionable problem. Designed to be read by an agent that will edit code. */
|
|
22
58
|
export interface Finding {
|
|
23
59
|
rule: string;
|
|
@@ -27,13 +63,46 @@ export interface Finding {
|
|
|
27
63
|
message: string;
|
|
28
64
|
/** What to change. Concrete and framework-agnostic. */
|
|
29
65
|
recommendation: string;
|
|
30
|
-
/**
|
|
31
|
-
|
|
66
|
+
/**
|
|
67
|
+
* The edits that resolve this finding on this page or site; apply all of them. At most 10: a
|
|
68
|
+
* re-check shows what is left. Absent when there is nothing on the site to change.
|
|
69
|
+
*/
|
|
70
|
+
fix?: FixEdit[];
|
|
32
71
|
/** CSS selector or location hint for where the problem lives in the HTML. */
|
|
33
72
|
selector?: string;
|
|
34
73
|
/** Current values, counts, offending items (capped lists). */
|
|
35
74
|
evidence?: Record<string, unknown>;
|
|
36
75
|
docs?: string;
|
|
76
|
+
/** Page URL or file path the finding belongs to (absent for site-wide findings that list pages in evidence). */
|
|
77
|
+
url?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Stable across audits of the same page: `rule@hash`, from the rule, the URL and what the finding
|
|
80
|
+
* is about. A re-check with `baseline` matches findings by it. Findings the rule cannot tell
|
|
81
|
+
* apart are numbered (`~1`, `~2`), and a re-check never calls those fixed.
|
|
82
|
+
*/
|
|
83
|
+
id?: string;
|
|
84
|
+
}
|
|
85
|
+
/** A finding of the earlier audit that this one no longer reports. */
|
|
86
|
+
export interface FixedFinding {
|
|
87
|
+
id: string;
|
|
88
|
+
rule: string;
|
|
89
|
+
/** Known when the baseline was an audit rather than a list of ids. */
|
|
90
|
+
url?: string;
|
|
91
|
+
message?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* How this audit compares with an earlier one (`baseline`): which findings a fix resolved, which
|
|
95
|
+
* are still open and which are new. Only findings this audit could check are compared: those whose
|
|
96
|
+
* rule ran again on a page it audited again.
|
|
97
|
+
*/
|
|
98
|
+
export interface BaselineComparison {
|
|
99
|
+
fixed: FixedFinding[];
|
|
100
|
+
/** Ids of findings both audits report. */
|
|
101
|
+
open: string[];
|
|
102
|
+
/** Ids of findings only this audit reports: a new problem, or one a fix caused. */
|
|
103
|
+
new: string[];
|
|
104
|
+
/** Findings of the earlier audit this one did not check: their rule did not run, or their page was not audited. */
|
|
105
|
+
notChecked: number;
|
|
37
106
|
}
|
|
38
107
|
export interface SeverityCounts {
|
|
39
108
|
error: number;
|
|
@@ -54,6 +123,8 @@ export interface ImageInfo {
|
|
|
54
123
|
/** The image sits in a <picture>, whose <source> elements offer other sizes or formats. */
|
|
55
124
|
inPicture: boolean;
|
|
56
125
|
fetchpriority: string | null;
|
|
126
|
+
/** The `<img>` tag as the HTML writes it, for a fix to quote. */
|
|
127
|
+
tag: string;
|
|
57
128
|
/**
|
|
58
129
|
* Words of visible text before the image, a rough measure of how far down the page it is; null
|
|
59
130
|
* for an image that does not render where it is written (inside <template>, <noscript>, <svg>).
|
|
@@ -70,22 +141,34 @@ export interface LinkInfo {
|
|
|
70
141
|
nofollow: boolean;
|
|
71
142
|
/** True when the link has visible text, an aria-label, a title, or an image with alt text. */
|
|
72
143
|
hasAccessibleName: boolean;
|
|
144
|
+
/** The `<a>` start tag as the HTML writes it, for a fix to quote. */
|
|
145
|
+
tag: string;
|
|
146
|
+
/** The whole `<a>` element as the HTML writes it, cut at 500 characters. */
|
|
147
|
+
outer: string;
|
|
73
148
|
}
|
|
74
149
|
export interface HreflangInfo {
|
|
75
150
|
lang: string;
|
|
76
151
|
href: string;
|
|
77
152
|
url: string | null;
|
|
153
|
+
/** The `<link>` tag as the HTML writes it, for a fix to quote. */
|
|
154
|
+
tag: string;
|
|
78
155
|
}
|
|
79
156
|
export interface StructuredDataItem {
|
|
80
157
|
source: "json-ld" | "microdata";
|
|
81
158
|
types: string[];
|
|
82
159
|
context: string | null;
|
|
83
160
|
data: Record<string, unknown>;
|
|
161
|
+
/** JSON-LD: the text of the <script> the item comes from, as written (cut at 20,000 characters), for a fix to quote. */
|
|
162
|
+
scriptText?: string;
|
|
84
163
|
}
|
|
85
164
|
export interface StructuredDataError {
|
|
86
165
|
source: "json-ld";
|
|
87
166
|
message: string;
|
|
88
167
|
snippet: string;
|
|
168
|
+
/** Which `<script type="application/ld+json">` of the page it is, counted from 0 (the index into `markup.jsonLd`). */
|
|
169
|
+
script: number;
|
|
170
|
+
/** The script's text as written (cut at 20,000 characters), for a fix to quote. */
|
|
171
|
+
text: string;
|
|
89
172
|
}
|
|
90
173
|
/** A heading (or FAQ `<summary>`/`<dt>`) phrased as a question, and the text that follows it. */
|
|
91
174
|
export interface QuestionHeading {
|
|
@@ -99,10 +182,15 @@ export interface QuestionHeading {
|
|
|
99
182
|
}
|
|
100
183
|
/** What an answer engine needs from a page beyond classic SEO, read once by the extractor. */
|
|
101
184
|
export interface AnswerSignals {
|
|
102
|
-
/**
|
|
185
|
+
/**
|
|
186
|
+
* Content of each robots meta tag by name (robots, googlebot, bingbot, ...), lower-cased. `index`
|
|
187
|
+
* is the tag's place among the robots meta tags, empty ones included: its quote is
|
|
188
|
+
* `markup.metaRobots[index]`.
|
|
189
|
+
*/
|
|
103
190
|
robotsMeta: {
|
|
104
191
|
name: string;
|
|
105
192
|
content: string;
|
|
193
|
+
index: number;
|
|
106
194
|
}[];
|
|
107
195
|
questions: QuestionHeading[];
|
|
108
196
|
/** Lists with two or more items outside navigation, header, footer and aside. */
|
|
@@ -113,8 +201,12 @@ export interface AnswerSignals {
|
|
|
113
201
|
nosnippetElements: number;
|
|
114
202
|
nosnippetWords: number;
|
|
115
203
|
nosnippetSelectors: string[];
|
|
204
|
+
/** The start tag of each element in `nosnippetSelectors`, as the HTML writes it; empty when the HTML was not given. */
|
|
205
|
+
nosnippetTags: string[];
|
|
116
206
|
/** Selector of an empty JavaScript app root (`#root`, `#__next`, ...), when the page has one. */
|
|
117
207
|
emptyAppRoot: string | null;
|
|
208
|
+
/** The empty app root element as the HTML writes it (`<div id="root"></div>`), when the HTML was given. */
|
|
209
|
+
emptyAppRootTag: string | null;
|
|
118
210
|
/** A `<noscript>` element mentions JavaScript ("please enable JavaScript"). */
|
|
119
211
|
noscriptAsksForJavaScript: boolean;
|
|
120
212
|
/** `<time>` elements in the body. */
|
|
@@ -132,6 +224,11 @@ export interface ResourceInfo {
|
|
|
132
224
|
kind: "script" | "stylesheet" | "frame" | "object" | "image" | "responsive-image" | "media" | "track";
|
|
133
225
|
/** Absolute http(s) URL. */
|
|
134
226
|
url: string;
|
|
227
|
+
/** The URL as the attribute writes it, before it is resolved, for a fix to quote. */
|
|
228
|
+
raw: string;
|
|
229
|
+
/** The element that loads it ("script", "img", ...) and the attribute the URL is in ("src", "srcset", ...). */
|
|
230
|
+
element: string;
|
|
231
|
+
attribute: string;
|
|
135
232
|
}
|
|
136
233
|
/** A `<meta http-equiv="refresh">`: reload or redirect after a number of seconds. */
|
|
137
234
|
export interface MetaRefresh {
|
|
@@ -166,6 +263,67 @@ export interface HeadSignals {
|
|
|
166
263
|
blockingScripts: string[];
|
|
167
264
|
/** `href` of icon links: rel icon, shortcut icon, apple-touch-icon(-precomposed). */
|
|
168
265
|
icons: string[];
|
|
266
|
+
/** The source of what the fields above describe, as the HTML writes it, for a fix to quote. */
|
|
267
|
+
sources: HeadSources;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Source quotes for `HeadSignals`, cut to 500 characters with a trailing "…" like the rest of
|
|
271
|
+
* `PageMarkup`.
|
|
272
|
+
*/
|
|
273
|
+
export interface HeadSources {
|
|
274
|
+
/**
|
|
275
|
+
* What to move out of <head>: the element that ended it (whole), the text, or, when it sat in a
|
|
276
|
+
* <noscript>, that whole <noscript> block. Null when nothing ended <head> early.
|
|
277
|
+
*/
|
|
278
|
+
closedBy: string | null;
|
|
279
|
+
/** Each element of `inBody`, in the same order. */
|
|
280
|
+
inBody: string[];
|
|
281
|
+
/** Each element of `streamedInBody`, in the same order. */
|
|
282
|
+
streamedInBody: string[];
|
|
283
|
+
/** Each `<meta http-equiv="refresh">` of `refresh`, in the same order. */
|
|
284
|
+
refresh: string[];
|
|
285
|
+
/** Each `<script>` start tag of `blockingScripts`, in the same order. */
|
|
286
|
+
blockingScripts: string[];
|
|
287
|
+
}
|
|
288
|
+
/** A paragraph-like element of the body (`<p>`, `<li>`, `<td>`, ...) that holds no other such element. */
|
|
289
|
+
export interface TextBlock {
|
|
290
|
+
/** Its visible text, whitespace collapsed. */
|
|
291
|
+
text: string;
|
|
292
|
+
/** The whole element as written, cut at 500 characters (a cut quote ends in "…"). */
|
|
293
|
+
outer: string;
|
|
294
|
+
/** Its start tag as written. */
|
|
295
|
+
tag: string;
|
|
296
|
+
/** The element name, for its end tag. */
|
|
297
|
+
name: string;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Tags as the HTML writes them, so a fix can quote what to replace. Elements the parser added
|
|
301
|
+
* itself (an `<html>` or `<head>` the page leaves out) have no tag: null.
|
|
302
|
+
*/
|
|
303
|
+
export interface PageMarkup {
|
|
304
|
+
/** The `<html>` start tag. */
|
|
305
|
+
html: string | null;
|
|
306
|
+
/** The `<head>` start tag. */
|
|
307
|
+
head: string | null;
|
|
308
|
+
/** Each `<title>` element, in the order of `titles`. */
|
|
309
|
+
titles: string[];
|
|
310
|
+
/** Each meta description tag, in the order of `metaDescriptions`. */
|
|
311
|
+
metaDescriptions: string[];
|
|
312
|
+
/** Each robots meta tag (robots, googlebot, googlebot-news, bingbot), empty ones included. */
|
|
313
|
+
metaRobots: string[];
|
|
314
|
+
/** Each `<link rel="canonical">`, in the order of `canonicals`. */
|
|
315
|
+
canonicals: string[];
|
|
316
|
+
/** Each heading element, in the order of `headings`. */
|
|
317
|
+
headings: string[];
|
|
318
|
+
viewport: string | null;
|
|
319
|
+
/** The `<meta charset>` or `<meta http-equiv="content-type">` tag. */
|
|
320
|
+
charset: string | null;
|
|
321
|
+
/** The tag of each Open Graph and Twitter property, keyed as in `og` and `twitter` with its prefix ("og:image"). */
|
|
322
|
+
social: Record<string, string>;
|
|
323
|
+
/** Each `<script type="application/ld+json">` start tag, in document order. */
|
|
324
|
+
jsonLd: string[];
|
|
325
|
+
/** The body's text blocks in document order, the first 300, for a fix that rewrites a passage. */
|
|
326
|
+
blocks: TextBlock[];
|
|
169
327
|
}
|
|
170
328
|
/** Everything the extractor pulls out of one HTML document. Rules read only this. */
|
|
171
329
|
export interface ExtractedPage {
|
|
@@ -204,6 +362,7 @@ export interface ExtractedPage {
|
|
|
204
362
|
htmlBytes: number;
|
|
205
363
|
hasBaseHref: boolean;
|
|
206
364
|
head: HeadSignals;
|
|
365
|
+
markup: PageMarkup;
|
|
207
366
|
/** Signals the AEO audit reads; the SEO rules do not use them. */
|
|
208
367
|
answer: AnswerSignals;
|
|
209
368
|
}
|
|
@@ -259,6 +418,47 @@ export interface LighthouseMetrics {
|
|
|
259
418
|
ttfbMs: number | null;
|
|
260
419
|
inpMs: number | null;
|
|
261
420
|
}
|
|
421
|
+
/** An element Lighthouse names, as the rendered DOM serialises it. */
|
|
422
|
+
export interface LighthouseNode {
|
|
423
|
+
/** CSS selector of the element in the rendered DOM. */
|
|
424
|
+
selector: string;
|
|
425
|
+
/** The element's start tag; Lighthouse shortens long attribute values with "…". */
|
|
426
|
+
snippet: string;
|
|
427
|
+
/** Its text or alt, as Lighthouse labels it. */
|
|
428
|
+
label: string | null;
|
|
429
|
+
/** Element name, lower-cased ("img", "div"), when Lighthouse gives it. */
|
|
430
|
+
name: string | null;
|
|
431
|
+
/** Rendered size in CSS pixels, rounded. */
|
|
432
|
+
width: number | null;
|
|
433
|
+
height: number | null;
|
|
434
|
+
}
|
|
435
|
+
/** One row of a Lighthouse audit's details, the parts a fix needs. */
|
|
436
|
+
export interface LighthouseItem {
|
|
437
|
+
url?: string;
|
|
438
|
+
node?: LighthouseNode;
|
|
439
|
+
totalBytes?: number;
|
|
440
|
+
wastedBytes?: number;
|
|
441
|
+
wastedMs?: number;
|
|
442
|
+
/** A line of a file Lighthouse checked (robots.txt), and its 1-based number. */
|
|
443
|
+
line?: string;
|
|
444
|
+
lineNumber?: number;
|
|
445
|
+
/** What Lighthouse says about the row: an error message, a cause, a description. */
|
|
446
|
+
text?: string;
|
|
447
|
+
}
|
|
448
|
+
/** The Largest Contentful Paint element, and what Lighthouse found about how it loads. */
|
|
449
|
+
export interface LcpElement {
|
|
450
|
+
node: LighthouseNode;
|
|
451
|
+
/** URL of the image request, when exactly one image request in the network log matches the element. */
|
|
452
|
+
imageUrl: string | null;
|
|
453
|
+
/** The element has a srcset, so a preload would need imagesrcset and imagesizes. */
|
|
454
|
+
hasSrcset: boolean;
|
|
455
|
+
/** lcp-discovery checks, false where the page gets it wrong, null when Lighthouse did not check. */
|
|
456
|
+
fetchpriorityHigh: boolean | null;
|
|
457
|
+
discoverable: boolean | null;
|
|
458
|
+
notLazy: boolean | null;
|
|
459
|
+
/** Where the time to LCP goes, in ms: timeToFirstByte, resourceLoadDelay, resourceLoadDuration, elementRenderDelay. */
|
|
460
|
+
phases: Record<string, number>;
|
|
461
|
+
}
|
|
262
462
|
export interface LighthouseOpportunity {
|
|
263
463
|
id: string;
|
|
264
464
|
title: string;
|
|
@@ -266,6 +466,8 @@ export interface LighthouseOpportunity {
|
|
|
266
466
|
score: number | null;
|
|
267
467
|
savingsMs: number | null;
|
|
268
468
|
savingsBytes: number | null;
|
|
469
|
+
/** The first rows of the audit (resources, elements), for a fix to name. */
|
|
470
|
+
items?: LighthouseItem[];
|
|
269
471
|
}
|
|
270
472
|
export interface LighthouseAuditSummary {
|
|
271
473
|
id: string;
|
|
@@ -273,6 +475,8 @@ export interface LighthouseAuditSummary {
|
|
|
273
475
|
description: string;
|
|
274
476
|
score: number | null;
|
|
275
477
|
displayValue: string | null;
|
|
478
|
+
/** The first rows of the audit (failing links, robots.txt lines, elements), for a fix to name. */
|
|
479
|
+
items?: LighthouseItem[];
|
|
276
480
|
}
|
|
277
481
|
export interface PerformanceResult {
|
|
278
482
|
tool: "lighthouse";
|
|
@@ -284,6 +488,16 @@ export interface PerformanceResult {
|
|
|
284
488
|
opportunities: LighthouseOpportunity[];
|
|
285
489
|
failedSeoAudits: LighthouseAuditSummary[];
|
|
286
490
|
agenticBrowsingAudits: LighthouseAuditSummary[];
|
|
491
|
+
/** The LCP element, when Lighthouse names one. */
|
|
492
|
+
lcpElement?: LcpElement;
|
|
493
|
+
/** Images without width and height (unsized-images), which shift the layout when they load. */
|
|
494
|
+
unsizedImages?: LighthouseItem[];
|
|
495
|
+
/** Elements that shifted the layout (cls-culprits), with the causes Lighthouse found in `text`. */
|
|
496
|
+
layoutShifts?: LighthouseItem[];
|
|
497
|
+
/** Stylesheets and scripts that block the first paint (render-blocking). */
|
|
498
|
+
renderBlocking?: LighthouseItem[];
|
|
499
|
+
/** Scripts with the most main-thread time (bootup-time), `wastedMs` holding their script evaluation time. */
|
|
500
|
+
scripts?: LighthouseItem[];
|
|
287
501
|
}
|
|
288
502
|
export interface RenderComparison {
|
|
289
503
|
tool: "playwright";
|
|
@@ -314,6 +528,8 @@ export interface PageAudit {
|
|
|
314
528
|
auditedAt: string;
|
|
315
529
|
response?: ResponseInfo;
|
|
316
530
|
summary: PageSummary;
|
|
531
|
+
/** With `baseline`: what changed since the earlier audit. */
|
|
532
|
+
baseline?: BaselineComparison;
|
|
317
533
|
findings: Finding[];
|
|
318
534
|
counts: SeverityCounts;
|
|
319
535
|
/** 0-100. Indicative only: 100 minus weighted deductions per finding. */
|
|
@@ -400,6 +616,8 @@ export interface SiteAudit {
|
|
|
400
616
|
robotsTxt: RobotsTxtInfo | null;
|
|
401
617
|
sitemaps: SitemapInfo;
|
|
402
618
|
pages: PageAudit[];
|
|
619
|
+
/** With `baseline`: what changed since the earlier audit, over site and page findings. */
|
|
620
|
+
baseline?: BaselineComparison;
|
|
403
621
|
/** Findings that span pages (duplicates, broken links, sitemap mismatches, ...). */
|
|
404
622
|
siteFindings: Finding[];
|
|
405
623
|
/** Page-level findings rolled up by rule, most severe and most frequent first. */
|
|
@@ -534,6 +752,8 @@ export interface AeoAudit {
|
|
|
534
752
|
counts: SeverityCounts;
|
|
535
753
|
auditedAt: string;
|
|
536
754
|
summary: AeoSummary;
|
|
755
|
+
/** With `baseline`: what changed since the earlier audit, over site and page findings. */
|
|
756
|
+
baseline?: BaselineComparison;
|
|
537
757
|
/**
|
|
538
758
|
* Site-wide findings (robots.txt, llms.txt, bot probes), then the page findings: all of them for
|
|
539
759
|
* one page or with `pageDetail: "full"`, none for a site with `pageDetail: "summary"` (see `issues`).
|
package/dist/core/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;CACR,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;CACR,CAAC;AA01BF,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,mBAAmB,EAAE,EAAE;IACvB,mBAAmB,EAAE,GAAG;IACxB,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,GAAG;IACrB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,CAAC;IAChB,wBAAwB,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAmB,EAAE,CAAC,CAAC;IAChD,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAmB,EAAkB,EAAE;IACnE,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export { AI_BOTS } from "./core/aeo/bots.js";
|
|
|
7
7
|
export type { AiBot } from "./core/aeo/bots.js";
|
|
8
8
|
export { extractPage } from "./core/html/extract.js";
|
|
9
9
|
export { ALL_RULES, AEO_PAGE_RULES, PAGE_RULES, findRule, runPageRules, } from "./core/rules/index.js";
|
|
10
|
+
export { baselineFromAudit, baselineFromIds } from "./core/recheck.js";
|
|
11
|
+
export type { Baseline, BaselineEntry } from "./core/recheck.js";
|
|
10
12
|
export { renderAeoMarkdown, renderMarkdown } from "./core/report/markdown.js";
|
|
11
13
|
export { runLighthouse, LighthouseUnavailableError, } from "./core/lighthouse.js";
|
|
12
14
|
export { renderPage, RenderUnavailableError } from "./core/render.js";
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export { auditAeoHtml, auditAeoUrl, auditAeoSite, auditAeoDirectory, auditAeoTar
|
|
|
4
4
|
export { AI_BOTS } from "./core/aeo/bots.js";
|
|
5
5
|
export { extractPage } from "./core/html/extract.js";
|
|
6
6
|
export { ALL_RULES, AEO_PAGE_RULES, PAGE_RULES, findRule, runPageRules, } from "./core/rules/index.js";
|
|
7
|
+
export { baselineFromAudit, baselineFromIds } from "./core/recheck.js";
|
|
7
8
|
export { renderAeoMarkdown, renderMarkdown } from "./core/report/markdown.js";
|
|
8
9
|
export { runLighthouse, LighthouseUnavailableError, } from "./core/lighthouse.js";
|
|
9
10
|
export { renderPage, RenderUnavailableError } from "./core/render.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,iBAAiB,CAAC;AASzB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EACL,SAAS,EACT,cAAc,EACd,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EACL,aAAa,EACb,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,iBAAiB,CAAC;AASzB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EACL,SAAS,EACT,cAAc,EACd,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIvE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EACL,aAAa,EACb,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/mcp.js
CHANGED
|
@@ -6,6 +6,7 @@ import { auditAeoDirectory, auditAeoHtml, auditAeoSite, auditAeoUrl, compactAeoA
|
|
|
6
6
|
import { auditDirectory, auditHtml, auditSite, auditUrl, compactAudit, } from "./core/audit.js";
|
|
7
7
|
import { runLighthouse } from "./core/lighthouse.js";
|
|
8
8
|
import { performanceFindings } from "./core/performance-rules.js";
|
|
9
|
+
import { assignIds, baselineFromIds } from "./core/recheck.js";
|
|
9
10
|
import { renderAeoMarkdown, renderMarkdown } from "./core/report/markdown.js";
|
|
10
11
|
import { ALL_RULES } from "./core/rules/index.js";
|
|
11
12
|
import { VERSION } from "./version.js";
|
|
@@ -32,6 +33,14 @@ const commonOptions = {
|
|
|
32
33
|
.array(z.string())
|
|
33
34
|
.optional()
|
|
34
35
|
.describe('Rule ids to skip, e.g. ["twitter.card-missing"]. Use seo_list_rules to see ids.'),
|
|
36
|
+
rules: z
|
|
37
|
+
.array(z.string())
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('Run only these rule ids, e.g. ["img.alt-missing"] to re-check the findings a fix was for. Use with `baseline`.'),
|
|
40
|
+
baseline: z
|
|
41
|
+
.array(z.string())
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("The `id` of every finding of the earlier audit. The result then has `baseline`: the ids since fixed, still open and new (a new one may be a problem a fix caused). Re-check with the same options; for a crawl or directory, run both audits with pageDetail full so page findings have ids."),
|
|
35
44
|
timeoutMs: z
|
|
36
45
|
.number()
|
|
37
46
|
.int()
|
|
@@ -51,6 +60,8 @@ const toOptions = (input) => ({
|
|
|
51
60
|
keyword: input.keyword,
|
|
52
61
|
includeInfo: input.includeInfo,
|
|
53
62
|
disableRules: input.disableRules,
|
|
63
|
+
onlyRules: input.rules,
|
|
64
|
+
baseline: input.baseline ? baselineFromIds(input.baseline) : undefined,
|
|
54
65
|
fetch: {
|
|
55
66
|
timeoutMs: input.timeoutMs,
|
|
56
67
|
userAgent: input.userAgent,
|
|
@@ -124,12 +135,12 @@ export const createMcpServer = () => {
|
|
|
124
135
|
});
|
|
125
136
|
server.registerTool("seo_audit_page", {
|
|
126
137
|
title: "Audit one page for SEO",
|
|
127
|
-
description: "Audit a single page and return prioritised, actionable findings (rule id, severity, message, recommendation, CSS selector, evidence). " +
|
|
138
|
+
description: "Audit a single page and return prioritised, actionable findings (rule id, severity, message, recommendation, CSS selector, evidence) with a `fix` for each: the exact edits that resolve it, quoting the code to replace (`{{…}}` marks words the author writes). " +
|
|
128
139
|
"Checks title, meta description, headings, canonical, robots/noindex, viewport/lang, Open Graph/Twitter cards, images, links, hreflang, structured data (JSON-LD/microdata), content quality and the HTTP response. " +
|
|
129
140
|
"Provide either `url` (live site, staging or http://localhost dev server) or `html` (raw HTML string, e.g. from a template or test render). " +
|
|
130
141
|
"Set `render: true` to also load the page in headless Chromium and report content that only exists after JavaScript runs (SPA/CSR problems). " +
|
|
131
142
|
"Set `lighthouse: true` for Core Web Vitals (LCP, CLS, TBT) and Lighthouse SEO audits; this takes 20-60 seconds. " +
|
|
132
|
-
"Typical workflow: audit,
|
|
143
|
+
"Typical workflow: audit, apply the `fix` of each error and warning in the source code, then re-check with `rules` (the rules you fixed) and `baseline` (the finding ids) to confirm they are fixed and nothing new appeared.",
|
|
133
144
|
inputSchema: {
|
|
134
145
|
url: z
|
|
135
146
|
.string()
|
|
@@ -342,6 +353,7 @@ export const createMcpServer = () => {
|
|
|
342
353
|
headers: input.headers,
|
|
343
354
|
});
|
|
344
355
|
const findings = performanceFindings(result);
|
|
356
|
+
assignIds(findings);
|
|
345
357
|
const payload = { ...result, findings };
|
|
346
358
|
const text = input.format === "markdown"
|
|
347
359
|
? lighthouseMarkdown(payload)
|
|
@@ -424,6 +436,8 @@ export const createMcpServer = () => {
|
|
|
424
436
|
.describe("Crawl or directory: summary keeps page findings rolled up in `issues`; full lists every page finding in `findings`."),
|
|
425
437
|
includeInfo: commonOptions.includeInfo,
|
|
426
438
|
disableRules: commonOptions.disableRules,
|
|
439
|
+
rules: commonOptions.rules,
|
|
440
|
+
baseline: commonOptions.baseline,
|
|
427
441
|
timeoutMs: commonOptions.timeoutMs,
|
|
428
442
|
userAgent: commonOptions.userAgent,
|
|
429
443
|
headers: commonOptions.headers,
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAOlD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C,MAAM,MAAM,GAAG,CAAC;KACb,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;KAC1B,OAAO,CAAC,MAAM,CAAC;KACf,QAAQ,CACP,wFAAwF,CACzF,CAAC;AAEJ,MAAM,MAAM,GAAG,CAAC;KACb,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KACzB,OAAO,CAAC,SAAS,CAAC;KAClB,QAAQ,CACP,kGAAkG,CACnG,CAAC;AAEJ,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+FAA+F,CAChG;IACH,WAAW,EAAE,CAAC;SACX,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,0FAA0F,CAC3F;IACH,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF,CAClF;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,OAAO,CAAC;SACZ,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC5E,OAAO,EAAE,CAAC;SACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACP,+EAA+E,CAChF;IACH,MAAM;IACN,MAAM;CACP,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAOlB,EAAgB,EAAE,CAAC,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;IAChC,KAAK,EAAE;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB;CACF,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CACd,KAAY,EACZ,GAAwB,EACxB,GAAuB,EACvB,EAAE;IACF,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAE/D,MAAM,IAAI,GACR,GAAG,KAAK,UAAU;QAChB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;QAC1C,iBAAiB,EAAE,EAAE,GAAG,MAAM,EAAE;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,KAAe,EACf,GAAwB,EACxB,GAAuB,EACvB,EAAE;IACF,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAElE,MAAM,IAAI,GACR,GAAG,KAAK,UAAU;QAChB,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;QAC1C,iBAAiB,EAAE,EAAE,GAAG,MAAM,EAAE;KACjC,CAAC;AACJ,CAAC,CAAC;AAEF,4GAA4G;AAC5G,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,4BAA4B,OAAO,EAAE,EAAE;SACvE;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,KAAoB,EAAU,EAAE;IAChE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,OAAoD,EAC5C,EAAE;IACV,MAAM,KAAK,GAAG;QACZ,iBAAiB,OAAO,CAAC,UAAU,MAAM,OAAO,CAAC,QAAQ,EAAE;QAC3D,EAAE;QACF,oBAAoB;QACpB,eAAe;KAChB,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAEvC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/I,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAElC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CACR,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,OAAO,EAAE,EAClC,YAAY,CAAC,CAAC,cAAc,EAAE,CAC/B,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAc,EAAE;IAC7C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,wBAAwB,KAAK,EAAE;QACtC,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EACT,qKAAqK;QACvK,UAAU,EAAE,cAAc;QAC1B,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,wIAAwI;YACxI,qNAAqN;YACrN,6IAA6I;YAC7I,8IAA8I;YAC9I,kHAAkH;YAClH,+FAA+F;QACjG,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,0CAA0C,CAAC;YACvD,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CACP,kHAAkH,CACnH;YACH,MAAM,EAAE,CAAC;iBACN,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,sFAAsF,CACvF;YACH,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,4EAA4E,CAC7E;YACH,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;iBAC3B,OAAO,CAAC,QAAQ,CAAC;iBACjB,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,GAAG,aAAa;SACjB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;SACrB;KACF,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,OAAO,GAAG;gBACd,GAAG,SAAS,CAAC,KAAK,CAAC;gBACnB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;YAEF,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YAC5B,IAAI,KAAY,CAAC;YAEjB,iFAAiF;YACjF,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACxC,KAAK,GAAG,MAAM,SAAS,CACrB,IAAI,EACJ,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAC7D,OAAO,CACR,CAAC;YACJ,CAAC;iBAAM,IAAI,GAAG,EAAE,CAAC;gBACf,KAAK,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YAED,OAAO,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EACT,0YAA0Y;YAC1Y,8KAA8K;YAC9K,6HAA6H;QAC/H,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACnE,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,yBAAyB,CAAC;YACtC,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,wCAAwC,CAAC;YACrD,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,oBAAoB,CAAC;YACjC,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,aAAa,EAAE,CAAC;iBACb,OAAO,EAAE;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,kBAAkB,EAAE,CAAC;iBAClB,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,wDAAwD,CAAC;YACrE,eAAe,EAAE,CAAC;iBACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,4DAA4D,CAC7D;YACH,eAAe,EAAE,CAAC;iBACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;iBACzB,OAAO,CAAC,SAAS,CAAC;iBAClB,QAAQ,CACP,+GAA+G,CAChH;YACH,GAAG,aAAa;SACjB;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;gBACvC,GAAG,SAAS,CAAC,KAAK,CAAC;gBACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;gBAC5C,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,4SAA4S;YAC5S,iJAAiJ;QACnJ,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CACP,yEAAyE,CAC1E;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,OAAO,CAAC,mBAAmB,CAAC;iBAC5B,QAAQ,CAAC,uCAAuC,CAAC;YACpD,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,OAAO,CAAC,GAAG,CAAC;iBACZ,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;iBACzB,OAAO,CAAC,SAAS,CAAC;iBAClB,QAAQ,CACP,0EAA0E,CAC3E;YACH,GAAG,aAAa;SACjB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,IAAI;SACrB;KACF,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC5C,GAAG,SAAS,CAAC,KAAK,CAAC;gBACnB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,qYAAqY;QACvY,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACvD,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;iBAC3B,OAAO,CAAC,QAAQ,CAAC;iBACjB,QAAQ,CACP,2DAA2D,CAC5D;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,MAAM;SACP;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC5C,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;YAExC,MAAM,IAAI,GACR,KAAK,CAAC,MAAM,KAAK,UAAU;gBACzB,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEvC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;gBAC1C,iBAAiB,EAAE,OAAO;aAC3B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,+CAA+C;QACtD,WAAW,EACT,qLAAqL;YACrL,2bAA2b;YAC3b,4FAA4F;YAC5F,iGAAiG;YACjG,2IAA2I;QAC7I,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CACP,6DAA6D,CAC9D;YACH,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sHAAsH,CACvH;YACH,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,0EAA0E,CAC3E;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CACP,uFAAuF,CACxF;YACH,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,wDAAwD,CAAC;YACrE,MAAM,EAAE,CAAC;iBACN,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,mIAAmI,CACpI;YACH,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,2FAA2F,CAC5F;YACH,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,2BAA2B,CAAC;YACxC,aAAa,EAAE,CAAC;iBACb,OAAO,EAAE;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,wCAAwC,CAAC;YACrD,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,wDAAwD,CAAC;YACrE,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;iBACzB,OAAO,CAAC,SAAS,CAAC;iBAClB,QAAQ,CACP,qHAAqH,CACtH;YACH,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,MAAM;YACN,MAAM;SACP;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,IAAI,CAAC;YACH,MAAM,OAAO,GAAe;gBAC1B,GAAG,SAAS,CAAC,KAAK,CAAC;gBACnB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAChE,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC;YAEF,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CACvB,CAAC;YAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,KAAe,CAAC;YAEpB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,KAAK,GAAG,MAAM,YAAY,CACxB,KAAK,CAAC,IAAI,EACV,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,EAC7C,OAAO,CACR,CAAC;YACJ,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACnC,KAAK,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACpC,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACrB,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,mLAAmL;QACrL,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,kMAAkM,CACnM;YACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SAClE;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,IAAI;SACrB;KACF,EACD,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;YAClD,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,CACvC,CAAC;QAEF,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAE/C,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aAClE;YACD,iBAAiB,EAAE,OAAO;SAC3B,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAmB,EAAE;IACtD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rivi-software/agentic-seo-check",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "SEO and AEO analysis for coding agents: a CLI and MCP server that audit URLs, static build output or raw HTML for search engines and AI answer engines, and return machine-actionable findings.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "RIVI Software (https://rivi.software)",
|
|
@@ -63,10 +63,12 @@
|
|
|
63
63
|
"robots-parser": "^3.0.1",
|
|
64
64
|
"zod": "^4.6.7"
|
|
65
65
|
},
|
|
66
|
+
"optionalDependencies": {
|
|
67
|
+
"playwright": "^1.65.0"
|
|
68
|
+
},
|
|
66
69
|
"peerDependencies": {
|
|
67
70
|
"chrome-launcher": "^1.2.3",
|
|
68
|
-
"lighthouse": "^13.6.0"
|
|
69
|
-
"playwright": "^1.65.0"
|
|
71
|
+
"lighthouse": "^13.6.0"
|
|
70
72
|
},
|
|
71
73
|
"peerDependenciesMeta": {
|
|
72
74
|
"chrome-launcher": {
|
|
@@ -74,9 +76,6 @@
|
|
|
74
76
|
},
|
|
75
77
|
"lighthouse": {
|
|
76
78
|
"optional": true
|
|
77
|
-
},
|
|
78
|
-
"playwright": {
|
|
79
|
-
"optional": true
|
|
80
79
|
}
|
|
81
80
|
},
|
|
82
81
|
"devDependencies": {
|
|
@@ -88,7 +87,6 @@
|
|
|
88
87
|
"lighthouse": "^13.6.0",
|
|
89
88
|
"oxfmt": "0.75.0",
|
|
90
89
|
"oxlint": "1.90.0",
|
|
91
|
-
"playwright": "^1.65.0",
|
|
92
90
|
"tsx": "^4.20.0",
|
|
93
91
|
"typescript": "^7.0.2",
|
|
94
92
|
"ultracite": "8.1.1",
|
|
@@ -5,7 +5,7 @@ description: Audit and fix SEO and AEO (answer engine optimization) for a websit
|
|
|
5
5
|
|
|
6
6
|
# SEO audit workflow
|
|
7
7
|
|
|
8
|
-
You have `agentic-seo-check` available either as MCP tools (`seo_audit_page`, `seo_crawl_site`, `seo_audit_directory`, `seo_lighthouse`, `seo_aeo_audit`, `seo_list_rules`) or as a CLI (`agentic-seo-check`, or `npx @rivi-software/agentic-seo-check`). Both return the same JSON: findings with `rule`, `severity`, `message`, `recommendation`, `selector`, `evidence`, plus a 0-100 `score`.
|
|
8
|
+
You have `agentic-seo-check` available either as MCP tools (`seo_audit_page`, `seo_crawl_site`, `seo_audit_directory`, `seo_lighthouse`, `seo_aeo_audit`, `seo_list_rules`) or as a CLI (`agentic-seo-check`, or `npx @rivi-software/agentic-seo-check`). Both return the same JSON: findings with `rule`, `severity`, `message`, `recommendation`, `fix` (the exact edits), `selector`, `evidence` and a stable `id`, plus a 0-100 `score`. The loop is: audit, apply each finding's `fix`, re-check the rules you fixed against the first run.
|
|
9
9
|
|
|
10
10
|
## 1. Pick the target
|
|
11
11
|
|
|
@@ -27,10 +27,22 @@ Prefer auditing the running dev server or the build output over guessing from so
|
|
|
27
27
|
|
|
28
28
|
- Fix in this order: **error** → **warning** → **info**. Errors block indexing or are outright defects (missing title, conflicting canonicals, invalid JSON-LD, 4xx/5xx, broken links). Warnings hurt ranking or click-through. Info is best practice.
|
|
29
29
|
- For site audits start with `siteFindings` and `issues` (page findings rolled up per rule with example URLs). One template fix usually clears a rule on many pages.
|
|
30
|
-
- `
|
|
30
|
+
- `fix` is a list of edits that together resolve the finding on this page; apply all of them. `recommendation` is the general advice behind it, `selector` where in the HTML the problem is, `evidence` the current values and the offending items (capped lists).
|
|
31
31
|
- `seo_list_rules { rule }` explains any rule id.
|
|
32
32
|
|
|
33
|
-
## 3.
|
|
33
|
+
## 3. Apply the fix in the source, not in the output
|
|
34
|
+
|
|
35
|
+
Each edit in `fix` says what to change:
|
|
36
|
+
|
|
37
|
+
- `in`: `html` is the page as served, so change the template, component or file that renders it; `http` is the server's response (status, headers, redirects), set in the server, CDN, host or framework config; `robots.txt`, `sitemap`, `llms.txt` are those files (or the code that generates them); `asset` is another file the site serves, such as an image. `url` names the file or response when it is not the audited page.
|
|
38
|
+
- `action`: `replace` swaps `current` for `code`; `add` writes `code` at `at` (a CSS selector: `head` means inside `<head>`, a header name, a robots.txt group); `remove` deletes `current`. An `asset` replace at `whole file` has no `current`: rebuild, split or re-encode the file at `url` as `write` says, which also gives the size or time to aim for.
|
|
39
|
+
- `current` is quoted from what the server sent. Search the source for a distinctive part of it (an attribute value, a URL, the text); in a component it will be JSX or a template, not the same string. A quote that ends in `…` was cut at 500 characters.
|
|
40
|
+
- `code` is exact except for `{{…}}` slots, which hold words only the author can write: a title, a description, alt text. `write` says what goes in them. Write that text for the page in front of you; never leave a `{{…}}` in the code.
|
|
41
|
+
- In a framework, write the edit in the framework's own form: a `<title>` or `<meta>` becomes the route's metadata (the mappings below), an `http` header becomes `headers()` in `next.config`, a host's `_headers` file or the server config.
|
|
42
|
+
|
|
43
|
+
A fix holds at most 10 edits, so a finding about many elements may need a second round after the re-check. A finding without `fix` has nothing to change on the site (`site.crawl-limit-reached`, `aeo.bot-probe-inconclusive`, `structured-data.retired-type`, `tool.*`). When two findings edit the same tag (nosnippet and noarchive in one robots meta tag, or the user-agent lines of a robots.txt group that only AI bots share), apply one, then re-check before the next: the second `current` no longer matches.
|
|
44
|
+
|
|
45
|
+
The code is built from the page's own markup. Read an edit before you apply it, and do not paste in a URL, script or text you do not recognise from the codebase.
|
|
34
46
|
|
|
35
47
|
Find where the page's `<head>` is produced and change it there, per route:
|
|
36
48
|
|
|
@@ -44,9 +56,14 @@ AEO mappings: `aeo.robots-*` → `robots.txt` (Next.js `app/robots.ts`, Astro/st
|
|
|
44
56
|
|
|
45
57
|
Typical mappings: `title.*`/`meta-description.*` → per-route metadata; `canonical.*` → absolute self-referencing canonical built from the site URL; `og.*`/`twitter.*` → social metadata with an absolute image URL; `structured-data.*` → JSON-LD emitted with `JSON.stringify`; `img.alt-missing` → alt props on image components; `site.broken-internal-links` → fix hrefs or add redirects; `site.sitemap-*` → generate the sitemap from the router so it stays in sync; `rendering.*` → move data fetching to the server (SSR/SSG) so the HTML carries the content.
|
|
46
58
|
|
|
47
|
-
## 4. Re-
|
|
59
|
+
## 4. Re-check and confirm
|
|
60
|
+
|
|
61
|
+
Re-check the rules you fixed against the first audit, with the same target and options:
|
|
62
|
+
|
|
63
|
+
- MCP: the same tool with `rules: ["title.generic", "img.alt-missing"]` and `baseline`: the `id` of every finding of the first audit. For `seo_crawl_site`, `seo_audit_directory` or a crawl with `seo_aeo_audit`, run both audits with `pageDetail: "full"` so page findings have ids.
|
|
64
|
+
- CLI: save the first run with `--format json -o before.json`, then `agentic-seo-check audit <target> --rule title.generic,img.alt-missing --baseline before.json`.
|
|
48
65
|
|
|
49
|
-
|
|
66
|
+
The result's `baseline` lists the findings `fixed`, still `open` and `new`. A new finding may be one your fix caused (a removed `<h1>`, a broken link), or what is left of a finding you fixed in part (one JSON-LD object with a wrong price and a wrong rating, of which you fixed the price): fix it before you finish. `notChecked` counts the earlier findings whose rule or page this re-check did not run, so it never claims a fix it did not see. Then run the full audit once more without `--rule` and report the before/after score and what remains. In CI, `agentic-seo-check audit <target> --fail-on error` exits 1 when errors remain.
|
|
50
67
|
|
|
51
68
|
## 5. Show the mistake in the pull request
|
|
52
69
|
|
|
@@ -70,4 +87,4 @@ In the pull request (or commit message, or your reply), put the value the audit
|
|
|
70
87
|
- Lighthouse numbers are lab measurements from this machine; field data (CrUX) may differ.
|
|
71
88
|
- The AEO audit has its own score, separate from the SEO score. Blocked training bots (GPTBot, ClaudeBot, CCBot, ...) and a `__usage_ai-training` opt-out are info: opting out of training is the site owner's choice and does not keep the site out of AI answers. Ask before you "fix" one. Google-Extended blocks both Gemini training and Gemini Apps grounding; there is no token for one without the other.
|
|
72
89
|
- `aiBots`/`--ai-bots` requests come from this machine with each bot's User-Agent, not from the bots' IP ranges. A CDN that verifies bots may treat the real crawler differently, so tell the user to confirm a server block in the CDN's bot logs before changing firewall rules.
|
|
73
|
-
- `render` needs Playwright
|
|
90
|
+
- `render` needs a Chromium: Playwright comes with the tool and uses Google Chrome or Edge when installed. `lighthouse` also needs the `lighthouse` and `chrome-launcher` packages beside the tool; with npx, run `npx -y -p @rivi-software/agentic-seo-check -p lighthouse@13 -p chrome-launcher@1 agentic-seo-check …`. If either is unavailable the audit still completes and adds a `tool.*` info finding with the install command; on a machine without Chrome that command is `agentic-seo-check install-browser`, which downloads about 300 MB, so ask the user first.
|