@rivi-software/agentic-seo-check 0.1.1 → 0.2.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 +61 -5
- package/dist/cli.js +69 -26
- package/dist/cli.js.map +1 -1
- package/dist/core/aeo/audit.d.ts +44 -0
- package/dist/core/aeo/audit.js +310 -0
- package/dist/core/aeo/audit.js.map +1 -0
- package/dist/core/aeo/bots.d.ts +30 -0
- package/dist/core/aeo/bots.js +299 -0
- package/dist/core/aeo/bots.js.map +1 -0
- package/dist/core/aeo/llms-txt.d.ts +8 -0
- package/dist/core/aeo/llms-txt.js +88 -0
- package/dist/core/aeo/llms-txt.js.map +1 -0
- package/dist/core/aeo/page.d.ts +53 -0
- package/dist/core/aeo/page.js +312 -0
- package/dist/core/aeo/page.js.map +1 -0
- package/dist/core/aeo/probe.d.ts +10 -0
- package/dist/core/aeo/probe.js +53 -0
- package/dist/core/aeo/probe.js.map +1 -0
- package/dist/core/aeo/site-rules.d.ts +13 -0
- package/dist/core/aeo/site-rules.js +178 -0
- package/dist/core/aeo/site-rules.js.map +1 -0
- package/dist/core/audit.d.ts +23 -2
- package/dist/core/audit.js +47 -22
- package/dist/core/audit.js.map +1 -1
- package/dist/core/crawl.d.ts +5 -1
- package/dist/core/crawl.js +26 -7
- package/dist/core/crawl.js.map +1 -1
- package/dist/core/html/answer.d.ts +4 -0
- package/dist/core/html/answer.js +198 -0
- package/dist/core/html/answer.js.map +1 -0
- package/dist/core/html/dom.d.ts +4 -0
- package/dist/core/html/dom.js +67 -1
- package/dist/core/html/dom.js.map +1 -1
- package/dist/core/html/extract.js +5 -71
- package/dist/core/html/extract.js.map +1 -1
- package/dist/core/report/markdown.d.ts +3 -1
- package/dist/core/report/markdown.js +102 -0
- package/dist/core/report/markdown.js.map +1 -1
- package/dist/core/robots.d.ts +7 -0
- package/dist/core/robots.js +12 -1
- package/dist/core/robots.js.map +1 -1
- package/dist/core/rules/aeo.d.ts +11 -0
- package/dist/core/rules/aeo.js +423 -0
- package/dist/core/rules/aeo.js.map +1 -0
- package/dist/core/rules/index.d.ts +4 -0
- package/dist/core/rules/index.js +7 -1
- package/dist/core/rules/index.js.map +1 -1
- package/dist/core/score.d.ts +4 -2
- package/dist/core/score.js.map +1 -1
- package/dist/core/static.js +1 -0
- package/dist/core/static.js.map +1 -1
- package/dist/core/types.d.ts +177 -2
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +129 -3
- package/dist/mcp.js.map +1 -1
- package/package.json +6 -2
- package/skills/seo-audit/SKILL.md +8 -2
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { hasChildren, isTag, isText } from "domhandler";
|
|
2
|
+
import { attr, childElements, HIDDEN_ELEMENTS, queryAll, queryOne, text, visibleText, } from "./dom.js";
|
|
3
|
+
import { collapseWhitespace, wordCount } from "./text.js";
|
|
4
|
+
/** Meta names whose content holds robots directives for one crawler or for all of them. */
|
|
5
|
+
const ROBOTS_META_NAMES = new Set([
|
|
6
|
+
"robots",
|
|
7
|
+
"googlebot",
|
|
8
|
+
"googlebot-news",
|
|
9
|
+
"bingbot",
|
|
10
|
+
]);
|
|
11
|
+
/** Containers FAQ widgets put a question in when it is not a heading. */
|
|
12
|
+
const QUESTION_CONTAINERS = new Set(["summary", "dt"]);
|
|
13
|
+
/** Elements an answer usually starts with. */
|
|
14
|
+
const ANSWER_BLOCKS = new Set([
|
|
15
|
+
"p",
|
|
16
|
+
"li",
|
|
17
|
+
"dd",
|
|
18
|
+
"blockquote",
|
|
19
|
+
"td",
|
|
20
|
+
"figcaption",
|
|
21
|
+
"pre",
|
|
22
|
+
]);
|
|
23
|
+
/** Page chrome: lists and tables here are navigation, not content. */
|
|
24
|
+
const CHROME = new Set(["nav", "header", "footer", "aside"]);
|
|
25
|
+
/** Roots JavaScript frameworks render into; empty in the HTML when the page renders client-side. */
|
|
26
|
+
const APP_ROOTS = [
|
|
27
|
+
"#root",
|
|
28
|
+
"#app",
|
|
29
|
+
"#__next",
|
|
30
|
+
"#__nuxt",
|
|
31
|
+
"#___gatsby",
|
|
32
|
+
"#svelte",
|
|
33
|
+
"app-root",
|
|
34
|
+
"[data-reactroot]",
|
|
35
|
+
"[ng-app]",
|
|
36
|
+
];
|
|
37
|
+
/*
|
|
38
|
+
* Written dates in the visible text. Every quantifier is bounded and every alternative is a fixed
|
|
39
|
+
* word, so each regular expression stays linear on long page text.
|
|
40
|
+
*/
|
|
41
|
+
const DATE_PATTERNS = [
|
|
42
|
+
/\b\d{4}-\d{2}-\d{2}\b/u,
|
|
43
|
+
/\b\d{1,2}[./-]\d{1,2}[./-]\d{4}\b/u,
|
|
44
|
+
/\b(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|june?|july?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)\.? \d{1,2}(?:st|nd|rd|th)?,? \d{4}\b/iu,
|
|
45
|
+
/\b\d{1,2}(?:st|nd|rd|th)?\.? (?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|june?|july?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)\.?,? \d{4}\b/iu,
|
|
46
|
+
];
|
|
47
|
+
const MAX_QUESTIONS = 100;
|
|
48
|
+
/** A question ends with a question mark; a long "heading" is a paragraph styled as one. */
|
|
49
|
+
const isQuestion = (value) => value.length > 0 && value.length <= 300 && /[??]$/u.test(value);
|
|
50
|
+
const isHeading = (el) => /^h[1-6]$/u.test(el.name);
|
|
51
|
+
const inChrome = (el) => {
|
|
52
|
+
for (let p = el.parent; p && isTag(p); p = p.parent) {
|
|
53
|
+
if (CHROME.has(p.name)) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* What a heading, `<summary>` or `<dt>` does to the question being read: "subsection" goes on with
|
|
61
|
+
* its section, "content" is ordinary text, a question starts a new section and null ends it.
|
|
62
|
+
*/
|
|
63
|
+
const headingEffect = (el, current) => {
|
|
64
|
+
const heading = isHeading(el);
|
|
65
|
+
const label = collapseWhitespace(visibleText(el));
|
|
66
|
+
const question = isQuestion(label);
|
|
67
|
+
const level = heading ? Number(el.name.slice(1)) : 0;
|
|
68
|
+
if (!question) {
|
|
69
|
+
// "Why choose us?" answered by one card per reason, each under its own subheading, is answered.
|
|
70
|
+
if (heading && current && current.level > 0 && level > current.level) {
|
|
71
|
+
return "subsection";
|
|
72
|
+
}
|
|
73
|
+
// A <summary> or <dt> ends a section only when it asks a question itself.
|
|
74
|
+
return heading ? null : "content";
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
level,
|
|
78
|
+
text: label.slice(0, 200),
|
|
79
|
+
sectionWords: 0,
|
|
80
|
+
firstBlockWords: null,
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
/** Question headings in document order, with how much text follows each before the next one. */
|
|
84
|
+
const findQuestions = (body) => {
|
|
85
|
+
const questions = [];
|
|
86
|
+
let current = null;
|
|
87
|
+
const walk = (nodes) => {
|
|
88
|
+
for (const node of nodes) {
|
|
89
|
+
if (isText(node)) {
|
|
90
|
+
if (current) {
|
|
91
|
+
current.sectionWords += wordCount(node.data);
|
|
92
|
+
}
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (!isTag(node)) {
|
|
96
|
+
if (hasChildren(node)) {
|
|
97
|
+
walk(node.children);
|
|
98
|
+
}
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (HIDDEN_ELEMENTS.has(node.name)) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (isHeading(node) || QUESTION_CONTAINERS.has(node.name)) {
|
|
105
|
+
const effect = headingEffect(node, current);
|
|
106
|
+
if (effect === "subsection") {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (effect !== "content") {
|
|
110
|
+
current = effect;
|
|
111
|
+
if (current && questions.length < MAX_QUESTIONS) {
|
|
112
|
+
questions.push(current);
|
|
113
|
+
}
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (current &&
|
|
118
|
+
current.firstBlockWords === null &&
|
|
119
|
+
ANSWER_BLOCKS.has(node.name)) {
|
|
120
|
+
current.firstBlockWords = wordCount(visibleText(node));
|
|
121
|
+
}
|
|
122
|
+
walk(node.children);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
walk(body.children);
|
|
126
|
+
return questions;
|
|
127
|
+
};
|
|
128
|
+
/** A short selector for a `data-nosnippet` element: its tag plus its id or first class. */
|
|
129
|
+
const nosnippetSelector = (el) => {
|
|
130
|
+
const id = attr(el, "id")?.trim();
|
|
131
|
+
const firstClass = attr(el, "class")?.trim().split(/\s+/u)[0];
|
|
132
|
+
let { name } = el;
|
|
133
|
+
if (id) {
|
|
134
|
+
name += `#${id}`;
|
|
135
|
+
}
|
|
136
|
+
else if (firstClass) {
|
|
137
|
+
name += `.${firstClass}`;
|
|
138
|
+
}
|
|
139
|
+
return `${name.slice(0, 80)}[data-nosnippet]`;
|
|
140
|
+
};
|
|
141
|
+
const hasNosnippetAncestor = (el) => {
|
|
142
|
+
for (let p = el.parent; p && isTag(p); p = p.parent) {
|
|
143
|
+
if (Object.hasOwn(p.attribs, "data-nosnippet")) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
};
|
|
149
|
+
const emptyAppRoot = (body) => {
|
|
150
|
+
for (const selector of APP_ROOTS) {
|
|
151
|
+
const el = queryOne(body, selector);
|
|
152
|
+
if (el && wordCount(visibleText(el)) === 0) {
|
|
153
|
+
return selector;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
};
|
|
158
|
+
const emptySignals = (robotsMeta) => ({
|
|
159
|
+
robotsMeta,
|
|
160
|
+
questions: [],
|
|
161
|
+
lists: 0,
|
|
162
|
+
tables: 0,
|
|
163
|
+
nosnippetElements: 0,
|
|
164
|
+
nosnippetWords: 0,
|
|
165
|
+
nosnippetSelectors: [],
|
|
166
|
+
emptyAppRoot: null,
|
|
167
|
+
noscriptAsksForJavaScript: false,
|
|
168
|
+
timeElements: 0,
|
|
169
|
+
mentionsDate: false,
|
|
170
|
+
});
|
|
171
|
+
/** Reads what the AEO rules need from a parsed document; `bodyText` is its visible body text. */
|
|
172
|
+
export const extractAnswerSignals = (doc, bodyText) => {
|
|
173
|
+
const robotsMeta = queryAll(doc, "meta[name]").flatMap((el) => {
|
|
174
|
+
const name = (attr(el, "name") ?? "").trim().toLowerCase();
|
|
175
|
+
const content = collapseWhitespace(attr(el, "content") ?? "").toLowerCase();
|
|
176
|
+
return ROBOTS_META_NAMES.has(name) && content ? [{ name, content }] : [];
|
|
177
|
+
});
|
|
178
|
+
const body = queryOne(doc, "body");
|
|
179
|
+
if (!body) {
|
|
180
|
+
return emptySignals(robotsMeta);
|
|
181
|
+
}
|
|
182
|
+
const nosnippet = queryAll(body, "[data-nosnippet]").filter((el) => !hasNosnippetAncestor(el));
|
|
183
|
+
return {
|
|
184
|
+
robotsMeta,
|
|
185
|
+
questions: findQuestions(body),
|
|
186
|
+
lists: queryAll(body, "ul, ol").filter((el) => childElements(el).filter((c) => c.name === "li").length >= 2 &&
|
|
187
|
+
!inChrome(el)).length,
|
|
188
|
+
tables: queryAll(body, "table").filter((el) => queryAll(el, "tr").length >= 2 && !inChrome(el)).length,
|
|
189
|
+
nosnippetElements: nosnippet.length,
|
|
190
|
+
nosnippetWords: nosnippet.reduce((sum, el) => sum + wordCount(visibleText(el)), 0),
|
|
191
|
+
nosnippetSelectors: nosnippet.slice(0, 10).map(nosnippetSelector),
|
|
192
|
+
emptyAppRoot: emptyAppRoot(body),
|
|
193
|
+
noscriptAsksForJavaScript: queryAll(body, "noscript").some((el) => /javascript/iu.test(text(el))),
|
|
194
|
+
timeElements: queryAll(body, "time").length,
|
|
195
|
+
mentionsDate: DATE_PATTERNS.some((re) => re.test(bodyText)),
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
//# sourceMappingURL=answer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer.js","sourceRoot":"","sources":["../../../src/core/html/answer.ts"],"names":[],"mappings":"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"}
|
package/dist/core/html/dom.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { AnyNode, Document, Element } from "domhandler";
|
|
2
2
|
export type { AnyNode, Document, Element } from "domhandler";
|
|
3
|
+
/** Elements whose content is never visible page text. */
|
|
4
|
+
export declare const HIDDEN_ELEMENTS: Set<string>;
|
|
5
|
+
/** The text a reader sees under `root`: hidden elements left out, whitespace collapsed. */
|
|
6
|
+
export declare const visibleText: (root: AnyNode) => string;
|
|
3
7
|
/** Parse a full HTML document with the WHATWG algorithm (parse5), scripting enabled like a browser. */
|
|
4
8
|
export declare const parseDocument: (html: string) => Document;
|
|
5
9
|
/** Descendants of `root` matching a CSS selector, in document order. */
|
package/dist/core/html/dom.js
CHANGED
|
@@ -1,8 +1,74 @@
|
|
|
1
1
|
import { selectAll, selectOne } from "css-select";
|
|
2
|
-
import { isTag } from "domhandler";
|
|
2
|
+
import { hasChildren, isTag, isText } from "domhandler";
|
|
3
3
|
import { textContent } from "domutils";
|
|
4
4
|
import { parse } from "parse5";
|
|
5
5
|
import { adapter } from "parse5-htmlparser2-tree-adapter";
|
|
6
|
+
import { collapseWhitespace } from "./text.js";
|
|
7
|
+
/** Elements whose content is never visible page text. */
|
|
8
|
+
export const HIDDEN_ELEMENTS = new Set([
|
|
9
|
+
"script",
|
|
10
|
+
"style",
|
|
11
|
+
"noscript",
|
|
12
|
+
"template",
|
|
13
|
+
"svg",
|
|
14
|
+
"iframe",
|
|
15
|
+
"head",
|
|
16
|
+
]);
|
|
17
|
+
/** Elements that break words apart; padded with spaces so adjacent words don't fuse. */
|
|
18
|
+
const BLOCK_ELEMENTS = new Set([
|
|
19
|
+
"p",
|
|
20
|
+
"div",
|
|
21
|
+
"li",
|
|
22
|
+
"h1",
|
|
23
|
+
"h2",
|
|
24
|
+
"h3",
|
|
25
|
+
"h4",
|
|
26
|
+
"h5",
|
|
27
|
+
"h6",
|
|
28
|
+
"br",
|
|
29
|
+
"tr",
|
|
30
|
+
"td",
|
|
31
|
+
"th",
|
|
32
|
+
"section",
|
|
33
|
+
"article",
|
|
34
|
+
"header",
|
|
35
|
+
"footer",
|
|
36
|
+
"nav",
|
|
37
|
+
"blockquote",
|
|
38
|
+
"pre",
|
|
39
|
+
"dd",
|
|
40
|
+
"dt",
|
|
41
|
+
"figcaption",
|
|
42
|
+
]);
|
|
43
|
+
/** The text a reader sees under `root`: hidden elements left out, whitespace collapsed. */
|
|
44
|
+
export const visibleText = (root) => {
|
|
45
|
+
const parts = [];
|
|
46
|
+
const walk = (nodes) => {
|
|
47
|
+
for (const node of nodes) {
|
|
48
|
+
if (isText(node)) {
|
|
49
|
+
parts.push(node.data);
|
|
50
|
+
}
|
|
51
|
+
else if (isTag(node)) {
|
|
52
|
+
if (HIDDEN_ELEMENTS.has(node.name)) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const block = BLOCK_ELEMENTS.has(node.name);
|
|
56
|
+
if (block) {
|
|
57
|
+
parts.push(" ");
|
|
58
|
+
}
|
|
59
|
+
walk(node.children);
|
|
60
|
+
if (block) {
|
|
61
|
+
parts.push(" ");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else if (hasChildren(node)) {
|
|
65
|
+
walk(node.children);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
walk(hasChildren(root) ? root.children : [root]);
|
|
70
|
+
return collapseWhitespace(parts.join(""));
|
|
71
|
+
};
|
|
6
72
|
/** Parse a full HTML document with the WHATWG algorithm (parse5), scripting enabled like a browser. */
|
|
7
73
|
export const parseDocument = (html) => parse(html, { scriptingEnabled: true, treeAdapter: adapter });
|
|
8
74
|
/** Descendants of `root` matching a CSS selector, in document order. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/core/html/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/core/html/dom.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { isTag, isText, hasChildren } from "domhandler";
|
|
2
1
|
import { isSameSite, resolveUrl, hostOf } from "../url.js";
|
|
3
|
-
import {
|
|
2
|
+
import { extractAnswerSignals } from "./answer.js";
|
|
3
|
+
import { attr, parseDocument, queryAll, queryOne, text, visibleText, } from "./dom.js";
|
|
4
4
|
import { extractStructuredData } from "./structured-data.js";
|
|
5
5
|
import { collapseWhitespace, wordCount } from "./text.js";
|
|
6
6
|
const relList = (rel) => (rel ?? "").toLowerCase().split(/\s+/u).filter(Boolean);
|
|
@@ -24,74 +24,6 @@ const detectCharset = (doc) => {
|
|
|
24
24
|
const match = content?.match(/charset=(?<charset>[\w-]+)/iu);
|
|
25
25
|
return match?.groups?.charset ?? null;
|
|
26
26
|
};
|
|
27
|
-
/** Elements whose content is never visible page text. */
|
|
28
|
-
const HIDDEN_ELEMENTS = new Set([
|
|
29
|
-
"script",
|
|
30
|
-
"style",
|
|
31
|
-
"noscript",
|
|
32
|
-
"template",
|
|
33
|
-
"svg",
|
|
34
|
-
"iframe",
|
|
35
|
-
"head",
|
|
36
|
-
]);
|
|
37
|
-
/** Elements that break words apart; padded with spaces so adjacent words don't fuse. */
|
|
38
|
-
const BLOCK_ELEMENTS = new Set([
|
|
39
|
-
"p",
|
|
40
|
-
"div",
|
|
41
|
-
"li",
|
|
42
|
-
"h1",
|
|
43
|
-
"h2",
|
|
44
|
-
"h3",
|
|
45
|
-
"h4",
|
|
46
|
-
"h5",
|
|
47
|
-
"h6",
|
|
48
|
-
"br",
|
|
49
|
-
"tr",
|
|
50
|
-
"td",
|
|
51
|
-
"th",
|
|
52
|
-
"section",
|
|
53
|
-
"article",
|
|
54
|
-
"header",
|
|
55
|
-
"footer",
|
|
56
|
-
"nav",
|
|
57
|
-
"blockquote",
|
|
58
|
-
"pre",
|
|
59
|
-
"dd",
|
|
60
|
-
"dt",
|
|
61
|
-
"figcaption",
|
|
62
|
-
]);
|
|
63
|
-
const visibleText = (doc) => {
|
|
64
|
-
const body = queryOne(doc, "body");
|
|
65
|
-
if (!body) {
|
|
66
|
-
return "";
|
|
67
|
-
}
|
|
68
|
-
const parts = [];
|
|
69
|
-
const walk = (nodes) => {
|
|
70
|
-
for (const node of nodes) {
|
|
71
|
-
if (isText(node)) {
|
|
72
|
-
parts.push(node.data);
|
|
73
|
-
}
|
|
74
|
-
else if (isTag(node)) {
|
|
75
|
-
if (HIDDEN_ELEMENTS.has(node.name)) {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
const block = BLOCK_ELEMENTS.has(node.name);
|
|
79
|
-
if (block) {
|
|
80
|
-
parts.push(" ");
|
|
81
|
-
}
|
|
82
|
-
walk(node.children);
|
|
83
|
-
if (block) {
|
|
84
|
-
parts.push(" ");
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else if (hasChildren(node)) {
|
|
88
|
-
walk(node.children);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
walk(body.children);
|
|
93
|
-
return collapseWhitespace(parts.join(""));
|
|
94
|
-
};
|
|
95
27
|
export const extractPage = (html, options) => {
|
|
96
28
|
const doc = parseDocument(html);
|
|
97
29
|
const hasDoctype = /^\s*<!doctype\s+html/iu.test(html);
|
|
@@ -173,7 +105,8 @@ export const extractPage = (html, options) => {
|
|
|
173
105
|
};
|
|
174
106
|
});
|
|
175
107
|
const structured = extractStructuredData(doc);
|
|
176
|
-
const
|
|
108
|
+
const body = queryOne(doc, "body");
|
|
109
|
+
const bodyText = body ? visibleText(body) : "";
|
|
177
110
|
const htmlEl = queryOne(doc, "html");
|
|
178
111
|
const viewportEl = queryOne(doc, 'meta[name="viewport" i]');
|
|
179
112
|
return {
|
|
@@ -202,6 +135,7 @@ export const extractPage = (html, options) => {
|
|
|
202
135
|
wordCount: wordCount(bodyText),
|
|
203
136
|
htmlBytes: Buffer.byteLength(html, "utf-8"),
|
|
204
137
|
hasBaseHref: Boolean(baseHref),
|
|
138
|
+
answer: extractAnswerSignals(doc, bodyText),
|
|
205
139
|
};
|
|
206
140
|
};
|
|
207
141
|
//# sourceMappingURL=extract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/core/html/extract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/core/html/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import type { Audit } from "../types.js";
|
|
1
|
+
import type { AeoAudit, Audit } from "../types.js";
|
|
2
|
+
/** The Markdown report of an AEO audit. */
|
|
3
|
+
export declare const renderAeoMarkdown: (audit: AeoAudit) => string;
|
|
2
4
|
export declare const renderMarkdown: (audit: Audit) => string;
|
|
@@ -124,6 +124,108 @@ const siteMarkdown = (audit) => {
|
|
|
124
124
|
};
|
|
125
125
|
/** One line under every report: which tool and version wrote it, and who makes it. */
|
|
126
126
|
const footer = `_Audited with [agentic-seo-check](${REPOSITORY_URL}) ${VERSION}, made by [${MAKER}](${MAKER_URL})._`;
|
|
127
|
+
const robotsCell = (bot, pages) => {
|
|
128
|
+
if (!bot.allowed) {
|
|
129
|
+
return "**blocked**";
|
|
130
|
+
}
|
|
131
|
+
return bot.blockedPages > 0
|
|
132
|
+
? `blocked on ${bot.blockedPages} of ${pages} pages`
|
|
133
|
+
: "allowed";
|
|
134
|
+
};
|
|
135
|
+
const probeCell = (bot) => {
|
|
136
|
+
if (!bot.probe) {
|
|
137
|
+
return "—";
|
|
138
|
+
}
|
|
139
|
+
return bot.probe.blocked
|
|
140
|
+
? `**${cell(bot.probe.reason)}**`
|
|
141
|
+
: String(bot.probe.status ?? "—");
|
|
142
|
+
};
|
|
143
|
+
const llmsTxtLine = (llms) => {
|
|
144
|
+
if (!llms) {
|
|
145
|
+
return "not checked";
|
|
146
|
+
}
|
|
147
|
+
if (llms.status === "found") {
|
|
148
|
+
return `found ("${cell(llms.title)}", ${llms.links} links)`;
|
|
149
|
+
}
|
|
150
|
+
return llms.status === "invalid"
|
|
151
|
+
? `invalid (${cell(llms.problems.join("; "))})`
|
|
152
|
+
: "not found";
|
|
153
|
+
};
|
|
154
|
+
const crawlerLines = (crawlers, llms, pages) => {
|
|
155
|
+
const probed = Boolean(crawlers.probeBaseline);
|
|
156
|
+
const lines = [
|
|
157
|
+
"## AI crawler access",
|
|
158
|
+
"",
|
|
159
|
+
`robots.txt ${crawlers.status}${crawlers.httpStatus ? ` (HTTP ${crawlers.httpStatus})` : ""} · shared AI training preference (\`__usage_ai-training\`): ${crawlers.trainingPreference} · llms.txt ${llmsTxtLine(llms)}`,
|
|
160
|
+
"",
|
|
161
|
+
`| Bot | Operator | Purpose | Used for | robots.txt |${probed ? " Server |" : ""}`,
|
|
162
|
+
`| --- | --- | --- | --- | --- |${probed ? " --- |" : ""}`,
|
|
163
|
+
];
|
|
164
|
+
for (const bot of crawlers.bots) {
|
|
165
|
+
lines.push(`| ${bot.name} | ${bot.operator} | ${bot.purpose} | ${cell(bot.usedFor)} | ${robotsCell(bot, pages)} |${probed ? ` ${probeCell(bot)} |` : ""}`);
|
|
166
|
+
}
|
|
167
|
+
if (crawlers.probeBaseline) {
|
|
168
|
+
lines.push("", `Server column: what the server answered each bot's User-Agent, sent from this machine (the audit's own request got HTTP ${crawlers.probeBaseline.status ?? "—"}).`);
|
|
169
|
+
}
|
|
170
|
+
if (crawlers.contentSignals.length) {
|
|
171
|
+
lines.push("", "Content-Signal lines:", "");
|
|
172
|
+
for (const signal of crawlers.contentSignals) {
|
|
173
|
+
lines.push(`- ${signal.userAgents.join(", ") || "(no user agent)"}${signal.path ? ` on ${signal.path}` : ""}: ${Object.entries(signal.signals)
|
|
174
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
175
|
+
.join(", ") || "(empty)"}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
lines.push("");
|
|
179
|
+
return lines;
|
|
180
|
+
};
|
|
181
|
+
const aeoPageLines = (audit) => {
|
|
182
|
+
const s = audit.summary.page;
|
|
183
|
+
if (!s) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
return [
|
|
187
|
+
audit.pages ? "## Start page" : "## Page",
|
|
188
|
+
"",
|
|
189
|
+
"| Field | Value |",
|
|
190
|
+
"| --- | --- |",
|
|
191
|
+
`| Indexable | ${s.indexable ? "yes" : "no"} |`,
|
|
192
|
+
`| Google snippets and AI Overviews | ${s.googleSnippets} |`,
|
|
193
|
+
`| Copilot answers | ${s.copilotAnswers} |`,
|
|
194
|
+
`| Words in the HTML | ${s.wordCount} |`,
|
|
195
|
+
`| Question headings | ${s.questions} |`,
|
|
196
|
+
`| Structured data | ${s.structuredDataTypes.length ? s.structuredDataTypes.join(", ") : "—"} |`,
|
|
197
|
+
`| Author | ${cell(s.author)} |`,
|
|
198
|
+
`| Published / modified | ${cell(s.datePublished)} / ${cell(s.dateModified)} |`,
|
|
199
|
+
"",
|
|
200
|
+
];
|
|
201
|
+
};
|
|
202
|
+
const aeoMarkdown = (audit) => {
|
|
203
|
+
const lines = [
|
|
204
|
+
`# AEO audit: ${audit.source === "directory" || audit.source === "crawl" ? audit.target : audit.url}`,
|
|
205
|
+
"",
|
|
206
|
+
`AEO score **${audit.score}/100** · ${countsLine(audit.counts)} · ${audit.summary.pages} page(s) audited`,
|
|
207
|
+
"",
|
|
208
|
+
];
|
|
209
|
+
if (audit.crawlers) {
|
|
210
|
+
lines.push(...crawlerLines(audit.crawlers, audit.llmsTxt, audit.summary.pages));
|
|
211
|
+
}
|
|
212
|
+
lines.push(...aeoPageLines(audit), ...findingsSection(audit.findings, "#"));
|
|
213
|
+
if (audit.issues?.length) {
|
|
214
|
+
lines.push("", "## Page issues by rule", "", "| Severity | Rule | Pages | Example |", "| --- | --- | --- | --- |");
|
|
215
|
+
for (const i of audit.issues) {
|
|
216
|
+
lines.push(`| ${i.severity} | \`${i.rule}\` | ${i.pages} | ${i.examples[0] ?? ""} |`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (audit.pages?.length) {
|
|
220
|
+
lines.push("", "## Pages", "", "| AEO score | E/W/I | URL | Snippets | Copilot | Questions |", "| --- | --- | --- | --- | --- | --- |");
|
|
221
|
+
for (const p of audit.pages) {
|
|
222
|
+
lines.push(`| ${p.score} | ${p.counts.error}/${p.counts.warning}/${p.counts.info} | ${p.url} | ${p.summary.googleSnippets} | ${p.summary.copilotAnswers} | ${p.summary.questions} |`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return lines.join("\n");
|
|
226
|
+
};
|
|
227
|
+
/** The Markdown report of an AEO audit. */
|
|
228
|
+
export const renderAeoMarkdown = (audit) => `${aeoMarkdown(audit).trimEnd()}\n\n---\n\n${footer}\n`;
|
|
127
229
|
export const renderMarkdown = (audit) => {
|
|
128
230
|
const body = audit.kind === "page" ? pageMarkdown(audit) : siteMarkdown(audit);
|
|
129
231
|
return `${body.trimEnd()}\n\n---\n\n${footer}\n`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/core/report/markdown.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/core/report/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAY3C,MAAM,IAAI,GAAG,CAAC,KAAgC,EAAU,EAAE;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,EAAE,GAAG,CAAC,KAAoB,EAAU,EAAE,CAC1C,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAEnD,MAAM,UAAU,GAAG,CAAC,CAInB,EAAU,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,IAAI,OAAO,CAAC;AAE7E,MAAM,YAAY,GAAG,CAAC,CAAU,EAAY,EAAE;IAC5C,MAAM,GAAG,GAAG;QACV,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,OAAO,EAAE;QAClC,YAAY,CAAC,CAAC,cAAc,EAAE;KAC/B,CAAC;IAEF,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,MAAM;CACJ,CAAC;AAEX,MAAM,eAAe,GAAG,CAAC,QAAmB,EAAE,OAAe,EAAY,EAAE;IACzE,MAAM,KAAK,GAAa,CAAC,GAAG,OAAO,YAAY,EAAE,EAAE,CAAC,CAAC;IAErD,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAE/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAU,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAE9D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,MAAM,iBAAiB,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,EAC/D,EAAE,CACH,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAgB,EAAE,OAAO,GAAG,GAAG,EAAU,EAAE;IAC/D,MAAM,KAAK,GAAa;QACtB,GAAG,OAAO,eAAe,KAAK,CAAC,GAAG,EAAE;QACpC,EAAE;QACF,WAAW,KAAK,CAAC,KAAK,YAAY,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QAChM,EAAE;KACH,CAAC;IAEF,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;IAExB,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,WAAW,EACrB,EAAE,EACF,mBAAmB,EACnB,eAAe,EACf,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,WAAW,EACvD,wBAAwB,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,qBAAqB,WAAW,EACtF,iBAAiB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EACtC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EACpG,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAChC,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAC5D,aAAa,CAAC,CAAC,SAAS,IAAI,EAC5B,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,iBAAiB,EACrE,aAAa,CAAC,CAAC,KAAK,CAAC,QAAQ,cAAc,CAAC,CAAC,KAAK,CAAC,QAAQ,aAAa,EACxE,uBAAuB,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAChG,kBACE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM;QAC7B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;aACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;aACrB,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,GACN,IAAI,EACJ,EAAE,CACH,CAAC;IAEF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAEpC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,iBAAiB,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,EAC1D,EAAE,EACF,oBAAoB,EACpB,eAAe,EACf,yBAAyB,CAAC,CAAC,gBAAgB,IAAI,GAAG,IAAI,EACtD,iBAAiB,CAAC,CAAC,QAAQ,IAAI,GAAG,IAAI,EACtC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAC1B,WAAW,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EACtD,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAC1B,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAC1B,mBAAmB,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EACzC,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAC5B,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;QAE1B,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,2BAA2B,EACrC,EAAE,EACF,wCAAwC,EACxC,qBAAqB,EACrB,aAAa,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAC9D,wBAAwB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAC7F,iBAAiB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAC1E,cAAc,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EACzF,gBAAgB,CAAC,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EACzD,aAAa,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,EAC1D,sBAAsB,CAAC,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,IAAI,EAC3E,6BAA6B,CAAC,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,CAAC,QAAQ,CAAC,mBAAmB,IAAI,EAC9F,EAAE,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAExD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAgB,EAAU,EAAE;IACnD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,UAAU,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,uBAAuB,CAAC;IAC1E,CAAC;IAED,OAAO,mBAAmB,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAgB,EAAU,EAAE;IAChD,MAAM,KAAK,GAAa;QACtB,qBAAqB,KAAK,CAAC,MAAM,EAAE;QACnC,EAAE;QACF,WAAW,KAAK,CAAC,KAAK,YAAY,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,YAAY,mBAAmB,KAAK,CAAC,KAAK,CAAC,eAAe,cAAc,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,KAAK,CAAC,QAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACvR,EAAE;QACF,oBAAoB;QACpB,eAAe;QACf,kBAAkB,eAAe,CAAC,KAAK,CAAC,IAAI;QAC5C,gBAAgB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,aAAa,KAAK,CAAC,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI;QACjO,EAAE;KACH,CAAC;IAEF,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAExC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CACR,wBAAwB,EACxB,EAAE,EACF,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAC1E,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,UAAU,EACV,EAAE,EACF,iCAAiC,EACjC,2BAA2B,CAC5B,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAChH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAElE,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAElC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CACR,OAAO,CAAC,CAAC,GAAG,EAAE,EACd,EAAE,EACF,SAAS,CAAC,CAAC,KAAK,UAAU,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAChD,EAAE,CACH,CAAC;YAEF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,sFAAsF;AACtF,MAAM,MAAM,GAAG,qCAAqC,cAAc,KAAK,OAAO,cAAc,KAAK,KAAK,SAAS,KAAK,CAAC;AAErH,MAAM,UAAU,GAAG,CAAC,GAAgB,EAAE,KAAa,EAAU,EAAE;IAC7D,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,GAAG,CAAC,YAAY,GAAG,CAAC;QACzB,CAAC,CAAC,cAAc,GAAG,CAAC,YAAY,OAAO,KAAK,QAAQ;QACpD,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,GAAgB,EAAU,EAAE;IAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO;QACtB,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;QACjC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAwB,EAAU,EAAE;IACvD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,SAAS,CAAC;IAC9D,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;QAC9B,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;QAC/C,CAAC,CAAC,WAAW,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,QAAyB,EACzB,IAAwB,EACxB,KAAa,EACH,EAAE;IACZ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE/C,MAAM,KAAK,GAAG;QACZ,sBAAsB;QACtB,EAAE;QACF,cAAc,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,+DAA+D,QAAQ,CAAC,kBAAkB,eAAe,WAAW,CAAC,IAAI,CAAC,EAAE;QACvN,EAAE;QACF,uDAAuD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;QAClF,kCAAkC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;KAC3D,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/I,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,EAAE,EACF,2HAA2H,QAAQ,CAAC,aAAa,CAAC,MAAM,IAAI,GAAG,IAAI,CACpK,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAE5C,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CACR,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAC9F,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;iBAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;iBAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,SACnB,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAe,EAAY,EAAE;IACjD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAE7B,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QACzC,EAAE;QACF,mBAAmB;QACnB,eAAe;QACf,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;QAC/C,wCAAwC,CAAC,CAAC,cAAc,IAAI;QAC5D,uBAAuB,CAAC,CAAC,cAAc,IAAI;QAC3C,yBAAyB,CAAC,CAAC,SAAS,IAAI;QACxC,yBAAyB,CAAC,CAAC,SAAS,IAAI;QACxC,uBAAuB,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;QAChG,cAAc,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;QAChC,4BAA4B,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI;QAC/E,EAAE;KACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAe,EAAU,EAAE;IAC9C,MAAM,KAAK,GAAa;QACtB,gBAAgB,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACrG,EAAE;QACF,eAAe,KAAK,CAAC,KAAK,YAAY,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,kBAAkB;QACzG,EAAE;KACH,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CACR,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAE5E,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CACR,EAAE,EACF,wBAAwB,EACxB,EAAE,EACF,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAC1E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CACR,EAAE,EACF,UAAU,EACV,EAAE,EACF,8DAA8D,EAC9D,uCAAuC,CACxC,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,CAC1K,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAe,EAAU,EAAE,CAC3D,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,cAAc,MAAM,IAAI,CAAC;AAE1D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAY,EAAU,EAAE;IACrD,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAEpE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,MAAM,IAAI,CAAC;AACnD,CAAC,CAAC"}
|
package/dist/core/robots.d.ts
CHANGED
|
@@ -4,7 +4,14 @@ export interface RobotsResult {
|
|
|
4
4
|
info: RobotsTxtInfo;
|
|
5
5
|
/** Returns true when crawling the URL is allowed (unknown/missing robots.txt allows everything). */
|
|
6
6
|
allows: (url: string) => boolean;
|
|
7
|
+
/** The robots.txt text up to the size crawlers must read (RFC 9309: 500 KiB), or null when there is none. */
|
|
8
|
+
text: string | null;
|
|
7
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Whether robots.txt at `url` lets the crawler with product token `agent` fetch `target`. A URL
|
|
12
|
+
* on another origin is allowed: this robots.txt has no say over it.
|
|
13
|
+
*/
|
|
14
|
+
export declare const agentMatcher: (url: string, text: string) => ((target: string, agent: string) => boolean);
|
|
8
15
|
export declare const buildRobots: (url: string, status: number | null, error: string | undefined, text: string | null, userAgent: string) => RobotsResult;
|
|
9
16
|
export declare const loadRobotsTxt: (origin: string, userAgent: string, options?: FetchOptions) => Promise<RobotsResult>;
|
|
10
17
|
/** Short bot token used for robots.txt matching, derived from the full UA string. */
|