@rivi-software/agentic-seo-check 0.3.0 → 0.5.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 +29 -5
- package/dist/cli.js +20 -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 +2 -5
- package/dist/core/lighthouse.js +290 -5
- 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/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 +92 -2
- 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 +40 -6
- 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 +481 -54
- 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 +1 -1
- package/skills/seo-audit/SKILL.md +35 -5
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { addEdit, removeEdit, replaceEdit, slot } from "../rules/fix.js";
|
|
1
2
|
import { cap, finding, GOOGLE_DOCS } from "../rules/rule.js";
|
|
2
|
-
import { AI_BOTS, invalidSignals } from "./bots.js";
|
|
3
|
+
import { AI_BOTS, invalidSignals, robotsBlocksOf, signalSourceOf, } from "./bots.js";
|
|
4
|
+
import { statusLine } from "./fixes.js";
|
|
3
5
|
const LLMS_TXT_DOCS = "https://llmstxt.org/";
|
|
4
6
|
const CONTENT_SIGNALS_DOCS = "https://contentsignals.org/";
|
|
5
7
|
const meta = (id, severity, description, recommendation, docs, requires) => {
|
|
@@ -51,10 +53,223 @@ const SERVER_RULES = {
|
|
|
51
53
|
training: "aeo.server-blocks-training-bot",
|
|
52
54
|
};
|
|
53
55
|
const docsFor = (name) => AI_BOTS.find((b) => b.name === name)?.docs;
|
|
56
|
+
/* ---------------------------------------------------------------------------
|
|
57
|
+
* Fixes
|
|
58
|
+
* ------------------------------------------------------------------------- */
|
|
59
|
+
const ROBOTS_WRITE = {
|
|
60
|
+
search: "These crawlers feed the search indexes AI Overviews, AI Mode, Copilot and Siri answer from. Keep a block only on a site that should stay out of search altogether.",
|
|
61
|
+
answer: "Apply this if the site should be cited in these answer engines. A deliberate block can stay: then disable this rule. Google-Extended covers both Gemini training and Gemini Apps grounding; there is no token for one without the other.",
|
|
62
|
+
training: "Blocking AI training bots is the site owner's choice and does not keep the site out of AI answers. Apply this only if the owner wants the content used to train models; otherwise keep the block and disable this rule.",
|
|
63
|
+
};
|
|
64
|
+
/** The product token of a user agent: lower-cased, without a version. */
|
|
65
|
+
const tokenOf = (agent) => agent.split("/")[0]?.trim().toLowerCase() ?? "";
|
|
66
|
+
/** The rules a group of its own for a bot keeps: the group it followed, without the lines that block it. */
|
|
67
|
+
const keptRules = (block, from) => {
|
|
68
|
+
const kept = from.flatMap((r) => (block.blocking.includes(r) ? [] : [r.raw]));
|
|
69
|
+
return kept.length ? kept : ["Allow: /"];
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Edits for a bot in a group of its own: the Disallow lines that block it go. When that would
|
|
73
|
+
* leave the group empty its first blocking line becomes `Allow: /`, so the user-agent line cannot
|
|
74
|
+
* join the next group.
|
|
75
|
+
*/
|
|
76
|
+
const ownGroupEdits = (block, url, write) => block.blocking.map((line) => {
|
|
77
|
+
const [at] = line.agentLines;
|
|
78
|
+
const group = block.rules.filter((r) => r.agentLines === line.agentLines);
|
|
79
|
+
const others = group.filter((r) => !block.blocking.includes(r));
|
|
80
|
+
const first = block.blocking.find((l) => l.agentLines === line.agentLines);
|
|
81
|
+
return others.length === 0 && first === line
|
|
82
|
+
? replaceEdit("robots.txt", line.raw, "Allow: /", { url, at, write })
|
|
83
|
+
: removeEdit("robots.txt", line.raw, { url, at, write });
|
|
84
|
+
});
|
|
85
|
+
/** A run of user-agent lines longer than this is not quoted whole; each line is removed on its own. */
|
|
86
|
+
const MAX_RUN_CHARS = 1000;
|
|
87
|
+
const SHARED_RUN = "The other bots of this group are AI crawlers that other findings may take out of it too. Apply one of those edits, then re-check before the next: a group needs a User-agent line, or its rules join the group above it.";
|
|
88
|
+
/**
|
|
89
|
+
* Edits that take `leaving` bots out of a group they share with crawlers this finding is not about.
|
|
90
|
+
* While a crawler no finding moves stays in the group, each bot's user-agent line goes. When every
|
|
91
|
+
* other agent is an AI bot another finding may move as well, one edit quotes the group's whole run
|
|
92
|
+
* of user-agent lines, as do the other findings' edits: once one is applied the rest no longer
|
|
93
|
+
* match, so applied together they can never leave the group's rules without a user-agent line.
|
|
94
|
+
* The run is quoted too when a leaving bot is named in another group (`elsewhere`): its user-agent
|
|
95
|
+
* line alone would not say which group it is taken out of.
|
|
96
|
+
*/
|
|
97
|
+
const leaveGroupEdits = (line, leaving, elsewhere, reported, url, write) => {
|
|
98
|
+
const [at] = line.agentLines;
|
|
99
|
+
const stays = line.tokens.some((t) => !reported.has(t));
|
|
100
|
+
const { lines, eol } = line.run;
|
|
101
|
+
const current = lines.map((l) => l.text).join(eol);
|
|
102
|
+
if ((!stays || elsewhere) && current.length <= MAX_RUN_CHARS) {
|
|
103
|
+
const kept = lines.filter((l) => l.token === null || !leaving.has(l.token));
|
|
104
|
+
// Never a run without a user-agent line: the group's rules would join the group above it.
|
|
105
|
+
if (!kept.some((l) => l.token !== null)) {
|
|
106
|
+
return [];
|
|
107
|
+
}
|
|
108
|
+
// Another AI bot of the group may leave it in another finding, whose edit quotes the run too.
|
|
109
|
+
const shared = line.tokens.some((t) => reported.has(t) && !leaving.has(t));
|
|
110
|
+
return [
|
|
111
|
+
replaceEdit("robots.txt", current, kept.map((l) => l.text).join(eol), {
|
|
112
|
+
url,
|
|
113
|
+
at,
|
|
114
|
+
write: shared ? `${write} ${SHARED_RUN}` : write,
|
|
115
|
+
}),
|
|
116
|
+
];
|
|
117
|
+
}
|
|
118
|
+
return line.agentLines.flatMap((agentLine, i) => leaving.has(line.tokens[i] ?? "")
|
|
119
|
+
? [
|
|
120
|
+
removeEdit("robots.txt", agentLine, {
|
|
121
|
+
url,
|
|
122
|
+
at,
|
|
123
|
+
write: stays ? write : `${write} ${SHARED_RUN}`,
|
|
124
|
+
}),
|
|
125
|
+
]
|
|
126
|
+
: []);
|
|
127
|
+
};
|
|
128
|
+
const botFix = (block, tokens, url, write) => {
|
|
129
|
+
if (!block?.blocking.length) {
|
|
130
|
+
return {
|
|
131
|
+
edits: [],
|
|
132
|
+
leaves: [],
|
|
133
|
+
group: block ? keptRules(block, block.rules) : ["Allow: /"],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if (block.group !== "named") {
|
|
137
|
+
return { edits: [], leaves: [], group: keptRules(block, block.rules) };
|
|
138
|
+
}
|
|
139
|
+
// A group that also speaks for crawlers this finding is not about keeps its lines; the bot
|
|
140
|
+
// leaves it. A group only of this finding's bots loses its blocking lines in place, also when
|
|
141
|
+
// the bot leaves a shared group as well: taking its user-agent line out instead would leave its
|
|
142
|
+
// rules to join the group above.
|
|
143
|
+
const isShared = (l) => l.tokens.some((t) => !tokens.has(t));
|
|
144
|
+
const leaves = block.blocking.filter(isShared);
|
|
145
|
+
const edits = ownGroupEdits({ ...block, blocking: block.blocking.filter((l) => !isShared(l)) }, url, write);
|
|
146
|
+
if (leaves.length === 0) {
|
|
147
|
+
return { edits, leaves, group: null };
|
|
148
|
+
}
|
|
149
|
+
// The new group keeps the other rules of the groups the bot leaves. A bot that keeps a group of
|
|
150
|
+
// its own needs no new group when there are none.
|
|
151
|
+
const left = new Set(leaves.map((l) => l.agentLines));
|
|
152
|
+
const kept = block.rules.flatMap((r) => left.has(r.agentLines) && !block.blocking.includes(r) ? [r.raw] : []);
|
|
153
|
+
if (kept.length > 0) {
|
|
154
|
+
return { edits, leaves, group: kept };
|
|
155
|
+
}
|
|
156
|
+
const ownGroup = block.rules.some((r) => !left.has(r.agentLines));
|
|
157
|
+
return { edits, leaves, group: ownGroup ? null : ["Allow: /"] };
|
|
158
|
+
};
|
|
159
|
+
/** The edits that let `blocked` bots into the audited pages, from what robots.txt says about each. */
|
|
160
|
+
const robotsFixes = (crawlers, blocked, write) => {
|
|
161
|
+
const url = crawlers.robotsTxt;
|
|
162
|
+
const blocks = robotsBlocksOf(crawlers);
|
|
163
|
+
const tokens = new Set(blocked.map((b) => tokenOf(b.name)));
|
|
164
|
+
const letsGooglebotIn = blocked.some((b) => b.name === "Googlebot");
|
|
165
|
+
const edits = new Map();
|
|
166
|
+
const groups = new Map();
|
|
167
|
+
// Every AI bot robots.txt keeps out, whichever finding it is in: a fix may move any of them.
|
|
168
|
+
const reported = new Set(crawlers.bots
|
|
169
|
+
.filter((b) => !b.allowed || b.blockedPages > 0)
|
|
170
|
+
.map((b) => tokenOf(b.name)));
|
|
171
|
+
// The bots of this finding that leave each shared group, by the group's user-agent lines.
|
|
172
|
+
const leaving = new Map();
|
|
173
|
+
for (const bot of blocked) {
|
|
174
|
+
const block = blocks?.get(bot.name);
|
|
175
|
+
// Applebot follows the Googlebot group; letting Googlebot in lets it in too.
|
|
176
|
+
if (block?.group === "googlebot" && letsGooglebotIn) {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const fix = botFix(block, tokens, url, write);
|
|
180
|
+
for (const edit of fix.edits) {
|
|
181
|
+
edits.set(`${edit.at ?? ""}\n${edit.current ?? ""}`, edit);
|
|
182
|
+
}
|
|
183
|
+
for (const line of fix.leaves) {
|
|
184
|
+
const entry = leaving.get(line.agentLines) ?? {
|
|
185
|
+
line,
|
|
186
|
+
tokens: new Set(),
|
|
187
|
+
elsewhere: false,
|
|
188
|
+
};
|
|
189
|
+
entry.tokens.add(tokenOf(bot.name));
|
|
190
|
+
// The bot is named in another group too: its user-agent line alone does not say which.
|
|
191
|
+
entry.elsewhere ||=
|
|
192
|
+
block?.rules.some((r) => r.agentLines !== line.agentLines) ?? false;
|
|
193
|
+
leaving.set(line.agentLines, entry);
|
|
194
|
+
}
|
|
195
|
+
if (fix.group) {
|
|
196
|
+
const key = fix.group.join("\n");
|
|
197
|
+
const group = groups.get(key) ?? { agents: [], rules: fix.group };
|
|
198
|
+
group.agents.push(bot.name);
|
|
199
|
+
groups.set(key, group);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
for (const { line, tokens: out, elsewhere } of leaving.values()) {
|
|
203
|
+
for (const edit of leaveGroupEdits(line, out, elsewhere, reported, url, write)) {
|
|
204
|
+
edits.set(`${edit.at ?? ""}\n${edit.current ?? ""}`, edit);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return [
|
|
208
|
+
...edits.values(),
|
|
209
|
+
...[...groups.values()].map((group) => addEdit("robots.txt", "end of the file", [...group.agents.map((a) => `User-agent: ${a}`), ...group.rules].join("\n"), { url, write })),
|
|
210
|
+
];
|
|
211
|
+
};
|
|
212
|
+
/** A Content-Signal line written from its parts. */
|
|
213
|
+
const signalLine = (signal, pairs) => `Content-Signal: ${signal.path ? `${signal.path} ` : ""}${pairs
|
|
214
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
215
|
+
.join(", ")}`;
|
|
216
|
+
/** The edit that rewrites a Content-Signal line, or removes it when no pair is left. */
|
|
217
|
+
const signalEdit = (url, signal, pairs, write) => {
|
|
218
|
+
const source = signalSourceOf(signal);
|
|
219
|
+
const current = source?.raw ?? signalLine(signal, Object.entries(signal.signals));
|
|
220
|
+
const at = source?.group ?? undefined;
|
|
221
|
+
return pairs.length
|
|
222
|
+
? replaceEdit("robots.txt", current, signalLine(signal, pairs), {
|
|
223
|
+
url,
|
|
224
|
+
at,
|
|
225
|
+
write,
|
|
226
|
+
})
|
|
227
|
+
: removeEdit("robots.txt", current, { url, at, write });
|
|
228
|
+
};
|
|
229
|
+
const ANSWER_SIGNALS = new Set(["ai-input", "search"]);
|
|
230
|
+
const KNOWN_SIGNALS = new Set(["search", "ai-input", "ai-train", "use"]);
|
|
231
|
+
/**
|
|
232
|
+
* Markdown link text and target for an llms.txt line, so a page's title cannot break the link.
|
|
233
|
+
* Brackets become parentheses rather than escapes: simple readers of llms.txt, this audit's link
|
|
234
|
+
* count among them, end the link text at a "]" even with a backslash before it.
|
|
235
|
+
*/
|
|
236
|
+
const llmsLink = (page) => {
|
|
237
|
+
const title = page.title
|
|
238
|
+
? page.title
|
|
239
|
+
.replaceAll("[", "(")
|
|
240
|
+
.replaceAll("]", ")")
|
|
241
|
+
.replaceAll("\\", "\\\\")
|
|
242
|
+
: slot("page title");
|
|
243
|
+
return `- [${title}](${page.url.replaceAll("(", "%28").replaceAll(")", "%29")}): ${slot("what it covers")}`;
|
|
244
|
+
};
|
|
245
|
+
/** The link lines a fix writes into llms.txt: the audited pages, or the home page as a start. */
|
|
246
|
+
const llmsLinks = (llmsUrl, pages) => {
|
|
247
|
+
const listed = (pages ?? []).slice(0, 10);
|
|
248
|
+
return listed.length
|
|
249
|
+
? listed.map(llmsLink)
|
|
250
|
+
: [llmsLink({ url: new URL("/", llmsUrl).href, title: null })];
|
|
251
|
+
};
|
|
252
|
+
const LLMS_HEAD = [
|
|
253
|
+
`# ${slot("site name")}`,
|
|
254
|
+
"",
|
|
255
|
+
`> ${slot("one-sentence summary of what the site offers")}`,
|
|
256
|
+
];
|
|
257
|
+
const LLMS_WRITE = "The site's name, a one-sentence summary, and for each page a few words on what it covers. List the pages that matter most, not every URL.";
|
|
54
258
|
const robotsFindings = (crawlers, pageCount) => {
|
|
55
259
|
if (crawlers.status === "unreachable") {
|
|
56
260
|
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.`, {
|
|
261
|
+
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.`, {
|
|
262
|
+
fix: [
|
|
263
|
+
replaceEdit("http", crawlers.httpStatus === null
|
|
264
|
+
? "no response"
|
|
265
|
+
: statusLine(crawlers.httpStatus), "HTTP/1.1 200 OK\nContent-Type: text/plain", {
|
|
266
|
+
url: crawlers.robotsTxt,
|
|
267
|
+
at: "status line",
|
|
268
|
+
write: "Serve /robots.txt as a plain-text file with 200, or answer 404 when the site has none. Look for the server, CDN or firewall rule that answers it with an error or lets it time out.",
|
|
269
|
+
}),
|
|
270
|
+
],
|
|
271
|
+
evidence: { url: crawlers.robotsTxt, status: crawlers.httpStatus },
|
|
272
|
+
}),
|
|
58
273
|
];
|
|
59
274
|
}
|
|
60
275
|
const out = [];
|
|
@@ -68,6 +283,7 @@ const robotsFindings = (crawlers, pageCount) => {
|
|
|
68
283
|
: "the audited page";
|
|
69
284
|
out.push({
|
|
70
285
|
...finding(m(ROBOTS_RULES[purpose]), `robots.txt blocks ${blocked.map((b) => b.name).join(", ")}.`, {
|
|
286
|
+
fix: robotsFixes(crawlers, blocked, ROBOTS_WRITE[purpose]),
|
|
71
287
|
evidence: {
|
|
72
288
|
robotsTxt: crawlers.robotsTxt,
|
|
73
289
|
bots: cap(blocked.map((b) => ({
|
|
@@ -96,33 +312,73 @@ const signalFindings = (crawlers) => {
|
|
|
96
312
|
.map((s) => `${s.userAgents.join(", ") || "all crawlers"} for ${Object.entries(s.signals)
|
|
97
313
|
.map(([k, v]) => `${k}=${v}`)
|
|
98
314
|
.join(", ")}${s.path ? ` on ${s.path}` : ""}`)
|
|
99
|
-
.join("; ")}.`, {
|
|
315
|
+
.join("; ")}.`, {
|
|
316
|
+
fix: optOuts.map((signal) => signalEdit(crawlers.robotsTxt, signal, Object.entries(signal.signals).map(([k, v]) => [
|
|
317
|
+
k,
|
|
318
|
+
ANSWER_SIGNALS.has(k) && v === "no" ? "yes" : v,
|
|
319
|
+
]), "ai-train=no can stay to opt out of training. Keep ai-input=no or search=no only if keeping the content out of AI answers or search is deliberate.")),
|
|
320
|
+
evidence: { signals: cap(optOuts) },
|
|
321
|
+
}),
|
|
100
322
|
url: crawlers.robotsTxt,
|
|
101
323
|
});
|
|
102
324
|
}
|
|
103
325
|
const invalid = crawlers.contentSignals.flatMap(invalidSignals);
|
|
104
326
|
if (invalid.length) {
|
|
327
|
+
const lines = crawlers.contentSignals.filter((s) => invalidSignals(s).length > 0);
|
|
105
328
|
out.push({
|
|
106
|
-
...finding(m("aeo.content-signal-invalid"), `robots.txt Content-Signal has values the policy does not define: ${cap(invalid, 5).join(", ")}.`, {
|
|
329
|
+
...finding(m("aeo.content-signal-invalid"), `robots.txt Content-Signal has values the policy does not define: ${cap(invalid, 5).join(", ")}.`, {
|
|
330
|
+
fix: lines.map((signal) => signalEdit(crawlers.robotsTxt, signal, Object.entries(signal.signals).flatMap(([k, v]) => {
|
|
331
|
+
if (!KNOWN_SIGNALS.has(k)) {
|
|
332
|
+
return [];
|
|
333
|
+
}
|
|
334
|
+
return k === "use" || v === "yes" || v === "no"
|
|
335
|
+
? [[k, v]]
|
|
336
|
+
: [[k, slot("yes or no")]];
|
|
337
|
+
}), "Content-Signal takes search, ai-input and ai-train, each yes or no: yes or no for what the owner allows. A name the policy does not define is dropped; if it was a typo, write it under its right name.")),
|
|
338
|
+
evidence: { values: cap(invalid) },
|
|
339
|
+
}),
|
|
107
340
|
url: crawlers.robotsTxt,
|
|
108
341
|
});
|
|
109
342
|
}
|
|
110
343
|
return out;
|
|
111
344
|
};
|
|
112
|
-
const llmsTxtFindings = (llms) => {
|
|
345
|
+
const llmsTxtFindings = (llms, pages) => {
|
|
113
346
|
const at = { url: llms.url };
|
|
347
|
+
const links = llmsLinks(llms.url, pages);
|
|
348
|
+
const file = [...LLMS_HEAD, "", "## Pages", "", ...links].join("\n");
|
|
114
349
|
if (llms.status === "missing") {
|
|
115
350
|
return [
|
|
116
351
|
{
|
|
117
|
-
...finding(m("aeo.llms-txt-missing"), `No llms.txt at ${llms.url}${llms.httpStatus ? ` (HTTP ${llms.httpStatus})` : ""}
|
|
352
|
+
...finding(m("aeo.llms-txt-missing"), `No llms.txt at ${llms.url}${llms.httpStatus ? ` (HTTP ${llms.httpStatus})` : ""}.`, {
|
|
353
|
+
fix: [
|
|
354
|
+
addEdit("llms.txt", "new file", file, {
|
|
355
|
+
url: llms.url,
|
|
356
|
+
write: `${LLMS_WRITE} Serve it as plain text or Markdown at /llms.txt (in most frameworks, public/llms.txt).`,
|
|
357
|
+
}),
|
|
358
|
+
],
|
|
359
|
+
}),
|
|
118
360
|
...at,
|
|
119
361
|
},
|
|
120
362
|
];
|
|
121
363
|
}
|
|
122
364
|
if (llms.status === "invalid") {
|
|
365
|
+
const empty = llms.bytes === 0 || llms.problems.includes("the file is empty");
|
|
123
366
|
return [
|
|
124
367
|
{
|
|
125
|
-
...finding(m("aeo.llms-txt-invalid"), `llms.txt does not follow the format: ${llms.problems.join("; ")}.`, {
|
|
368
|
+
...finding(m("aeo.llms-txt-invalid"), `llms.txt does not follow the format: ${llms.problems.join("; ")}.`, {
|
|
369
|
+
fix: [
|
|
370
|
+
empty
|
|
371
|
+
? addEdit("llms.txt", "new file", file, {
|
|
372
|
+
url: llms.url,
|
|
373
|
+
write: LLMS_WRITE,
|
|
374
|
+
})
|
|
375
|
+
: addEdit("llms.txt", "first line", [...LLMS_HEAD, ""].join("\n"), {
|
|
376
|
+
url: llms.url,
|
|
377
|
+
write: "The site's name as an H1 and a one-sentence summary, above what the file starts with now; move any other heading below them.",
|
|
378
|
+
}),
|
|
379
|
+
],
|
|
380
|
+
evidence: { problems: llms.problems, bytes: llms.bytes },
|
|
381
|
+
}),
|
|
126
382
|
...at,
|
|
127
383
|
},
|
|
128
384
|
];
|
|
@@ -130,12 +386,36 @@ const llmsTxtFindings = (llms) => {
|
|
|
130
386
|
return llms.links === 0
|
|
131
387
|
? [
|
|
132
388
|
{
|
|
133
|
-
...finding(m("aeo.llms-txt-no-links"), `llms.txt "${llms.title ?? ""}" has no Markdown links
|
|
389
|
+
...finding(m("aeo.llms-txt-no-links"), `llms.txt "${llms.title ?? ""}" has no Markdown links.`, {
|
|
390
|
+
fix: [
|
|
391
|
+
addEdit("llms.txt", "end of the file", ["## Pages", "", ...links].join("\n"), { url: llms.url, write: LLMS_WRITE }),
|
|
392
|
+
],
|
|
393
|
+
}),
|
|
134
394
|
...at,
|
|
135
395
|
},
|
|
136
396
|
]
|
|
137
397
|
: [];
|
|
138
398
|
};
|
|
399
|
+
/** The response a bot got, as the `current` of a fix. */
|
|
400
|
+
const probeResponse = (bot) => {
|
|
401
|
+
const status = bot.probe?.status ?? null;
|
|
402
|
+
const reason = bot.probe?.reason ?? null;
|
|
403
|
+
if (status === null) {
|
|
404
|
+
return `no response${reason ? ` (${reason})` : ""}`;
|
|
405
|
+
}
|
|
406
|
+
return reason && !reason.startsWith("HTTP")
|
|
407
|
+
? `${statusLine(status)} (${reason})`
|
|
408
|
+
: statusLine(status);
|
|
409
|
+
};
|
|
410
|
+
const serverFix = (bot, purpose) => {
|
|
411
|
+
const allow = `Let ${bot.name} through at the CDN, firewall or bot-protection layer: its AI crawler setting, or a WAF rule that allows ${bot.name}'s verified IP ranges or user agent. This request came from this machine with ${bot.name}'s User-Agent, not from its IP ranges, so confirm the block in the CDN's bot logs before you change a rule.`;
|
|
412
|
+
return replaceEdit("http", probeResponse(bot), "HTTP/1.1 200 OK", {
|
|
413
|
+
at: `User-Agent: ${bot.name}`,
|
|
414
|
+
write: purpose === "training"
|
|
415
|
+
? `Keeping training bots out is the owner's choice and does not affect AI answers; apply this only if the owner wants ${bot.name} to collect the content. ${allow}`
|
|
416
|
+
: allow,
|
|
417
|
+
});
|
|
418
|
+
};
|
|
139
419
|
const probeFindings = (crawlers) => {
|
|
140
420
|
const baseline = crawlers.probeBaseline;
|
|
141
421
|
if (!baseline) {
|
|
@@ -149,6 +429,7 @@ const probeFindings = (crawlers) => {
|
|
|
149
429
|
continue;
|
|
150
430
|
}
|
|
151
431
|
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.`, {
|
|
432
|
+
fix: blocked.map((b) => serverFix(b, purpose)),
|
|
152
433
|
evidence: {
|
|
153
434
|
baseline,
|
|
154
435
|
bots: cap(blocked.map((b) => ({
|
|
@@ -168,10 +449,12 @@ export const aeoSiteFindings = (ctx) => {
|
|
|
168
449
|
out.push(...robotsFindings(ctx.crawlers, ctx.pageCount), ...signalFindings(ctx.crawlers), ...probeFindings(ctx.crawlers));
|
|
169
450
|
}
|
|
170
451
|
if (ctx.llmsTxt) {
|
|
171
|
-
out.push(...llmsTxtFindings(ctx.llmsTxt));
|
|
452
|
+
out.push(...llmsTxtFindings(ctx.llmsTxt, ctx.pages));
|
|
172
453
|
}
|
|
173
454
|
if (ctx.probeSkipped) {
|
|
174
|
-
out.push(finding(m("aeo.bot-probe-inconclusive"), `The AI bot probe did not run: ${ctx.probeSkipped}
|
|
455
|
+
out.push(finding(m("aeo.bot-probe-inconclusive"), `The AI bot probe did not run: ${ctx.probeSkipped}.`,
|
|
456
|
+
// About the audit, not the site: aeo.page-error carries the fix for a page that fails.
|
|
457
|
+
{ fix: [] }));
|
|
175
458
|
}
|
|
176
459
|
return out;
|
|
177
460
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-rules.js","sourceRoot":"","sources":["../../../src/core/aeo/site-rules.ts"],"names":[],"mappings":"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"}
|
|
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,5 +1,6 @@
|
|
|
1
1
|
import type { ProgressEvent } from "./crawl.js";
|
|
2
2
|
import type { FetchOptions } from "./fetch.js";
|
|
3
|
+
import type { Baseline } from "./recheck.js";
|
|
3
4
|
import type { Audit, Finding, IssueRollup, PageAudit, PageSource, ResponseInfo, SiteAudit, Thresholds } from "./types.js";
|
|
4
5
|
export type { ProgressEvent } from "./crawl.js";
|
|
5
6
|
export interface AuditOptions {
|
|
@@ -14,6 +15,13 @@ export interface AuditOptions {
|
|
|
14
15
|
includeInfo?: boolean;
|
|
15
16
|
/** Rule ids to skip. */
|
|
16
17
|
disableRules?: string[];
|
|
18
|
+
/** Run only these rule ids: a re-check of the rules a fix was for. */
|
|
19
|
+
onlyRules?: string[];
|
|
20
|
+
/**
|
|
21
|
+
* The findings of an earlier audit. The result then has `baseline`: the findings since fixed,
|
|
22
|
+
* still open and new.
|
|
23
|
+
*/
|
|
24
|
+
baseline?: Baseline;
|
|
17
25
|
thresholds?: Partial<Thresholds>;
|
|
18
26
|
fetch?: FetchOptions;
|
|
19
27
|
/** Base URL for inline HTML, files and directories (default http://localhost/). */
|