@rivi-software/agentic-seo-check 0.1.1 → 0.3.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 +67 -7
- 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 +43 -0
- package/dist/core/aeo/page.js +284 -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 +50 -22
- package/dist/core/audit.js.map +1 -1
- package/dist/core/crawl.d.ts +7 -1
- package/dist/core/crawl.js +85 -9
- package/dist/core/crawl.js.map +1 -1
- package/dist/core/fetch.d.ts +9 -0
- package/dist/core/fetch.js +28 -12
- package/dist/core/fetch.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 +6 -0
- package/dist/core/html/dom.js +92 -1
- package/dist/core/html/dom.js.map +1 -1
- package/dist/core/html/extract.js +21 -72
- package/dist/core/html/extract.js.map +1 -1
- package/dist/core/html/head.d.ts +10 -0
- package/dist/core/html/head.js +206 -0
- package/dist/core/html/head.js.map +1 -0
- package/dist/core/html/resources.d.ts +17 -0
- package/dist/core/html/resources.js +172 -0
- package/dist/core/html/resources.js.map +1 -0
- package/dist/core/html/structured-data.d.ts +2 -0
- package/dist/core/html/structured-data.js +2 -0
- package/dist/core/html/structured-data.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 +13 -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/canonical.d.ts +3 -0
- package/dist/core/rules/canonical.js +54 -2
- package/dist/core/rules/canonical.js.map +1 -1
- package/dist/core/rules/document.js +4 -2
- package/dist/core/rules/document.js.map +1 -1
- package/dist/core/rules/head.d.ts +1 -0
- package/dist/core/rules/head.js +116 -0
- package/dist/core/rules/head.js.map +1 -0
- package/dist/core/rules/index.d.ts +4 -0
- package/dist/core/rules/index.js +15 -1
- package/dist/core/rules/index.js.map +1 -1
- package/dist/core/rules/indexing.d.ts +10 -0
- package/dist/core/rules/indexing.js +171 -9
- package/dist/core/rules/indexing.js.map +1 -1
- package/dist/core/rules/loading.d.ts +1 -0
- package/dist/core/rules/loading.js +138 -0
- package/dist/core/rules/loading.js.map +1 -0
- package/dist/core/rules/rule.d.ts +2 -0
- package/dist/core/rules/rule.js +2 -0
- package/dist/core/rules/rule.js.map +1 -1
- package/dist/core/rules/structured-data-values.d.ts +3 -0
- package/dist/core/rules/structured-data-values.js +316 -0
- package/dist/core/rules/structured-data-values.js.map +1 -0
- package/dist/core/rules/structured-data.js +50 -20
- package/dist/core/rules/structured-data.js.map +1 -1
- package/dist/core/rules/urls.d.ts +1 -0
- package/dist/core/rules/urls.js +293 -0
- package/dist/core/rules/urls.js.map +1 -0
- package/dist/core/score.d.ts +4 -2
- package/dist/core/score.js.map +1 -1
- package/dist/core/site-probes.d.ts +33 -0
- package/dist/core/site-probes.js +144 -0
- package/dist/core/site-probes.js.map +1 -0
- package/dist/core/site-rules.d.ts +18 -0
- package/dist/core/site-rules.js +479 -5
- package/dist/core/site-rules.js.map +1 -1
- package/dist/core/sitemap.d.ts +38 -1
- package/dist/core/sitemap.js +177 -43
- package/dist/core/sitemap.js.map +1 -1
- package/dist/core/static.d.ts +6 -0
- package/dist/core/static.js +122 -12
- package/dist/core/static.js.map +1 -1
- package/dist/core/types.d.ts +268 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/url.d.ts +2 -0
- package/dist/core/url.js +8 -0
- package/dist/core/url.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 +9 -2
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { cap, finding, GOOGLE_DOCS } from "../rules/rule.js";
|
|
2
|
+
import { AI_BOTS, invalidSignals } from "./bots.js";
|
|
3
|
+
const LLMS_TXT_DOCS = "https://llmstxt.org/";
|
|
4
|
+
const CONTENT_SIGNALS_DOCS = "https://contentsignals.org/";
|
|
5
|
+
const meta = (id, severity, description, recommendation, docs, requires) => {
|
|
6
|
+
const rule = {
|
|
7
|
+
id,
|
|
8
|
+
category: "aeo",
|
|
9
|
+
severity,
|
|
10
|
+
description,
|
|
11
|
+
recommendation,
|
|
12
|
+
};
|
|
13
|
+
if (docs) {
|
|
14
|
+
rule.docs = docs;
|
|
15
|
+
}
|
|
16
|
+
if (requires) {
|
|
17
|
+
rule.requires = requires;
|
|
18
|
+
}
|
|
19
|
+
return rule;
|
|
20
|
+
};
|
|
21
|
+
/** Rules about the site as a whole, which the AEO audit checks once per origin. */
|
|
22
|
+
export const AEO_SITE_RULES = [
|
|
23
|
+
meta("aeo.robots-txt-unreachable", "warning", 'robots.txt answers a server error or does not answer, and crawlers treat that as "crawl nothing" (RFC 9309).', "Make /robots.txt answer 200, or 404 when there is none. A 5xx or a timeout stops well-behaved crawlers, AI crawlers included.", GOOGLE_DOCS.robotsTxt),
|
|
24
|
+
meta("aeo.robots-blocks-search-crawler", "error", "robots.txt blocks a search crawler whose index AI answers draw on: Googlebot (AI Overviews, AI Mode), Bingbot (Copilot) or Applebot (Siri, Spotlight).", "Allow these crawlers in robots.txt: remove the Disallow lines that match the audited pages in their groups, or in `User-agent: *` when they have no group of their own. Applebot follows the Googlebot group when no group names Applebot.", "https://developers.google.com/search/docs/appearance/ai-features"),
|
|
25
|
+
meta("aeo.robots-blocks-answer-bot", "warning", "robots.txt blocks a bot that fetches pages for AI answers or an AI search index (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended, DuckAssistBot, MistralAI-User).", "Allow the bots listed in evidence if the site should be cited in those answer engines: add a group for each with `Allow: /`, or remove the Disallow lines that match them. Keep a block that is deliberate, and disable this rule.", GOOGLE_DOCS.robotsTxt),
|
|
26
|
+
meta("aeo.robots-blocks-training-bot", "info", "robots.txt blocks a crawler that collects text to train AI models (GPTBot, ClaudeBot, Applebot-Extended, CCBot, meta-externalagent).", "Nothing to change if you mean to opt out of model training: these bots do not decide whether answer engines cite the site. Allow them if you want the content in future models.", GOOGLE_DOCS.robotsTxt),
|
|
27
|
+
meta("aeo.content-signal-blocks-answers", "warning", "A robots.txt Content-Signal line sets ai-input=no or search=no, asking answer engines not to use the pages in AI answers or search.", "Set ai-input=yes and search=yes in the Content-Signal line if answer engines should use the content; ai-train=no can stay to opt out of training. Example: `Content-Signal: search=yes, ai-input=yes, ai-train=no`.", CONTENT_SIGNALS_DOCS),
|
|
28
|
+
meta("aeo.content-signal-invalid", "info", "A robots.txt Content-Signal line has a signal other than search, ai-input or ai-train, or a value other than yes or no.", "Write Content-Signal as comma-separated pairs of search, ai-input or ai-train with yes or no, e.g. `Content-Signal: search=yes, ai-input=yes, ai-train=no`.", CONTENT_SIGNALS_DOCS),
|
|
29
|
+
meta("aeo.llms-txt-missing", "info", "The site has no /llms.txt.", "Optional: publish /llms.txt, a Markdown index of the pages that matter, for AI tools and coding agents that look for one. No major answer engine has said it reads llms.txt, so this is low priority.", LLMS_TXT_DOCS),
|
|
30
|
+
meta("aeo.llms-txt-invalid", "warning", "/llms.txt exists but does not follow the llms.txt format, which requires an H1 title first.", "Start the file with `# Site name`, then an optional `> one-line summary`, then H2 sections with links written as `- [Title](https://...): note`.", LLMS_TXT_DOCS),
|
|
31
|
+
meta("aeo.llms-txt-no-links", "info", "/llms.txt has no Markdown links, so it points AI tools to no pages.", "List the pages that matter under H2 sections, one per line: `- [Title](https://...): what it covers`.", LLMS_TXT_DOCS),
|
|
32
|
+
meta("aeo.server-blocks-answer-bot", "warning", "The server refuses or challenges an AI answer bot's User-Agent (403, 429, a challenge page) while it serves the audit's own request.", "Allow these bots at the CDN, firewall or bot-protection layer (for example the CDN's AI crawler settings or a WAF rule). The probe sent the bots' User-Agent from this machine, not from the bots' own IP ranges, and a CDN that verifies bots may let the real ones through: confirm in the CDN's bot logs before changing rules.", undefined, "ai-bots"),
|
|
33
|
+
meta("aeo.server-blocks-training-bot", "info", "The server refuses or challenges an AI training bot's User-Agent while it serves the audit's own request.", "Nothing to change if you mean to keep training bots out; this does not affect AI answers. The probe came from this machine, not the bots' own IP ranges.", undefined, "ai-bots"),
|
|
34
|
+
meta("aeo.bot-probe-inconclusive", "info", "The AI bot probe could not run: the target is not a URL, or the audit's own request did not get the page.", "Probe a live URL, and make the audit's own request succeed first (status, auth headers, --user-agent); otherwise blocked bots cannot be told apart from a page that fails for everyone.", undefined, "ai-bots"),
|
|
35
|
+
];
|
|
36
|
+
const byId = new Map(AEO_SITE_RULES.map((r) => [r.id, r]));
|
|
37
|
+
const m = (id) => {
|
|
38
|
+
const rule = byId.get(id);
|
|
39
|
+
if (!rule) {
|
|
40
|
+
throw new Error(`Unknown AEO site rule: ${id}`);
|
|
41
|
+
}
|
|
42
|
+
return rule;
|
|
43
|
+
};
|
|
44
|
+
const ROBOTS_RULES = {
|
|
45
|
+
search: "aeo.robots-blocks-search-crawler",
|
|
46
|
+
answer: "aeo.robots-blocks-answer-bot",
|
|
47
|
+
training: "aeo.robots-blocks-training-bot",
|
|
48
|
+
};
|
|
49
|
+
const SERVER_RULES = {
|
|
50
|
+
answer: "aeo.server-blocks-answer-bot",
|
|
51
|
+
training: "aeo.server-blocks-training-bot",
|
|
52
|
+
};
|
|
53
|
+
const docsFor = (name) => AI_BOTS.find((b) => b.name === name)?.docs;
|
|
54
|
+
const robotsFindings = (crawlers, pageCount) => {
|
|
55
|
+
if (crawlers.status === "unreachable") {
|
|
56
|
+
return [
|
|
57
|
+
finding(m("aeo.robots-txt-unreachable"), `robots.txt at ${crawlers.robotsTxt} ${crawlers.httpStatus === null ? "did not answer" : `answers HTTP ${crawlers.httpStatus}`}, so crawlers that follow RFC 9309, AI crawlers included, treat the whole site as off limits.`, { evidence: { url: crawlers.robotsTxt, status: crawlers.httpStatus } }),
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
const out = [];
|
|
61
|
+
for (const purpose of ["search", "answer", "training"]) {
|
|
62
|
+
const blocked = crawlers.bots.filter((b) => b.purpose === purpose && (!b.allowed || b.blockedPages > 0));
|
|
63
|
+
if (!blocked.length) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const where = (b) => b.allowed
|
|
67
|
+
? `${b.blockedPages} of ${pageCount} audited pages, which other crawlers may fetch`
|
|
68
|
+
: "the audited page";
|
|
69
|
+
out.push({
|
|
70
|
+
...finding(m(ROBOTS_RULES[purpose]), `robots.txt blocks ${blocked.map((b) => b.name).join(", ")}.`, {
|
|
71
|
+
evidence: {
|
|
72
|
+
robotsTxt: crawlers.robotsTxt,
|
|
73
|
+
bots: cap(blocked.map((b) => ({
|
|
74
|
+
name: b.name,
|
|
75
|
+
operator: b.operator,
|
|
76
|
+
usedFor: b.usedFor,
|
|
77
|
+
blocked: pageCount > 1 ? where(b) : "the audited page",
|
|
78
|
+
group: b.robotsGroup,
|
|
79
|
+
docs: docsFor(b.name),
|
|
80
|
+
})), 20),
|
|
81
|
+
},
|
|
82
|
+
}),
|
|
83
|
+
url: crawlers.robotsTxt,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
};
|
|
88
|
+
const signalFindings = (crawlers) => {
|
|
89
|
+
const out = [];
|
|
90
|
+
const answerAgents = new Set(AI_BOTS.filter((b) => b.purpose !== "training").map((b) => b.name.toLowerCase()));
|
|
91
|
+
const optOuts = crawlers.contentSignals.filter((s) => (s.signals["ai-input"] === "no" || s.signals["search"] === "no") &&
|
|
92
|
+
s.userAgents.some((a) => a === "*" || answerAgents.has(a.split("/")[0]?.toLowerCase() ?? "")));
|
|
93
|
+
if (optOuts.length) {
|
|
94
|
+
out.push({
|
|
95
|
+
...finding(m("aeo.content-signal-blocks-answers"), `robots.txt Content-Signal asks ${optOuts
|
|
96
|
+
.map((s) => `${s.userAgents.join(", ") || "all crawlers"} for ${Object.entries(s.signals)
|
|
97
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
98
|
+
.join(", ")}${s.path ? ` on ${s.path}` : ""}`)
|
|
99
|
+
.join("; ")}.`, { evidence: { signals: cap(optOuts) } }),
|
|
100
|
+
url: crawlers.robotsTxt,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const invalid = crawlers.contentSignals.flatMap(invalidSignals);
|
|
104
|
+
if (invalid.length) {
|
|
105
|
+
out.push({
|
|
106
|
+
...finding(m("aeo.content-signal-invalid"), `robots.txt Content-Signal has values the policy does not define: ${cap(invalid, 5).join(", ")}.`, { evidence: { values: cap(invalid) } }),
|
|
107
|
+
url: crawlers.robotsTxt,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return out;
|
|
111
|
+
};
|
|
112
|
+
const llmsTxtFindings = (llms) => {
|
|
113
|
+
const at = { url: llms.url };
|
|
114
|
+
if (llms.status === "missing") {
|
|
115
|
+
return [
|
|
116
|
+
{
|
|
117
|
+
...finding(m("aeo.llms-txt-missing"), `No llms.txt at ${llms.url}${llms.httpStatus ? ` (HTTP ${llms.httpStatus})` : ""}.`),
|
|
118
|
+
...at,
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
}
|
|
122
|
+
if (llms.status === "invalid") {
|
|
123
|
+
return [
|
|
124
|
+
{
|
|
125
|
+
...finding(m("aeo.llms-txt-invalid"), `llms.txt does not follow the format: ${llms.problems.join("; ")}.`, { evidence: { problems: llms.problems, bytes: llms.bytes } }),
|
|
126
|
+
...at,
|
|
127
|
+
},
|
|
128
|
+
];
|
|
129
|
+
}
|
|
130
|
+
return llms.links === 0
|
|
131
|
+
? [
|
|
132
|
+
{
|
|
133
|
+
...finding(m("aeo.llms-txt-no-links"), `llms.txt "${llms.title ?? ""}" has no Markdown links.`),
|
|
134
|
+
...at,
|
|
135
|
+
},
|
|
136
|
+
]
|
|
137
|
+
: [];
|
|
138
|
+
};
|
|
139
|
+
const probeFindings = (crawlers) => {
|
|
140
|
+
const baseline = crawlers.probeBaseline;
|
|
141
|
+
if (!baseline) {
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
const out = [];
|
|
145
|
+
for (const purpose of ["answer", "training"]) {
|
|
146
|
+
const rule = SERVER_RULES[purpose];
|
|
147
|
+
const blocked = crawlers.bots.filter((b) => b.purpose === purpose && b.probe?.blocked);
|
|
148
|
+
if (!rule || !blocked.length) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
out.push(finding(m(rule), `The server refused or challenged ${blocked.map((b) => `${b.name} (${b.probe?.reason ?? "blocked"})`).join(", ")}, while the audit's own request got HTTP ${baseline.status}. The requests came from this machine with each bot's User-Agent, not from the bots' own IP ranges.`, {
|
|
152
|
+
evidence: {
|
|
153
|
+
baseline,
|
|
154
|
+
bots: cap(blocked.map((b) => ({
|
|
155
|
+
name: b.name,
|
|
156
|
+
status: b.probe?.status ?? null,
|
|
157
|
+
reason: b.probe?.reason ?? null,
|
|
158
|
+
})), 20),
|
|
159
|
+
},
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
return out;
|
|
163
|
+
};
|
|
164
|
+
/** Findings about robots.txt, llms.txt and the bot probe, for the site the audited pages belong to. */
|
|
165
|
+
export const aeoSiteFindings = (ctx) => {
|
|
166
|
+
const out = [];
|
|
167
|
+
if (ctx.crawlers) {
|
|
168
|
+
out.push(...robotsFindings(ctx.crawlers, ctx.pageCount), ...signalFindings(ctx.crawlers), ...probeFindings(ctx.crawlers));
|
|
169
|
+
}
|
|
170
|
+
if (ctx.llmsTxt) {
|
|
171
|
+
out.push(...llmsTxtFindings(ctx.llmsTxt));
|
|
172
|
+
}
|
|
173
|
+
if (ctx.probeSkipped) {
|
|
174
|
+
out.push(finding(m("aeo.bot-probe-inconclusive"), `The AI bot probe did not run: ${ctx.probeSkipped}.`));
|
|
175
|
+
}
|
|
176
|
+
return out;
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=site-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-rules.js","sourceRoot":"","sources":["../../../src/core/aeo/site-rules.ts"],"names":[],"mappings":"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"}
|
package/dist/core/audit.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ProgressEvent } from "./crawl.js";
|
|
2
2
|
import type { FetchOptions } from "./fetch.js";
|
|
3
|
-
import type { Audit, IssueRollup, PageAudit, PageSource, ResponseInfo, SiteAudit, Thresholds } from "./types.js";
|
|
3
|
+
import type { Audit, Finding, IssueRollup, PageAudit, PageSource, ResponseInfo, SiteAudit, Thresholds } from "./types.js";
|
|
4
4
|
export type { ProgressEvent } from "./crawl.js";
|
|
5
5
|
export interface AuditOptions {
|
|
6
6
|
/** Target keyword/phrase for the keyword.* rules. */
|
|
@@ -48,7 +48,7 @@ export declare const DEFAULT_CRAWL: {
|
|
|
48
48
|
readonly delayMs: 0;
|
|
49
49
|
readonly maxLinkChecks: 200;
|
|
50
50
|
};
|
|
51
|
-
export declare const rollupIssues: (pages: PageAudit[]) => IssueRollup[];
|
|
51
|
+
export declare const rollupIssues: (pages: Pick<PageAudit, "url" | "findings">[]) => IssueRollup[];
|
|
52
52
|
export declare const recomputeSite: (site: SiteAudit) => void;
|
|
53
53
|
/** Audit an HTML string. `url` is used to resolve links and for display. */
|
|
54
54
|
export declare const auditHtml: (html: string, input?: HtmlAuditInput, options?: AuditOptions) => Promise<PageAudit>;
|
|
@@ -60,6 +60,25 @@ export declare const auditFile: (filePath: string, options?: AuditOptions) => Pr
|
|
|
60
60
|
export declare const auditSite: (startUrl: string, options?: CrawlOptions) => Promise<SiteAudit>;
|
|
61
61
|
/** Audit a directory of built HTML files (dist/, out/, build/). */
|
|
62
62
|
export declare const auditDirectory: (dir: string, options?: CrawlOptions) => Promise<SiteAudit>;
|
|
63
|
+
export type ResolvedTarget = {
|
|
64
|
+
kind: "stdin";
|
|
65
|
+
} | {
|
|
66
|
+
kind: "url";
|
|
67
|
+
url: string;
|
|
68
|
+
} | {
|
|
69
|
+
kind: "directory";
|
|
70
|
+
path: string;
|
|
71
|
+
} | {
|
|
72
|
+
kind: "file";
|
|
73
|
+
path: string;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* What a target names: "-" for stdin, an http(s) URL, a bare host such as `example.com/page` or
|
|
77
|
+
* `localhost:3000`, a directory or a file.
|
|
78
|
+
*/
|
|
79
|
+
export declare const resolveTarget: (target: string) => Promise<ResolvedTarget>;
|
|
80
|
+
/** HTML piped to the process. */
|
|
81
|
+
export declare const readStdin: () => Promise<string>;
|
|
63
82
|
/**
|
|
64
83
|
* Auto-detect the target type: http(s) URL, directory, .html file, or "-" for stdin.
|
|
65
84
|
* `crawl` forces a site crawl for URLs.
|
|
@@ -68,5 +87,7 @@ export declare const auditTarget: (target: string, options?: CrawlOptions & {
|
|
|
68
87
|
crawl?: boolean;
|
|
69
88
|
stdinHtml?: string;
|
|
70
89
|
}) => Promise<Audit>;
|
|
90
|
+
/** Keeps the first three items of every evidence list. */
|
|
91
|
+
export declare const trimFinding: (f: Finding) => Finding;
|
|
71
92
|
/** Drop bulky, low-value fields to save tokens when the result is consumed by an LLM. */
|
|
72
93
|
export declare const compactAudit: <T extends Audit>(audit: T) => T;
|
package/dist/core/audit.js
CHANGED
|
@@ -202,6 +202,7 @@ const buildSiteAudit = (result, source, target, options) => {
|
|
|
202
202
|
externalChecks: result.externalChecks,
|
|
203
203
|
externalSources: result.externalSources,
|
|
204
204
|
robots: result.robots,
|
|
205
|
+
robotsText: result.robotsText ?? null,
|
|
205
206
|
robotsAllows: result.robotsAllows,
|
|
206
207
|
blockedByRobots: result.blockedByRobots,
|
|
207
208
|
sitemaps: result.sitemaps,
|
|
@@ -210,6 +211,8 @@ const buildSiteAudit = (result, source, target, options) => {
|
|
|
210
211
|
thresholds,
|
|
211
212
|
pathOnly: source === "directory",
|
|
212
213
|
unlinkedPages: result.unlinkedPages,
|
|
214
|
+
imageChecks: result.imageChecks,
|
|
215
|
+
imageSources: result.imageSources,
|
|
213
216
|
});
|
|
214
217
|
const disabled = new Set(options.disableRules);
|
|
215
218
|
siteFindings = sortFindings(siteFindings.filter((f) => !disabled.has(f.rule)));
|
|
@@ -245,13 +248,6 @@ const applyPageDetail = (site, options) => {
|
|
|
245
248
|
}
|
|
246
249
|
return site;
|
|
247
250
|
};
|
|
248
|
-
const readStdin = async () => {
|
|
249
|
-
const chunks = [];
|
|
250
|
-
for await (const chunk of process.stdin) {
|
|
251
|
-
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
252
|
-
}
|
|
253
|
-
return Buffer.concat(chunks).toString("utf-8");
|
|
254
|
-
};
|
|
255
251
|
/** Audit an HTML string. `url` is used to resolve links and for display. */
|
|
256
252
|
// oxlint-disable-next-line eslint/require-await -- public API: it returns a promise like the other audit functions, so a throw reaches callers as a rejection
|
|
257
253
|
export const auditHtml = async (html, input = {}, options = {}) => {
|
|
@@ -365,35 +361,67 @@ export const auditDirectory = async (dir, options = {}) => {
|
|
|
365
361
|
return applyPageDetail(site, options);
|
|
366
362
|
};
|
|
367
363
|
/**
|
|
368
|
-
*
|
|
369
|
-
* `
|
|
364
|
+
* What a target names: "-" for stdin, an http(s) URL, a bare host such as `example.com/page` or
|
|
365
|
+
* `localhost:3000`, a directory or a file.
|
|
370
366
|
*/
|
|
371
|
-
export const
|
|
372
|
-
if (target === "-"
|
|
373
|
-
|
|
374
|
-
return auditHtml(html, { url: options.baseUrl, source: "html", target: "stdin" }, options);
|
|
367
|
+
export const resolveTarget = async (target) => {
|
|
368
|
+
if (target === "-") {
|
|
369
|
+
return { kind: "stdin" };
|
|
375
370
|
}
|
|
376
371
|
if (isHttpUrl(target)) {
|
|
377
|
-
return
|
|
378
|
-
? auditSite(target, options)
|
|
379
|
-
: auditUrl(target, options);
|
|
372
|
+
return { kind: "url", url: target };
|
|
380
373
|
}
|
|
381
374
|
if (/^localhost(?::\d+)?(?:\/|$)/iu.test(target) ||
|
|
382
375
|
/^[\w.-]+\.[a-z]{2,}(?:\/|$)/iu.test(target)) {
|
|
383
|
-
|
|
384
|
-
|
|
376
|
+
return {
|
|
377
|
+
kind: "url",
|
|
378
|
+
url: `http${/^localhost/iu.test(target) ? "" : "s"}://${target}`,
|
|
379
|
+
};
|
|
385
380
|
}
|
|
386
381
|
const stat = await fs.stat(target).catch(() => null);
|
|
387
382
|
if (!stat) {
|
|
388
383
|
throw new Error(`Target "${target}" is not a URL, file or directory.`);
|
|
389
384
|
}
|
|
390
|
-
|
|
391
|
-
|
|
385
|
+
return stat.isDirectory()
|
|
386
|
+
? { kind: "directory", path: target }
|
|
387
|
+
: { kind: "file", path: target };
|
|
388
|
+
};
|
|
389
|
+
/** HTML piped to the process. */
|
|
390
|
+
export const readStdin = async () => {
|
|
391
|
+
const chunks = [];
|
|
392
|
+
for await (const chunk of process.stdin) {
|
|
393
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
394
|
+
}
|
|
395
|
+
return Buffer.concat(chunks).toString("utf-8");
|
|
396
|
+
};
|
|
397
|
+
/**
|
|
398
|
+
* Auto-detect the target type: http(s) URL, directory, .html file, or "-" for stdin.
|
|
399
|
+
* `crawl` forces a site crawl for URLs.
|
|
400
|
+
*/
|
|
401
|
+
export const auditTarget = async (target, options = {}) => {
|
|
402
|
+
const resolved = options.stdinHtml === undefined
|
|
403
|
+
? await resolveTarget(target)
|
|
404
|
+
: { kind: "stdin" };
|
|
405
|
+
switch (resolved.kind) {
|
|
406
|
+
case "stdin": {
|
|
407
|
+
const html = options.stdinHtml ?? (await readStdin());
|
|
408
|
+
return auditHtml(html, { url: options.baseUrl, source: "html", target: "stdin" }, options);
|
|
409
|
+
}
|
|
410
|
+
case "url": {
|
|
411
|
+
return options.crawl
|
|
412
|
+
? auditSite(resolved.url, options)
|
|
413
|
+
: auditUrl(resolved.url, options);
|
|
414
|
+
}
|
|
415
|
+
case "directory": {
|
|
416
|
+
return auditDirectory(resolved.path, options);
|
|
417
|
+
}
|
|
418
|
+
default: {
|
|
419
|
+
return auditFile(resolved.path, options);
|
|
420
|
+
}
|
|
392
421
|
}
|
|
393
|
-
return auditFile(target, options);
|
|
394
422
|
};
|
|
395
423
|
/** Keeps the first three items of every evidence list. */
|
|
396
|
-
const trimFinding = (f) => {
|
|
424
|
+
export const trimFinding = (f) => {
|
|
397
425
|
if (!f.evidence) {
|
|
398
426
|
return f;
|
|
399
427
|
}
|
package/dist/core/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/core/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/core/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/core/crawl.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { FetchOptions } from "./fetch.js";
|
|
|
2
2
|
import type { LinkCheck, PageRecord, ProbeResults } from "./site-rules.js";
|
|
3
3
|
import type { CrawlStats, RobotsTxtInfo, SitemapInfo } from "./types.js";
|
|
4
4
|
export interface ProgressEvent {
|
|
5
|
-
phase: "robots" | "sitemap" | "crawl" | "links" | "probes" | "rules" | "render" | "lighthouse";
|
|
5
|
+
phase: "robots" | "sitemap" | "crawl" | "links" | "probes" | "rules" | "render" | "lighthouse" | "llms-txt" | "ai-bots";
|
|
6
6
|
message: string;
|
|
7
7
|
crawled?: number;
|
|
8
8
|
discovered?: number;
|
|
@@ -21,6 +21,8 @@ export interface CrawlOptions {
|
|
|
21
21
|
excludePatterns: RegExp[];
|
|
22
22
|
fetch: FetchOptions;
|
|
23
23
|
onProgress?: (event: ProgressEvent) => void;
|
|
24
|
+
/** Fetch sitemaps and probe soft 404s and host redirects (default true); the AEO audit needs neither. */
|
|
25
|
+
siteChecks?: boolean;
|
|
24
26
|
}
|
|
25
27
|
export interface CrawlResult {
|
|
26
28
|
startUrl: string;
|
|
@@ -30,11 +32,15 @@ export interface CrawlResult {
|
|
|
30
32
|
externalChecks?: Map<string, LinkCheck>;
|
|
31
33
|
externalSources?: Map<string, Set<string>>;
|
|
32
34
|
robots: RobotsTxtInfo | null;
|
|
35
|
+
/** The robots.txt text up to 500 KiB (`robots.text` stops at 20,000 characters), for checks per user agent. */
|
|
36
|
+
robotsText?: string | null;
|
|
33
37
|
robotsAllows: ((url: string) => boolean) | null;
|
|
34
38
|
blockedByRobots: string[];
|
|
35
39
|
sitemaps: SitemapInfo;
|
|
36
40
|
probes: ProbeResults;
|
|
37
41
|
stats: CrawlStats;
|
|
38
42
|
unlinkedPages?: string[];
|
|
43
|
+
imageChecks?: Map<string, LinkCheck>;
|
|
44
|
+
imageSources?: Map<string, Set<string>>;
|
|
39
45
|
}
|
|
40
46
|
export declare const crawlSite: (startInput: string, options: CrawlOptions) => Promise<CrawlResult>;
|
package/dist/core/crawl.js
CHANGED
|
@@ -3,8 +3,11 @@ import { DEFAULT_USER_AGENT, fetchPage, isHtmlResponse, probeUrl, toResponseInfo
|
|
|
3
3
|
import { extractPage } from "./html/extract.js";
|
|
4
4
|
import { loadRobotsTxt } from "./robots.js";
|
|
5
5
|
import { isLocalHost } from "./rules/canonical.js";
|
|
6
|
-
import {
|
|
6
|
+
import { checkImages, probeUrlVariants } from "./site-probes.js";
|
|
7
|
+
import { emptySitemapProblems, loadSitemaps } from "./sitemap.js";
|
|
7
8
|
import { hostOf, isSameSite, looksLikeHtml, normalizeUrl, stripWww, } from "./url.js";
|
|
9
|
+
/** Image URLs a crawl requests at most, the ones shown on most pages first. */
|
|
10
|
+
const MAX_IMAGE_CHECKS = 100;
|
|
8
11
|
/**
|
|
9
12
|
* Works through a queue that grows while it runs: each crawled page can add the links it found.
|
|
10
13
|
* At most `concurrency` items run at once, and with `delayMs` each slot waits that long after its
|
|
@@ -86,6 +89,22 @@ const runProbes = async (startUrl, fetchOpts) => {
|
|
|
86
89
|
};
|
|
87
90
|
return probes;
|
|
88
91
|
};
|
|
92
|
+
/** Same-site URLs the crawled pages name as canonical or as hreflang alternates, normalized. */
|
|
93
|
+
const metadataTargets = (records, startHost, includeSubdomains) => {
|
|
94
|
+
const out = new Set();
|
|
95
|
+
for (const r of records) {
|
|
96
|
+
for (const url of [
|
|
97
|
+
r.page.canonical,
|
|
98
|
+
...r.page.hreflang.map((h) => h.url),
|
|
99
|
+
]) {
|
|
100
|
+
const target = url ? normalizeUrl(url) : null;
|
|
101
|
+
if (target && isSameSite(target, startHost, includeSubdomains)) {
|
|
102
|
+
out.add(target);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return [...out];
|
|
107
|
+
};
|
|
89
108
|
/** The progress callback of a caller that does not listen for progress. */
|
|
90
109
|
const ignoreProgress = () => {
|
|
91
110
|
// Nobody to tell.
|
|
@@ -100,17 +119,35 @@ export const crawlSite = async (startInput, options) => {
|
|
|
100
119
|
progress({ phase: "robots", message: `Fetching ${origin}/robots.txt` });
|
|
101
120
|
const robots = await loadRobotsTxt(origin, userAgent, options.fetch);
|
|
102
121
|
const allows = options.respectRobots ? robots.allows : () => true;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
122
|
+
const siteChecks = options.siteChecks ?? true;
|
|
123
|
+
let sitemaps = {
|
|
124
|
+
sources: [],
|
|
125
|
+
urls: [],
|
|
126
|
+
urlCount: 0,
|
|
127
|
+
errors: [],
|
|
128
|
+
problems: emptySitemapProblems(),
|
|
129
|
+
};
|
|
130
|
+
if (siteChecks) {
|
|
131
|
+
progress({ phase: "sitemap", message: "Fetching sitemaps" });
|
|
132
|
+
const sitemapCandidates = [
|
|
133
|
+
...new Set([
|
|
134
|
+
...robots.info.sitemaps,
|
|
135
|
+
new URL("/sitemap.xml", origin).href,
|
|
136
|
+
]),
|
|
137
|
+
];
|
|
138
|
+
sitemaps = await loadSitemaps(sitemapCandidates, options.fetch, {
|
|
139
|
+
siteHost: startHost,
|
|
140
|
+
includeSubdomains: options.includeSubdomains,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
108
143
|
const visited = new Set([startUrl]);
|
|
109
144
|
const discovered = new Set([startUrl]);
|
|
110
145
|
const linkChecks = new Map();
|
|
111
146
|
const linkSources = new Map();
|
|
112
147
|
const externalSources = new Map();
|
|
113
148
|
const records = [];
|
|
149
|
+
/** Final URLs with a record. A redirect and a link can lead to the same page at once. */
|
|
150
|
+
const recorded = new Set();
|
|
114
151
|
const blocked = [];
|
|
115
152
|
let limitSkips = 0;
|
|
116
153
|
const accepts = (url) => {
|
|
@@ -184,6 +221,10 @@ export const crawlSite = async (startInput, options) => {
|
|
|
184
221
|
if (isAsset || (item.depth !== 0 && res.status !== null)) {
|
|
185
222
|
return;
|
|
186
223
|
}
|
|
224
|
+
if (recorded.has(finalKey)) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
recorded.add(finalKey);
|
|
187
228
|
const page = extractPage(res.body ?? "", {
|
|
188
229
|
url: res.finalUrl,
|
|
189
230
|
siteHost: startHost,
|
|
@@ -226,6 +267,12 @@ export const crawlSite = async (startInput, options) => {
|
|
|
226
267
|
recordUnreadable(item, res, finalKey);
|
|
227
268
|
return;
|
|
228
269
|
}
|
|
270
|
+
// Nothing awaits between the fetch ending and this check, so two requests that end at the
|
|
271
|
+
// same page cannot both pass it.
|
|
272
|
+
if (recorded.has(finalKey)) {
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
recorded.add(finalKey);
|
|
229
276
|
const page = extractPage(res.body, {
|
|
230
277
|
url: res.finalUrl,
|
|
231
278
|
siteHost: startHost,
|
|
@@ -253,12 +300,19 @@ export const crawlSite = async (startInput, options) => {
|
|
|
253
300
|
!toCheck.includes(u) &&
|
|
254
301
|
allows(u))
|
|
255
302
|
.slice(0, Math.max(0, options.maxLinkChecks - toCheck.length));
|
|
303
|
+
// Canonical and hreflang targets no link led to: the site rules check where they point.
|
|
304
|
+
const metadataExtra = metadataTargets(records, startHost, options.includeSubdomains)
|
|
305
|
+
.filter((u) => !linkChecks.has(u) &&
|
|
306
|
+
!toCheck.includes(u) &&
|
|
307
|
+
!sitemapExtra.includes(u) &&
|
|
308
|
+
allows(u))
|
|
309
|
+
.slice(0, Math.max(0, options.maxLinkChecks - toCheck.length - sitemapExtra.length));
|
|
256
310
|
for (const target of [...linkSources.keys()].filter((u) => !allows(u))) {
|
|
257
311
|
if (!blocked.includes(target)) {
|
|
258
312
|
blocked.push(target);
|
|
259
313
|
}
|
|
260
314
|
}
|
|
261
|
-
await mapConcurrent([...toCheck, ...sitemapExtra], options.concurrency, async (u) => {
|
|
315
|
+
await mapConcurrent([...toCheck, ...sitemapExtra, ...metadataExtra], options.concurrency, async (u) => {
|
|
262
316
|
const res = await probeUrl(u, options.fetch);
|
|
263
317
|
linkChecks.set(u, {
|
|
264
318
|
url: u,
|
|
@@ -294,8 +348,27 @@ export const crawlSite = async (startInput, options) => {
|
|
|
294
348
|
});
|
|
295
349
|
});
|
|
296
350
|
}
|
|
297
|
-
|
|
298
|
-
|
|
351
|
+
let probes = {};
|
|
352
|
+
let images;
|
|
353
|
+
if (siteChecks) {
|
|
354
|
+
const probeOptions = {
|
|
355
|
+
fetch: options.fetch,
|
|
356
|
+
concurrency: options.concurrency,
|
|
357
|
+
delayMs: options.delayMs,
|
|
358
|
+
allows,
|
|
359
|
+
startUrl,
|
|
360
|
+
includeSubdomains: options.includeSubdomains,
|
|
361
|
+
checkExternal: options.checkExternalLinks,
|
|
362
|
+
};
|
|
363
|
+
progress({ phase: "links", message: "Checking images" });
|
|
364
|
+
images = await checkImages(records, Math.min(MAX_IMAGE_CHECKS, options.maxLinkChecks), probeOptions);
|
|
365
|
+
progress({
|
|
366
|
+
phase: "probes",
|
|
367
|
+
message: "Probing soft-404, host redirects and URL variants",
|
|
368
|
+
});
|
|
369
|
+
probes = await runProbes(startUrl, options.fetch);
|
|
370
|
+
probes.urlVariants = await probeUrlVariants(records, startUrl, probeOptions);
|
|
371
|
+
}
|
|
299
372
|
const stats = {
|
|
300
373
|
pagesCrawled: records.length,
|
|
301
374
|
pagesDiscovered: discovered.size,
|
|
@@ -314,11 +387,14 @@ export const crawlSite = async (startInput, options) => {
|
|
|
314
387
|
externalChecks,
|
|
315
388
|
externalSources: options.checkExternalLinks ? externalSources : undefined,
|
|
316
389
|
robots: robots.info,
|
|
390
|
+
robotsText: robots.text,
|
|
317
391
|
robotsAllows: robots.info.found ? robots.allows : null,
|
|
318
392
|
blockedByRobots: blocked,
|
|
319
393
|
sitemaps,
|
|
320
394
|
probes,
|
|
321
395
|
stats,
|
|
396
|
+
imageChecks: images?.imageChecks,
|
|
397
|
+
imageSources: images?.imageSources,
|
|
322
398
|
};
|
|
323
399
|
};
|
|
324
400
|
//# sourceMappingURL=crawl.js.map
|