@rivi-software/agentic-seo-check 0.2.0 → 0.4.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.
Files changed (80) hide show
  1. package/README.md +9 -5
  2. package/dist/core/aeo/page.d.ts +0 -10
  3. package/dist/core/aeo/page.js +1 -29
  4. package/dist/core/aeo/page.js.map +1 -1
  5. package/dist/core/audit.js +3 -0
  6. package/dist/core/audit.js.map +1 -1
  7. package/dist/core/crawl.d.ts +2 -0
  8. package/dist/core/crawl.js +61 -4
  9. package/dist/core/crawl.js.map +1 -1
  10. package/dist/core/fetch.d.ts +9 -0
  11. package/dist/core/fetch.js +28 -12
  12. package/dist/core/fetch.js.map +1 -1
  13. package/dist/core/html/dom.d.ts +2 -0
  14. package/dist/core/html/dom.js +26 -1
  15. package/dist/core/html/dom.js.map +1 -1
  16. package/dist/core/html/extract.js +18 -3
  17. package/dist/core/html/extract.js.map +1 -1
  18. package/dist/core/html/head.d.ts +10 -0
  19. package/dist/core/html/head.js +206 -0
  20. package/dist/core/html/head.js.map +1 -0
  21. package/dist/core/html/resources.d.ts +17 -0
  22. package/dist/core/html/resources.js +172 -0
  23. package/dist/core/html/resources.js.map +1 -0
  24. package/dist/core/html/structured-data.d.ts +2 -0
  25. package/dist/core/html/structured-data.js +2 -0
  26. package/dist/core/html/structured-data.js.map +1 -1
  27. package/dist/core/robots.js +1 -0
  28. package/dist/core/robots.js.map +1 -1
  29. package/dist/core/rules/aeo.js +2 -2
  30. package/dist/core/rules/aeo.js.map +1 -1
  31. package/dist/core/rules/canonical.d.ts +3 -0
  32. package/dist/core/rules/canonical.js +54 -2
  33. package/dist/core/rules/canonical.js.map +1 -1
  34. package/dist/core/rules/document.js +4 -2
  35. package/dist/core/rules/document.js.map +1 -1
  36. package/dist/core/rules/head.d.ts +1 -0
  37. package/dist/core/rules/head.js +116 -0
  38. package/dist/core/rules/head.js.map +1 -0
  39. package/dist/core/rules/index.js +8 -0
  40. package/dist/core/rules/index.js.map +1 -1
  41. package/dist/core/rules/indexing.d.ts +10 -0
  42. package/dist/core/rules/indexing.js +171 -9
  43. package/dist/core/rules/indexing.js.map +1 -1
  44. package/dist/core/rules/keyword.js +1 -1
  45. package/dist/core/rules/keyword.js.map +1 -1
  46. package/dist/core/rules/loading.d.ts +1 -0
  47. package/dist/core/rules/loading.js +138 -0
  48. package/dist/core/rules/loading.js.map +1 -0
  49. package/dist/core/rules/meta.js +4 -1
  50. package/dist/core/rules/meta.js.map +1 -1
  51. package/dist/core/rules/rule.d.ts +2 -0
  52. package/dist/core/rules/rule.js +2 -0
  53. package/dist/core/rules/rule.js.map +1 -1
  54. package/dist/core/rules/structured-data-values.d.ts +3 -0
  55. package/dist/core/rules/structured-data-values.js +316 -0
  56. package/dist/core/rules/structured-data-values.js.map +1 -0
  57. package/dist/core/rules/structured-data.js +50 -20
  58. package/dist/core/rules/structured-data.js.map +1 -1
  59. package/dist/core/rules/urls.d.ts +1 -0
  60. package/dist/core/rules/urls.js +293 -0
  61. package/dist/core/rules/urls.js.map +1 -0
  62. package/dist/core/site-probes.d.ts +33 -0
  63. package/dist/core/site-probes.js +144 -0
  64. package/dist/core/site-probes.js.map +1 -0
  65. package/dist/core/site-rules.d.ts +18 -0
  66. package/dist/core/site-rules.js +487 -7
  67. package/dist/core/site-rules.js.map +1 -1
  68. package/dist/core/sitemap.d.ts +38 -1
  69. package/dist/core/sitemap.js +177 -43
  70. package/dist/core/sitemap.js.map +1 -1
  71. package/dist/core/static.d.ts +6 -0
  72. package/dist/core/static.js +121 -12
  73. package/dist/core/static.js.map +1 -1
  74. package/dist/core/types.d.ts +91 -0
  75. package/dist/core/types.js.map +1 -1
  76. package/dist/core/url.d.ts +2 -0
  77. package/dist/core/url.js +8 -0
  78. package/dist/core/url.js.map +1 -1
  79. package/package.json +1 -1
  80. package/skills/seo-audit/SKILL.md +14 -0
@@ -0,0 +1,316 @@
1
+ import { isHomePage } from "../aeo/page.js";
2
+ import { isJsonObject, isNumber, isString, typesOf, } from "../html/structured-data.js";
3
+ import { hostOf, resolveUrl } from "../url.js";
4
+ import { cap, defineRule, GOOGLE_DOCS } from "./rule.js";
5
+ /** Rich results Google no longer shows, keyed by the schema.org type that asked for them. */
6
+ export const RETIRED_RICH_RESULTS = new Map([
7
+ ["FAQPage", "Google stopped showing FAQ rich results on May 7, 2026."],
8
+ ["HowTo", "Google stopped showing How-to rich results in September 2023."],
9
+ [
10
+ "SpecialAnnouncement",
11
+ "Google retired the special announcement feature in 2025.",
12
+ ],
13
+ [
14
+ "ClaimReview",
15
+ "Google is phasing out ClaimReview (fact check) rich results; its Fact Check Explorer still reads the markup.",
16
+ ],
17
+ [
18
+ "SearchAction",
19
+ "Google removed the sitelinks search box in November 2024; WebSite markup still sets the site name.",
20
+ ],
21
+ ]);
22
+ const SD = "https://developers.google.com/search/docs/appearance/structured-data/";
23
+ /** Properties whose value is a URL, a list of URLs, or an object that holds one. */
24
+ const URL_PROPERTIES = new Set([
25
+ "url",
26
+ "image",
27
+ "logo",
28
+ "thumbnailUrl",
29
+ "contentUrl",
30
+ "embedUrl",
31
+ "item",
32
+ "sameAs",
33
+ "mainEntityOfPage",
34
+ ]);
35
+ /** JSON-LD objects visited per page at most: a page's own data rarely holds more than a few hundred. */
36
+ const MAX_OBJECTS = 5000;
37
+ /** Visit every JSON-LD object, nested ones included, with a dotted path to it. */
38
+ const eachObject = (items, visit) => {
39
+ const seen = new Set();
40
+ let visited = 0;
41
+ let complete = true;
42
+ const walk = (value, path, depth) => {
43
+ if (value === undefined) {
44
+ return;
45
+ }
46
+ // Past the limits, objects go unvisited; a rule that needs all of them can tell. A string or
47
+ // a number there is no object, so it costs nothing.
48
+ if (depth > 8 || visited >= MAX_OBJECTS) {
49
+ if (Array.isArray(value) || isJsonObject(value)) {
50
+ complete = false;
51
+ }
52
+ return;
53
+ }
54
+ if (Array.isArray(value)) {
55
+ for (const [i, v] of value.entries()) {
56
+ walk(v, `${path}[${i}]`, depth);
57
+ }
58
+ return;
59
+ }
60
+ if (!isJsonObject(value) || seen.has(value)) {
61
+ return;
62
+ }
63
+ seen.add(value);
64
+ visited += 1;
65
+ visit(value, path);
66
+ for (const [key, v] of Object.entries(value)) {
67
+ if (key !== "@context") {
68
+ walk(v, path ? `${path}.${key}` : key, depth + 1);
69
+ }
70
+ }
71
+ };
72
+ for (const item of items) {
73
+ if (item.source === "json-ld") {
74
+ // SAFETY: extractStructuredData builds every item's data from JSON.parse or from microdata, and both hold JSON values alone.
75
+ walk(item.data, "", 0);
76
+ }
77
+ }
78
+ return { complete };
79
+ };
80
+ const show = (value) => JSON.stringify(value ?? null).slice(0, 80);
81
+ /** A JSON number, or a string holding one with a dot for decimals. */
82
+ const numeric = (value) => {
83
+ if (isNumber(value)) {
84
+ return Number.isFinite(value) ? value : null;
85
+ }
86
+ return isString(value) && /^\s*-?\d+(?:\.\d+)?\s*$/u.test(value)
87
+ ? Number(value)
88
+ : null;
89
+ };
90
+ const priceProblems = (node) => {
91
+ const problems = [];
92
+ for (const key of ["price", "lowPrice", "highPrice"]) {
93
+ const value = node[key];
94
+ if (value === undefined || value === null || numeric(value) !== null) {
95
+ continue;
96
+ }
97
+ problems.push(isString(value) && /^\s*\d+,\d{1,2}\s*$/u.test(value)
98
+ ? `${key} ${show(value)} uses a comma for decimals; write it with a dot`
99
+ : `${key} ${show(value)} is not a plain number (no currency symbol, no thousands separator)`);
100
+ }
101
+ const currency = node["priceCurrency"];
102
+ if (currency !== undefined &&
103
+ !(isString(currency) && /^[a-z]{3}$/iu.test(currency.trim()))) {
104
+ problems.push(`priceCurrency ${show(currency)} is not a three-letter ISO 4217 code such as EUR or USD`);
105
+ }
106
+ return problems;
107
+ };
108
+ const ratingProblems = (node, types) => {
109
+ if (!types.some((t) => t.endsWith("Rating"))) {
110
+ return [];
111
+ }
112
+ const problems = [];
113
+ const value = node["ratingValue"];
114
+ const rating = numeric(value);
115
+ if (isString(value) && /^\s*\d+,\d+\s*$/u.test(value)) {
116
+ problems.push(`ratingValue ${show(value)} uses a comma for decimals; write it with a dot`);
117
+ }
118
+ else if (rating !== null) {
119
+ // Google assumes 5 and 1 when bestRating and worstRating are left out.
120
+ const best = numeric(node["bestRating"]) ?? 5;
121
+ const worst = numeric(node["worstRating"]) ?? 1;
122
+ if (rating > best || rating < worst) {
123
+ problems.push(`ratingValue ${rating} is outside ${worst}-${best}${node["bestRating"] === undefined ? " (bestRating defaults to 5; set it when the scale is 10 or 100)" : ""}`);
124
+ }
125
+ }
126
+ for (const key of ["ratingCount", "reviewCount"]) {
127
+ const count = node[key];
128
+ if (count !== undefined && !/^\d+$/u.test(String(count).trim())) {
129
+ problems.push(`${key} ${show(count)} is not a whole number`);
130
+ }
131
+ }
132
+ return problems;
133
+ };
134
+ const breadcrumbProblems = (node, types, isHome) => {
135
+ if (!types.includes("BreadcrumbList")) {
136
+ return [];
137
+ }
138
+ const raw = node["itemListElement"];
139
+ const elements = (Array.isArray(raw) ? raw : [raw]).filter(isJsonObject);
140
+ if (elements.length === 0) {
141
+ return [];
142
+ }
143
+ const problems = [];
144
+ // A home page's one-crumb trail (SEO plugins add one) is harmless: no trail is shown for it.
145
+ if (elements.length < 2 && !isHome) {
146
+ problems.push("Google needs at least two ListItems in a breadcrumb trail");
147
+ }
148
+ const positions = elements.map((e) => numeric(e["position"]));
149
+ const known = positions.filter((p) => p !== null).toSorted((a, b) => a - b);
150
+ if (known.length === elements.length && known.some((p, i) => p !== i + 1)) {
151
+ problems.push(`positions are ${known.join(", ")}; number them 1, 2, 3 from the start of the trail`);
152
+ }
153
+ // The last crumb is the page itself and may leave out `item`; every other one needs it.
154
+ const ordered = elements
155
+ .map((e, i) => ({ e, position: positions[i] ?? i + 1 }))
156
+ .toSorted((a, b) => a.position - b.position);
157
+ const withoutItem = ordered
158
+ .slice(0, -1)
159
+ .filter(({ e }) => e["item"] === undefined || e["item"] === "");
160
+ if (withoutItem.length > 0) {
161
+ problems.push(`${withoutItem.length} ListItem(s) before the last have no item (the URL of that crumb)`);
162
+ }
163
+ return problems;
164
+ };
165
+ /** Google's page for the rich result a type with invalid values belongs to. */
166
+ const docsFor = (types) => {
167
+ if (types.includes("BreadcrumbList")) {
168
+ return `${SD}breadcrumb`;
169
+ }
170
+ return types.some((t) => t.endsWith("Rating"))
171
+ ? `${SD}review-snippet`
172
+ : `${SD}product`;
173
+ };
174
+ /** A string that reads as a path rather than an absolute URL. */
175
+ const isRelativeUrl = (value) => {
176
+ const v = value.trim();
177
+ if (!v || v.startsWith("#") || /^[a-z][\d+.a-z-]*:/iu.test(v)) {
178
+ return false;
179
+ }
180
+ return (/^(?:\/|\.\.?\/)/u.test(v) ||
181
+ /^[\w.-]+\/\S*$/u.test(v) ||
182
+ /^[\w-]+\.(?:png|jpe?g|gif|webp|avif|svg)$/iu.test(v));
183
+ };
184
+ /** An object that only points at another one by `@id`. */
185
+ const isReference = (node) => {
186
+ const keys = Object.keys(node);
187
+ return keys.length === 1 && keys[0] === "@id" && isString(node["@id"]);
188
+ };
189
+ export const structuredDataValueRules = [
190
+ defineRule({
191
+ id: "structured-data.retired-type",
192
+ category: "structured-data",
193
+ severity: "info",
194
+ description: "The page has structured data for a rich result Google no longer shows: FAQPage, HowTo, SpecialAnnouncement, ClaimReview, or the sitelinks search box's SearchAction.",
195
+ recommendation: "Do not spend effort on this markup for Google: it no longer earns a rich result, and its missing properties are not reported. Keep it if something else reads it (answer engines read FAQPage, for instance), or remove it if it only served the rich result.",
196
+ docs: "https://developers.google.com/search/updates",
197
+ }, ({ page }, make) => {
198
+ const found = new Map();
199
+ eachObject(page.structuredData, (node) => {
200
+ for (const type of typesOf(node["@type"])) {
201
+ if (RETIRED_RICH_RESULTS.has(type)) {
202
+ found.set(type, (found.get(type) ?? 0) + 1);
203
+ }
204
+ }
205
+ });
206
+ return [...found].map(([type, count]) => make(`${type} markup: ${RETIRED_RICH_RESULTS.get(type)}`, {
207
+ selector: 'script[type="application/ld+json"]',
208
+ evidence: { type, count },
209
+ }));
210
+ }),
211
+ defineRule({
212
+ id: "structured-data.invalid-value",
213
+ category: "structured-data",
214
+ severity: "warning",
215
+ description: "A structured data value is in a form Google cannot use: a price with a currency symbol or a decimal comma, a currency that is not an ISO 4217 code, a rating outside its scale, or a breadcrumb trail with fewer than two items, odd positions or crumbs without a URL.",
216
+ recommendation: 'Write prices as plain numbers with a dot ("19.99") and the currency in priceCurrency ("EUR"); set bestRating when ratings are not out of 5; number breadcrumb positions 1, 2, 3 and give every crumb but the last an item URL.',
217
+ docs: GOOGLE_DOCS.structuredData,
218
+ }, ({ page }, make) => {
219
+ const findings = [];
220
+ eachObject(page.structuredData, (node, path) => {
221
+ const types = typesOf(node["@type"]);
222
+ const problems = [
223
+ ...priceProblems(node),
224
+ ...ratingProblems(node, types),
225
+ ...breadcrumbProblems(node, types, isHomePage(page.url)),
226
+ ];
227
+ if (problems.length > 0) {
228
+ const type = types[0] ?? "object";
229
+ findings.push(make(`${type}: ${problems.join("; ")}.`, {
230
+ selector: 'script[type="application/ld+json"]',
231
+ evidence: {
232
+ type,
233
+ path: path || "(root)",
234
+ problems,
235
+ docs: docsFor(types),
236
+ },
237
+ }));
238
+ }
239
+ });
240
+ return findings;
241
+ }),
242
+ defineRule({
243
+ id: "structured-data.relative-url",
244
+ category: "structured-data",
245
+ severity: "info",
246
+ description: "A URL in JSON-LD (url, image, logo, item, sameAs, ...) is relative. JSON-LD does not resolve these properties against the page URL, and Google documents only absolute URLs.",
247
+ recommendation: "Write absolute URLs in JSON-LD, built from the site's production URL: https://www.example.com/img/logo.png, not /img/logo.png.",
248
+ docs: GOOGLE_DOCS.structuredData,
249
+ }, ({ page }, make) => {
250
+ const relative = [];
251
+ eachObject(page.structuredData, (node, path) => {
252
+ for (const key of URL_PROPERTIES) {
253
+ const value = node[key];
254
+ const values = Array.isArray(value) ? value : [value];
255
+ for (const v of values) {
256
+ if (isString(v) && isRelativeUrl(v)) {
257
+ relative.push(`${path ? `${path}.` : ""}${key}: ${v.slice(0, 120)}`);
258
+ }
259
+ }
260
+ }
261
+ });
262
+ return relative.length > 0
263
+ ? make(`${relative.length} URL(s) in JSON-LD are relative.`, {
264
+ selector: 'script[type="application/ld+json"]',
265
+ evidence: { count: relative.length, examples: cap(relative) },
266
+ })
267
+ : null;
268
+ }),
269
+ defineRule({
270
+ id: "structured-data.dangling-id",
271
+ category: "structured-data",
272
+ severity: "info",
273
+ description: 'JSON-LD refers to an object by "@id" that no object on the page defines, so a reader of this page gets the id and none of the object\'s properties.',
274
+ recommendation: 'Define the object on every page that refers to it: put it in the same @graph with its @id, @type and properties (an article\'s author or publisher, for example), or write the properties inline instead of {"@id": ...}.',
275
+ docs: GOOGLE_DOCS.structuredData,
276
+ }, ({ page }, make) => {
277
+ const resolve = (id) => resolveUrl(id, page.url) ?? id;
278
+ const defined = new Set();
279
+ const referenced = new Map();
280
+ const host = hostOf(page.url);
281
+ // mainEntityOfPage: {"@id": <this page>} names the page being audited, which is valid.
282
+ const self = new Set([page.url, page.canonical].flatMap((u) => (u ? [resolve(u)] : [])));
283
+ const walked = eachObject(page.structuredData, (node, path) => {
284
+ const id = node["@id"];
285
+ if (!isString(id)) {
286
+ return;
287
+ }
288
+ const resolved = resolve(id);
289
+ // An @id on another host names an outside entity (a Wikidata item), not one this page defines.
290
+ if (isReference(node)) {
291
+ if (hostOf(resolved) === host &&
292
+ !self.has(resolved) &&
293
+ !referenced.has(resolved)) {
294
+ referenced.set(resolved, path || "(root)");
295
+ }
296
+ }
297
+ else {
298
+ defined.add(resolved);
299
+ }
300
+ });
301
+ // A definition past the walk's limits may exist; say nothing rather than guess.
302
+ if (!walked.complete) {
303
+ return null;
304
+ }
305
+ const dangling = [...referenced].filter(([id]) => !defined.has(id));
306
+ return dangling.length > 0
307
+ ? make(`${dangling.length} @id reference(s) point to objects the page does not define: ${cap(dangling.map(([id]) => id), 3).join(", ")}.`, {
308
+ selector: 'script[type="application/ld+json"]',
309
+ evidence: {
310
+ references: cap(dangling.map(([id, path]) => ({ id, path }))),
311
+ },
312
+ })
313
+ : null;
314
+ }),
315
+ ];
316
+ //# sourceMappingURL=structured-data-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-data-values.js","sourceRoot":"","sources":["../../../src/core/rules/structured-data-values.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { isJsonObject, isString, typesOf } from "../html/structured-data.js";
2
2
  import { cap, defineRule, GOOGLE_DOCS } from "./rule.js";
3
+ import { RETIRED_RICH_RESULTS } from "./structured-data-values.js";
3
4
  const G = "https://developers.google.com/search/docs/appearance/structured-data/";
4
5
  const ARTICLE = {
5
6
  required: [],
@@ -36,7 +37,7 @@ export const SCHEMA_SPECS = {
36
37
  WebSite: {
37
38
  required: ["name", "url"],
38
39
  recommended: [],
39
- docs: `${G}sitelinks-searchbox`,
40
+ docs: "https://developers.google.com/search/docs/appearance/site-names",
40
41
  },
41
42
  WebPage: { required: [], recommended: ["name"] },
42
43
  BreadcrumbList: {
@@ -55,12 +56,14 @@ export const SCHEMA_SPECS = {
55
56
  docs: `${G}carousel`,
56
57
  },
57
58
  FAQPage: { required: ["mainEntity"], recommended: [], docs: `${G}faqpage` },
59
+ // A Q&A page's question may have only suggested answers.
58
60
  Question: {
59
- required: ["name", "acceptedAnswer"],
61
+ required: ["name"],
60
62
  recommended: [],
61
- docs: `${G}faqpage`,
63
+ oneOf: [["acceptedAnswer", "suggestedAnswer"]],
64
+ docs: `${G}qapage`,
62
65
  },
63
- Answer: { required: ["text"], recommended: [], docs: `${G}faqpage` },
66
+ Answer: { required: ["text"], recommended: [], docs: `${G}qapage` },
64
67
  LocalBusiness: {
65
68
  required: ["name", "address"],
66
69
  recommended: [
@@ -213,6 +216,17 @@ const missingProperties = (obj, spec) => {
213
216
  const recommended = spec.recommended.filter((p) => !isPresent(obj[p]));
214
217
  return { required, recommended };
215
218
  };
219
+ /** Types that exist only as parts of a retired rich result (FAQ and How-to answers and steps). */
220
+ const RETIRED_PART_TYPES = new Set([
221
+ "Question",
222
+ "Answer",
223
+ "HowToStep",
224
+ "HowToSection",
225
+ "HowToSupply",
226
+ "HowToTool",
227
+ "HowToDirection",
228
+ "HowToTip",
229
+ ]);
216
230
  /** Walk one structured-data item (and nested typed objects) collecting spec violations. */
217
231
  export const validateItem = (item) => {
218
232
  const required = [];
@@ -220,26 +234,18 @@ export const validateItem = (item) => {
220
234
  const badDates = [];
221
235
  const unknownTypes = [];
222
236
  const visited = new Set();
223
- const walk = (node, path, depth) => {
224
- if (depth > 6 ||
225
- !(Array.isArray(node) || isJsonObject(node)) ||
226
- visited.has(node)) {
227
- return;
228
- }
229
- visited.add(node);
230
- if (Array.isArray(node)) {
231
- for (const [i, n] of node.entries()) {
232
- walk(n, `${path}[${i}]`, depth);
233
- }
234
- return;
235
- }
236
- for (const type of typesOf(node["@type"])) {
237
+ const checkSpecs = (node, types, path) => {
238
+ for (const type of types) {
237
239
  const spec = SCHEMA_SPECS[type];
238
240
  if (!spec) {
239
241
  unknownTypes.push(type);
240
242
  continue;
241
243
  }
242
244
  const missing = missingProperties(node, spec);
245
+ // A review nested in a Recipe or Product reviews that item; only a standalone one names it.
246
+ if (type === "Review" && path !== "") {
247
+ missing.required = missing.required.filter((p) => p !== "itemReviewed");
248
+ }
243
249
  if (missing.required.length) {
244
250
  required.push({ type, missing: missing.required, path });
245
251
  }
@@ -247,6 +253,30 @@ export const validateItem = (item) => {
247
253
  recommended.push({ type, missing: missing.recommended, path });
248
254
  }
249
255
  }
256
+ };
257
+ // Below a retired rich result type, missing properties no longer cost anything in Google.
258
+ const walk = (node, path, depth, retired = false) => {
259
+ if (depth > 6 ||
260
+ !(Array.isArray(node) || isJsonObject(node)) ||
261
+ visited.has(node)) {
262
+ return;
263
+ }
264
+ visited.add(node);
265
+ if (Array.isArray(node)) {
266
+ for (const [i, n] of node.entries()) {
267
+ walk(n, `${path}[${i}]`, depth, retired);
268
+ }
269
+ return;
270
+ }
271
+ const types = typesOf(node["@type"]);
272
+ // A node co-typed ["WebPage", "FAQPage"] still has its WebPage checked; below a retired type,
273
+ // only the types that exist for it (Question, HowToStep, ...) go unchecked.
274
+ checkSpecs(node, types.filter((t) => !RETIRED_RICH_RESULTS.has(t) &&
275
+ !(retired && RETIRED_PART_TYPES.has(t))), path);
276
+ // Untyped objects (every() holds for no types) and the retired types' own parts pass the skip
277
+ // down; a live type such as a BreadcrumbList or VideoObject below FAQPage or HowTo is checked.
278
+ const underRetired = types.some((t) => RETIRED_RICH_RESULTS.has(t)) ||
279
+ (retired && types.every((t) => RETIRED_PART_TYPES.has(t)));
250
280
  for (const [key, value] of Object.entries(node)) {
251
281
  if (DATE_PROPS.has(key) &&
252
282
  isString(value) &&
@@ -254,7 +284,7 @@ export const validateItem = (item) => {
254
284
  badDates.push(`${path ? `${path}.` : ""}${key}="${value}"`);
255
285
  }
256
286
  if (Array.isArray(value) || isJsonObject(value)) {
257
- walk(value, path ? `${path}.${key}` : key, depth + 1);
287
+ walk(value, path ? `${path}.${key}` : key, depth + 1, underRetired);
258
288
  }
259
289
  }
260
290
  };
@@ -279,7 +309,7 @@ export const structuredDataRules = [
279
309
  category: "structured-data",
280
310
  severity: "info",
281
311
  description: "The page has no structured data (JSON-LD or microdata).",
282
- recommendation: "Add JSON-LD for the page type (Article, Product, Organization, BreadcrumbList, FAQPage, ...) to qualify for rich results.",
312
+ recommendation: "Add JSON-LD for the page type (Article, Product, Organization, BreadcrumbList, Event, Recipe, ...) to qualify for rich results.",
283
313
  docs: GOOGLE_DOCS.structuredData,
284
314
  }, ({ page }, make) => page.structuredData.length === 0 && page.structuredDataErrors.length === 0
285
315
  ? make("Page has no structured data.")
@@ -1 +1 @@
1
- {"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../../../src/core/rules/structured-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../../../src/core/rules/structured-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const urlRules: import("./rule.js").Rule[];