@qobi/seocode 0.1.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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/dist/src/billing/polar.js +127 -0
  3. package/dist/src/billing/repo-limits.js +60 -0
  4. package/dist/src/billing/subscription-service.js +123 -0
  5. package/dist/src/billing/tier.js +14 -0
  6. package/dist/src/billing/types.js +1 -0
  7. package/dist/src/cli/discover.js +62 -0
  8. package/dist/src/cli/fix.js +24 -0
  9. package/dist/src/cli/format-terminal.js +66 -0
  10. package/dist/src/cli/index.js +204 -0
  11. package/dist/src/cli/init.js +48 -0
  12. package/dist/src/cli/staged.js +24 -0
  13. package/dist/src/config/seocode-config.js +97 -0
  14. package/dist/src/engine/page-detector.js +82 -0
  15. package/dist/src/engine/pr-delta.js +31 -0
  16. package/dist/src/engine/rule-engine.js +112 -0
  17. package/dist/src/engine/rule-loader.js +35 -0
  18. package/dist/src/engine/rules/declarative-evaluator.js +105 -0
  19. package/dist/src/engine/rules/heading-rules.js +43 -0
  20. package/dist/src/engine/rules/helpers.js +16 -0
  21. package/dist/src/engine/rules/image-rules.js +82 -0
  22. package/dist/src/engine/rules/index.js +28 -0
  23. package/dist/src/engine/rules/link-rules.js +39 -0
  24. package/dist/src/engine/rules/meta-rules.js +34 -0
  25. package/dist/src/engine/rules/performance-rules.js +24 -0
  26. package/dist/src/engine/rules/schema-rules.js +228 -0
  27. package/dist/src/engine/rules/suggest.js +103 -0
  28. package/dist/src/engine/rules/technical-rules.js +100 -0
  29. package/dist/src/parsers/frameworks/ast-value.js +83 -0
  30. package/dist/src/parsers/frameworks/astro.js +107 -0
  31. package/dist/src/parsers/frameworks/index.js +36 -0
  32. package/dist/src/parsers/frameworks/nextjs.js +170 -0
  33. package/dist/src/parsers/frameworks/remix.js +130 -0
  34. package/dist/src/parsers/frameworks/roles.js +63 -0
  35. package/dist/src/parsers/frameworks/types.js +1 -0
  36. package/dist/src/parsers/html-parser.js +118 -0
  37. package/dist/src/parsers/index.js +62 -0
  38. package/dist/src/parsers/jsx-parser.js +174 -0
  39. package/dist/src/types/index.js +1 -0
  40. package/dist/src/types/worker-env.js +1 -0
  41. package/package.json +75 -0
  42. package/rules/seo-rules.json +3414 -0
@@ -0,0 +1,3414 @@
1
+ {
2
+ "version": "1.4.5",
3
+ "updatedAt": "2026-09-04",
4
+ "changeLog": [
5
+ {
6
+ "date": "2026-09-04",
7
+ "version": "1.4.5",
8
+ "source": "Google AI Optimization Guide — https://developers.google.com/search/docs/fundamentals/ai-optimization-guide (scraped 2026-09-04) and Google AI Features in Search — https://developers.google.com/search/docs/appearance/ai-features (scraped 2026-09-04) and Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-09-04) and Google Structured Data Search Gallery — https://developers.google.com/search/docs/appearance/structured-data/search-gallery (scraped 2026-09-04)",
9
+ "changes": [
10
+ "Added rule: european-search-dataset-licensing — Google has refreshed the European Search Dataset Licensing Program page with updated eligibility criteria and application details; relevant for publishers in the EU seeking to license their content to Google Search",
11
+ "Confirmed rule: favicon-aspect-ratio — changelog confirms favicon documentation updated to explicitly list supported file formats; no change to requirements; already reflected in existing rule (lastUpdated 2026-08-29)",
12
+ "Confirmed rule: site-reputation-policy-eea — changelog confirms site reputation policy adjusted for EEA; already reflected in existing rule (lastUpdated 2026-08-29)",
13
+ "Confirmed rule: preferred-sources-feature — changelog confirms new custom interactive button for preferred sources; already reflected in existing rule (lastUpdated 2026-08-29)",
14
+ "Confirmed rule: social-video-platform-search-console — already reflected",
15
+ "Confirmed rule: fake-incentivized-reviews-policy — already reflected",
16
+ "Confirmed rule: package-tracking-early-adopters-closed — already reflected",
17
+ "Confirmed rule: canonicalization-reevaluation-time — already reflected",
18
+ "Confirmed rule: product-category-schema — already reflected",
19
+ "Confirmed rule: sale-price-effective-date-schema — already reflected",
20
+ "Confirmed rule: amp-direct-publisher-hosting — already reflected",
21
+ "Confirmed rule: site-move-domain-variants — already reflected",
22
+ "Confirmed rule: llms-txt-not-required — confirmed again in current AI optimization guide scrape; already reflected",
23
+ "Confirmed rule: faq-rich-result-documentation-removed — already reflected",
24
+ "Confirmed rule: tennessee-small-business-search-notifications — already reflected",
25
+ "Confirmed rule: third-party-seo-tools-guidance — already reflected",
26
+ "Confirmed rule: preferred-sources-ai-mode — already reflected",
27
+ "Confirmed rule: has-adult-consideration-schema — already reflected",
28
+ "Confirmed rule: generative-ai-optimization — confirmed again in current AI optimization guide scrape; content matches existing rule description; no new actionable guidance beyond what is already reflected",
29
+ "Confirmed rule: spam-policies-apply-to-ai-responses — confirmed again; already reflected",
30
+ "Confirmed rule: faq-schema-deprecated — Search Gallery does not list FAQPage; already reflected",
31
+ "Confirmed rule: speakable-schema-deprecated — Search Gallery lists Speakable under legacy entry; Google no longer supports it as a rich result type; already reflected",
32
+ "Confirmed rule: ai-features-snippet-eligibility — confirmed again in current AI features guide scrape; already reflected",
33
+ "Confirmed rule: agent-friendly-website — confirmed again in current AI optimization guide scrape; already reflected",
34
+ "Confirmed rule: back-button-hijacking — already reflected",
35
+ "Confirmed rule: robots-meta-outside-head — already reflected",
36
+ "Confirmed rule: noindex-javascript-accessibility-outdated — already reflected",
37
+ "Confirmed rule: crawling-docs-migrated — already reflected",
38
+ "Confirmed rule: spam-reports-manual-action — already reflected",
39
+ "Confirmed rule: read-more-deeplink — already reflected",
40
+ "Confirmed rule: image-preferred-source-metadata — already reflected",
41
+ "Confirmed rule: breadcrumbs-desktop-only — Search Gallery confirms breadcrumbs; already reflected",
42
+ "Confirmed rule: video-transparency — already reflected",
43
+ "Confirmed rule: structured-data-javascript-initial-html — already reflected",
44
+ "Confirmed rule: mobile-version-links — already reflected",
45
+ "Confirmed rule: review-snippet-requires-comment — already reflected",
46
+ "Confirmed rule: practice-problem-schema-deprecated — Search Gallery does not list PracticeProblem; already reflected",
47
+ "Confirmed rule: special-announcement-schema-deprecated — Search Gallery does not list SpecialAnnouncement; already reflected",
48
+ "Confirmed rule: missing-hreflang — already reflected",
49
+ "Confirmed rule: hreflang-no-combined-attributes — already reflected",
50
+ "Confirmed rule: robots-txt-unsupported-fields — already reflected",
51
+ "Confirmed rule: merchant-shipping-policy-schema — already reflected",
52
+ "Confirmed rule: video-indexing-criteria — Search Gallery confirms Video; already reflected",
53
+ "Confirmed rule: explicit-content-video-crawlable — already reflected",
54
+ "Confirmed rule: indexing-api-spam-detection — already reflected",
55
+ "Confirmed rule: avif-image-format-supported — already reflected",
56
+ "Confirmed rule: c2pa-metadata — already reflected",
57
+ "Confirmed rule: ai-mode-search-console — already reflected",
58
+ "Confirmed rule: loyalty-program-schema — Search Gallery confirms merchant listings; already reflected",
59
+ "Confirmed rule: merchant-return-policy-schema — Search Gallery confirms merchant listings; already reflected",
60
+ "Confirmed rule: product-structured-data-single-product — Search Gallery confirms Product; already reflected",
61
+ "Confirmed rule: url-parameters-best-practice — already reflected",
62
+ "Confirmed rule: safe-search-explicit-tagging — already reflected",
63
+ "Confirmed rule: organization-markup — Search Gallery confirms Organization; already reflected",
64
+ "Confirmed rule: site-name-schema — already reflected",
65
+ "Confirmed rule: event-structured-data-requirements — Search Gallery confirms Event; already reflected",
66
+ "Confirmed rule: dataset-schema-phased-out — Search Gallery lists Dataset under Google Dataset Search only; already reflected",
67
+ "Confirmed rule: sitelinks-searchbox-removed — Search Gallery does not list SearchAction/sitelinks searchbox; already reflected",
68
+ "Confirmed rule: core-updates-continuous — already reflected",
69
+ "Confirmed rule: googlebot-file-size-limits — already reflected",
70
+ "Confirmed rule: recipe-thumbnail-property — Search Gallery confirms Recipe; already reflected",
71
+ "Confirmed rule: south-africa-carousel-structured-data — already reflected",
72
+ "Confirmed rule: turkey-carousel-structured-data — already reflected",
73
+ "Confirmed rule: noindex-in-javascript — already reflected",
74
+ "Confirmed rule: canonical-javascript-best-practice — already reflected",
75
+ "Confirmed rule: javascript-non-200-rendering — already reflected",
76
+ "Confirmed rule: javascript-paywall-detection — already reflected",
77
+ "Confirmed rule: follow-feature-removed — already reflected",
78
+ "Confirmed rule: schema-org-shipping-vocabulary-updated — already reflected",
79
+ "Confirmed rule: schema-org-iptc-digital-source-type — already reflected",
80
+ "Confirmed rule: schema-org-v30-equivalence-annotations — already reflected",
81
+ "Confirmed rule: schema-org-v30-eu-digital-product-passport — already reflected",
82
+ "Confirmed rule: schema-org-v29-financial-incentives — already reflected",
83
+ "Confirmed rule: http-query-method-google-search — already reflected",
84
+ "Confirmed rule: google-august-2026-spam-update — already reflected",
85
+ "Confirmed rule: bing-ai-performance-citation-eligibility — already reflected",
86
+ "No actionable new rules extracted from Google Search Central Blog — page returned only a navigation/feedback shell with no article content",
87
+ "No actionable new rules extracted from Google Structured Data Search Gallery beyond confirming existing rules — gallery confirms all currently supported rich result types with no new types or requirements not already reflected in existing rules; Vacation Rental and Movie structured data types confirmed present in gallery but no existing rules cover them as they were not previously flagged as requiring rules; adding vacation-rental-schema and movie-schema as new info rules to document their availability"
88
+ ]
89
+ },
90
+ {
91
+ "date": "2026-08-29",
92
+ "version": "1.4.4",
93
+ "source": "Google AI Optimization Guide — https://developers.google.com/search/docs/fundamentals/ai-optimization-guide (scraped 2026-08-29) and Google AI Features in Search — https://developers.google.com/search/docs/appearance/ai-features (scraped 2026-08-29) and Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-29) and Google Structured Data Search Gallery — https://developers.google.com/search/docs/appearance/structured-data/search-gallery (scraped 2026-08-29)",
94
+ "changes": [
95
+ "Updated rule: favicon-aspect-ratio — changelog entry confirms supported favicon file formats are now explicitly listed in the favicon documentation; no change to requirements but documentation now lists formats explicitly rather than linking to external reference",
96
+ "Updated rule: preferred-sources-feature — changelog entry confirms new custom interactive button available for preferred sources; site owners can now implement a custom interactive button to guide their audience to set them as a preferred source",
97
+ "Updated rule: site-reputation-policy-eea — NEW RULE: Google has adjusted enforcement approach for the site reputation abuse policy within the European Economic Area (EEA)",
98
+ "Confirmed rule: social-video-platform-search-console — confirmed again in current changelog scrape; already reflected",
99
+ "Confirmed rule: fake-incentivized-reviews-policy — confirmed again in current changelog scrape; already reflected",
100
+ "Confirmed rule: package-tracking-early-adopters-closed — confirmed again in current changelog scrape; already reflected",
101
+ "Confirmed rule: canonicalization-reevaluation-time — confirmed again in current changelog scrape; already reflected",
102
+ "Confirmed rule: product-category-schema — confirmed again in current changelog scrape; already reflected",
103
+ "Confirmed rule: sale-price-effective-date-schema — confirmed again in current changelog scrape; already reflected",
104
+ "Confirmed rule: amp-direct-publisher-hosting — confirmed again in current changelog scrape; already reflected",
105
+ "Confirmed rule: site-move-domain-variants — confirmed again in current changelog scrape; already reflected",
106
+ "Confirmed rule: llms-txt-not-required — confirmed again in current changelog scrape and AI optimization guide; already reflected",
107
+ "Confirmed rule: faq-rich-result-documentation-removed — confirmed again in current changelog scrape; already reflected",
108
+ "Confirmed rule: tennessee-small-business-search-notifications — confirmed again in current changelog scrape; already reflected",
109
+ "Confirmed rule: third-party-seo-tools-guidance — confirmed again in current changelog scrape; already reflected",
110
+ "Confirmed rule: preferred-sources-ai-mode — confirmed again in current changelog scrape; already reflected",
111
+ "Confirmed rule: has-adult-consideration-schema — confirmed again in current changelog scrape; already reflected",
112
+ "Confirmed rule: generative-ai-optimization — confirmed again in current AI optimization guide scrape; already reflected",
113
+ "Confirmed rule: spam-policies-apply-to-ai-responses — confirmed again; already reflected",
114
+ "Confirmed rule: faq-schema-deprecated — confirmed again; Search Gallery does not list FAQPage; already reflected",
115
+ "Confirmed rule: speakable-schema-deprecated — Search Gallery lists Speakable under legacy entry but Google no longer supports it as a rich result type; already reflected",
116
+ "Confirmed rule: ai-features-snippet-eligibility — confirmed again in current AI features guide scrape; already reflected",
117
+ "Confirmed rule: agent-friendly-website — confirmed again in current AI optimization guide scrape; already reflected",
118
+ "Confirmed rule: back-button-hijacking — confirmed again in current changelog scrape; already reflected",
119
+ "Confirmed rule: robots-meta-outside-head — confirmed again in current changelog scrape; already reflected",
120
+ "Confirmed rule: noindex-javascript-accessibility-outdated — confirmed again in current changelog scrape; already reflected",
121
+ "Confirmed rule: crawling-docs-migrated — confirmed again in current changelog scrape; already reflected",
122
+ "Confirmed rule: spam-reports-manual-action — confirmed again in current changelog scrape; already reflected",
123
+ "Confirmed rule: read-more-deeplink — confirmed again in current changelog scrape; already reflected",
124
+ "Confirmed rule: image-preferred-source-metadata — confirmed again in current changelog scrape; already reflected",
125
+ "Confirmed rule: breadcrumbs-desktop-only — confirmed again; Search Gallery confirms breadcrumbs; already reflected",
126
+ "Confirmed rule: video-transparency — confirmed again in current changelog scrape; already reflected",
127
+ "Confirmed rule: structured-data-javascript-initial-html — confirmed again in current changelog scrape; already reflected",
128
+ "Confirmed rule: mobile-version-links — confirmed again in current changelog scrape; already reflected",
129
+ "Confirmed rule: review-snippet-requires-comment — confirmed again in current changelog scrape; already reflected",
130
+ "Confirmed rule: practice-problem-schema-deprecated — confirmed again; Search Gallery does not list PracticeProblem; already reflected",
131
+ "Confirmed rule: special-announcement-schema-deprecated — confirmed again; Search Gallery does not list SpecialAnnouncement; already reflected",
132
+ "Confirmed rule: missing-hreflang — confirmed again in current changelog scrape; already reflected",
133
+ "Confirmed rule: hreflang-no-combined-attributes — confirmed again in current changelog scrape; already reflected",
134
+ "Confirmed rule: robots-txt-unsupported-fields — confirmed again in current changelog scrape; already reflected",
135
+ "Confirmed rule: merchant-shipping-policy-schema — confirmed again in current changelog scrape; already reflected",
136
+ "Confirmed rule: video-indexing-criteria — confirmed again; Search Gallery confirms Video; already reflected",
137
+ "Confirmed rule: explicit-content-video-crawlable — confirmed again in current changelog scrape; already reflected",
138
+ "Confirmed rule: indexing-api-spam-detection — confirmed again in current changelog scrape; already reflected",
139
+ "Confirmed rule: avif-image-format-supported — confirmed again in current changelog scrape; already reflected",
140
+ "Confirmed rule: c2pa-metadata — confirmed again in current changelog scrape; already reflected",
141
+ "Confirmed rule: ai-mode-search-console — confirmed again in current changelog scrape; already reflected",
142
+ "Confirmed rule: loyalty-program-schema — confirmed again; Search Gallery confirms merchant listings; already reflected",
143
+ "Confirmed rule: merchant-return-policy-schema — confirmed again; Search Gallery confirms merchant listings; already reflected",
144
+ "Confirmed rule: product-structured-data-single-product — confirmed again; Search Gallery confirms Product; already reflected",
145
+ "Confirmed rule: url-parameters-best-practice — confirmed again in current changelog scrape; already reflected",
146
+ "Confirmed rule: safe-search-explicit-tagging — confirmed again in current changelog scrape; already reflected",
147
+ "Confirmed rule: organization-markup — confirmed again; Search Gallery confirms Organization; already reflected",
148
+ "Confirmed rule: site-name-schema — confirmed again; Search Gallery confirms WebSite/site name context; already reflected",
149
+ "Confirmed rule: event-structured-data-requirements — confirmed again; Search Gallery confirms Event; already reflected",
150
+ "Confirmed rule: dataset-schema-phased-out — confirmed again; Search Gallery lists Dataset under Google Dataset Search only; already reflected",
151
+ "Confirmed rule: sitelinks-searchbox-removed — confirmed again; Search Gallery does not list SearchAction/sitelinks searchbox; already reflected",
152
+ "Confirmed rule: core-updates-continuous — confirmed again in current changelog scrape; already reflected",
153
+ "Confirmed rule: googlebot-file-size-limits — confirmed again in current changelog scrape; already reflected",
154
+ "Confirmed rule: recipe-thumbnail-property — confirmed again; Search Gallery confirms Recipe; already reflected",
155
+ "Confirmed rule: south-africa-carousel-structured-data — confirmed again in current changelog scrape; already reflected",
156
+ "Confirmed rule: turkey-carousel-structured-data — confirmed again in current changelog scrape; already reflected",
157
+ "Confirmed rule: noindex-in-javascript — confirmed again in current changelog scrape; already reflected",
158
+ "Confirmed rule: canonical-javascript-best-practice — confirmed again in current changelog scrape; already reflected",
159
+ "Confirmed rule: javascript-non-200-rendering — confirmed again in current changelog scrape; already reflected",
160
+ "Confirmed rule: javascript-paywall-detection — confirmed again in current changelog scrape; already reflected",
161
+ "Confirmed rule: follow-feature-removed — confirmed again in current changelog scrape; already reflected",
162
+ "Confirmed rule: schema-org-shipping-vocabulary-updated — confirmed again; already reflected",
163
+ "Confirmed rule: schema-org-iptc-digital-source-type — confirmed again; already reflected",
164
+ "Confirmed rule: schema-org-v30-equivalence-annotations — confirmed again; already reflected",
165
+ "Confirmed rule: schema-org-v30-eu-digital-product-passport — confirmed again; already reflected",
166
+ "Confirmed rule: schema-org-v29-financial-incentives — confirmed again; already reflected",
167
+ "Confirmed rule: http-query-method-google-search — confirmed again; already reflected",
168
+ "Confirmed rule: google-august-2026-spam-update — confirmed again; already reflected",
169
+ "Confirmed rule: bing-ai-performance-citation-eligibility — confirmed again; already reflected",
170
+ "No actionable new rules extracted from Google Search Central Blog — page returned only a navigation/feedback shell with no article content",
171
+ "No actionable new rules extracted from Google Structured Data Search Gallery beyond confirming existing rules — gallery confirms all currently supported rich result types with no new types or requirements not already reflected in existing rules"
172
+ ]
173
+ },
174
+ {
175
+ "date": "2026-08-20",
176
+ "version": "1.4.3",
177
+ "source": "Schema.org Release Notes — https://schema.org/docs/releases.html (scraped 2026-08-20) and Search Engine Land — https://searchengineland.com/library/seo (scraped 2026-08-20) and Search Engine Roundtable — https://www.seroundtable.com (scraped 2026-08-20) and Search Engine Journal — https://www.searchenginejournal.com/category/technical-seo/ (scraped 2026-08-20)",
178
+ "changes": [
179
+ "Added rule: schema-org-v30-equivalence-annotations — schema.org version 30.0 added GS1, Dublin Core, and Open Graph equivalence annotations and exports; EU Digital Product Passport examples aligned with UN/CEFACT codes; new CompoundPriceSpecification changes and credential vocabulary extensions",
180
+ "Added rule: schema-org-v30-eu-digital-product-passport — schema.org version 30.0 added EU Digital Product Passport (DPP) examples aligned with UN/CEFACT codes; relevant for ecommerce and product pages targeting EU markets",
181
+ "Added rule: schema-org-v29-financial-incentives — schema.org version 29.0 added vocabulary to represent financial incentives including sustainability incentives; new types and properties for use on Offer",
182
+ "Confirmed rule: schema-org-shipping-vocabulary-updated — schema.org version 29.0 deprecation of DeliveryTimeSettings and ShippingRateSettings confirmed again in current release notes scrape; already reflected",
183
+ "Confirmed rule: schema-org-iptc-digital-source-type — schema.org version 29.4 added missing enumeration values to IPTCDigitalSourceEnumeration confirmed again; already reflected",
184
+ "Confirmed rule: c2pa-metadata — schema.org version 28.1 IPTC values confirmed again; already reflected",
185
+ "Confirmed rule: loyalty-program-schema — schema.org version 28.0 MemberProgram/MemberProgramTier confirmed again; already reflected",
186
+ "Confirmed rule: has-adult-consideration-schema — schema.org version 14.0 hasAdultConsideration on MerchantReturnPolicy confirmed again; already reflected",
187
+ "Confirmed rule: merchant-return-policy-schema — schema.org version 13.0 and 14.0 MerchantReturnPolicy vocabulary confirmed again; already reflected",
188
+ "Confirmed rule: speakable-schema-deprecated — SpeakableSpecification introduced in schema.org 3.2, moved to core in 3.5, confirmed again; Google no longer supports it; already reflected",
189
+ "Confirmed rule: faq-schema-deprecated — FAQPage introduced in schema.org 3.4 confirmed again; already reflected",
190
+ "Confirmed rule: google-august-2026-spam-update — Google August 2026 Spam Update confirmed again in Search Engine Land and Search Engine Roundtable headlines; already reflected",
191
+ "No actionable new rules extracted from Search Engine Journal — page returned only navigation/category shell text with no article content",
192
+ "No actionable new rules extracted from Search Engine Roundtable beyond already-reflected items — headlines covering ChatGPT Ads expansion, Google update announcement timing, Google Search video carousel frequency, Google Ads bidding for loyalty members, Google Business Profiles Q&A, Google Trends maps, Google Analytics outage, Google Search HTTP QUERY method, and Bing related searches contain no distinct technical SEO implementation requirements not already reflected in existing rules; the Google Search HTTP QUERY method item is noted below as a new rule",
193
+ "Added rule: http-query-method-google-search — Google Search will eventually support the HTTP QUERY method for search interactions; no immediate implementation required but site owners should be aware of this emerging standard"
194
+ ]
195
+ },
196
+ {
197
+ "date": "2026-08-20",
198
+ "version": "1.4.2",
199
+ "source": "Bing Webmaster Blog — https://blogs.bing.com/webmaster (scraped 2026-08-20) and Lumar Blog — https://www.lumar.io/blog (scraped 2026-08-20) and W3C Blog — https://www.w3.org/blog/news/ (scraped 2026-08-20)",
200
+ "changes": [
201
+ "Confirmed rule: bing-ai-performance-citation-eligibility — Bing AI Performance public preview confirmed again in current Bing Webmaster Blog scrape; Copilot in Bing Webmaster Tools now generally available to all users; no new distinct technical SEO implementation requirements beyond what is already reflected in existing rule",
202
+ "No actionable new rules extracted from Lumar Blog — page returned only a category/navigation shell with no article content",
203
+ "No actionable new rules extracted from W3C Blog — page returned only a pagination shell ('This is page 1, displaying results 1-10') with no article content",
204
+ "No new, updated, or deprecated rules warranted — all content either confirms existing rules or contains no actionable technical SEO implementation requirements"
205
+ ]
206
+ },
207
+ {
208
+ "date": "2026-08-20",
209
+ "version": "1.4.1",
210
+ "source": "Google AI Optimization Guide — https://developers.google.com/search/docs/fundamentals/ai-optimization-guide (scraped 2026-08-20) and Google AI Features in Search — https://developers.google.com/search/docs/appearance/ai-features (scraped 2026-08-20) and Moz Blog — https://moz.com/blog (scraped 2026-08-20)",
211
+ "changes": [
212
+ "Updated rule: generative-ai-optimization — added new guidance on Generative AI performance report in Search Console for measuring AI feature visibility; added clarification that a site must be included in Search generative AI features in Search Console to be eligible for display; added explicit guidance on semantic HTML (not required to be perfect but good practice for human readability and screen readers); added explicit guidance on good page experience (displays well across devices, reduces latency, distinguishes main content); added guidance on local business and ecommerce details via Merchant Center feeds and Google Business Profiles; confirmed all existing myth-busting guidance; no structural rule changes",
213
+ "Updated rule: ai-features-snippet-eligibility — added new requirement: in addition to being indexed and snippet-eligible, a site must be included in Search generative AI features in Search Console to be eligible for display in generative AI features; added troubleshooting guidance on preview controls and recrawl timing",
214
+ "Confirmed rule: llms-txt-not-required — confirmed again in current article scrape; already reflected",
215
+ "Confirmed rule: agent-friendly-website — confirmed again in current article scrape; already reflected",
216
+ "Confirmed rule: spam-policies-apply-to-ai-responses — confirmed again in current article scrape; already reflected",
217
+ "Confirmed rule: ai-mode-search-console — confirmed again; AI Overviews and AI Mode traffic included in Search Console totals confirmed; already reflected",
218
+ "No actionable new rules extracted from Moz Blog — page returned only a single article teaser about LLM review sentiment with no distinct technical SEO implementation requirements not already reflected in existing rules"
219
+ ]
220
+ },
221
+ {
222
+ "date": "2026-08-20",
223
+ "version": "1.4.0",
224
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-20, last updated 2026-07-29 UTC) and Search Engine Roundtable — https://www.seroundtable.com (scraped 2026-08-20)",
225
+ "changes": [
226
+ "Added rule: social-video-platform-search-console — Google has added a new guide on analyzing social and video platform content performance in Search Console",
227
+ "Added rule: fake-incentivized-reviews-policy — Google has added a new guideline to review snippet documentation about fake and undisclosed incentivized reviews",
228
+ "Added rule: package-tracking-early-adopters-closed — Google's package tracking early adopters program is no longer accepting new partners",
229
+ "Added rule: canonicalization-reevaluation-time — Google has updated the canonicalization troubleshooting guide with clarifications on re-evaluation time",
230
+ "Added rule: product-category-schema — Google has updated product structured data documentation to detail how the google_product_category property can be used with both Product and Offer types",
231
+ "Added rule: sale-price-effective-date-schema — Google has added a new section on sale duration to the Merchant listing guide explaining how to use schema.org properties to set effective range for sale prices",
232
+ "Added rule: amp-direct-publisher-hosting — Google Search is updating how it connects users to AMP pages, now taking users directly to the publisher's AMP host pages; AMP Cache and signed exchanges no longer required",
233
+ "Added rule: google-august-2026-spam-update — Google has released an August 2026 spam update",
234
+ "Confirmed rule: site-move-domain-variants — site move guidance with domain variants confirmed again in current changelog scrape; already reflected",
235
+ "Confirmed rule: llms-txt-not-required — clarifying note on llms.txt files confirmed again; already reflected",
236
+ "Confirmed rule: faq-rich-result-documentation-removed — FAQ rich result documentation removal confirmed again; already reflected",
237
+ "Confirmed rule: tennessee-small-business-search-notifications — Tennessee small business notifications article confirmed again; already reflected",
238
+ "Confirmed rule: third-party-seo-tools-guidance — third-party SEO tools guidance confirmed again; already reflected",
239
+ "Confirmed rule: preferred-sources-ai-mode — preferred sources in AI Overviews and AI Mode confirmed again; already reflected",
240
+ "Confirmed rule: has-adult-consideration-schema — hasAdultConsideration property confirmed again; already reflected",
241
+ "Confirmed rule: generative-ai-optimization — AI optimization guide confirmed again; already reflected",
242
+ "Confirmed rule: spam-policies-apply-to-ai-responses — spam policies apply to AI responses confirmed again; already reflected",
243
+ "Confirmed rule: faq-schema-deprecated — FAQ rich result no longer shown confirmed again; already reflected",
244
+ "Confirmed rule: back-button-hijacking — back button hijacking spam policy confirmed again; already reflected",
245
+ "Confirmed rule: spam-reports-manual-action — spam reports manual action confirmed again; already reflected",
246
+ "No actionable new rules extracted from Search Engine Roundtable — headlines covering Google August 2026 Spam Update (captured as new rule), ChatGPT Ads expansion, Google Business Profiles Q&A feature, Google Trends maps, Google Analytics outage, Bing related searches UI, and Google AdSense payment changes contain no distinct technical SEO implementation requirements not already reflected in existing rules beyond the spam update announcement"
247
+ ]
248
+ },
249
+ {
250
+ "date": "2026-06-18",
251
+ "version": "1.3.7",
252
+ "source": "Google Structured Data Search Gallery — https://developers.google.com/search/docs/appearance/structured-data/search-gallery (scraped 2026-06-18) and Microsoft AI Blog — https://blogs.microsoft.com/ai/ (scraped 2026-06-18)",
253
+ "changes": [
254
+ "Confirmed rule: faq-schema-deprecated — FAQPage not listed in the current Search Gallery, confirming it is no longer a supported rich result type; already reflected",
255
+ "Confirmed rule: speakable-schema-deprecated — SpeakableSpecification listed in Search Gallery under 'Allow search engines and other applications to identify news content to read aloud on Google Assistant-enabled devices using text-to-speech (TTS)' — however this entry appears to be a legacy listing; Google has removed Speakable from supported rich result types; already reflected",
256
+ "Confirmed rule: practice-problem-schema-deprecated — practice problem structured data not listed in current Search Gallery, confirming it is no longer a supported rich result type; already reflected",
257
+ "Confirmed rule: special-announcement-schema-deprecated — SpecialAnnouncement not listed in current Search Gallery, confirming deprecation; already reflected",
258
+ "Confirmed rule: dataset-schema-phased-out — Dataset listed in Search Gallery under Education and Science as 'Large data sets that appear in Google Dataset Search' — note the description references Google Dataset Search specifically, not Google Search rich results, consistent with existing rule noting Dataset is being phased out from Google Search results but may still be used by Google Dataset Search; already reflected",
259
+ "Confirmed rule: sitelinks-searchbox-removed — SearchAction/sitelinks searchbox not listed in current Search Gallery, confirming removal; already reflected",
260
+ "Confirmed rule: event-structured-data-requirements — Event listed in Search Gallery as 'An interactive rich result that shows a list of organized events, such as concerts or art festivals, that people may attend at a particular time and place'; already reflected",
261
+ "Confirmed rule: video-indexing-criteria — Video listed in Search Gallery; already reflected",
262
+ "Confirmed rule: breadcrumbs-desktop-only — Breadcrumb listed in Search Gallery; already reflected",
263
+ "Confirmed rule: review-snippet-requires-comment — Review snippet listed in Search Gallery; already reflected",
264
+ "Confirmed rule: organization-markup — Organization listed in Search Gallery; already reflected",
265
+ "Confirmed rule: product-structured-data-single-product — Product listed in Search Gallery; already reflected",
266
+ "Confirmed rule: recipe-thumbnail-property — Recipe listed in Search Gallery; already reflected",
267
+ "Confirmed rule: merchant-shipping-policy-schema — Product/merchant listings listed in Search Gallery; already reflected",
268
+ "Confirmed rule: merchant-return-policy-schema — Product/merchant listings listed in Search Gallery; already reflected",
269
+ "Confirmed rule: loyalty-program-schema — Product/merchant listings listed in Search Gallery; already reflected",
270
+ "Confirmed rule: javascript-paywall-detection — Subscription and paywalled content listed in Search Gallery; already reflected",
271
+ "Confirmed rule: site-name-schema — WebSite/site name not explicitly listed but Organization and related markup confirmed; already reflected",
272
+ "Confirmed rule: missing-json-ld — structured data gallery confirms JSON-LD as the implementation path for all rich result types; already reflected",
273
+ "No actionable new rules extracted from Microsoft AI Blog — page returned only a single non-SEO article title ('Farming is risky business. This app helps Turkish growers succeed') with no technical SEO content",
274
+ "No new rules added — Search Gallery page confirms existing supported rich result types with no new types or requirements not already reflected in existing rules"
275
+ ]
276
+ },
277
+ {
278
+ "date": "2026-06-18",
279
+ "version": "1.3.6",
280
+ "source": "Search Engine Roundtable — https://www.seroundtable.com (scraped 2026-06-18) and Moz Blog — https://moz.com/blog (scraped 2026-06-18)",
281
+ "changes": [
282
+ "Confirmed rule: site-move-domain-variants — 'Google: For Site Moves, Add All Domain Variants To Change Of Address Tool' headline confirms existing rule; already reflected",
283
+ "Added rule: html-standard-for-seo — Google has stated that HTML is the standard for SEO, not Markdown files; this extends and reinforces the existing llms-txt-not-required rule with an explicit Google statement that Markdown files have no SEO advantage over HTML",
284
+ "No actionable new rules extracted from Moz Blog — page returned only a conference speaker announcement with no technical SEO content",
285
+ "No actionable new rules extracted from remaining Search Engine Roundtable headlines — items covering Google Ads interface changes, Bing country reporting, Google Business Profiles UI, Google Discover News Showcase, CMA regulatory news, and ranking volatility reports contain no distinct technical SEO implementation requirements not already reflected in existing rules"
286
+ ]
287
+ },
288
+ {
289
+ "date": "2026-06-18",
290
+ "version": "1.3.5",
291
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-18, last updated 2026-06-17 UTC)",
292
+ "changes": [
293
+ "Added rule: site-move-domain-variants — Google has updated site move guidance to include information on using the Change of Address tool for all subdomain variants (including www and non-www) during domain migrations",
294
+ "Added rule: faq-rich-result-documentation-removed — Google has removed the FAQ rich result documentation entirely, confirming the feature is no longer shown in Google Search results",
295
+ "Added rule: tennessee-small-business-search-notifications — Google has created a new article explaining how small business owners in Tennessee can receive notifications from Google Search when their web content is removed or restricted",
296
+ "Confirmed rule: llms-txt-not-required — changelog entry confirms Google added a clarifying note to the AI optimization guide about llms.txt files; already reflected",
297
+ "Confirmed rule: preferred-sources-ai-mode — preferred sources feature rolling out to AI Overviews and AI Mode confirmed again; already reflected",
298
+ "Confirmed rule: has-adult-consideration-schema — hasAdultConsideration property confirmed again; already reflected",
299
+ "Confirmed rule: generative-ai-optimization — new sections on non-commodity content, local/shopping/image/video content, AEO/GEO mythbusting, AI agents confirmed; already reflected",
300
+ "Confirmed rule: spam-policies-apply-to-ai-responses — spam policies apply to generative AI responses confirmed again; already reflected",
301
+ "Confirmed rule: faq-schema-deprecated — FAQ rich result feature no longer shown in Google Search confirmed; documentation now fully removed; already reflected",
302
+ "Confirmed rule: third-party-seo-tools-guidance — guidance on evaluating third-party SEO tools confirmed again; already reflected",
303
+ "Confirmed rule: spam-reports-manual-action — manual action based on spam reports confirmed again; already reflected",
304
+ "Confirmed rule: back-button-hijacking — back button hijacking spam policy confirmed again; already reflected",
305
+ "Confirmed rule: noindex-javascript-accessibility-outdated — outdated JavaScript accessibility section removal confirmed again; already reflected",
306
+ "Confirmed rule: preferred-sources-feature — preferred sources feature confirmed again; already reflected",
307
+ "Confirmed rule: read-more-deeplink — read more deep links confirmed again; already reflected",
308
+ "Confirmed rule: image-preferred-source-metadata — og:image and schema.org as thumbnail sources confirmed again; already reflected",
309
+ "Confirmed rule: robots-meta-outside-head — robots meta outside head behavior confirmed again; already reflected",
310
+ "Confirmed rule: noindex-in-javascript — noindex in JavaScript undefined behavior confirmed again; already reflected",
311
+ "Confirmed rule: canonical-javascript-best-practice — canonicalization best practices for JavaScript confirmed again; already reflected",
312
+ "Confirmed rule: core-updates-continuous — continuous core updates confirmed again; already reflected",
313
+ "Confirmed rule: crawling-docs-migrated — crawling documentation migration confirmed again; already reflected",
314
+ "Confirmed rule: follow-feature-removed — Follow feature no longer shown in Discover confirmed again; already reflected",
315
+ "Confirmed rule: review-no-multiple-reviewed-entities — avoiding multiple ways of indicating reviewed entity confirmed again; already reflected",
316
+ "Confirmed rule: merchant-shipping-policy-schema — merchant-level shipping policy markup confirmed again; already reflected",
317
+ "Confirmed rule: javascript-non-200-rendering — JavaScript execution on non-200 HTTP status codes confirmed again; already reflected",
318
+ "Confirmed rule: javascript-paywall-detection — JavaScript-based paywall considerations confirmed again; already reflected",
319
+ "Confirmed rule: south-africa-carousel-structured-data — South Africa carousel additional query types confirmed again; already reflected",
320
+ "Confirmed rule: turkey-carousel-structured-data — Turkey carousel expansion confirmed again; already reflected",
321
+ "Confirmed rule: image-url-consistency — consistent image URL references confirmed again; already reflected",
322
+ "Confirmed rule: sitelinks-searchbox-removed — sitelinks search box removal confirmed again; already reflected",
323
+ "Confirmed rule: practice-problem-schema-deprecated — practice problem structured data no longer shown confirmed again; already reflected",
324
+ "Confirmed rule: special-announcement-schema-deprecated — special announcement deprecated confirmed again; already reflected",
325
+ "Confirmed rule: dataset-schema-phased-out — dataset structured data phased out confirmed again; already reflected",
326
+ "Confirmed rule: hreflang-no-combined-attributes — hreflang combined attributes confirmed again; already reflected",
327
+ "Confirmed rule: merchant-return-policy-schema — merchant return policy confirmed again; already reflected",
328
+ "Confirmed rule: loyalty-program-schema — loyalty program markup confirmed again; already reflected",
329
+ "Confirmed rule: event-structured-data-requirements — event structured data requirements confirmed again; already reflected",
330
+ "Confirmed rule: recipe-thumbnail-property — recipe thumbnail property confirmed again; already reflected",
331
+ "Confirmed rule: safe-search-explicit-tagging — SafeSearch documentation confirmed again; already reflected",
332
+ "Confirmed rule: explicit-content-video-crawlable — explicit video crawlable confirmed again; already reflected",
333
+ "Confirmed rule: googlebot-file-size-limits — Googlebot file size limits confirmed again; already reflected",
334
+ "Confirmed rule: avif-image-format-supported — AVIF image format confirmed again; already reflected",
335
+ "Confirmed rule: c2pa-metadata — C2PA metadata confirmed again; already reflected",
336
+ "Confirmed rule: ai-mode-search-console — AI Mode Search Console confirmed again; already reflected",
337
+ "Confirmed rule: organization-markup — organization markup confirmed again; already reflected",
338
+ "Confirmed rule: site-name-schema — site name schema confirmed again; already reflected",
339
+ "Confirmed rule: breadcrumbs-desktop-only — breadcrumbs desktop only confirmed again; already reflected",
340
+ "Confirmed rule: review-snippet-requires-comment — review snippet requirements confirmed again; already reflected",
341
+ "Confirmed rule: structured-data-javascript-initial-html — structured data in initial HTML confirmed again; already reflected",
342
+ "Confirmed rule: mobile-version-links — mobile version links confirmed again; already reflected",
343
+ "Confirmed rule: video-indexing-criteria — video indexing criteria confirmed again; already reflected",
344
+ "Confirmed rule: video-transparency — video transparency confirmed again; already reflected",
345
+ "Confirmed rule: indexing-api-spam-detection — Indexing API spam detection confirmed again; already reflected",
346
+ "Confirmed rule: url-parameters-best-practice — URL parameters best practice confirmed again; already reflected",
347
+ "Confirmed rule: robots-txt-unsupported-fields — robots.txt unsupported fields confirmed again; already reflected",
348
+ "Confirmed rule: product-structured-data-single-product — product structured data single product confirmed again; already reflected",
349
+ "Confirmed rule: missing-hreflang — hreflang confirmed again; already reflected",
350
+ "Confirmed rule: schema-org-shipping-vocabulary-updated — shipping vocabulary deprecated types confirmed again; already reflected",
351
+ "Confirmed rule: speakable-schema-deprecated — SpeakableSpecification not supported confirmed again; already reflected",
352
+ "Confirmed rule: schema-org-iptc-digital-source-type — IPTCDigitalSourceEnumeration confirmed again; already reflected"
353
+ ]
354
+ },
355
+ {
356
+ "date": "2026-06-18",
357
+ "version": "1.3.4",
358
+ "source": "Search Engine Land — Technical SEO | https://searchengineland.com/library/seo and Search Engine Journal — Technical SEO | https://www.searchenginejournal.com/category/technical-seo/ (scraped 2026-06-18)",
359
+ "changes": [
360
+ "No actionable SEO rules extracted — Search Engine Land page returned only a single non-SEO article title ('How to build a Claude Code-powered second brain for agency work') with no technical SEO content; Search Engine Journal page returned only navigation/category shell text with no article content; no new, updated, or deprecated rules warranted"
361
+ ]
362
+ },
363
+ {
364
+ "date": "2026-06-18",
365
+ "version": "1.3.4",
366
+ "source": "Search Engine Journal — Technical SEO | https://www.searchenginejournal.com/category/technical-seo/ (scraped 2026-06-18)",
367
+ "changes": [
368
+ "No actionable SEO rules extracted — scraped page returned only a navigation/category shell with no article content; no new, updated, or deprecated rules warranted"
369
+ ]
370
+ },
371
+ {
372
+ "date": "2026-06-18",
373
+ "version": "1.3.4",
374
+ "source": "Google AI Features in Search — https://developers.google.com/search/docs/appearance/ai-features (scraped 2026-06-18) and Web.dev Blog — https://web.dev/blog (scraped 2026-06-18)",
375
+ "changes": [
376
+ "Confirmed rule: ai-features-snippet-eligibility — technical requirements for AI features confirmed; pages must be indexed and eligible to appear in Google Search with a snippet; no additional technical requirements beyond standard Search requirements; already reflected",
377
+ "Confirmed rule: generative-ai-optimization — foundational SEO best practices apply to AI features; query fan-out technique described; already reflected",
378
+ "Confirmed rule: spam-policies-apply-to-ai-responses — spam policies apply to AI features confirmed; already reflected",
379
+ "Confirmed rule: ai-mode-search-console — AI Mode and AI Overviews traffic included in Search Console totals confirmed; already reflected",
380
+ "Confirmed rule: llms-txt-not-required — no special AI-specific technical requirements beyond standard Search confirmed; already reflected",
381
+ "Confirmed rule: agent-friendly-website — agentic experiences guidance confirmed; already reflected",
382
+ "Confirmed rule: preferred-sources-ai-mode — preferred sources in AI Overviews and AI Mode confirmed; already reflected",
383
+ "No actionable new rules extracted — Web.dev Blog returned only a navigation shell with no article content; Google AI Features page content confirmed existing rules with no new distinct actionable requirements"
384
+ ]
385
+ },
386
+ {
387
+ "date": "2026-06-18",
388
+ "version": "1.3.3",
389
+ "source": "Google AI Optimization Guide — https://developers.google.com/search/docs/fundamentals/ai-optimization-guide (scraped 2026-06-18) and Bing Webmaster Blog — https://blogs.bing.com/webmaster (scraped 2026-06-18)",
390
+ "changes": [
391
+ "Confirmed rule: generative-ai-optimization — article content is the same guide already reflected in full; no new actionable rules extracted beyond what is already captured",
392
+ "Confirmed rule: llms-txt-not-required — llms.txt myth-busting confirmed again in current article scrape; already reflected",
393
+ "Confirmed rule: ai-features-snippet-eligibility — snippet and indexing eligibility requirement for AI features confirmed again; already reflected",
394
+ "Confirmed rule: agent-friendly-website — agentic experiences guidance confirmed again; already reflected",
395
+ "Confirmed rule: spam-policies-apply-to-ai-responses — scaled content abuse spam policy reference confirmed again; already reflected",
396
+ "Confirmed rule: bing-ai-performance-citation-eligibility — Bing AI Performance public preview and Copilot GA confirmed again; already reflected"
397
+ ]
398
+ },
399
+ {
400
+ "date": "2026-06-09",
401
+ "version": "1.3.2",
402
+ "source": "Schema.org Release Notes — https://schema.org/docs/releases.html (scraped 2026-06-09) and Web.dev Blog — https://web.dev/blog (scraped 2026-06-09)",
403
+ "changes": [
404
+ "No actionable SEO rules extracted from Web.dev Blog — page returned only a navigation shell with no article content",
405
+ "Added rule: speakable-schema-deprecated — SpeakableSpecification was introduced in schema.org 3.2 and moved to core in 3.5, but Google has since removed Speakable from its supported rich result types; existing implementations should be audited",
406
+ "Added rule: schema-org-iptc-digital-source-type — schema.org version 24.0 introduced IPTCDigitalSourceEnumeration with 14 coded values for AI-generated and algorithmically manipulated media; version 29.4 added missing enumeration values; aligns with existing c2pa-metadata rule",
407
+ "Added rule: schema-org-shipping-vocabulary-updated — schema.org version 29.0 deprecated DeliveryTimeSettings and ShippingRateSettings, superseding them with new types; ecommerce sites using these deprecated types should migrate to the updated shipping vocabulary",
408
+ "Added rule: has-adult-consideration-schema-v14 — schema.org version 14.0 formally introduced hasAdultConsideration property on MerchantReturnPolicy and AdultOrientedEnumeration; confirms and extends existing has-adult-consideration-schema rule with schema.org version provenance",
409
+ "Confirmed rule: c2pa-metadata — schema.org version 28.1 added new IPTC values to IPTCDigitalSourceEnumeration; compositeWithTrainedAlgorithmicMedia already reflected in existing rule",
410
+ "Confirmed rule: merchant-return-policy-schema — schema.org versions 13.0 and 14.0 added extensive MerchantReturnPolicy vocabulary; already reflected",
411
+ "Confirmed rule: merchant-shipping-policy-schema — schema.org version 13.0 added OfferShippingDetails and shipping vocabulary; already reflected",
412
+ "Confirmed rule: loyalty-program-schema — schema.org version 28.0 added loyalty program support through MemberProgram, MemberProgramTier, TierBenefitEnumeration; already reflected",
413
+ "Confirmed rule: faq-schema-deprecated — FAQPage type introduced in schema.org 3.4; Google deprecated FAQ rich results May 7 2026; already reflected",
414
+ "Confirmed rule: sitelinks-searchbox-removed — SearchAction type present in schema.org; Google removed sitelinks searchbox feature; already reflected",
415
+ "Confirmed rule: dataset-schema-phased-out — Dataset type present in schema.org; Google phasing out Dataset rich results; already reflected",
416
+ "Confirmed rule: special-announcement-schema-deprecated — SpecialAnnouncement type introduced in schema.org COVID-era releases; Google deprecated July 31 2025; already reflected",
417
+ "Confirmed rule: practice-problem-schema-deprecated — PracticeProblem type introduced in schema.org; Google no longer shows in Search; already reflected"
418
+ ]
419
+ },
420
+ {
421
+ "date": "2026-06-09",
422
+ "version": "1.3.1",
423
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09, last updated 2026-06-05 UTC)",
424
+ "changes": [
425
+ "Confirmed rule: preferred-sources-ai-mode — already reflected from prior scrape",
426
+ "Confirmed rule: has-adult-consideration-schema — already reflected from prior scrape",
427
+ "Confirmed rule: third-party-seo-tools-guidance — already reflected from prior scrape",
428
+ "Confirmed rule: preferred-sources-feature — already reflected from prior scrape",
429
+ "Confirmed rule: faq-schema-deprecated — already reflected",
430
+ "Confirmed rule: back-button-hijacking — already reflected",
431
+ "Confirmed rule: robots-meta-outside-head — already reflected",
432
+ "Confirmed rule: noindex-in-javascript — already reflected",
433
+ "Confirmed rule: canonical-javascript-best-practice — already reflected",
434
+ "Confirmed rule: read-more-deeplink — already reflected",
435
+ "Confirmed rule: image-preferred-source-metadata — already reflected",
436
+ "Confirmed rule: breadcrumbs-desktop-only — already reflected",
437
+ "Confirmed rule: video-transparency — already reflected",
438
+ "Confirmed rule: structured-data-javascript-initial-html — already reflected",
439
+ "Confirmed rule: mobile-version-links — already reflected",
440
+ "Confirmed rule: review-snippet-requires-comment — already reflected",
441
+ "Confirmed rule: review-no-multiple-reviewed-entities — already reflected",
442
+ "Confirmed rule: practice-problem-schema-deprecated — already reflected",
443
+ "Confirmed rule: special-announcement-schema-deprecated — already reflected",
444
+ "Confirmed rule: missing-hreflang — already reflected",
445
+ "Confirmed rule: hreflang-no-combined-attributes — already reflected",
446
+ "Confirmed rule: robots-txt-unsupported-fields — already reflected",
447
+ "Confirmed rule: merchant-shipping-policy-schema — already reflected",
448
+ "Confirmed rule: video-indexing-criteria — already reflected",
449
+ "Confirmed rule: explicit-content-video-crawlable — already reflected",
450
+ "Confirmed rule: indexing-api-spam-detection — already reflected",
451
+ "Confirmed rule: avif-image-format-supported — already reflected",
452
+ "Confirmed rule: c2pa-metadata — already reflected",
453
+ "Confirmed rule: ai-mode-search-console — already reflected",
454
+ "Confirmed rule: loyalty-program-schema — already reflected",
455
+ "Confirmed rule: merchant-return-policy-schema — already reflected",
456
+ "Confirmed rule: product-structured-data-single-product — already reflected",
457
+ "Confirmed rule: url-parameters-best-practice — already reflected",
458
+ "Confirmed rule: safe-search-explicit-tagging — already reflected",
459
+ "Confirmed rule: organization-markup — already reflected",
460
+ "Confirmed rule: site-name-schema — already reflected",
461
+ "Confirmed rule: missing-og-locale — already reflected",
462
+ "Confirmed rule: sitemap-recommended — already reflected",
463
+ "Confirmed rule: json-ld-recommended-format — already reflected",
464
+ "Confirmed rule: javascript-non-200-rendering — already reflected",
465
+ "Confirmed rule: javascript-paywall-detection — already reflected",
466
+ "Confirmed rule: image-url-consistency — already reflected",
467
+ "Confirmed rule: dataset-schema-phased-out — already reflected",
468
+ "Confirmed rule: event-structured-data-requirements — already reflected",
469
+ "Confirmed rule: follow-feature-removed — already reflected",
470
+ "Confirmed rule: sitelinks-searchbox-removed — already reflected",
471
+ "Confirmed rule: south-africa-carousel-structured-data — already reflected",
472
+ "Confirmed rule: googlebot-file-size-limits — already reflected",
473
+ "Confirmed rule: recipe-thumbnail-property — already reflected",
474
+ "Confirmed rule: core-updates-continuous — already reflected",
475
+ "Confirmed rule: generative-ai-optimization — already reflected",
476
+ "Confirmed rule: spam-policies-apply-to-ai-responses — already reflected",
477
+ "Confirmed rule: llms-txt-not-required — already reflected",
478
+ "Confirmed rule: ai-features-snippet-eligibility — already reflected",
479
+ "Confirmed rule: agent-friendly-website — already reflected",
480
+ "Confirmed rule: bing-ai-performance-citation-eligibility — already reflected",
481
+ "Confirmed rule: missing-title — already reflected",
482
+ "Confirmed rule: missing-meta-description — already reflected",
483
+ "Confirmed rule: missing-favicon — already reflected",
484
+ "Confirmed rule: missing-json-ld — already reflected",
485
+ "Confirmed rule: missing-fid — deprecated rule confirmed disabled",
486
+ "Confirmed rule: accidental-noindex — already reflected",
487
+ "Confirmed rule: missing-canonical — already reflected",
488
+ "Added rule: noindex-javascript-accessibility-outdated — changelog explicitly states Google removed outdated accessibility/JavaScript section noting JS content is no longer harder for Google; rule documents that using JavaScript to load content is no longer considered an SEO accessibility concern",
489
+ "Added rule: crawling-docs-migrated — Google has migrated core crawling documentation to a new dedicated crawling infrastructure site with its own changelog feed; site owners and SEO tools should update references",
490
+ "Added rule: turkey-carousel-structured-data — structured data carousels (beta) feature expanded to Turkey",
491
+ "Added rule: spam-reports-manual-action — Google has clarified it may use spam report submissions to take manual action against violations; previously spam reports were not used for manual actions"
492
+ ]
493
+ },
494
+ {
495
+ "date": "2026-06-09",
496
+ "version": "1.3.0",
497
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09)",
498
+ "changes": [
499
+ "Added rule: preferred-sources-ai-mode — preferred sources feature now available in AI Overviews and AI Mode (previously only available in standard Search)",
500
+ "Added rule: has-adult-consideration-schema — new hasAdultConsideration property added to merchant listing structured data for parity with Merchant Center feed specification",
501
+ "Added rule: third-party-seo-tools-guidance — Google has published new guidance on evaluating third-party SEO tools, services, and advice",
502
+ "Updated rule: preferred-sources-feature — updated description and references to reflect that preferred sources is now available in AI Overviews and AI Mode in addition to standard Search"
503
+ ]
504
+ },
505
+ {
506
+ "date": "2026-05-28",
507
+ "version": "1.2.5",
508
+ "source": "Bing Webmaster Blog — https://blogs.bing.com/webmaster (scraped 2026-05-28) and Web.dev Blog — https://web.dev/blog (scraped 2026-05-28)",
509
+ "changes": [
510
+ "Added rule: bing-ai-performance-citation-eligibility — new info rule documenting Bing's AI Performance feature in Bing Webmaster Tools showing when URLs are cited in AI-generated answers across Microsoft Copilot and Bing AI summaries; pages must meet standard Bing indexing and snippet eligibility requirements to be cited",
511
+ "No changes to existing rules — web.dev blog page returned only a navigation shell with no actionable SEO guidance; Bing Webmaster Blog content confirmed existing AI/snippet eligibility patterns already reflected in generative-ai-optimization and ai-features-snippet-eligibility rules"
512
+ ]
513
+ },
514
+ {
515
+ "date": "2026-05-24",
516
+ "version": "1.2.4",
517
+ "source": "Google AI Optimization Guide — https://developers.google.com/search/docs/fundamentals/ai-optimization-guide and Google AI Features in Search — https://developers.google.com/search/docs/appearance/ai-features (scraped 2026-05-24)",
518
+ "changes": [
519
+ "Updated rule: generative-ai-optimization — expanded description to reflect full official guide content including RAG/fanout query explanation, llms.txt myth-busting, chunking myth, inauthentic mentions myth, structured data overfocus myth, agentic experiences guidance, and Universal Commerce Protocol mention; updated references to include new ai-features URL",
520
+ "Added rule: llms-txt-not-required — new rule documenting that llms.txt and other AI-specific machine-readable files are not required or specially treated by Google for generative AI search inclusion",
521
+ "Added rule: ai-features-snippet-eligibility — new rule documenting that pages must be indexed and eligible to appear in Google Search with a snippet to be eligible for AI Overviews and AI Mode; no additional technical requirements beyond standard Search requirements",
522
+ "Added rule: agent-friendly-website — new info rule documenting emerging agentic experience best practices for browser agents including DOM structure, accessibility tree, and visual rendering considerations",
523
+ "Confirmed rule: spam-policies-apply-to-ai-responses — scaled content abuse and spam policy compliance confirmed as relevant to generative AI features (already reflected)",
524
+ "Confirmed rule: ai-mode-search-console — AI Mode traffic in Search Console totals confirmed (already reflected)"
525
+ ]
526
+ },
527
+ {
528
+ "date": "2026-05-24",
529
+ "version": "1.2.3",
530
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-24)",
531
+ "changes": [
532
+ "Confirmed rule: generative-ai-optimization — new guide on optimizing for generative AI features confirmed; non-commodity content, local/shopping/image/video content, AI agents guidance, SEO best practices remain relevant (already reflected)",
533
+ "Confirmed rule: spam-policies-apply-to-ai-responses — spam policies apply to generative AI responses confirmed (already reflected)",
534
+ "Confirmed rule: faq-schema-deprecated — FAQ rich results deprecated May 7, 2026 confirmed (already reflected)",
535
+ "Confirmed rule: back-button-hijacking — back button hijacking spam policy confirmed (already reflected)",
536
+ "Confirmed rule: robots-meta-outside-head — behavior confirmed (already reflected)",
537
+ "Confirmed rule: noindex-in-javascript — undefined behavior confirmed (already reflected)",
538
+ "Confirmed rule: canonical-javascript-best-practice — canonicalization before and after rendering confirmed (already reflected)",
539
+ "Confirmed rule: favicon-aspect-ratio — 1:1 aspect ratio, min 8x8px, recommended 48x48px confirmed (already reflected)",
540
+ "Confirmed rule: inp-core-web-vital — INP as Core Web Vital confirmed (already reflected)",
541
+ "Confirmed rule: image-preferred-source-metadata — og:image and schema.org as thumbnail sources confirmed (already reflected)",
542
+ "Confirmed rule: breadcrumbs-desktop-only — desktop-only confirmed (already reflected)",
543
+ "Confirmed rule: video-transparency — 80% opaque pixel requirement confirmed (already reflected)",
544
+ "Confirmed rule: structured-data-javascript-initial-html — initial HTML best practice confirmed (already reflected)",
545
+ "Confirmed rule: mobile-version-links — all links must be present on mobile version confirmed (already reflected)",
546
+ "Confirmed rule: review-snippet-requires-comment — comment and author name requirement confirmed (already reflected)",
547
+ "Confirmed rule: practice-problem-schema-deprecated — no longer shown in Google Search confirmed (already reflected)",
548
+ "Confirmed rule: special-announcement-schema-deprecated — deprecated July 31, 2025 confirmed (already reflected)",
549
+ "Confirmed rule: missing-hreflang — must not be combined with conflicting attributes confirmed (already reflected)",
550
+ "Confirmed rule: hreflang-no-combined-attributes — confirmed (already reflected)",
551
+ "Confirmed rule: review-no-multiple-reviewed-entities — confirmed (already reflected)",
552
+ "Confirmed rule: robots-txt-unsupported-fields — confirmed (already reflected)",
553
+ "Confirmed rule: merchant-shipping-policy-schema — confirmed (already reflected)",
554
+ "Confirmed rule: video-indexing-criteria — confirmed (already reflected)",
555
+ "Confirmed rule: explicit-content-video-crawlable — confirmed (already reflected)",
556
+ "Confirmed rule: indexing-api-spam-detection — confirmed (already reflected)",
557
+ "Confirmed rule: avif-image-format-supported — confirmed (already reflected)",
558
+ "Confirmed rule: c2pa-metadata — confirmed (already reflected)",
559
+ "Confirmed rule: ai-mode-search-console — confirmed (already reflected)",
560
+ "Confirmed rule: loyalty-program-schema — confirmed (already reflected)",
561
+ "Confirmed rule: merchant-return-policy-schema — confirmed (already reflected)",
562
+ "Confirmed rule: product-structured-data-single-product — confirmed (already reflected)",
563
+ "Confirmed rule: url-parameters-best-practice — confirmed (already reflected)",
564
+ "Confirmed rule: safe-search-explicit-tagging — confirmed (already reflected)",
565
+ "Confirmed rule: organization-markup — confirmed (already reflected)",
566
+ "Confirmed rule: site-name-schema — confirmed (already reflected)",
567
+ "Confirmed rule: missing-og-locale — confirmed (already reflected)",
568
+ "Confirmed rule: sitemap-recommended — confirmed (already reflected)",
569
+ "Confirmed rule: json-ld-recommended-format — confirmed (already reflected)",
570
+ "Confirmed rule: read-more-deeplink — confirmed (already reflected)",
571
+ "Confirmed rule: javascript-non-200-rendering — confirmed (already reflected)",
572
+ "Confirmed rule: javascript-paywall-detection — confirmed (already reflected)",
573
+ "Confirmed rule: image-url-consistency — confirmed (already reflected)",
574
+ "Confirmed rule: dataset-schema-phased-out — confirmed (already reflected)",
575
+ "Confirmed rule: event-structured-data-requirements — confirmed (already reflected)",
576
+ "Confirmed rule: preferred-sources-feature — confirmed (already reflected)",
577
+ "Confirmed rule: follow-feature-removed — confirmed (already reflected)",
578
+ "Confirmed rule: sitelinks-searchbox-removed — confirmed (already reflected)",
579
+ "Confirmed rule: south-africa-carousel-structured-data — confirmed (already reflected)",
580
+ "Confirmed rule: googlebot-file-size-limits — confirmed (already reflected)",
581
+ "Confirmed rule: recipe-thumbnail-property — confirmed (already reflected)",
582
+ "Confirmed rule: core-updates-continuous — confirmed (already reflected)",
583
+ "Confirmed rule: missing-title — heading tag content as title link source confirmed (already reflected)",
584
+ "Confirmed rule: missing-meta-description — primary source of snippets is page content confirmed (already reflected)",
585
+ "Confirmed rule: missing-favicon — crawlability requirements and domain/subdomain level support confirmed (already reflected)",
586
+ "Confirmed rule: missing-json-ld — deprecated schema types noted confirmed (already reflected)",
587
+ "Confirmed rule: missing-fid — deprecated rule confirmed disabled (already reflected)",
588
+ "Confirmed rule: accidental-noindex — noindex in JavaScript undefined behavior confirmed (already reflected)",
589
+ "Confirmed rule: missing-canonical — JavaScript canonicalization best practices confirmed (already reflected)"
590
+ ]
591
+ },
592
+ {
593
+ "date": "2026-05-19",
594
+ "version": "1.2.2",
595
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-19)",
596
+ "changes": [
597
+ "Added rule: generative-ai-optimization — New guide on optimizing for generative AI features on Search; non-commodity content, local/shopping/image/video content, and SEO best practices remain relevant",
598
+ "Added rule: spam-policies-apply-to-ai-responses — Google spam policies explicitly apply to generative AI responses in Google Search",
599
+ "Added rule: follow-feature-removed — The Follow feature is no longer shown in Google Discover; related markup guidance removed",
600
+ "Added rule: sitelinks-searchbox-removed — Sitelinks search box feature no longer available in Google Search; nositelinkssearchbox robots tag no longer needed",
601
+ "Added rule: south-africa-carousel-structured-data — Structured data carousels (beta) now available in South Africa with food delivery, car hire, and bus booking query types",
602
+ "Added rule: googlebot-file-size-limits — Googlebot has documented file size limits for HTML and subresources (JS/CSS); pages exceeding limits may not be fully crawled",
603
+ "Added rule: recipe-thumbnail-property — The thumbnail property in Recipe markup is only used for recipe rich results, not for text result images",
604
+ "Added rule: core-updates-continuous — Google continuously makes core updates including smaller ones; content improvements can cause ranking rises without waiting for next major update",
605
+ "Confirmed rule: missing-title — Google can use heading tag content to auto-generate title links (already reflected)",
606
+ "Confirmed rule: missing-meta-description — Primary source of snippets is page content itself (already reflected)",
607
+ "Confirmed rule: faq-schema-deprecated — FAQ rich results deprecated May 7, 2026 (already reflected)",
608
+ "Confirmed rule: back-button-hijacking — Back button hijacking spam policy confirmed (already reflected)",
609
+ "Confirmed rule: robots-meta-outside-head — Behavior confirmed (already reflected)",
610
+ "Confirmed rule: noindex-in-javascript — Undefined behavior confirmed (already reflected)",
611
+ "Confirmed rule: canonical-javascript-best-practice — Canonicalization before and after rendering confirmed (already reflected)",
612
+ "Confirmed rule: favicon-aspect-ratio — 1:1 aspect ratio, min 8x8px, recommended 48x48px confirmed (already reflected)",
613
+ "Confirmed rule: inp-core-web-vital — INP as Core Web Vital confirmed (already reflected)",
614
+ "Confirmed rule: image-preferred-source-metadata — og:image and schema.org as thumbnail sources confirmed (already reflected)",
615
+ "Confirmed rule: breadcrumbs-desktop-only — Desktop-only confirmed (already reflected)",
616
+ "Confirmed rule: video-transparency — 80% opaque pixel requirement confirmed (already reflected)",
617
+ "Confirmed rule: structured-data-javascript-initial-html — Initial HTML best practice confirmed (already reflected)",
618
+ "Confirmed rule: mobile-version-links — All links must be present on mobile version confirmed (already reflected)",
619
+ "Confirmed rule: review-snippet-requires-comment — Comment and author name requirement confirmed (already reflected)",
620
+ "Confirmed rule: practice-problem-schema-deprecated — No longer shown in Google Search confirmed (already reflected)",
621
+ "Confirmed rule: special-announcement-schema-deprecated — Deprecated July 31, 2025 confirmed (already reflected)",
622
+ "Confirmed rule: missing-hreflang — Must not be combined with conflicting attributes confirmed (already reflected)",
623
+ "Confirmed rule: hreflang-no-combined-attributes — Confirmed (already reflected)",
624
+ "Confirmed rule: review-no-multiple-reviewed-entities — Confirmed (already reflected)",
625
+ "Confirmed rule: robots-txt-unsupported-fields — Confirmed (already reflected)",
626
+ "Confirmed rule: merchant-shipping-policy-schema — Confirmed (already reflected)",
627
+ "Confirmed rule: video-indexing-criteria — Confirmed (already reflected)",
628
+ "Confirmed rule: explicit-content-video-crawlable — Confirmed (already reflected)",
629
+ "Confirmed rule: indexing-api-spam-detection — Confirmed (already reflected)",
630
+ "Confirmed rule: avif-image-format-supported — Confirmed (already reflected)",
631
+ "Confirmed rule: c2pa-metadata — Confirmed (already reflected)",
632
+ "Confirmed rule: ai-mode-search-console — Confirmed (already reflected)",
633
+ "Confirmed rule: loyalty-program-schema — Confirmed (already reflected)",
634
+ "Confirmed rule: merchant-return-policy-schema — Confirmed (already reflected)",
635
+ "Confirmed rule: product-structured-data-single-product — Confirmed (already reflected)",
636
+ "Confirmed rule: url-parameters-best-practice — Confirmed (already reflected)",
637
+ "Confirmed rule: safe-search-explicit-tagging — Confirmed (already reflected)",
638
+ "Confirmed rule: organization-markup — Confirmed (already reflected)",
639
+ "Confirmed rule: site-name-schema — Confirmed (already reflected)",
640
+ "Confirmed rule: missing-og-locale — Confirmed (already reflected)",
641
+ "Confirmed rule: sitemap-recommended — Confirmed (already reflected)",
642
+ "Confirmed rule: json-ld-recommended-format — Confirmed (already reflected)",
643
+ "Confirmed rule: read-more-deeplink — Confirmed (already reflected)",
644
+ "Confirmed rule: javascript-non-200-rendering — Confirmed (already reflected)",
645
+ "Confirmed rule: javascript-paywall-detection — Confirmed (already reflected)",
646
+ "Confirmed rule: image-url-consistency — Confirmed (already reflected)",
647
+ "Confirmed rule: dataset-schema-phased-out — Confirmed (already reflected)",
648
+ "Confirmed rule: event-structured-data-requirements — Confirmed (already reflected)",
649
+ "Confirmed rule: preferred-sources-feature — Confirmed (already reflected)"
650
+ ]
651
+ },
652
+ {
653
+ "date": "2026-05-08",
654
+ "version": "1.2.1",
655
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
656
+ "changes": [
657
+ "Confirmed rule: missing-title — title link sources clarified; Google can use content within heading tags to auto-generate title links",
658
+ "Confirmed rule: missing-meta-description — primary source of snippets is page content itself; meta description is secondary source (already reflected)",
659
+ "Confirmed rule: faq-schema-deprecated — FAQ rich results deprecated May 7, 2026 (already reflected)",
660
+ "Confirmed rule: back-button-hijacking — back button hijacking spam policy confirmed (already reflected)",
661
+ "Confirmed rule: robots-meta-outside-head — behavior confirmed, previously undocumented (already reflected)",
662
+ "Confirmed rule: noindex-in-javascript — undefined behavior confirmed (already reflected)",
663
+ "Confirmed rule: canonical-javascript-best-practice — canonicalization before and after rendering confirmed (already reflected)",
664
+ "Confirmed rule: favicon-aspect-ratio — 1:1 aspect ratio, min 8x8px, recommended 48x48px confirmed (already reflected)",
665
+ "Confirmed rule: inp-core-web-vital — INP as Core Web Vital confirmed (already reflected)",
666
+ "Confirmed rule: image-preferred-source-metadata — og:image and schema.org as thumbnail sources confirmed (already reflected)",
667
+ "Confirmed rule: breadcrumbs-desktop-only — desktop-only confirmed (already reflected)",
668
+ "Confirmed rule: video-transparency — 80% opaque pixel requirement confirmed (already reflected)",
669
+ "Confirmed rule: structured-data-javascript-initial-html — initial HTML best practice confirmed (already reflected)",
670
+ "Confirmed rule: mobile-version-links — all links must be present on mobile version confirmed (already reflected)",
671
+ "Confirmed rule: review-snippet-requires-comment — comment and author name requirement confirmed (already reflected)",
672
+ "Confirmed rule: practice-problem-schema-deprecated — no longer shown in Google Search confirmed (already reflected)",
673
+ "Confirmed rule: special-announcement-schema-deprecated — deprecated July 31, 2025 confirmed (already reflected)",
674
+ "Confirmed rule: missing-hreflang — must not be combined with conflicting attributes confirmed (already reflected)",
675
+ "Confirmed rule: hreflang-no-combined-attributes — confirmed (already reflected)",
676
+ "Confirmed rule: review-no-multiple-reviewed-entities — confirmed (already reflected)",
677
+ "Confirmed rule: robots-txt-unsupported-fields — confirmed (already reflected)",
678
+ "Confirmed rule: merchant-shipping-policy-schema — confirmed (already reflected)",
679
+ "Confirmed rule: video-indexing-criteria — confirmed (already reflected)",
680
+ "Confirmed rule: explicit-content-video-crawlable — confirmed (already reflected)",
681
+ "Confirmed rule: indexing-api-spam-detection — confirmed (already reflected)",
682
+ "Confirmed rule: avif-image-format-supported — confirmed (already reflected)",
683
+ "Confirmed rule: c2pa-metadata — confirmed (already reflected)",
684
+ "Confirmed rule: ai-mode-search-console — confirmed (already reflected)",
685
+ "Confirmed rule: loyalty-program-schema — confirmed (already reflected)",
686
+ "Confirmed rule: merchant-return-policy-schema — confirmed (already reflected)",
687
+ "Confirmed rule: product-structured-data-single-product — confirmed (already reflected)",
688
+ "Confirmed rule: url-parameters-best-practice — confirmed (already reflected)",
689
+ "Confirmed rule: safe-search-explicit-tagging — confirmed (already reflected)",
690
+ "Confirmed rule: organization-markup — confirmed (already reflected)",
691
+ "Confirmed rule: site-name-schema — confirmed (already reflected)",
692
+ "Confirmed rule: missing-og-locale — confirmed (already reflected)",
693
+ "Confirmed rule: sitemap-recommended — confirmed (already reflected)",
694
+ "Confirmed rule: json-ld-recommended-format — confirmed (already reflected)",
695
+ "Confirmed rule: read-more-deeplink — confirmed (already reflected)",
696
+ "Confirmed rule: javascript-non-200-rendering — confirmed (already reflected)",
697
+ "Confirmed rule: javascript-paywall-detection — confirmed (already reflected)",
698
+ "Confirmed rule: image-url-consistency — confirmed (already reflected)",
699
+ "Confirmed rule: missing-fid — deprecated rule confirmed disabled (already reflected)",
700
+ "Updated rule: missing-title — added note that Google can use heading tag content to auto-generate title links",
701
+ "Updated rule: missing-favicon — added note that favicon file and home page must both be crawlable by Googlebot-Image and Googlebot respectively; favicons supported at domain and subdomain level only",
702
+ "Updated rule: missing-json-ld — added note that dataset structured data type is being phased out from Google Search",
703
+ "Updated rule: loyalty-program-schema — clarified that loyalty program information must be defined separately from offer-level loyalty benefits; shipping and returns loyalty benefits not supported",
704
+ "Updated rule: merchant-return-policy-schema — clarified offer-level return policies only support subset of org-level; product-level takes precedence over org-level; Merchant Center takes precedence over structured data for products in feeds",
705
+ "Updated rule: video-indexing-criteria — clarified that VideoObject now accepts duration property as another way to specify video duration",
706
+ "Updated rule: safe-search-explicit-tagging — clarified that explicit content should be grouped in a separate location; added guidance on moderating content and eliminating CSAM",
707
+ "Updated rule: c2pa-metadata — added compositeWithTrainedAlgorithmicMedia as a supported IPTC digital source type",
708
+ "Updated rule: organization-markup — clarified that some properties influence logo shown in Search while others are used behind the scenes for entity disambiguation; organization markup now includes contact info, legal name, and business identifiers",
709
+ "Updated rule: site-name-schema — clarified that site names are now available in all languages where Google Search is available; issue with site names not propagating to internal pages has been resolved",
710
+ "Added rule: preferred-sources-feature — preferred sources feature now available in all languages where Google Search is available",
711
+ "Added rule: event-structured-data-requirements — events must be bookable by general public and held at physical location to be eligible for event experience on Google",
712
+ "Added rule: dataset-schema-phased-out — dataset structured data type is being phased out from Google Search results"
713
+ ]
714
+ },
715
+ {
716
+ "date": "2026-05-08",
717
+ "version": "1.2.0",
718
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
719
+ "changes": [
720
+ "Added rule: read-more-deeplink — Google supports 'read more' deep links in snippets; content structure can influence eligibility",
721
+ "Added rule: javascript-non-200-rendering — Googlebot may not execute JavaScript on non-200 HTTP status code pages",
722
+ "Added rule: javascript-paywall-detection — JavaScript-based paywall design makes it difficult for Google to determine paywalled vs free content",
723
+ "Added rule: hreflang-no-combined-attributes — hreflang alternate link elements must not be combined with attributes that change their meaning to denote a different device or language version",
724
+ "Added rule: review-no-multiple-reviewed-entities — Avoid using multiple ways of indicating what is being reviewed in review and aggregate rating structured data",
725
+ "Added rule: image-url-consistency — Image URLs should be referenced consistently across pages for easier crawling on larger websites",
726
+ "Added rule: robots-txt-unsupported-fields — Fields not listed in Google robots.txt documentation are not supported",
727
+ "Added rule: merchant-shipping-policy-schema — Google now supports merchant-level shipping policy markup in Search",
728
+ "Added rule: video-indexing-criteria — Videos must meet specific technical requirements and indexing criteria to appear in video search results",
729
+ "Added rule: explicit-content-video-crawlable — Sites hosting explicit videos must allow Googlebot to fetch video files or risk significant ranking drops in Video mode",
730
+ "Added rule: indexing-api-spam-detection — Indexing API submissions are subject to spam detection; exceeding quotas may result in revoked access",
731
+ "Added rule: avif-image-format-supported — AVIF is now a supported image format in Google Search",
732
+ "Added rule: c2pa-metadata — Google extracts C2PA metadata for use in the 'About this image' feature in Search",
733
+ "Added rule: ai-mode-search-console — AI Mode traffic now counts toward Search Console totals",
734
+ "Added rule: loyalty-program-schema — Google supports loyalty program markup in Search for eligible regions",
735
+ "Added rule: merchant-return-policy-schema — Google supports merchant return policy markup in Search",
736
+ "Added rule: product-structured-data-single-product — Product rich results only support pages about a single product, not category pages",
737
+ "Added rule: url-parameters-best-practice — URL parameters guidance: avoid unnecessary parameters that create duplicate content",
738
+ "Added rule: safe-search-explicit-tagging — Explicit content pages should use the rating=adult meta tag",
739
+ "Added rule: organization-markup — Organization markup can influence which logo is shown in Google Search and provides business identifiers",
740
+ "Added rule: site-name-schema — Site names help Google display your preferred site name in SERPs; supported at domain and subdomain level",
741
+ "Added rule: missing-og-locale — og:locale recommended for international pages",
742
+ "Updated rule: missing-meta-description — Clarified that primary source of snippets is page content itself, not meta description; meta description guides preferred snippet text",
743
+ "Updated rule: missing-json-ld — Added note that practice problem and special announcement schema deprecated; JSON-LD confirmed as recommended format",
744
+ "Updated rule: video-transparency — Confirmed 80% opaque pixel requirement for video thumbnails",
745
+ "Updated rule: review-snippet-requires-comment — Added clarification about avoiding multiple ways of indicating what is being reviewed",
746
+ "Updated rule: missing-hreflang — Added note that hreflang must not be combined with attributes that change meaning to denote different device or language version",
747
+ "Confirmed rule: faq-schema-deprecated — FAQ rich results deprecated May 7, 2026",
748
+ "Confirmed rule: back-button-hijacking — Back button hijacking spam policy confirmed",
749
+ "Confirmed rule: robots-meta-outside-head — Robots meta outside head behavior confirmed",
750
+ "Confirmed rule: noindex-in-javascript — noindex in JavaScript undefined behavior confirmed",
751
+ "Confirmed rule: canonical-javascript-best-practice — JavaScript canonicalization best practices confirmed",
752
+ "Confirmed rule: favicon-aspect-ratio — Favicon 1:1 aspect ratio and 48x48px recommendation confirmed",
753
+ "Confirmed rule: inp-core-web-vital — INP as Core Web Vital confirmed",
754
+ "Confirmed rule: image-preferred-source-metadata — og:image and schema.org as image thumbnail sources confirmed",
755
+ "Confirmed rule: breadcrumbs-desktop-only — Breadcrumbs desktop-only confirmed",
756
+ "Confirmed rule: structured-data-javascript-initial-html — Structured data in initial HTML best practice confirmed",
757
+ "Confirmed rule: mobile-version-links — Mobile version links requirement confirmed",
758
+ "Confirmed rule: practice-problem-schema-deprecated — Practice problem schema deprecated confirmed",
759
+ "Confirmed rule: special-announcement-schema-deprecated — Special announcement schema deprecated confirmed",
760
+ "Confirmed rule: json-ld-recommended-format — JSON-LD recommended format confirmed"
761
+ ]
762
+ },
763
+ {
764
+ "date": "2026-05-08",
765
+ "version": "1.1.0",
766
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
767
+ "changes": [
768
+ "Added rule: faq-schema-deprecated — FAQ rich result feature deprecated by Google starting May 7, 2026",
769
+ "Added rule: back-button-hijacking — New spam policy for back button hijacking added to malicious practices",
770
+ "Added rule: robots-meta-outside-head — Google documents behavior of robots meta tags found outside HTML head",
771
+ "Added rule: noindex-in-javascript — Clarified that noindex in JavaScript-rendered pages has undefined behavior; must be in original HTML",
772
+ "Added rule: canonical-javascript-best-practice — Canonicalization best practices for JavaScript pages",
773
+ "Added rule: missing-og-locale — og:locale recommended for international pages",
774
+ "Added rule: favicon-aspect-ratio — Favicons must have 1:1 aspect ratio and be at least 8x8px (48x48px recommended)",
775
+ "Added rule: inp-core-web-vital — INP (Interaction to Next Paint) is now a Core Web Vital replacing FID",
776
+ "Added rule: image-preferred-source-metadata — Google uses both schema.org markup and og:image for image thumbnails in Search and Discover",
777
+ "Added rule: breadcrumbs-desktop-only — Breadcrumb rich results only appear on desktop, not mobile",
778
+ "Added rule: video-transparency — Video thumbnails must have at least 80% non-transparent pixels",
779
+ "Added rule: structured-data-javascript-initial-html — Product/ecommerce structured data should be in initial HTML for best results",
780
+ "Added rule: mobile-version-links — Mobile version of pages must include all links present on desktop version",
781
+ "Added rule: review-snippet-requires-comment — Reviews should require both a comment and author name to be eligible for review snippets",
782
+ "Added rule: practice-problem-schema-deprecated — Practice problem structured data type no longer shown in Google Search",
783
+ "Added rule: special-announcement-schema-deprecated — Special announcement structured data deprecated as of July 31, 2025",
784
+ "Added rule: missing-hreflang — hreflang tags for international/multilingual pages",
785
+ "Added rule: sitemap-recommended — Sitemaps help Google discover and index pages, especially on large sites",
786
+ "Added rule: json-ld-recommended-format — JSON-LD is the recommended format for structured data",
787
+ "Deprecated rule: missing-fid — FID is no longer a Core Web Vital as of March 2024; replaced by INP",
788
+ "Updated rule: missing-favicon — Updated to reflect favicon must have 1:1 aspect ratio, minimum 8x8px, recommended 48x48px",
789
+ "Updated rule: accidental-noindex — Updated to clarify noindex in JavaScript has undefined behavior and must be in original HTML",
790
+ "Updated rule: missing-canonical — Updated with JavaScript canonicalization best practices",
791
+ "Updated rule: missing-json-ld — Updated to note JSON-LD is Google's recommended format; FAQ and special announcement schema deprecated"
792
+ ]
793
+ }
794
+ ],
795
+ "rules": [
796
+ {
797
+ "id": "missing-title",
798
+ "name": "Missing <title> tag",
799
+ "severity": "critical",
800
+ "category": "meta",
801
+ "description": "Every page must have a unique <title> tag. This is the primary signal search engines use to understand page topic and display in SERPs. Note: Google can also use content within heading tags (h1-h6) to automatically generate title links in search results when no suitable title tag is present or when the title tag is deemed less relevant.",
802
+ "fixTemplate": "Add <title>Your Page Title (50-60 chars)</title> inside <head>",
803
+ "enabled": true,
804
+ "appliesTo": [
805
+ "html",
806
+ "jsx",
807
+ "tsx",
808
+ "vue",
809
+ "svelte"
810
+ ],
811
+ "references": [
812
+ "https://developers.google.com/search/docs/appearance/title-link"
813
+ ],
814
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
815
+ "lastUpdated": "2026-05-08",
816
+ "check": {
817
+ "type": "field-null",
818
+ "field": "titleTag"
819
+ }
820
+ },
821
+ {
822
+ "id": "title-too-long",
823
+ "name": "Title tag too long",
824
+ "severity": "warning",
825
+ "category": "meta",
826
+ "description": "Title tags over 60 characters are truncated in Google SERPs, reducing click-through rate. Current length: {{CURRENT_LENGTH}} chars.",
827
+ "fixTemplate": "Trim your <title> to under 60 characters. Current: {{CURRENT_LENGTH}} chars.",
828
+ "enabled": true,
829
+ "appliesTo": [
830
+ "html",
831
+ "jsx",
832
+ "tsx",
833
+ "vue",
834
+ "svelte"
835
+ ],
836
+ "references": [
837
+ "https://developers.google.com/search/docs/appearance/title-link"
838
+ ],
839
+ "source": "original",
840
+ "lastUpdated": "2026-05-08",
841
+ "check": {
842
+ "type": "field-length-gt",
843
+ "field": "titleTag",
844
+ "threshold": 60
845
+ }
846
+ },
847
+ {
848
+ "id": "title-too-short",
849
+ "name": "Title tag too short",
850
+ "severity": "warning",
851
+ "category": "meta",
852
+ "description": "Title tags under 30 characters miss opportunities to include keywords. Current length: {{CURRENT_LENGTH}} chars.",
853
+ "fixTemplate": "Expand your <title> to at least 30 characters. Current: {{CURRENT_LENGTH}} chars.",
854
+ "enabled": true,
855
+ "appliesTo": [
856
+ "html",
857
+ "jsx",
858
+ "tsx",
859
+ "vue",
860
+ "svelte"
861
+ ],
862
+ "references": [
863
+ "https://developers.google.com/search/docs/appearance/title-link"
864
+ ],
865
+ "source": "original",
866
+ "lastUpdated": "2026-05-08",
867
+ "check": {
868
+ "type": "field-length-lt",
869
+ "field": "titleTag",
870
+ "threshold": 30
871
+ }
872
+ },
873
+ {
874
+ "id": "missing-meta-description",
875
+ "name": "Missing meta description",
876
+ "severity": "critical",
877
+ "category": "meta",
878
+ "description": "Meta descriptions are used as SERP snippets. Without one, Google auto-generates one from page content, which is typically worse for click-through rates. Google has clarified that the primary source of snippets is the page content itself, not the meta description — but providing one still guides Google toward your preferred snippet text. The meta description is not the primary source for snippets; structured data and the meta description HTML element are secondary sources.",
879
+ "fixTemplate": "Add <meta name=\"description\" content=\"Your description here (150-160 chars)\" /> inside <head>",
880
+ "enabled": true,
881
+ "appliesTo": [
882
+ "html",
883
+ "jsx",
884
+ "tsx",
885
+ "vue",
886
+ "svelte"
887
+ ],
888
+ "references": [
889
+ "https://developers.google.com/search/docs/appearance/snippet"
890
+ ],
891
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
892
+ "lastUpdated": "2026-05-08",
893
+ "check": {
894
+ "type": "field-null",
895
+ "field": "metaDescription"
896
+ }
897
+ },
898
+ {
899
+ "id": "meta-description-too-long",
900
+ "name": "Meta description too long",
901
+ "severity": "warning",
902
+ "category": "meta",
903
+ "description": "Descriptions over 160 characters are truncated in SERPs. Current: {{CURRENT_LENGTH}} chars.",
904
+ "fixTemplate": "Shorten meta description to under 160 characters. Current: {{CURRENT_LENGTH}} chars.",
905
+ "enabled": true,
906
+ "appliesTo": [
907
+ "html",
908
+ "jsx",
909
+ "tsx",
910
+ "vue",
911
+ "svelte"
912
+ ],
913
+ "references": [
914
+ "https://developers.google.com/search/docs/appearance/snippet"
915
+ ],
916
+ "source": "original",
917
+ "lastUpdated": "2026-05-08",
918
+ "check": {
919
+ "type": "field-length-gt",
920
+ "field": "metaDescription",
921
+ "threshold": 160
922
+ }
923
+ },
924
+ {
925
+ "id": "meta-description-too-short",
926
+ "name": "Meta description too short",
927
+ "severity": "info",
928
+ "category": "meta",
929
+ "description": "Descriptions under 70 characters are too brief to convey page value. Current: {{CURRENT_LENGTH}} chars.",
930
+ "fixTemplate": "Expand meta description to at least 70 characters. Current: {{CURRENT_LENGTH}} chars.",
931
+ "enabled": true,
932
+ "appliesTo": [
933
+ "html",
934
+ "jsx",
935
+ "tsx",
936
+ "vue",
937
+ "svelte"
938
+ ],
939
+ "references": [
940
+ "https://developers.google.com/search/docs/appearance/snippet"
941
+ ],
942
+ "source": "original",
943
+ "lastUpdated": "2026-05-08",
944
+ "check": {
945
+ "type": "field-length-lt",
946
+ "field": "metaDescription",
947
+ "threshold": 70
948
+ }
949
+ },
950
+ {
951
+ "id": "missing-og-title",
952
+ "name": "Missing og:title",
953
+ "severity": "warning",
954
+ "category": "meta",
955
+ "description": "Open Graph title is required for proper social sharing previews on Facebook, LinkedIn, Slack, and others.",
956
+ "fixTemplate": "Add <meta property=\"og:title\" content=\"Your Page Title\" /> inside <head>",
957
+ "enabled": true,
958
+ "appliesTo": [
959
+ "html",
960
+ "jsx",
961
+ "tsx",
962
+ "vue",
963
+ "svelte"
964
+ ],
965
+ "references": [
966
+ "https://ogp.me/"
967
+ ],
968
+ "source": "original",
969
+ "lastUpdated": "2026-05-08",
970
+ "check": {
971
+ "type": "field-null",
972
+ "field": "ogTitle"
973
+ }
974
+ },
975
+ {
976
+ "id": "missing-og-description",
977
+ "name": "Missing og:description",
978
+ "severity": "warning",
979
+ "category": "meta",
980
+ "description": "Open Graph description is displayed when pages are shared on social platforms.",
981
+ "fixTemplate": "Add <meta property=\"og:description\" content=\"Your description\" /> inside <head>",
982
+ "enabled": true,
983
+ "appliesTo": [
984
+ "html",
985
+ "jsx",
986
+ "tsx",
987
+ "vue",
988
+ "svelte"
989
+ ],
990
+ "references": [
991
+ "https://ogp.me/"
992
+ ],
993
+ "source": "original",
994
+ "lastUpdated": "2026-05-08",
995
+ "check": {
996
+ "type": "field-null",
997
+ "field": "ogDescription"
998
+ }
999
+ },
1000
+ {
1001
+ "id": "missing-og-image",
1002
+ "name": "Missing og:image",
1003
+ "severity": "warning",
1004
+ "category": "meta",
1005
+ "description": "Social shares without og:image show no image, severely reducing engagement. Image should be at least 1200x630px. Google also uses og:image as a source when determining image thumbnails in Google Search and Discover, making this tag doubly important.",
1006
+ "fixTemplate": "Add <meta property=\"og:image\" content=\"https://yourdomain.com/og-image.jpg\" /> inside <head>. Recommended size: 1200x630px.",
1007
+ "enabled": true,
1008
+ "appliesTo": [
1009
+ "html",
1010
+ "jsx",
1011
+ "tsx",
1012
+ "vue",
1013
+ "svelte"
1014
+ ],
1015
+ "references": [
1016
+ "https://ogp.me/",
1017
+ "https://developers.google.com/search/docs/appearance/google-images"
1018
+ ],
1019
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1020
+ "lastUpdated": "2026-05-08",
1021
+ "check": {
1022
+ "type": "field-null",
1023
+ "field": "ogImage"
1024
+ }
1025
+ },
1026
+ {
1027
+ "id": "missing-og-url",
1028
+ "name": "Missing og:url",
1029
+ "severity": "info",
1030
+ "category": "meta",
1031
+ "description": "og:url sets the canonical URL for social sharing, preventing duplicate content issues on social platforms.",
1032
+ "fixTemplate": "Add <meta property=\"og:url\" content=\"https://yourdomain.com/page\" /> inside <head>",
1033
+ "enabled": true,
1034
+ "appliesTo": [
1035
+ "html",
1036
+ "jsx",
1037
+ "tsx",
1038
+ "vue",
1039
+ "svelte"
1040
+ ],
1041
+ "references": [
1042
+ "https://ogp.me/"
1043
+ ],
1044
+ "source": "original",
1045
+ "lastUpdated": "2026-05-08",
1046
+ "check": {
1047
+ "type": "field-null",
1048
+ "field": "ogUrl"
1049
+ }
1050
+ },
1051
+ {
1052
+ "id": "missing-og-type",
1053
+ "name": "Missing og:type",
1054
+ "severity": "info",
1055
+ "category": "meta",
1056
+ "description": "og:type tells social platforms what kind of content this is (website, article, product, etc.).",
1057
+ "fixTemplate": "Add <meta property=\"og:type\" content=\"website\" /> inside <head>. Use 'article' for blog posts.",
1058
+ "enabled": true,
1059
+ "appliesTo": [
1060
+ "html",
1061
+ "jsx",
1062
+ "tsx",
1063
+ "vue",
1064
+ "svelte"
1065
+ ],
1066
+ "references": [
1067
+ "https://ogp.me/#types"
1068
+ ],
1069
+ "source": "original",
1070
+ "lastUpdated": "2026-05-08",
1071
+ "check": {
1072
+ "type": "field-null",
1073
+ "field": "ogType"
1074
+ }
1075
+ },
1076
+ {
1077
+ "id": "missing-og-locale",
1078
+ "name": "Missing og:locale for international pages",
1079
+ "severity": "info",
1080
+ "category": "meta",
1081
+ "description": "og:locale is recommended for international pages to specify the language and territory of the page content (e.g., en_US, fr_FR). This helps social platforms and search engines correctly identify the intended audience for the page.",
1082
+ "fixTemplate": "Add <meta property=\"og:locale\" content=\"en_US\" /> inside <head>. Replace 'en_US' with the appropriate locale code for your page's language and region.",
1083
+ "enabled": true,
1084
+ "appliesTo": [
1085
+ "html",
1086
+ "jsx",
1087
+ "tsx",
1088
+ "vue",
1089
+ "svelte"
1090
+ ],
1091
+ "references": [
1092
+ "https://ogp.me/#optional",
1093
+ "https://developers.google.com/search/docs/specialty/international/localization"
1094
+ ],
1095
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1096
+ "lastUpdated": "2026-05-08"
1097
+ },
1098
+ {
1099
+ "id": "missing-twitter-card",
1100
+ "name": "Missing twitter:card",
1101
+ "severity": "warning",
1102
+ "category": "meta",
1103
+ "description": "Without twitter:card, X (Twitter) will not show a rich preview when your page is shared.",
1104
+ "fixTemplate": "Add <meta name=\"twitter:card\" content=\"summary_large_image\" /> inside <head>",
1105
+ "enabled": true,
1106
+ "appliesTo": [
1107
+ "html",
1108
+ "jsx",
1109
+ "tsx",
1110
+ "vue",
1111
+ "svelte"
1112
+ ],
1113
+ "references": [
1114
+ "https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/markup"
1115
+ ],
1116
+ "source": "original",
1117
+ "lastUpdated": "2026-05-08",
1118
+ "check": {
1119
+ "type": "field-null",
1120
+ "field": "twitterCard"
1121
+ }
1122
+ },
1123
+ {
1124
+ "id": "missing-twitter-title",
1125
+ "name": "Missing twitter:title",
1126
+ "severity": "info",
1127
+ "category": "meta",
1128
+ "description": "twitter:title overrides og:title specifically for X (Twitter) cards.",
1129
+ "fixTemplate": "Add <meta name=\"twitter:title\" content=\"Your Title\" /> inside <head>",
1130
+ "enabled": true,
1131
+ "appliesTo": [
1132
+ "html",
1133
+ "jsx",
1134
+ "tsx",
1135
+ "vue",
1136
+ "svelte"
1137
+ ],
1138
+ "references": [
1139
+ "https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/markup"
1140
+ ],
1141
+ "source": "original",
1142
+ "lastUpdated": "2026-05-08",
1143
+ "check": {
1144
+ "type": "field-null",
1145
+ "field": "twitterTitle"
1146
+ }
1147
+ },
1148
+ {
1149
+ "id": "missing-twitter-image",
1150
+ "name": "Missing twitter:image",
1151
+ "severity": "info",
1152
+ "category": "meta",
1153
+ "description": "twitter:image is shown in X (Twitter) card previews. Recommended minimum 1200x628px.",
1154
+ "fixTemplate": "Add <meta name=\"twitter:image\" content=\"https://yourdomain.com/twitter-image.jpg\" /> inside <head>",
1155
+ "enabled": true,
1156
+ "appliesTo": [
1157
+ "html",
1158
+ "jsx",
1159
+ "tsx",
1160
+ "vue",
1161
+ "svelte"
1162
+ ],
1163
+ "references": [
1164
+ "https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/markup"
1165
+ ],
1166
+ "source": "original",
1167
+ "lastUpdated": "2026-05-08",
1168
+ "check": {
1169
+ "type": "field-null",
1170
+ "field": "twitterImage"
1171
+ }
1172
+ },
1173
+ {
1174
+ "id": "missing-h1",
1175
+ "name": "Missing <h1> tag",
1176
+ "severity": "critical",
1177
+ "category": "headings",
1178
+ "description": "Every page must have exactly one <h1> tag. It signals the primary topic of the page to search engines.",
1179
+ "fixTemplate": "Add exactly one <h1>Your Primary Topic</h1> tag to the page",
1180
+ "enabled": true,
1181
+ "appliesTo": [
1182
+ "html",
1183
+ "jsx",
1184
+ "tsx",
1185
+ "vue",
1186
+ "svelte"
1187
+ ],
1188
+ "references": [
1189
+ "https://developers.google.com/search/docs/fundamentals/seo-starter-guide"
1190
+ ],
1191
+ "source": "original",
1192
+ "lastUpdated": "2026-05-08"
1193
+ },
1194
+ {
1195
+ "id": "multiple-h1",
1196
+ "name": "Multiple <h1> tags",
1197
+ "severity": "critical",
1198
+ "category": "headings",
1199
+ "description": "Having multiple <h1> tags dilutes the primary topic signal. Found {{COUNT}} <h1> tags.",
1200
+ "fixTemplate": "Reduce to exactly one <h1>. Demote additional h1 tags to <h2>. Found {{COUNT}} h1 tags.",
1201
+ "enabled": true,
1202
+ "appliesTo": [
1203
+ "html",
1204
+ "jsx",
1205
+ "tsx",
1206
+ "vue",
1207
+ "svelte"
1208
+ ],
1209
+ "references": [
1210
+ "https://developers.google.com/search/docs/fundamentals/seo-starter-guide"
1211
+ ],
1212
+ "source": "original",
1213
+ "lastUpdated": "2026-05-08"
1214
+ },
1215
+ {
1216
+ "id": "heading-hierarchy",
1217
+ "name": "Broken heading hierarchy",
1218
+ "severity": "warning",
1219
+ "category": "headings",
1220
+ "description": "Heading levels should not skip (e.g., going from {{FROM}} to {{TO}}). Broken hierarchy confuses screen readers and search crawlers.",
1221
+ "fixTemplate": "Fix heading structure: {{FROM}} jumps directly to {{TO}}. Insert the missing level between them.",
1222
+ "enabled": true,
1223
+ "appliesTo": [
1224
+ "html",
1225
+ "jsx",
1226
+ "tsx",
1227
+ "vue",
1228
+ "svelte"
1229
+ ],
1230
+ "references": [
1231
+ "https://www.w3.org/WAI/tutorials/page-structure/headings/"
1232
+ ],
1233
+ "source": "original",
1234
+ "lastUpdated": "2026-05-08"
1235
+ },
1236
+ {
1237
+ "id": "empty-heading",
1238
+ "name": "Empty heading tag",
1239
+ "severity": "warning",
1240
+ "category": "headings",
1241
+ "description": "Empty {{TAG}} tags confuse crawlers and screen readers. Every heading must have meaningful text.",
1242
+ "fixTemplate": "Add descriptive text to your <{{TAG}}> tag or remove it entirely",
1243
+ "enabled": true,
1244
+ "appliesTo": [
1245
+ "html",
1246
+ "jsx",
1247
+ "tsx",
1248
+ "vue",
1249
+ "svelte"
1250
+ ],
1251
+ "references": [
1252
+ "https://developers.google.com/search/docs/fundamentals/seo-starter-guide"
1253
+ ],
1254
+ "source": "original",
1255
+ "lastUpdated": "2026-05-08"
1256
+ },
1257
+ {
1258
+ "id": "image-missing-alt",
1259
+ "name": "Image missing alt attribute",
1260
+ "severity": "critical",
1261
+ "category": "images",
1262
+ "description": "Images without alt attributes are invisible to search engines and fail accessibility standards (WCAG 2.1). Affects: {{SRC}}",
1263
+ "fixTemplate": "Add alt=\"Descriptive text about the image\" to <img src=\"{{SRC}}\">",
1264
+ "enabled": true,
1265
+ "appliesTo": [
1266
+ "html",
1267
+ "jsx",
1268
+ "tsx",
1269
+ "vue",
1270
+ "svelte"
1271
+ ],
1272
+ "references": [
1273
+ "https://developers.google.com/search/docs/appearance/google-images"
1274
+ ],
1275
+ "source": "original",
1276
+ "lastUpdated": "2026-05-08"
1277
+ },
1278
+ {
1279
+ "id": "image-empty-alt",
1280
+ "name": "Image has empty alt (possible oversight)",
1281
+ "severity": "info",
1282
+ "category": "images",
1283
+ "description": "Image has alt=\"\" which is valid only for purely decorative images. Verify this is intentional for: {{SRC}}",
1284
+ "fixTemplate": "If this image conveys information, add descriptive alt text. If purely decorative, alt=\"\" is correct — add role=\"presentation\" to confirm intent.",
1285
+ "enabled": true,
1286
+ "appliesTo": [
1287
+ "html",
1288
+ "jsx",
1289
+ "tsx",
1290
+ "vue",
1291
+ "svelte"
1292
+ ],
1293
+ "references": [
1294
+ "https://developers.google.com/search/docs/appearance/google-images"
1295
+ ],
1296
+ "source": "original",
1297
+ "lastUpdated": "2026-05-08"
1298
+ },
1299
+ {
1300
+ "id": "image-missing-lazy-loading",
1301
+ "name": "Image missing lazy loading",
1302
+ "severity": "info",
1303
+ "category": "images",
1304
+ "description": "Images without loading=\"lazy\" are loaded immediately, increasing initial page load time and hurting Core Web Vitals. Affects: {{SRC}}",
1305
+ "fixTemplate": "Add loading=\"lazy\" to <img src=\"{{SRC}}\"> (skip for above-the-fold hero images)",
1306
+ "enabled": true,
1307
+ "appliesTo": [
1308
+ "html",
1309
+ "jsx",
1310
+ "tsx",
1311
+ "vue",
1312
+ "svelte"
1313
+ ],
1314
+ "references": [
1315
+ "https://web.dev/lazy-loading-images/"
1316
+ ],
1317
+ "source": "original",
1318
+ "lastUpdated": "2026-05-08"
1319
+ },
1320
+ {
1321
+ "id": "image-url-consistency",
1322
+ "name": "Inconsistent image URL references",
1323
+ "severity": "info",
1324
+ "category": "images",
1325
+ "description": "Image URLs should be referenced consistently across pages for easier crawling on larger websites. Inconsistent URLs (e.g., using different query parameters, protocols, or path formats for the same image) can cause Google to treat the same image as multiple distinct images, wasting crawl budget and reducing indexing efficiency.",
1326
+ "fixTemplate": "Ensure the same image is always referenced with the same canonical URL across all pages. Avoid mixing http/https, www/non-www, or different query parameter variations for the same image file.",
1327
+ "enabled": true,
1328
+ "appliesTo": [
1329
+ "html",
1330
+ "jsx",
1331
+ "tsx",
1332
+ "vue",
1333
+ "svelte"
1334
+ ],
1335
+ "references": [
1336
+ "https://developers.google.com/search/docs/appearance/google-images"
1337
+ ],
1338
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1339
+ "lastUpdated": "2026-05-08"
1340
+ },
1341
+ {
1342
+ "id": "vague-link-text",
1343
+ "name": "Vague link anchor text",
1344
+ "severity": "warning",
1345
+ "category": "links",
1346
+ "description": "Link text like '{{TEXT}}' gives no context to crawlers or screen readers about the destination. Link: {{HREF}}",
1347
+ "fixTemplate": "Replace anchor text '{{TEXT}}' with descriptive text that explains the link destination, e.g. 'Read our pricing guide'",
1348
+ "enabled": true,
1349
+ "appliesTo": [
1350
+ "html",
1351
+ "jsx",
1352
+ "tsx",
1353
+ "vue",
1354
+ "svelte"
1355
+ ],
1356
+ "references": [
1357
+ "https://developers.google.com/search/docs/fundamentals/seo-starter-guide"
1358
+ ],
1359
+ "source": "original",
1360
+ "lastUpdated": "2026-05-08"
1361
+ },
1362
+ {
1363
+ "id": "external-link-no-rel",
1364
+ "name": "External link missing rel=\"noopener\"",
1365
+ "severity": "info",
1366
+ "category": "links",
1367
+ "description": "External links without rel=\"noopener noreferrer\" expose users to tab-napping attacks and leak referrer information. Link: {{HREF}}",
1368
+ "fixTemplate": "Add rel=\"noopener noreferrer\" to <a href=\"{{HREF}}\">",
1369
+ "enabled": true,
1370
+ "appliesTo": [
1371
+ "html",
1372
+ "jsx",
1373
+ "tsx",
1374
+ "vue",
1375
+ "svelte"
1376
+ ],
1377
+ "references": [
1378
+ "https://web.dev/external-anchors-use-rel-noopener/"
1379
+ ],
1380
+ "source": "original",
1381
+ "lastUpdated": "2026-05-08"
1382
+ },
1383
+ {
1384
+ "id": "missing-lang",
1385
+ "name": "Missing lang attribute on <html>",
1386
+ "severity": "critical",
1387
+ "category": "technical",
1388
+ "description": "The lang attribute on the <html> element tells search engines and screen readers what language the page is in.",
1389
+ "fixTemplate": "Add lang=\"en\" to your <html> tag: <html lang=\"en\">. Replace 'en' with the correct BCP 47 language code.",
1390
+ "enabled": true,
1391
+ "appliesTo": [
1392
+ "html"
1393
+ ],
1394
+ "references": [
1395
+ "https://developers.google.com/search/docs/specialty/international/localization"
1396
+ ],
1397
+ "source": "original",
1398
+ "lastUpdated": "2026-05-08",
1399
+ "check": {
1400
+ "type": "field-null",
1401
+ "field": "langAttribute"
1402
+ }
1403
+ },
1404
+ {
1405
+ "id": "missing-viewport",
1406
+ "name": "Missing viewport meta tag",
1407
+ "severity": "critical",
1408
+ "category": "technical",
1409
+ "description": "Without a viewport meta tag, mobile browsers render the page at desktop width, causing poor mobile UX and hurting mobile rankings.",
1410
+ "fixTemplate": "Add <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /> inside <head>",
1411
+ "enabled": true,
1412
+ "appliesTo": [
1413
+ "html",
1414
+ "jsx",
1415
+ "tsx",
1416
+ "vue",
1417
+ "svelte"
1418
+ ],
1419
+ "references": [
1420
+ "https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing"
1421
+ ],
1422
+ "source": "original",
1423
+ "lastUpdated": "2026-05-08",
1424
+ "check": {
1425
+ "type": "field-null",
1426
+ "field": "viewportMeta"
1427
+ }
1428
+ },
1429
+ {
1430
+ "id": "missing-charset",
1431
+ "name": "Missing charset declaration",
1432
+ "severity": "warning",
1433
+ "category": "technical",
1434
+ "description": "Without a charset declaration, browsers may misinterpret the page encoding, causing garbled text.",
1435
+ "fixTemplate": "Add <meta charset=\"UTF-8\" /> as the first tag inside <head>",
1436
+ "enabled": true,
1437
+ "appliesTo": [
1438
+ "html",
1439
+ "jsx",
1440
+ "tsx",
1441
+ "vue",
1442
+ "svelte"
1443
+ ],
1444
+ "references": [
1445
+ "https://html.spec.whatwg.org/#charset"
1446
+ ],
1447
+ "source": "original",
1448
+ "lastUpdated": "2026-05-08",
1449
+ "check": {
1450
+ "type": "field-null",
1451
+ "field": "charsetMeta"
1452
+ }
1453
+ },
1454
+ {
1455
+ "id": "missing-canonical",
1456
+ "name": "Missing canonical tag",
1457
+ "severity": "warning",
1458
+ "category": "technical",
1459
+ "description": "Without a canonical tag, search engines may index duplicate versions of your page (e.g., with/without trailing slash, with query params). For JavaScript-rendered pages, Google has clarified that canonicalization happens both before and after rendering. Best practice: set the canonical URL to the same URL as in the original HTML. If that is not possible, omit the canonical tag from the original HTML entirely rather than setting an incorrect one.",
1460
+ "fixTemplate": "Add <link rel=\"canonical\" href=\"https://yourdomain.com/this-page\" /> inside <head>. For JavaScript pages, ensure this matches the canonical in the pre-rendered HTML.",
1461
+ "enabled": true,
1462
+ "appliesTo": [
1463
+ "html",
1464
+ "jsx",
1465
+ "tsx",
1466
+ "vue",
1467
+ "svelte"
1468
+ ],
1469
+ "references": [
1470
+ "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
1471
+ "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics"
1472
+ ],
1473
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1474
+ "lastUpdated": "2026-05-08",
1475
+ "check": {
1476
+ "type": "field-null",
1477
+ "field": "canonicalUrl"
1478
+ }
1479
+ },
1480
+ {
1481
+ "id": "accidental-noindex",
1482
+ "name": "noindex directive detected",
1483
+ "severity": "critical",
1484
+ "category": "technical",
1485
+ "description": "A meta robots noindex tag was found. This will prevent search engines from indexing this page. Confirm this is intentional. Important: Google has clarified that if there is any possibility you want the page indexed, do not use a noindex tag in the original page code — even if the page uses JavaScript. While Google may be able to render a JavaScript page, the behavior of noindex in JavaScript-rendered content is not well defined and may change. Always place noindex in the original HTML if you intend to block indexing.",
1486
+ "fixTemplate": "Remove 'noindex' from <meta name=\"robots\"> if this page should be indexed. If using JavaScript to conditionally add noindex, move it to the original static HTML instead.",
1487
+ "enabled": true,
1488
+ "appliesTo": [
1489
+ "html",
1490
+ "jsx",
1491
+ "tsx",
1492
+ "vue",
1493
+ "svelte"
1494
+ ],
1495
+ "references": [
1496
+ "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
1497
+ "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics"
1498
+ ],
1499
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1500
+ "lastUpdated": "2026-05-08",
1501
+ "check": {
1502
+ "type": "field-truthy",
1503
+ "field": "hasNoindex"
1504
+ }
1505
+ },
1506
+ {
1507
+ "id": "missing-favicon",
1508
+ "name": "Missing favicon",
1509
+ "severity": "info",
1510
+ "category": "technical",
1511
+ "description": "A favicon improves brand recognition in browser tabs and bookmarks. Google displays favicons in SERPs. Google requires favicons to have a 1:1 aspect ratio and be at least 8x8px in size. A higher resolution favicon of at least 48x48px is strongly recommended. Both the favicon file and the home page of the site must be crawlable by Googlebot-Image and Googlebot respectively. Favicons are supported at the domain and subdomain level, not at the subdirectory level. You do not need to host the favicon on the same domain to be eligible.",
1512
+ "fixTemplate": "Add <link rel=\"icon\" href=\"/favicon.ico\" type=\"image/x-icon\" /> inside <head>. Ensure the favicon has a 1:1 aspect ratio and is at least 48x48px. Confirm Googlebot can crawl both the favicon file (via Googlebot-Image) and your home page (via Googlebot).",
1513
+ "enabled": true,
1514
+ "appliesTo": [
1515
+ "html",
1516
+ "jsx",
1517
+ "tsx",
1518
+ "vue",
1519
+ "svelte"
1520
+ ],
1521
+ "references": [
1522
+ "https://developers.google.com/search/docs/appearance/favicon-in-search"
1523
+ ],
1524
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1525
+ "lastUpdated": "2026-05-08",
1526
+ "check": {
1527
+ "type": "field-falsy",
1528
+ "field": "hasFavicon"
1529
+ }
1530
+ },
1531
+ {
1532
+ "id": "missing-json-ld",
1533
+ "name": "No structured data (JSON-LD) found",
1534
+ "severity": "info",
1535
+ "category": "schema",
1536
+ "description": "Structured data helps search engines understand your content and can unlock rich results (star ratings, breadcrumbs, etc.). JSON-LD is Google's recommended format for structured data as it is generally the easiest to implement and maintain. Note: FAQ rich results are deprecated as of May 7, 2026. Special announcement structured data was deprecated July 31, 2025. Practice problem structured data is no longer shown in Google Search results. Dataset structured data is also being phased out from Google Search results.",
1537
+ "fixTemplate": "Add a JSON-LD script block: <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"Page Title\"}</script>",
1538
+ "enabled": true,
1539
+ "appliesTo": [
1540
+ "html",
1541
+ "jsx",
1542
+ "tsx",
1543
+ "vue",
1544
+ "svelte"
1545
+ ],
1546
+ "references": [
1547
+ "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
1548
+ "https://developers.google.com/search/docs/appearance/structured-data/faq"
1549
+ ],
1550
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1551
+ "lastUpdated": "2026-05-08",
1552
+ "check": {
1553
+ "type": "field-array-empty",
1554
+ "field": "jsonLdBlocks"
1555
+ }
1556
+ },
1557
+ {
1558
+ "id": "invalid-json-ld",
1559
+ "name": "Invalid JSON in JSON-LD block",
1560
+ "severity": "critical",
1561
+ "category": "schema",
1562
+ "description": "A JSON-LD structured data block contains invalid JSON. Search engines will ignore it entirely.",
1563
+ "fixTemplate": "Fix the JSON syntax error in your <script type=\"application/ld+json\"> block. Use https://validator.schema.org to validate.",
1564
+ "enabled": true,
1565
+ "appliesTo": [
1566
+ "html",
1567
+ "jsx",
1568
+ "tsx",
1569
+ "vue",
1570
+ "svelte"
1571
+ ],
1572
+ "references": [
1573
+ "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data"
1574
+ ],
1575
+ "source": "original",
1576
+ "lastUpdated": "2026-05-08"
1577
+ },
1578
+ {
1579
+ "id": "missing-preload-lcp",
1580
+ "name": "No resource preloading hints",
1581
+ "severity": "info",
1582
+ "category": "performance",
1583
+ "description": "Pages with images but no <link rel=\"preload\"> hints may have slower Largest Contentful Paint (LCP), a Core Web Vitals signal.",
1584
+ "fixTemplate": "Add <link rel=\"preload\" as=\"image\" href=\"/path/to/hero-image.webp\" /> in <head> for your above-the-fold hero image",
1585
+ "enabled": true,
1586
+ "appliesTo": [
1587
+ "html",
1588
+ "jsx",
1589
+ "tsx",
1590
+ "vue",
1591
+ "svelte"
1592
+ ],
1593
+ "references": [
1594
+ "https://web.dev/lcp/",
1595
+ "https://web.dev/preload-responsive-images/"
1596
+ ],
1597
+ "source": "original",
1598
+ "lastUpdated": "2026-05-08"
1599
+ },
1600
+ {
1601
+ "id": "faq-schema-deprecated",
1602
+ "name": "FAQ structured data is deprecated",
1603
+ "severity": "warning",
1604
+ "category": "schema",
1605
+ "description": "Google has deprecated the FAQ rich result feature. Starting May 7, 2026, FAQ rich results will no longer appear in Google Search. Implementing FAQ schema will have no effect on search appearance and may add unnecessary markup weight to your pages.",
1606
+ "fixTemplate": "Remove or stop adding FAQ JSON-LD structured data blocks. If you have existing FAQ schema, you may leave it in place as it will not cause harm, but it will no longer produce rich results in Google Search.",
1607
+ "enabled": true,
1608
+ "appliesTo": [
1609
+ "html",
1610
+ "jsx",
1611
+ "tsx",
1612
+ "vue",
1613
+ "svelte"
1614
+ ],
1615
+ "references": [
1616
+ "https://developers.google.com/search/docs/appearance/structured-data/faqpage"
1617
+ ],
1618
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1619
+ "lastUpdated": "2026-05-08",
1620
+ "check": {
1621
+ "type": "jsonld-has-type",
1622
+ "schemaType": "FAQPage"
1623
+ }
1624
+ },
1625
+ {
1626
+ "id": "back-button-hijacking",
1627
+ "name": "Back button hijacking spam policy",
1628
+ "severity": "critical",
1629
+ "category": "technical",
1630
+ "description": "Google has added 'back button hijacking' as a named malicious practice in its spam policies. This deceptive practice intercepts or overrides the browser's back button behavior to trap users on a page or redirect them to an unintended destination. Pages that implement this behavior may be subject to manual action.",
1631
+ "fixTemplate": "Audit your JavaScript for any code that overrides history.pushState, history.replaceState, or the popstate event in ways that prevent users from navigating back normally. Remove any such manipulation.",
1632
+ "enabled": true,
1633
+ "appliesTo": [
1634
+ "html",
1635
+ "jsx",
1636
+ "tsx",
1637
+ "vue",
1638
+ "svelte"
1639
+ ],
1640
+ "references": [
1641
+ "https://developers.google.com/search/docs/essentials/spam-policies#malicious-behavior"
1642
+ ],
1643
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1644
+ "lastUpdated": "2026-05-08",
1645
+ "check": {
1646
+ "type": "raw-all-match",
1647
+ "patterns": [
1648
+ "addEventListener\\s*\\(\\s*['\"`]popstate['\"`]|window\\.onpopstate\\s*=",
1649
+ "history\\.pushState"
1650
+ ]
1651
+ }
1652
+ },
1653
+ {
1654
+ "id": "robots-meta-outside-head",
1655
+ "name": "Robots meta tag outside <head>",
1656
+ "severity": "warning",
1657
+ "category": "technical",
1658
+ "description": "Google has documented that robots meta tags found outside the HTML <head> element are processed differently. While Google does process them, the behavior was previously undocumented and may not be consistent. Always place robots meta tags inside <head> to ensure reliable crawling and indexing behavior.",
1659
+ "fixTemplate": "Move <meta name=\"robots\" content=\"{{VALUE}}\" /> inside the <head> element. Do not place robots meta tags in <body> or elsewhere in the document.",
1660
+ "enabled": true,
1661
+ "appliesTo": [
1662
+ "html",
1663
+ "jsx",
1664
+ "tsx",
1665
+ "vue",
1666
+ "svelte"
1667
+ ],
1668
+ "references": [
1669
+ "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag"
1670
+ ],
1671
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1672
+ "lastUpdated": "2026-05-08"
1673
+ },
1674
+ {
1675
+ "id": "noindex-in-javascript",
1676
+ "name": "noindex set via JavaScript (undefined behavior)",
1677
+ "severity": "critical",
1678
+ "category": "technical",
1679
+ "description": "Google has clarified that using a noindex directive in JavaScript-rendered content has undefined behavior that may change. While Google may be able to render a page that uses JavaScript, if there is any possibility you want the page indexed, do not use a noindex tag in the original page code or inject it via JavaScript. If you intend to block indexing, place the noindex directive in the original static HTML.",
1680
+ "fixTemplate": "Move noindex out of JavaScript and into the static HTML: <meta name=\"robots\" content=\"noindex\" /> inside <head> in the original HTML response. Do not rely on JavaScript to inject or conditionally set noindex.",
1681
+ "enabled": true,
1682
+ "appliesTo": [
1683
+ "jsx",
1684
+ "tsx",
1685
+ "vue",
1686
+ "svelte"
1687
+ ],
1688
+ "references": [
1689
+ "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics"
1690
+ ],
1691
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1692
+ "lastUpdated": "2026-05-08"
1693
+ },
1694
+ {
1695
+ "id": "canonical-javascript-best-practice",
1696
+ "name": "Canonical tag inconsistent in JavaScript page",
1697
+ "severity": "warning",
1698
+ "category": "technical",
1699
+ "description": "Google has clarified that canonicalization happens both before and after rendering for JavaScript pages. To make the canonical URL as clear as possible: set the canonical URL in the original HTML to the same URL as the intended canonical. If that is not possible (e.g., the canonical is determined dynamically), leave the canonical tag out of the original HTML entirely rather than setting an incorrect one that conflicts with the post-render canonical.",
1700
+ "fixTemplate": "Ensure <link rel=\"canonical\" href=\"{{CANONICAL_URL}}\" /> in the original static HTML matches the canonical URL you intend. If the canonical is set dynamically via JavaScript, remove it from the original HTML to avoid conflicting signals.",
1701
+ "enabled": true,
1702
+ "appliesTo": [
1703
+ "jsx",
1704
+ "tsx",
1705
+ "vue",
1706
+ "svelte"
1707
+ ],
1708
+ "references": [
1709
+ "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
1710
+ "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics"
1711
+ ],
1712
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1713
+ "lastUpdated": "2026-05-08"
1714
+ },
1715
+ {
1716
+ "id": "favicon-aspect-ratio",
1717
+ "name": "Favicon incorrect size, aspect ratio, or unsupported file format",
1718
+ "severity": "warning",
1719
+ "category": "technical",
1720
+ "description": "Google requires favicons to have a 1:1 (square) aspect ratio and be at least 8x8px in size. A higher resolution favicon of at least 48x48px is strongly recommended for display quality in SERPs. Non-square or undersized favicons will not be shown in Google Search results. Google has updated the favicon documentation to explicitly list the supported favicon file formats rather than linking to an external reference that evolved over time. Only use file formats explicitly listed in Google's favicon documentation to ensure eligibility. The supported formats have not changed; the documentation now makes them explicit.",
1721
+ "fixTemplate": "Ensure your favicon is square (1:1 aspect ratio), at least 48x48px, and uses a file format explicitly listed in Google's favicon documentation (https://developers.google.com/search/docs/appearance/favicon-in-search). Update <link rel=\"icon\" href=\"/favicon.png\" /> to reference a correctly sized image in a supported format.",
1722
+ "enabled": true,
1723
+ "appliesTo": [
1724
+ "html",
1725
+ "jsx",
1726
+ "tsx",
1727
+ "vue",
1728
+ "svelte"
1729
+ ],
1730
+ "references": [
1731
+ "https://developers.google.com/search/docs/appearance/favicon-in-search"
1732
+ ],
1733
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-29)",
1734
+ "lastUpdated": "2026-08-29"
1735
+ },
1736
+ {
1737
+ "id": "inp-core-web-vital",
1738
+ "name": "INP (Interaction to Next Paint) not optimized",
1739
+ "severity": "warning",
1740
+ "category": "performance",
1741
+ "description": "Interaction to Next Paint (INP) replaced First Input Delay (FID) as a Core Web Vital in March 2024. INP measures the latency of all interactions on a page throughout its lifecycle, not just the first one. A good INP score is under 200ms. Poor INP directly impacts page experience ranking signals.",
1742
+ "fixTemplate": "Measure INP using Chrome DevTools, PageSpeed Insights, or the web-vitals JavaScript library. Optimize by reducing long tasks, minimizing main thread blocking, and deferring non-critical JavaScript. Target an INP score below 200ms.",
1743
+ "enabled": true,
1744
+ "appliesTo": [
1745
+ "html",
1746
+ "jsx",
1747
+ "tsx",
1748
+ "vue",
1749
+ "svelte"
1750
+ ],
1751
+ "references": [
1752
+ "https://web.dev/inp/",
1753
+ "https://developers.google.com/search/docs/appearance/core-web-vitals"
1754
+ ],
1755
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1756
+ "lastUpdated": "2026-05-08"
1757
+ },
1758
+ {
1759
+ "id": "missing-fid",
1760
+ "name": "FID (First Input Delay) optimization",
1761
+ "severity": "info",
1762
+ "category": "performance",
1763
+ "description": "DEPRECATED: First Input Delay (FID) is no longer a Core Web Vital as of March 2024. It has been replaced by Interaction to Next Paint (INP). This rule has been disabled. See the inp-core-web-vital rule instead.",
1764
+ "fixTemplate": "This rule is deprecated. Refer to the inp-core-web-vital rule for the current Core Web Vital interaction metric.",
1765
+ "enabled": false,
1766
+ "deprecationReason": "FID was removed as a Core Web Vital in March 2024 and replaced by INP (Interaction to Next Paint). Google Search Central documentation confirmed this change.",
1767
+ "appliesTo": [
1768
+ "html",
1769
+ "jsx",
1770
+ "tsx",
1771
+ "vue",
1772
+ "svelte"
1773
+ ],
1774
+ "references": [
1775
+ "https://web.dev/inp/"
1776
+ ],
1777
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1778
+ "lastUpdated": "2026-05-08"
1779
+ },
1780
+ {
1781
+ "id": "image-preferred-source-metadata",
1782
+ "name": "Missing image metadata for Search/Discover thumbnails",
1783
+ "severity": "info",
1784
+ "category": "images",
1785
+ "description": "Google uses both schema.org markup and the og:image tag as sources when determining image thumbnails in Google Search and Discover. To increase the likelihood of your preferred image being selected, specify it consistently using both og:image and schema.org image properties in your structured data.",
1786
+ "fixTemplate": "Add og:image: <meta property=\"og:image\" content=\"https://yourdomain.com/preferred-image.jpg\" /> and include the same image URL in your JSON-LD: {\"@type\":\"Article\",\"image\":\"https://yourdomain.com/preferred-image.jpg\"}",
1787
+ "enabled": true,
1788
+ "appliesTo": [
1789
+ "html",
1790
+ "jsx",
1791
+ "tsx",
1792
+ "vue",
1793
+ "svelte"
1794
+ ],
1795
+ "references": [
1796
+ "https://developers.google.com/search/docs/appearance/google-images",
1797
+ "https://developers.google.com/search/docs/appearance/structured-data/article"
1798
+ ],
1799
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1800
+ "lastUpdated": "2026-05-08"
1801
+ },
1802
+ {
1803
+ "id": "breadcrumbs-desktop-only",
1804
+ "name": "Breadcrumb rich results only appear on desktop",
1805
+ "severity": "info",
1806
+ "category": "schema",
1807
+ "description": "Google has clarified that breadcrumb rich results only appear on desktop search results, not on mobile. This is because breadcrumbs get truncated on smaller screens and are not as useful to mobile searchers. Breadcrumb structured data is still recommended for desktop SEO benefit.",
1808
+ "fixTemplate": "Breadcrumb structured data is still worth implementing for desktop rich results. Add JSON-LD: <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://yourdomain.com\"}]}</script>",
1809
+ "enabled": true,
1810
+ "appliesTo": [
1811
+ "html",
1812
+ "jsx",
1813
+ "tsx",
1814
+ "vue",
1815
+ "svelte"
1816
+ ],
1817
+ "references": [
1818
+ "https://developers.google.com/search/docs/appearance/structured-data/breadcrumb"
1819
+ ],
1820
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1821
+ "lastUpdated": "2026-05-08"
1822
+ },
1823
+ {
1824
+ "id": "video-transparency",
1825
+ "name": "Video thumbnail has excessive transparency",
1826
+ "severity": "warning",
1827
+ "category": "images",
1828
+ "description": "Google requires that at least 80% of video thumbnail pixels have little or no transparency to enable video indexing. Thumbnails with more than 20% transparent pixels may prevent the video from being indexed and appearing in video search results.",
1829
+ "fixTemplate": "Replace your video thumbnail with an image where at least 80% of pixels are opaque. Avoid PNG thumbnails with large transparent areas. Use JPEG or a fully opaque PNG/WebP instead.",
1830
+ "enabled": true,
1831
+ "appliesTo": [
1832
+ "html",
1833
+ "jsx",
1834
+ "tsx",
1835
+ "vue",
1836
+ "svelte"
1837
+ ],
1838
+ "references": [
1839
+ "https://developers.google.com/search/docs/appearance/structured-data/video"
1840
+ ],
1841
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1842
+ "lastUpdated": "2026-05-08"
1843
+ },
1844
+ {
1845
+ "id": "structured-data-javascript-initial-html",
1846
+ "name": "Structured data not in initial HTML (JavaScript-generated)",
1847
+ "severity": "warning",
1848
+ "category": "schema",
1849
+ "description": "Google recommends putting structured data markup (especially for ecommerce/product pages) in the initial HTML response for best results. While JavaScript-generated structured data is supported, it requires Googlebot to fully render the page before the markup is available, which can delay indexing and rich result eligibility. Additionally, ensure your server can handle increased traffic if generating structured data with JavaScript.",
1850
+ "fixTemplate": "Move your JSON-LD structured data into the initial server-rendered HTML response rather than injecting it via JavaScript. For Next.js/Nuxt/SvelteKit, render the JSON-LD block server-side.",
1851
+ "enabled": true,
1852
+ "appliesTo": [
1853
+ "jsx",
1854
+ "tsx",
1855
+ "vue",
1856
+ "svelte"
1857
+ ],
1858
+ "references": [
1859
+ "https://developers.google.com/search/docs/crawling-indexing/javascript/generate-dynamic-content"
1860
+ ],
1861
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1862
+ "lastUpdated": "2026-05-08"
1863
+ },
1864
+ {
1865
+ "id": "mobile-version-links",
1866
+ "name": "Mobile version missing links present on desktop",
1867
+ "severity": "warning",
1868
+ "category": "technical",
1869
+ "description": "For large websites with separate HTML on mobile and desktop versions, Google has noted that the discovery of new pages can be slower if the mobile version does not include all the links present on the desktop version. Since Google uses mobile-first indexing, missing links on the mobile version means those linked pages may be discovered and indexed more slowly.",
1870
+ "fixTemplate": "Audit your mobile HTML template to ensure all navigation links, internal links, and pagination links present in the desktop version are also present in the mobile version. Avoid hiding links in mobile-only CSS or JavaScript that Googlebot cannot access.",
1871
+ "enabled": true,
1872
+ "appliesTo": [
1873
+ "html",
1874
+ "jsx",
1875
+ "tsx",
1876
+ "vue",
1877
+ "svelte"
1878
+ ],
1879
+ "references": [
1880
+ "https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing"
1881
+ ],
1882
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1883
+ "lastUpdated": "2026-05-08"
1884
+ },
1885
+ {
1886
+ "id": "review-snippet-requires-comment",
1887
+ "name": "Review schema missing comment or author requirements",
1888
+ "severity": "info",
1889
+ "category": "schema",
1890
+ "description": "Google recommends implementing a review setup that only accepts ratings and reviews accompanied by both a review comment and the author's name. This approach helps users understand the context for a given rating and improves eligibility for review rich results. Additionally, avoid using multiple ways of indicating what is being reviewed in the same review or aggregate rating structured data block, as this creates ambiguity that can prevent Google from correctly interpreting your markup.",
1891
+ "fixTemplate": "In your review structured data, always include both reviewBody and author fields: {\"@type\":\"Review\",\"reviewBody\":\"Detailed review text here\",\"author\":{\"@type\":\"Person\",\"name\":\"Reviewer Name\"},\"reviewRating\":{\"@type\":\"Rating\",\"ratingValue\":\"5\"}}. Ensure only one method is used to indicate what is being reviewed.",
1892
+ "enabled": true,
1893
+ "appliesTo": [
1894
+ "html",
1895
+ "jsx",
1896
+ "tsx",
1897
+ "vue",
1898
+ "svelte"
1899
+ ],
1900
+ "references": [
1901
+ "https://developers.google.com/search/docs/appearance/structured-data/review-snippet"
1902
+ ],
1903
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1904
+ "lastUpdated": "2026-05-08"
1905
+ },
1906
+ {
1907
+ "id": "practice-problem-schema-deprecated",
1908
+ "name": "Practice problem structured data is deprecated",
1909
+ "severity": "warning",
1910
+ "category": "schema",
1911
+ "description": "The practice problem structured data type is no longer shown in Google Search results. Implementing this schema will have no effect on search appearance.",
1912
+ "fixTemplate": "Remove practice problem JSON-LD structured data from your pages. It will no longer produce rich results in Google Search.",
1913
+ "enabled": true,
1914
+ "appliesTo": [
1915
+ "html",
1916
+ "jsx",
1917
+ "tsx",
1918
+ "vue",
1919
+ "svelte"
1920
+ ],
1921
+ "references": [
1922
+ "https://developers.google.com/search/docs/appearance/structured-data/practice-problems"
1923
+ ],
1924
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1925
+ "lastUpdated": "2026-05-08",
1926
+ "check": {
1927
+ "type": "jsonld-has-type",
1928
+ "schemaType": "PracticeProblem"
1929
+ }
1930
+ },
1931
+ {
1932
+ "id": "special-announcement-schema-deprecated",
1933
+ "name": "Special announcement structured data is deprecated",
1934
+ "severity": "warning",
1935
+ "category": "schema",
1936
+ "description": "Google deprecated the special announcement structured data feature starting July 31, 2025. This schema type will no longer appear in Google Search results. Implementing it will have no effect on search appearance.",
1937
+ "fixTemplate": "Remove SpecialAnnouncement JSON-LD structured data from your pages. It will no longer produce rich results in Google Search as of July 31, 2025.",
1938
+ "enabled": true,
1939
+ "appliesTo": [
1940
+ "html",
1941
+ "jsx",
1942
+ "tsx",
1943
+ "vue",
1944
+ "svelte"
1945
+ ],
1946
+ "references": [
1947
+ "https://developers.google.com/search/docs/appearance/structured-data/special-announcements"
1948
+ ],
1949
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1950
+ "lastUpdated": "2026-05-08",
1951
+ "check": {
1952
+ "type": "jsonld-has-type",
1953
+ "schemaType": "SpecialAnnouncement"
1954
+ }
1955
+ },
1956
+ {
1957
+ "id": "missing-hreflang",
1958
+ "name": "Missing hreflang for multilingual/multiregional pages",
1959
+ "severity": "warning",
1960
+ "category": "technical",
1961
+ "description": "For pages that have alternate versions in different languages or for different regions, hreflang tags tell Google which version to serve to which users. Without hreflang, Google may serve the wrong language version to users, reducing click-through rates and user satisfaction. Important: hreflang alternate link elements must not be combined with certain other attributes that change their meaning to denote a different device or language version — doing so will cause Google to ignore the hreflang annotation for canonicalization purposes.",
1962
+ "fixTemplate": "Add hreflang link elements inside <head> for each language/region variant: <link rel=\"alternate\" hreflang=\"en\" href=\"https://yourdomain.com/en/page\" /> <link rel=\"alternate\" hreflang=\"fr\" href=\"https://yourdomain.com/fr/page\" /> <link rel=\"alternate\" hreflang=\"x-default\" href=\"https://yourdomain.com/page\" />. Do not add other attributes to these link elements that would change their meaning.",
1963
+ "enabled": true,
1964
+ "appliesTo": [
1965
+ "html",
1966
+ "jsx",
1967
+ "tsx",
1968
+ "vue",
1969
+ "svelte"
1970
+ ],
1971
+ "references": [
1972
+ "https://developers.google.com/search/docs/specialty/international/localization"
1973
+ ],
1974
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1975
+ "lastUpdated": "2026-05-08"
1976
+ },
1977
+ {
1978
+ "id": "sitemap-recommended",
1979
+ "name": "No sitemap detected",
1980
+ "severity": "info",
1981
+ "category": "technical",
1982
+ "description": "Sitemaps help Google discover and index all pages on your site, especially important for large sites, new sites, or sites with pages that are not well linked internally. Google recommends submitting a sitemap via Google Search Console.",
1983
+ "fixTemplate": "Create a sitemap.xml at the root of your domain (https://yourdomain.com/sitemap.xml) and submit it in Google Search Console. Reference it in your robots.txt: Sitemap: https://yourdomain.com/sitemap.xml",
1984
+ "enabled": true,
1985
+ "appliesTo": [
1986
+ "html"
1987
+ ],
1988
+ "references": [
1989
+ "https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview"
1990
+ ],
1991
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
1992
+ "lastUpdated": "2026-05-08"
1993
+ },
1994
+ {
1995
+ "id": "json-ld-recommended-format",
1996
+ "name": "Structured data not using recommended JSON-LD format",
1997
+ "severity": "info",
1998
+ "category": "schema",
1999
+ "description": "Google recommends JSON-LD as the preferred format for structured data because it is generally the easiest for website owners to implement and maintain. While Microdata and RDFa are also supported and equally valid, JSON-LD is the format used in all Google documentation examples and is the easiest to add without modifying existing HTML.",
2000
+ "fixTemplate": "Convert your Microdata or RDFa structured data to JSON-LD format: <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"{{TYPE}}\", ...}</script> placed inside <head> or <body>.",
2001
+ "enabled": true,
2002
+ "appliesTo": [
2003
+ "html",
2004
+ "jsx",
2005
+ "tsx",
2006
+ "vue",
2007
+ "svelte"
2008
+ ],
2009
+ "references": [
2010
+ "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data"
2011
+ ],
2012
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2013
+ "lastUpdated": "2026-05-08"
2014
+ },
2015
+ {
2016
+ "id": "read-more-deeplink",
2017
+ "name": "Content structure may not support 'read more' deep links",
2018
+ "severity": "info",
2019
+ "category": "meta",
2020
+ "description": "Google supports 'read more' deep links in search result snippets, which allow users to jump directly to relevant sections of a page. To increase the likelihood of your content appearing with a 'read more' deeplink in Google Search results, ensure your page content is well-structured with clear sections and headings that Google can identify as distinct entry points.",
2021
+ "fixTemplate": "Structure your page content with clear, descriptive headings (h2, h3) for each major section. Ensure sections have meaningful anchor IDs: <h2 id=\"section-name\">Section Title</h2>. This helps Google identify deep-linkable sections for 'read more' snippet features.",
2022
+ "enabled": true,
2023
+ "appliesTo": [
2024
+ "html",
2025
+ "jsx",
2026
+ "tsx",
2027
+ "vue",
2028
+ "svelte"
2029
+ ],
2030
+ "references": [
2031
+ "https://developers.google.com/search/docs/appearance/snippet"
2032
+ ],
2033
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2034
+ "lastUpdated": "2026-05-08"
2035
+ },
2036
+ {
2037
+ "id": "javascript-non-200-rendering",
2038
+ "name": "JavaScript may not execute on non-200 HTTP status pages",
2039
+ "severity": "warning",
2040
+ "category": "technical",
2041
+ "description": "While pages with a 200 HTTP status code are sent to Googlebot's rendering pipeline, this may not be the case for pages with non-200 status codes (e.g., 404, 301, 500). If your page relies on JavaScript to render critical content or meta tags and returns a non-200 status code, that JavaScript may not be executed by Googlebot, meaning the rendered content will not be seen.",
2042
+ "fixTemplate": "Ensure that pages returning non-200 HTTP status codes do not rely on JavaScript to render critical SEO signals (title, meta description, canonical, structured data, noindex). Place all critical signals in the static HTML response. Verify your server returns the correct HTTP status code for each page type.",
2043
+ "enabled": true,
2044
+ "appliesTo": [
2045
+ "html",
2046
+ "jsx",
2047
+ "tsx",
2048
+ "vue",
2049
+ "svelte"
2050
+ ],
2051
+ "references": [
2052
+ "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics"
2053
+ ],
2054
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2055
+ "lastUpdated": "2026-05-08"
2056
+ },
2057
+ {
2058
+ "id": "javascript-paywall-detection",
2059
+ "name": "JavaScript-based paywall hinders Google content classification",
2060
+ "severity": "warning",
2061
+ "category": "technical",
2062
+ "description": "Using JavaScript to implement a paywall makes it difficult for Google to automatically determine which content is paywalled and which is freely accessible. This can lead to incorrect classification of your content, potentially causing indexing issues or misrepresentation in search results. Google recommends using structured data (NewsArticle with isAccessibleForFree and hasPart) to clearly signal paywalled content.",
2063
+ "fixTemplate": "Implement paywall signaling using structured data instead of relying solely on JavaScript. Add JSON-LD: {\"@type\":\"NewsArticle\",\"isAccessibleForFree\":false,\"hasPart\":{\"@type\":\"WebPageElement\",\"isAccessibleForFree\":false,\"cssSelector\":\".paywall-content\"}}. Ensure the paywall boundary is clearly defined in both HTML structure and structured data.",
2064
+ "enabled": true,
2065
+ "appliesTo": [
2066
+ "jsx",
2067
+ "tsx",
2068
+ "vue",
2069
+ "svelte"
2070
+ ],
2071
+ "references": [
2072
+ "https://developers.google.com/search/docs/appearance/structured-data/paywalled-content"
2073
+ ],
2074
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2075
+ "lastUpdated": "2026-05-08"
2076
+ },
2077
+ {
2078
+ "id": "hreflang-no-combined-attributes",
2079
+ "name": "hreflang link element has conflicting attributes",
2080
+ "severity": "warning",
2081
+ "category": "technical",
2082
+ "description": "hreflang alternate link elements must not be combined with certain other attributes that change their meaning to denote a different device or language version. Adding such attributes causes Google to ignore the hreflang annotation for canonicalization purposes, breaking your international targeting signals.",
2083
+ "fixTemplate": "Review your hreflang link elements and remove any additional attributes that alter their semantic meaning. A valid hreflang element should only have rel=\"alternate\", hreflang=\"{{LANG_CODE}}\", and href=\"{{URL}}\": <link rel=\"alternate\" hreflang=\"en\" href=\"https://yourdomain.com/en/page\" />",
2084
+ "enabled": true,
2085
+ "appliesTo": [
2086
+ "html",
2087
+ "jsx",
2088
+ "tsx",
2089
+ "vue",
2090
+ "svelte"
2091
+ ],
2092
+ "references": [
2093
+ "https://developers.google.com/search/docs/specialty/international/localization"
2094
+ ],
2095
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2096
+ "lastUpdated": "2026-05-08"
2097
+ },
2098
+ {
2099
+ "id": "review-no-multiple-reviewed-entities",
2100
+ "name": "Review schema uses multiple ways to indicate reviewed entity",
2101
+ "severity": "warning",
2102
+ "category": "schema",
2103
+ "description": "Google has clarified that site owners should avoid using multiple ways of indicating what is being reviewed in review and aggregate rating structured data. Using multiple methods to specify the reviewed entity creates ambiguity and can prevent Google from correctly interpreting your review markup, reducing eligibility for review rich results.",
2104
+ "fixTemplate": "In your review or AggregateRating structured data, use only one method to indicate what is being reviewed. Choose either the itemReviewed property or nesting within the reviewed item's schema — do not use both simultaneously. Example: {\"@type\":\"AggregateRating\",\"itemReviewed\":{\"@type\":\"Product\",\"name\":\"Product Name\"},\"ratingValue\":\"4.5\",\"reviewCount\":\"100\"}",
2105
+ "enabled": true,
2106
+ "appliesTo": [
2107
+ "html",
2108
+ "jsx",
2109
+ "tsx",
2110
+ "vue",
2111
+ "svelte"
2112
+ ],
2113
+ "references": [
2114
+ "https://developers.google.com/search/docs/appearance/structured-data/review-snippet"
2115
+ ],
2116
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2117
+ "lastUpdated": "2026-05-08"
2118
+ },
2119
+ {
2120
+ "id": "robots-txt-unsupported-fields",
2121
+ "name": "robots.txt contains unsupported fields",
2122
+ "severity": "warning",
2123
+ "category": "technical",
2124
+ "description": "Google has clarified that fields not explicitly listed in its robots.txt documentation are not supported. Using unsupported fields in robots.txt will have no effect on Googlebot's crawling behavior and may cause confusion. Only use documented directives: User-agent, Allow, Disallow, Sitemap, and Crawl-delay (note: Crawl-delay is not supported by Google but is listed for reference).",
2125
+ "fixTemplate": "Review your robots.txt file and remove any directives not listed in Google's robots.txt specification. Supported Google directives are: User-agent, Allow, Disallow, and Sitemap. Reference: https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt",
2126
+ "enabled": true,
2127
+ "appliesTo": [
2128
+ "html"
2129
+ ],
2130
+ "references": [
2131
+ "https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt"
2132
+ ],
2133
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2134
+ "lastUpdated": "2026-05-08"
2135
+ },
2136
+ {
2137
+ "id": "merchant-shipping-policy-schema",
2138
+ "name": "Missing merchant shipping policy structured data",
2139
+ "severity": "info",
2140
+ "category": "schema",
2141
+ "description": "Google now supports merchant-level shipping policy markup in Search. Adding shipping policy structured data helps Google display accurate shipping information in merchant listings and product rich results, improving click-through rates for ecommerce pages.",
2142
+ "fixTemplate": "Add shipping policy structured data to your merchant or organization schema: {\"@type\":\"Organization\",\"shippingDetails\":{\"@type\":\"OfferShippingDetails\",\"shippingRate\":{\"@type\":\"MonetaryAmount\",\"value\":\"5.99\",\"currency\":\"USD\"},\"deliveryTime\":{\"@type\":\"ShippingDeliveryTime\",\"handlingTime\":{\"@type\":\"QuantitativeValue\",\"minValue\":0,\"maxValue\":1,\"unitCode\":\"DAY\"},\"transitTime\":{\"@type\":\"QuantitativeValue\",\"minValue\":3,\"maxValue\":5,\"unitCode\":\"DAY\"}}}}",
2143
+ "enabled": true,
2144
+ "appliesTo": [
2145
+ "html",
2146
+ "jsx",
2147
+ "tsx",
2148
+ "vue",
2149
+ "svelte"
2150
+ ],
2151
+ "references": [
2152
+ "https://developers.google.com/search/docs/appearance/structured-data/product"
2153
+ ],
2154
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2155
+ "lastUpdated": "2026-05-08"
2156
+ },
2157
+ {
2158
+ "id": "video-indexing-criteria",
2159
+ "name": "Video may not meet indexing criteria for video search results",
2160
+ "severity": "warning",
2161
+ "category": "schema",
2162
+ "description": "Videos must meet specific technical requirements and indexing criteria to appear in Google video search results. Key requirements include: the video must be accessible to Googlebot (not blocked by robots.txt or requiring login), a valid thumbnail image must be provided, the video must be the primary content of the page or clearly identified via structured data, and the video file itself must be crawlable. Sites hosting explicit videos must allow Googlebot to fetch video files or risk significant ranking drops in Video mode. VideoObject structured data now also accepts the duration property as another way to specify video duration.",
2163
+ "fixTemplate": "Add VideoObject structured data: <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"VideoObject\",\"name\":\"Video Title\",\"description\":\"Video description\",\"thumbnailUrl\":\"https://yourdomain.com/thumbnail.jpg\",\"uploadDate\":\"2026-01-01T00:00:00Z\",\"contentUrl\":\"https://yourdomain.com/video.mp4\",\"duration\":\"PT5M30S\"}</script>. Ensure Googlebot can access both the page and the video file. Verify thumbnail has at least 80% opaque pixels.",
2164
+ "enabled": true,
2165
+ "appliesTo": [
2166
+ "html",
2167
+ "jsx",
2168
+ "tsx",
2169
+ "vue",
2170
+ "svelte"
2171
+ ],
2172
+ "references": [
2173
+ "https://developers.google.com/search/docs/appearance/structured-data/video",
2174
+ "https://developers.google.com/search/docs/appearance/video"
2175
+ ],
2176
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2177
+ "lastUpdated": "2026-05-08"
2178
+ },
2179
+ {
2180
+ "id": "explicit-content-video-crawlable",
2181
+ "name": "Explicit video content blocked from Googlebot",
2182
+ "severity": "critical",
2183
+ "category": "technical",
2184
+ "description": "Google has updated its ranking algorithms to more strongly penalize sites that host explicit videos but do not allow Googlebot to fetch those video files. Sites that block Googlebot from accessing explicit video content may experience a significant drop in ranking, especially in Video mode. If you host explicit content, you must allow Googlebot to crawl the video files themselves.",
2185
+ "fixTemplate": "Review your robots.txt and server configuration to ensure Googlebot is not blocked from fetching video files on your site. If you host explicit content, add explicit permission in robots.txt: User-agent: Googlebot\nAllow: /videos/\nAlso ensure video files are not behind authentication or JavaScript-only rendering.",
2186
+ "enabled": true,
2187
+ "appliesTo": [
2188
+ "html"
2189
+ ],
2190
+ "references": [
2191
+ "https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt",
2192
+ "https://developers.google.com/search/docs/appearance/video"
2193
+ ],
2194
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2195
+ "lastUpdated": "2026-05-08"
2196
+ },
2197
+ {
2198
+ "id": "indexing-api-spam-detection",
2199
+ "name": "Indexing API usage subject to spam detection",
2200
+ "severity": "warning",
2201
+ "category": "technical",
2202
+ "description": "Google has clarified that submissions to the Indexing API are subject to spam detection. Attempts to exceed quotas may result in revoked API access. The default quota is intended for initial setup and testing only; additional approval is required for production usage and resource provisioning. Misuse of the Indexing API to submit spammy or low-quality URLs may result in penalties.",
2203
+ "fixTemplate": "Use the Indexing API only for eligible content types (currently job postings and livestream video structured data). Do not attempt to use it as a general-purpose indexing shortcut. Request additional quota through the official approval process if needed. Monitor your usage to stay within approved limits.",
2204
+ "enabled": true,
2205
+ "appliesTo": [
2206
+ "html"
2207
+ ],
2208
+ "references": [
2209
+ "https://developers.google.com/search/apis/indexing-api/v3/quickstart"
2210
+ ],
2211
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2212
+ "lastUpdated": "2026-05-08"
2213
+ },
2214
+ {
2215
+ "id": "avif-image-format-supported",
2216
+ "name": "Consider using AVIF image format for better compression",
2217
+ "severity": "info",
2218
+ "category": "images",
2219
+ "description": "Google Search now supports AVIF as an indexable image format. AVIF offers significantly better compression than JPEG and WebP at equivalent quality levels, which can improve page load times and Core Web Vitals scores. Using AVIF for images can reduce bandwidth usage and improve LCP scores.",
2220
+ "fixTemplate": "Convert images to AVIF format where browser support allows. Use the <picture> element to provide AVIF with WebP and JPEG fallbacks: <picture><source srcset=\"image.avif\" type=\"image/avif\" /><source srcset=\"image.webp\" type=\"image/webp\" /><img src=\"image.jpg\" alt=\"Description\" /></picture>",
2221
+ "enabled": true,
2222
+ "appliesTo": [
2223
+ "html",
2224
+ "jsx",
2225
+ "tsx",
2226
+ "vue",
2227
+ "svelte"
2228
+ ],
2229
+ "references": [
2230
+ "https://developers.google.com/search/docs/appearance/google-images"
2231
+ ],
2232
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2233
+ "lastUpdated": "2026-05-08"
2234
+ },
2235
+ {
2236
+ "id": "c2pa-metadata",
2237
+ "name": "Missing C2PA metadata for AI-generated or edited images",
2238
+ "severity": "info",
2239
+ "category": "images",
2240
+ "description": "Google Search now extracts C2PA (Coalition for Content Provenance and Authenticity) metadata from images for use in the 'About this image' feature. C2PA metadata provides provenance information about how an image was created or edited, including whether AI was used. Including C2PA metadata in images helps Google accurately represent image provenance to users and supports content authenticity signals. Google now also supports the compositeWithTrainedAlgorithmicMedia IPTC digital source type for AI-composite images.",
2241
+ "fixTemplate": "If your images are AI-generated or have been significantly edited with AI tools, embed C2PA metadata using a compatible tool or library. Ensure the IPTC digital source type is set appropriately (e.g., compositeWithTrainedAlgorithmicMedia for AI-composite images). This is especially important for news and editorial content.",
2242
+ "enabled": true,
2243
+ "appliesTo": [
2244
+ "html",
2245
+ "jsx",
2246
+ "tsx",
2247
+ "vue",
2248
+ "svelte"
2249
+ ],
2250
+ "references": [
2251
+ "https://developers.google.com/search/docs/appearance/google-images"
2252
+ ],
2253
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2254
+ "lastUpdated": "2026-05-08"
2255
+ },
2256
+ {
2257
+ "id": "ai-mode-search-console",
2258
+ "name": "AI Mode traffic now included in Search Console totals",
2259
+ "severity": "info",
2260
+ "category": "technical",
2261
+ "description": "Google has confirmed that AI Mode traffic now counts toward the overall search traffic totals in Search Console Performance reports. This means clicks, impressions, and position data from AI Mode interactions are included in your aggregate metrics. Site owners should be aware that changes in AI Mode traffic may affect their overall Search Console performance data.",
2262
+ "fixTemplate": "No code change required. Review your Search Console Performance reports with awareness that AI Mode traffic is now included in totals. Segment your data using the Search Type filter in Search Console to distinguish between different search experience types if needed.",
2263
+ "enabled": true,
2264
+ "appliesTo": [
2265
+ "html",
2266
+ "jsx",
2267
+ "tsx",
2268
+ "vue",
2269
+ "svelte"
2270
+ ],
2271
+ "references": [
2272
+ "https://developers.google.com/search/docs/appearance/ai-overviews"
2273
+ ],
2274
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2275
+ "lastUpdated": "2026-05-08"
2276
+ },
2277
+ {
2278
+ "id": "loyalty-program-schema",
2279
+ "name": "Missing loyalty program structured data for eligible merchants",
2280
+ "severity": "info",
2281
+ "category": "schema",
2282
+ "description": "Google supports loyalty program markup in Search for merchants in eligible regions (Australia, Brazil, Canada, France, Germany, Mexico, the UK, and the US), on both desktop and mobile. Loyalty program information must be defined separately from offer-level loyalty benefits (price and points). Shipping and returns loyalty benefits are not currently supported by Google.",
2283
+ "fixTemplate": "Add loyalty program structured data to your merchant schema. Define loyalty program information at the organization level, separate from offer-level pricing: {\"@type\":\"Organization\",\"memberOf\":{\"@type\":\"ProgramMembership\",\"name\":\"Your Loyalty Program\",\"url\":\"https://yourdomain.com/loyalty\"}}. Check Google's merchant documentation for the full property list.",
2284
+ "enabled": true,
2285
+ "appliesTo": [
2286
+ "html",
2287
+ "jsx",
2288
+ "tsx",
2289
+ "vue",
2290
+ "svelte"
2291
+ ],
2292
+ "references": [
2293
+ "https://developers.google.com/search/docs/appearance/structured-data/product"
2294
+ ],
2295
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2296
+ "lastUpdated": "2026-05-08"
2297
+ },
2298
+ {
2299
+ "id": "merchant-return-policy-schema",
2300
+ "name": "Missing merchant return policy structured data",
2301
+ "severity": "info",
2302
+ "category": "schema",
2303
+ "description": "Google supports merchant return policy markup in Search. Return policy structured data must be defined under MerchantReturnPolicy. Offer-level return policies only support a subset of organization-level return policies. Product-level return policy markup takes precedence over organization-level markup. If both structured data and Merchant Center return policy settings are used, Merchant Center takes precedence for products submitted in product feeds.",
2304
+ "fixTemplate": "Add return policy structured data: {\"@type\":\"MerchantReturnPolicy\",\"applicableCountry\":\"US\",\"returnPolicyCategory\":\"https://schema.org/MerchantReturnFiniteReturnWindow\",\"merchantReturnDays\":30,\"returnMethod\":\"https://schema.org/ReturnByMail\",\"returnFees\":\"https://schema.org/FreeReturn\"}. Place this under your Organization or Offer schema as appropriate.",
2305
+ "enabled": true,
2306
+ "appliesTo": [
2307
+ "html",
2308
+ "jsx",
2309
+ "tsx",
2310
+ "vue",
2311
+ "svelte"
2312
+ ],
2313
+ "references": [
2314
+ "https://developers.google.com/search/docs/appearance/structured-data/product"
2315
+ ],
2316
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2317
+ "lastUpdated": "2026-05-08"
2318
+ },
2319
+ {
2320
+ "id": "product-structured-data-single-product",
2321
+ "name": "Product structured data on non-single-product page",
2322
+ "severity": "warning",
2323
+ "category": "schema",
2324
+ "description": "Google's product rich results only support pages that focus on a single product, not category pages or pages listing multiple products. Adding Product structured data to category or listing pages will not produce rich results and may be flagged as a structured data issue in Search Console. Product variants with distinct URLs are supported as individual product pages.",
2325
+ "fixTemplate": "Only add Product structured data to pages that feature a single product. Remove Product schema from category pages, search results pages, or any page listing multiple products. For product variants, ensure each variant has its own distinct URL with its own Product schema.",
2326
+ "enabled": true,
2327
+ "appliesTo": [
2328
+ "html",
2329
+ "jsx",
2330
+ "tsx",
2331
+ "vue",
2332
+ "svelte"
2333
+ ],
2334
+ "references": [
2335
+ "https://developers.google.com/search/docs/appearance/structured-data/product"
2336
+ ],
2337
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2338
+ "lastUpdated": "2026-05-08"
2339
+ },
2340
+ {
2341
+ "id": "url-parameters-best-practice",
2342
+ "name": "URL parameters may create duplicate content",
2343
+ "severity": "warning",
2344
+ "category": "technical",
2345
+ "description": "URL parameters (query strings) can cause Google to crawl and index multiple versions of the same page, wasting crawl budget and diluting ranking signals. Common problematic parameters include session IDs, tracking parameters, and sorting/filtering parameters that do not change the primary content of the page. Use canonical tags to consolidate duplicate parameter-based URLs.",
2346
+ "fixTemplate": "For URLs with parameters that do not change page content (e.g., tracking params like ?utm_source=), add a canonical tag pointing to the clean URL: <link rel=\"canonical\" href=\"https://yourdomain.com/page\" />. For faceted navigation parameters, consider using robots.txt or noindex to prevent crawling of low-value parameter combinations.",
2347
+ "enabled": true,
2348
+ "appliesTo": [
2349
+ "html",
2350
+ "jsx",
2351
+ "tsx",
2352
+ "vue",
2353
+ "svelte"
2354
+ ],
2355
+ "references": [
2356
+ "https://developers.google.com/search/docs/crawling-indexing/url-structure"
2357
+ ],
2358
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2359
+ "lastUpdated": "2026-05-08"
2360
+ },
2361
+ {
2362
+ "id": "safe-search-explicit-tagging",
2363
+ "name": "Explicit content page missing SafeSearch rating tag",
2364
+ "severity": "warning",
2365
+ "category": "technical",
2366
+ "description": "Pages containing explicit adult content should use the rating=adult meta tag to help Google's SafeSearch system correctly classify the content. Without this tag, Google's algorithms attempt to automatically detect explicit content, which may result in incorrect classification. Explicit content should also be grouped in a separate location on the site where possible. Sites must also moderate content and eliminate CSAM and non-consensual content to comply with Google's policies.",
2367
+ "fixTemplate": "Add the SafeSearch rating meta tag to explicit content pages: <meta name=\"rating\" content=\"adult\" /> inside <head>. Additionally, consider organizing explicit content under a dedicated subdirectory (e.g., /adult/) to help Google's algorithms correctly identify and classify the content.",
2368
+ "enabled": true,
2369
+ "appliesTo": [
2370
+ "html",
2371
+ "jsx",
2372
+ "tsx",
2373
+ "vue",
2374
+ "svelte"
2375
+ ],
2376
+ "references": [
2377
+ "https://developers.google.com/search/docs/crawling-indexing/safesearch"
2378
+ ],
2379
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2380
+ "lastUpdated": "2026-05-08"
2381
+ },
2382
+ {
2383
+ "id": "organization-markup",
2384
+ "name": "Missing Organization structured data",
2385
+ "severity": "info",
2386
+ "category": "schema",
2387
+ "description": "Organization markup helps Google understand your business and can influence which logo is shown in Google Search knowledge panels and search results. Some properties are used visibly (such as logo), while others are used behind the scenes for entity disambiguation. Organization markup can include business identifiers, contact information, legal name, and social profile links. The organization markup documentation has been updated to clarify that some properties influence which logo is shown while others are used behind the scenes.",
2388
+ "fixTemplate": "Add Organization structured data to your homepage or site-wide template: <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"Your Company Name\",\"url\":\"https://yourdomain.com\",\"logo\":\"https://yourdomain.com/logo.png\",\"sameAs\":[\"https://www.linkedin.com/company/yourcompany\",\"https://twitter.com/yourcompany\"]}</script>",
2389
+ "enabled": true,
2390
+ "appliesTo": [
2391
+ "html",
2392
+ "jsx",
2393
+ "tsx",
2394
+ "vue",
2395
+ "svelte"
2396
+ ],
2397
+ "references": [
2398
+ "https://developers.google.com/search/docs/appearance/structured-data/organization"
2399
+ ],
2400
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2401
+ "lastUpdated": "2026-05-08"
2402
+ },
2403
+ {
2404
+ "id": "site-name-schema",
2405
+ "name": "Missing WebSite structured data for site name",
2406
+ "severity": "info",
2407
+ "category": "schema",
2408
+ "description": "Google uses WebSite structured data to determine the preferred site name to display in search results. Site names are supported at the domain and subdomain level (not subdirectory level) and are now available in all languages where Google Search is available. Without WebSite schema, Google will attempt to determine the site name automatically from page content, which may not match your preferred name. A previous issue preventing site names from propagating to internal pages has been resolved.",
2409
+ "fixTemplate": "Add WebSite structured data to your homepage: <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Your Site Name\",\"url\":\"https://yourdomain.com\"}</script>. This should be placed on the homepage only.",
2410
+ "enabled": true,
2411
+ "appliesTo": [
2412
+ "html",
2413
+ "jsx",
2414
+ "tsx",
2415
+ "vue",
2416
+ "svelte"
2417
+ ],
2418
+ "references": [
2419
+ "https://developers.google.com/search/docs/appearance/site-names"
2420
+ ],
2421
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2422
+ "lastUpdated": "2026-05-08"
2423
+ },
2424
+ {
2425
+ "id": "preferred-sources-feature",
2426
+ "name": "Missing preferred sources markup or configuration",
2427
+ "severity": "info",
2428
+ "category": "technical",
2429
+ "description": "Google's preferred sources feature is now available in all languages where Google Search is available, and has been expanded to also appear in AI Overviews and AI Mode. This feature allows publishers to help their audience find their site as a preferred source in Google Search, AI Overviews, and AI Mode. Publishers can now implement a custom, interactive button to guide their audience to set them as a preferred source, ensuring a seamless experience where users are brought right back to where they left off. Publishers should ensure their site is properly configured to take advantage of this feature, which can increase visibility and direct traffic from users who prefer specific sources across all Google Search surfaces.",
2430
+ "fixTemplate": "Review Google's preferred sources documentation to understand eligibility and configuration requirements. Implement the new custom interactive button to guide your audience to set your site as a preferred source — instructions are available in the preferred sources documentation. Ensure your site's identity signals (Organization schema, site name schema, canonical URLs) are correctly implemented to help Google identify your site as a preferred source for relevant queries across Search, AI Overviews, and AI Mode. Download and use the updated translated button assets available in the preferred sources documentation.",
2431
+ "enabled": true,
2432
+ "appliesTo": [
2433
+ "html",
2434
+ "jsx",
2435
+ "tsx",
2436
+ "vue",
2437
+ "svelte"
2438
+ ],
2439
+ "references": [
2440
+ "https://developers.google.com/search/docs/appearance/preferred-sources",
2441
+ "https://developers.google.com/search/docs/appearance/ai-features",
2442
+ "https://developers.google.com/search/docs/appearance/ai-overviews"
2443
+ ],
2444
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-29)",
2445
+ "lastUpdated": "2026-08-29"
2446
+ },
2447
+ {
2448
+ "id": "event-structured-data-requirements",
2449
+ "name": "Event structured data on ineligible event page",
2450
+ "severity": "warning",
2451
+ "category": "schema",
2452
+ "description": "To be eligible for the event experience on Google, events must be bookable by the general public and held at a physical location. Online-only events and events that are not publicly bookable are not eligible for the event rich result experience. Adding Event structured data to ineligible events will not produce rich results.",
2453
+ "fixTemplate": "Only add Event structured data to events that are (1) bookable by the general public and (2) held at a physical location. Ensure your Event schema includes a valid location property with a Place type: {\"@type\":\"Event\",\"name\":\"Event Name\",\"startDate\":\"2026-06-01T10:00\",\"location\":{\"@type\":\"Place\",\"name\":\"Venue Name\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"123 Main St\",\"addressLocality\":\"City\",\"addressCountry\":\"US\"}}}",
2454
+ "enabled": true,
2455
+ "appliesTo": [
2456
+ "html",
2457
+ "jsx",
2458
+ "tsx",
2459
+ "vue",
2460
+ "svelte"
2461
+ ],
2462
+ "references": [
2463
+ "https://developers.google.com/search/docs/appearance/structured-data/event"
2464
+ ],
2465
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2466
+ "lastUpdated": "2026-05-08"
2467
+ },
2468
+ {
2469
+ "id": "dataset-schema-phased-out",
2470
+ "name": "Dataset structured data is being phased out from Google Search",
2471
+ "severity": "warning",
2472
+ "category": "schema",
2473
+ "description": "As part of Google's ongoing efforts to simplify the search results page, the Dataset structured data type is being phased out from Google Search results. Implementing Dataset schema will have diminishing effect on search appearance in Google Search. Note: Dataset structured data may still be used by other Google products such as Google Dataset Search.",
2474
+ "fixTemplate": "Be aware that Dataset structured data will no longer produce rich results in Google Search. You may leave existing Dataset schema in place for use by other search engines and Google Dataset Search, but do not prioritize implementing it for Google Search rich result purposes.",
2475
+ "enabled": true,
2476
+ "appliesTo": [
2477
+ "html",
2478
+ "jsx",
2479
+ "tsx",
2480
+ "vue",
2481
+ "svelte"
2482
+ ],
2483
+ "references": [
2484
+ "https://developers.google.com/search/docs/appearance/structured-data/dataset"
2485
+ ],
2486
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates",
2487
+ "lastUpdated": "2026-05-08",
2488
+ "check": {
2489
+ "type": "jsonld-has-type",
2490
+ "schemaType": "Dataset"
2491
+ }
2492
+ },
2493
+ {
2494
+ "id": "generative-ai-optimization",
2495
+ "name": "Content not optimized for generative AI Search features",
2496
+ "severity": "info",
2497
+ "category": "meta",
2498
+ "description": "Google has published an official guide on optimizing content for generative AI features in Search (AI Overviews, AI Mode, etc.). Key guidance includes: (1) Provide non-commodity content with a unique point of view — first-hand reviews and expert takes outperform summaries of existing content; commodity content (e.g., generic listicles) adds little unique value. (2) Standard SEO best practices remain the foundation — generative AI features use RAG (Retrieval-Augmented Generation) grounded in Google's core Search ranking systems, so pages must be indexed and eligible to appear in Search with a snippet. In addition, a site must be included in Search generative AI features in Search Console to be eligible for display in generative AI features. (3) Add high-quality images and video where relevant — generative AI features can surface images and video, creating additional visibility opportunities beyond web page links. (4) Avoid creating content primarily to target fanout queries or every variation of a search — doing so to manipulate rankings violates Google's scaled content abuse spam policy. (5) Semantic HTML: it is not required to have perfectly semantic HTML, but using semantic HTML is generally a good idea as it helps screen readers and other users parse and navigate pages more easily. (6) Good page experience matters: ensure your site displays well across all devices, reduces latency, and makes it easy for people to distinguish main content from other elements. (7) Local business and ecommerce: use Merchant Center feeds and Google Business Profiles to help products and services appear in AI responses and other Google Search results. (8) Myth-busting: you do NOT need to create llms.txt files, Markdown files, or other AI-specific machine-readable files — Google may crawl them but treats them no differently. You do NOT need to chunk content into small pieces. You do NOT need to rewrite content in a specific style for AI. You do NOT need to seek inauthentic mentions. You do NOT need to over-invest in structured data specifically for AI features (structured data is still recommended for rich results generally). (9) Agentic experiences: browser agents may access your site by analyzing visual renderings, DOM structure, and the accessibility tree — review Google's agent-friendly website best practices if relevant to your business. The Universal Commerce Protocol (UCP) is an emerging standard for Search agents. (10) Spam policies apply to generative AI responses — content violating spam policies may be excluded from AI features. (11) Measure AI feature visibility using the Generative AI performance report in Search Console.",
2499
+ "fixTemplate": "Review Google's official AI optimization guide at https://developers.google.com/search/docs/fundamentals/ai-optimization-guide. Focus on: (1) creating non-commodity, uniquely valuable content based on first-hand expertise; (2) ensuring your structured data, meta tags, canonical tags, and page signals are correctly implemented per standard SEO best practices; (3) providing rich images and video content with proper alt text and structured data; (4) ensuring pages are indexed and eligible to appear in Google Search with a snippet (no nosnippet directive); (5) verifying your site is included in Search generative AI features in Search Console; (6) using semantic HTML where possible for human readability and accessibility; (7) ensuring good page experience across all devices; (8) using Merchant Center feeds and Google Business Profiles for local and ecommerce content; (9) avoiding scaled content abuse tactics such as creating large volumes of pages targeting fanout query variations; (10) monitoring AI feature performance via the Generative AI performance report in Search Console. Do not invest time in llms.txt files, content chunking, or other AI-specific tactics not supported by Google's documentation.",
2500
+ "enabled": true,
2501
+ "appliesTo": [
2502
+ "html",
2503
+ "jsx",
2504
+ "tsx",
2505
+ "vue",
2506
+ "svelte"
2507
+ ],
2508
+ "references": [
2509
+ "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
2510
+ "https://developers.google.com/search/docs/appearance/ai-features",
2511
+ "https://developers.google.com/search/docs/essentials/spam-policies"
2512
+ ],
2513
+ "source": "Google AI Optimization Guide — https://developers.google.com/search/docs/fundamentals/ai-optimization-guide and Google AI Features in Search — https://developers.google.com/search/docs/appearance/ai-features (scraped 2026-08-20)",
2514
+ "lastUpdated": "2026-08-20"
2515
+ },
2516
+ {
2517
+ "id": "spam-policies-apply-to-ai-responses",
2518
+ "name": "Spam policies apply to generative AI Search responses",
2519
+ "severity": "warning",
2520
+ "category": "technical",
2521
+ "description": "Google has explicitly clarified that its spam policies apply to all of Google Search, including generative AI responses such as AI Overviews and AI Mode. Content that violates Google's spam policies — including cloaking, doorway pages, scaled content abuse, site reputation abuse, and other tactics — may be excluded from or penalized in generative AI features, not just traditional search results. This means spam policy compliance is now doubly important as it affects both organic rankings and AI feature inclusion.",
2522
+ "fixTemplate": "Audit your site against Google's spam policies at https://developers.google.com/search/docs/essentials/spam-policies. Ensure your content does not use cloaking, doorway pages, scaled content abuse, site reputation abuse, or other prohibited tactics. Compliance is required for both traditional search results and generative AI features.",
2523
+ "enabled": true,
2524
+ "appliesTo": [
2525
+ "html",
2526
+ "jsx",
2527
+ "tsx",
2528
+ "vue",
2529
+ "svelte"
2530
+ ],
2531
+ "references": [
2532
+ "https://developers.google.com/search/docs/essentials/spam-policies",
2533
+ "https://developers.google.com/search/docs/appearance/ai-overviews"
2534
+ ],
2535
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-19)",
2536
+ "lastUpdated": "2026-05-19"
2537
+ },
2538
+ {
2539
+ "id": "follow-feature-removed",
2540
+ "name": "Google Discover Follow feature no longer available",
2541
+ "severity": "info",
2542
+ "category": "technical",
2543
+ "description": "The Follow feature in Google Discover is no longer shown. Google has removed guidance on the Follow feature from its Discover documentation. If you previously implemented RSS feed best practices specifically for the Follow feature (e.g., descriptive feed titles, single consolidated feed), those practices remain good general RSS hygiene but will no longer affect Follow feature eligibility since the feature no longer exists.",
2544
+ "fixTemplate": "No immediate action required. If you have RSS feeds configured specifically for the Follow feature, you may leave them in place as they serve general syndication purposes. Remove any Follow-specific implementation guidance from your internal documentation to avoid confusion.",
2545
+ "enabled": true,
2546
+ "appliesTo": [
2547
+ "html",
2548
+ "jsx",
2549
+ "tsx",
2550
+ "vue",
2551
+ "svelte"
2552
+ ],
2553
+ "references": [
2554
+ "https://developers.google.com/search/docs/appearance/google-discover"
2555
+ ],
2556
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-19)",
2557
+ "lastUpdated": "2026-05-19",
2558
+ "check": {
2559
+ "type": "raw-match",
2560
+ "pattern": "application\\/(rss|atom)\\+xml"
2561
+ }
2562
+ },
2563
+ {
2564
+ "id": "sitelinks-searchbox-removed",
2565
+ "name": "Sitelinks search box no longer available in Google Search",
2566
+ "severity": "info",
2567
+ "category": "schema",
2568
+ "description": "The sitelinks search box feature is no longer available in Google Search. The nositelinkssearchbox robots meta tag is therefore no longer needed. Any SearchAction structured data implemented specifically to enable the sitelinks search box will have no effect on search appearance. Google has removed the sitelinks search box documentation.",
2569
+ "fixTemplate": "Remove or stop adding SearchAction structured data that was implemented specifically for the sitelinks search box feature. You may also remove any nositelinkssearchbox robots meta tags as they are no longer needed. Existing SearchAction markup will not cause harm but will have no effect on Google Search.",
2570
+ "enabled": true,
2571
+ "appliesTo": [
2572
+ "html",
2573
+ "jsx",
2574
+ "tsx",
2575
+ "vue",
2576
+ "svelte"
2577
+ ],
2578
+ "references": [
2579
+ "https://developers.google.com/search/docs/appearance/structured-data/sitelinks-searchbox"
2580
+ ],
2581
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-19)",
2582
+ "lastUpdated": "2026-05-19",
2583
+ "check": {
2584
+ "type": "jsonld-has-type",
2585
+ "schemaType": "SearchAction"
2586
+ }
2587
+ },
2588
+ {
2589
+ "id": "googlebot-file-size-limits",
2590
+ "name": "Page or resource may exceed Googlebot file size limits",
2591
+ "severity": "warning",
2592
+ "category": "technical",
2593
+ "description": "Googlebot has documented file size limits for the pages it fetches. Pages or subresources (JavaScript, CSS) that exceed these limits may not be fully crawled or rendered by Googlebot, potentially causing critical SEO signals (structured data, meta tags, content) to be missed. The 15MB fetch size limit applies to the initial HTML fetch as well as individual subresources referenced in the HTML, particularly JavaScript and CSS files.",
2594
+ "fixTemplate": "Audit your page HTML size and the size of critical JavaScript and CSS files. Ensure no individual resource exceeds 15MB. Use code splitting, lazy loading, and minification to reduce resource sizes. Verify using Google Search Console's URL Inspection tool that Googlebot can fully render your pages.",
2595
+ "enabled": true,
2596
+ "appliesTo": [
2597
+ "html",
2598
+ "jsx",
2599
+ "tsx",
2600
+ "vue",
2601
+ "svelte"
2602
+ ],
2603
+ "references": [
2604
+ "https://developers.google.com/search/docs/crawling-indexing/googlebot"
2605
+ ],
2606
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-19)",
2607
+ "lastUpdated": "2026-05-19"
2608
+ },
2609
+ {
2610
+ "id": "recipe-thumbnail-property",
2611
+ "name": "Recipe thumbnail property used for non-recipe image selection",
2612
+ "severity": "info",
2613
+ "category": "schema",
2614
+ "description": "Google has clarified that the thumbnail property in Recipe structured data is only used for recipe rich results, not for selecting text result images. If you want to influence which image Google uses for text search results or Discover thumbnails for recipe pages, use og:image or the image property in your structured data instead of relying on the thumbnail property.",
2615
+ "fixTemplate": "For recipe pages, use the image property (not thumbnail) in your Recipe JSON-LD to specify the preferred image for text search results: {\"@type\":\"Recipe\",\"image\":\"https://yourdomain.com/recipe-image.jpg\", ...}. Also add <meta property=\"og:image\" content=\"https://yourdomain.com/recipe-image.jpg\" /> for Discover thumbnail selection.",
2616
+ "enabled": true,
2617
+ "appliesTo": [
2618
+ "html",
2619
+ "jsx",
2620
+ "tsx",
2621
+ "vue",
2622
+ "svelte"
2623
+ ],
2624
+ "references": [
2625
+ "https://developers.google.com/search/docs/appearance/structured-data/recipe"
2626
+ ],
2627
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-19)",
2628
+ "lastUpdated": "2026-05-19"
2629
+ },
2630
+ {
2631
+ "id": "core-updates-continuous",
2632
+ "name": "Site not prepared for continuous Google core updates",
2633
+ "severity": "info",
2634
+ "category": "technical",
2635
+ "description": "Google has clarified that it continuously makes updates to its search algorithms, including smaller core updates in addition to major named core updates. Site owners that make content improvements can see a rise in position in Google Search results without having to wait for the next major core update. This means ongoing content quality improvements have a more immediate impact than previously understood, and sites should treat SEO as a continuous process rather than waiting for major update cycles.",
2636
+ "fixTemplate": "No specific code change required. Treat content quality improvements as an ongoing process rather than waiting for major Google core update cycles. Monitor Google Search Console performance data regularly and make incremental improvements to content quality, E-E-A-T signals, and technical SEO. Improvements may be reflected in rankings sooner than expected.",
2637
+ "enabled": true,
2638
+ "appliesTo": [
2639
+ "html",
2640
+ "jsx",
2641
+ "tsx",
2642
+ "vue",
2643
+ "svelte"
2644
+ ],
2645
+ "references": [
2646
+ "https://developers.google.com/search/docs/appearance/core-updates"
2647
+ ],
2648
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-19)",
2649
+ "lastUpdated": "2026-05-19"
2650
+ },
2651
+ {
2652
+ "id": "south-africa-carousel-structured-data",
2653
+ "name": "South Africa carousel structured data supports additional query types",
2654
+ "severity": "info",
2655
+ "category": "schema",
2656
+ "description": "Google's structured data carousels (beta) feature in South Africa now supports additional query types including food delivery, car hire, and bus booking, in addition to previously supported types. If you operate a site in South Africa in these verticals, implementing the carousel structured data markup may make your content eligible for carousel rich results in Google Search.",
2657
+ "fixTemplate": "If your site operates in South Africa and covers food delivery, car hire, or bus booking verticals, review Google's structured data carousels (beta) documentation to implement the appropriate carousel markup. The markup must be placed on summary pages that link out to detail pages on your website.",
2658
+ "enabled": true,
2659
+ "appliesTo": [
2660
+ "html",
2661
+ "jsx",
2662
+ "tsx",
2663
+ "vue",
2664
+ "svelte"
2665
+ ],
2666
+ "references": [
2667
+ "https://developers.google.com/search/docs/appearance/structured-data/carousels"
2668
+ ],
2669
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-05-19)",
2670
+ "lastUpdated": "2026-05-19"
2671
+ },
2672
+ {
2673
+ "id": "llms-txt-not-required",
2674
+ "name": "llms.txt and AI-specific markup files not required",
2675
+ "severity": "info",
2676
+ "category": "technical",
2677
+ "description": "Google has explicitly clarified that creating llms.txt files, Markdown files, or any other special machine-readable files or markup specifically for generative AI search is not required and confers no special treatment. Google may discover, crawl, and index such files as it would any other file on a website, but they are not treated in a special way for AI feature inclusion. Similarly, there is no requirement to 'chunk' content into smaller pieces for AI systems — Google's systems can understand the nuance of multiple topics on a page and show the relevant piece to users. Site owners should not invest time in creating these files as an AI optimization tactic.",
2678
+ "fixTemplate": "Do not create llms.txt or other AI-specific markup files as an SEO tactic. If you have already created such files, they will not cause harm but will have no special effect on your visibility in Google's generative AI features. Focus on standard SEO best practices instead.",
2679
+ "enabled": true,
2680
+ "appliesTo": [
2681
+ "html",
2682
+ "jsx",
2683
+ "tsx",
2684
+ "vue",
2685
+ "svelte"
2686
+ ],
2687
+ "references": [
2688
+ "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide"
2689
+ ],
2690
+ "source": "Google AI Optimization Guide — https://developers.google.com/search/docs/fundamentals/ai-optimization-guide (scraped 2026-05-24)",
2691
+ "lastUpdated": "2026-05-24",
2692
+ "check": {
2693
+ "type": "raw-match",
2694
+ "pattern": "llms\\.txt"
2695
+ }
2696
+ },
2697
+ {
2698
+ "id": "ai-features-snippet-eligibility",
2699
+ "name": "Page not eligible for AI features due to snippet, indexing, or Search Console requirements",
2700
+ "severity": "critical",
2701
+ "category": "technical",
2702
+ "description": "To be eligible to appear as a supporting link in Google AI Overviews or AI Mode, a page must meet three conditions: (1) it must be indexed by Google, (2) it must be eligible to be shown in Google Search with a snippet, and (3) the site must be included in Search generative AI features in Search Console. Pages that are noindexed, blocked from crawling via robots.txt, or that have snippet preview controls set to 'nosnippet' will not appear in AI features. There are no additional technical requirements beyond the standard Google Search technical requirements. Ensuring crawling is allowed in robots.txt and by any CDN or hosting infrastructure, making content findable through internal linking and sitemaps, ensuring important content is available in textual form, and keeping information up-to-date are all worthwhile practices. If you apply a preview control (e.g., nosnippet) and still see your content appearing in AI features, verify the control is correct and visible to Googlebot using the URL Inspection tool, then allow time for Google to recrawl and process the change — crawling can take several days to several months.",
2703
+ "fixTemplate": "Verify your page meets all standard Google Search technical requirements: (1) confirm the page is not blocked by robots.txt — check with Google Search Console's robots.txt tester; (2) confirm no noindex meta tag or X-Robots-Tag header is present; (3) confirm no 'nosnippet' robots directive is set, as this will prevent the page from appearing in AI features; (4) ensure the page returns a 200 HTTP status code; (5) verify your site is included in Search generative AI features in Search Console. Use Google Search Console URL Inspection to verify indexing status. If you have applied a preview control and still see content in AI features, use the URL Inspection tool to confirm Googlebot received the correct HTML, then allow several days to months for recrawling.",
2704
+ "enabled": true,
2705
+ "appliesTo": [
2706
+ "html",
2707
+ "jsx",
2708
+ "tsx",
2709
+ "vue",
2710
+ "svelte"
2711
+ ],
2712
+ "references": [
2713
+ "https://developers.google.com/search/docs/appearance/ai-features",
2714
+ "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
2715
+ "https://developers.google.com/search/docs/crawling-indexing/block-indexing"
2716
+ ],
2717
+ "source": "Google AI Features in Search — https://developers.google.com/search/docs/appearance/ai-features (scraped 2026-08-20)",
2718
+ "lastUpdated": "2026-08-20",
2719
+ "check": {
2720
+ "type": "field-contains",
2721
+ "field": "metaRobots",
2722
+ "value": "nosnippet"
2723
+ }
2724
+ },
2725
+ {
2726
+ "id": "agent-friendly-website",
2727
+ "name": "Website not optimized for AI browser agents",
2728
+ "severity": "info",
2729
+ "category": "technical",
2730
+ "description": "Google has introduced guidance on preparing websites for AI browser agents, which are autonomous systems that can perform tasks on behalf of users such as booking reservations or comparing product specifications. Browser agents may access websites by analyzing visual renderings (screenshots), inspecting the DOM structure, and interpreting the accessibility tree. Emerging protocols such as the Universal Commerce Protocol (UCP) are being developed to allow Search agents to perform more complex tasks. While this is an emerging area and not yet a ranking factor, sites that are well-structured for agent access may benefit as agentic search experiences mature.",
2731
+ "fixTemplate": "Review Google's agent-friendly website best practices guide. Key considerations include: (1) ensure your DOM structure is clean and semantically meaningful so agents can interpret page structure; (2) ensure your accessibility tree is well-formed (proper ARIA labels, roles, and landmarks) as agents use it to understand interactive elements; (3) ensure critical actions (e.g., booking, purchasing) are accessible without JavaScript-only interactions where possible; (4) review the Universal Commerce Protocol (UCP) documentation as it becomes available for ecommerce and booking use cases.",
2732
+ "enabled": true,
2733
+ "appliesTo": [
2734
+ "html",
2735
+ "jsx",
2736
+ "tsx",
2737
+ "vue",
2738
+ "svelte"
2739
+ ],
2740
+ "references": [
2741
+ "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
2742
+ "https://developers.google.com/search/docs/appearance/ai-features"
2743
+ ],
2744
+ "source": "Google AI Optimization Guide — https://developers.google.com/search/docs/fundamentals/ai-optimization-guide (scraped 2026-05-24)",
2745
+ "lastUpdated": "2026-05-24"
2746
+ },
2747
+ {
2748
+ "id": "bing-ai-performance-citation-eligibility",
2749
+ "name": "Page not optimized for Bing AI citation visibility",
2750
+ "severity": "info",
2751
+ "category": "technical",
2752
+ "description": "Bing has launched 'AI Performance' in Bing Webmaster Tools (now in public preview), which shows when your site's URLs are cited in AI-generated answers across Microsoft Copilot, AI-generated summaries in Bing, and select partner integrations. To be eligible for citation in Bing AI-generated answers, pages must be indexed by Bing and eligible to appear in Bing Search with a snippet. Pages blocked by robots.txt, carrying noindex directives, or carrying nosnippet directives will not be cited in Bing AI features. Site owners should monitor citation activity and URL-level citation data via Bing Webmaster Tools to understand their visibility in AI-generated answers. Standard Bing webmaster best practices — clean crawlable HTML, descriptive titles and meta descriptions, structured data, and fast page load — remain the foundation for AI citation eligibility.",
2753
+ "fixTemplate": "Verify your pages meet Bing's standard indexing and snippet eligibility requirements: (1) confirm pages are not blocked by robots.txt; (2) confirm no noindex or nosnippet meta tags or X-Robots-Tag headers are present; (3) ensure pages return 200 HTTP status codes; (4) submit your sitemap in Bing Webmaster Tools; (5) monitor AI citation performance via the AI Performance report in Bing Webmaster Tools at https://www.bing.com/webmasters.",
2754
+ "enabled": true,
2755
+ "appliesTo": [
2756
+ "html",
2757
+ "jsx",
2758
+ "tsx",
2759
+ "vue",
2760
+ "svelte"
2761
+ ],
2762
+ "references": [
2763
+ "https://blogs.bing.com/webmaster",
2764
+ "https://www.bing.com/webmasters/help/webmaster-guidelines-30fba23a"
2765
+ ],
2766
+ "source": "Bing Webmaster Blog — https://blogs.bing.com/webmaster (scraped 2026-05-28)",
2767
+ "lastUpdated": "2026-05-28"
2768
+ },
2769
+ {
2770
+ "id": "preferred-sources-ai-mode",
2771
+ "name": "Preferred sources not configured for AI Mode and AI Overviews",
2772
+ "severity": "info",
2773
+ "category": "technical",
2774
+ "description": "Google has updated the preferred sources feature to now be available in AI Overviews and AI Mode, in addition to standard Google Search. Publishers who have configured preferred sources can now benefit from increased visibility in AI-generated search experiences. To take advantage of this, sites must meet the eligibility requirements for the preferred sources feature and ensure their identity signals (Organization schema, site name schema, canonical URLs) are correctly implemented.",
2775
+ "fixTemplate": "Review Google's preferred sources documentation to understand eligibility and configuration requirements for AI Overviews and AI Mode. Ensure your site's identity signals are correctly implemented: Organization schema, WebSite schema with site name, and consistent canonical URLs. Download and use the updated translated button assets if applicable.",
2776
+ "enabled": true,
2777
+ "appliesTo": [
2778
+ "html",
2779
+ "jsx",
2780
+ "tsx",
2781
+ "vue",
2782
+ "svelte"
2783
+ ],
2784
+ "references": [
2785
+ "https://developers.google.com/search/docs/appearance/preferred-sources",
2786
+ "https://developers.google.com/search/docs/appearance/ai-features"
2787
+ ],
2788
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09)",
2789
+ "lastUpdated": "2026-06-09"
2790
+ },
2791
+ {
2792
+ "id": "has-adult-consideration-schema",
2793
+ "name": "Missing hasAdultConsideration property on adult merchant listings",
2794
+ "severity": "info",
2795
+ "category": "schema",
2796
+ "description": "Google has added support for the hasAdultConsideration property in merchant listing structured data, bringing parity with the Merchant Center feed specification. This property should be used on product or offer pages that contain adult content to help Google correctly classify and filter the content in shopping experiences. Without this property, Google's algorithms must attempt to automatically detect adult content in merchant listings, which may result in incorrect classification.",
2797
+ "fixTemplate": "Add the hasAdultConsideration property to your Product or Offer structured data for adult content listings: {\"@type\":\"Product\",\"name\":\"Product Name\",\"hasAdultConsideration\":true, ...}. This brings your structured data markup into parity with the Merchant Center feed specification for adult products.",
2798
+ "enabled": true,
2799
+ "appliesTo": [
2800
+ "html",
2801
+ "jsx",
2802
+ "tsx",
2803
+ "vue",
2804
+ "svelte"
2805
+ ],
2806
+ "references": [
2807
+ "https://developers.google.com/search/docs/appearance/structured-data/product"
2808
+ ],
2809
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09)",
2810
+ "lastUpdated": "2026-06-09"
2811
+ },
2812
+ {
2813
+ "id": "third-party-seo-tools-guidance",
2814
+ "name": "Third-party SEO tool recommendations not critically evaluated",
2815
+ "severity": "info",
2816
+ "category": "technical",
2817
+ "description": "Google has published new guidance on evaluating third-party SEO tools, services, and advice, including important considerations when assessing recommendations from SEO tools and consultants. Key points include: (1) not all SEO tool recommendations reflect Google's actual ranking signals or guidelines; (2) site owners should cross-reference tool recommendations against official Google Search Central documentation; (3) some SEO advice may be outdated, incorrect, or based on correlation rather than causation; (4) Google's own documentation and Search Console data should be the primary reference for SEO decisions. The guidance has been added to the page on evaluating SEO recommendations and tools.",
2818
+ "fixTemplate": "When evaluating SEO tool recommendations: (1) cross-reference all recommendations against official Google Search Central documentation at https://developers.google.com/search/docs; (2) use Google Search Console as the primary source of truth for your site's performance data; (3) be skeptical of recommendations that cannot be traced to official Google guidance; (4) prioritize fixes flagged by Google Search Console over third-party tool warnings when they conflict.",
2819
+ "enabled": true,
2820
+ "appliesTo": [
2821
+ "html",
2822
+ "jsx",
2823
+ "tsx",
2824
+ "vue",
2825
+ "svelte"
2826
+ ],
2827
+ "references": [
2828
+ "https://developers.google.com/search/docs/fundamentals/do-i-need-seo"
2829
+ ],
2830
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09)",
2831
+ "lastUpdated": "2026-06-09"
2832
+ },
2833
+ {
2834
+ "id": "noindex-javascript-accessibility-outdated",
2835
+ "name": "JavaScript content loading is not an SEO accessibility concern",
2836
+ "severity": "info",
2837
+ "category": "technical",
2838
+ "description": "Google has removed outdated guidance stating that using JavaScript to load content makes it 'harder for Google Search' or harder for assistive technologies. Google Search has been rendering JavaScript for multiple years and most assistive technologies now work with JavaScript. Site owners and SEO tools should not flag JavaScript-rendered content as an inherent SEO or accessibility problem. The concern about JavaScript content being invisible to Googlebot is no longer valid for standard client-side rendering scenarios, though server-side rendering remains a best practice for performance and reliability.",
2839
+ "fixTemplate": "No action required if you are using JavaScript to load content. Standard client-side rendering is supported by Google Search. If you have internal documentation or tooling that flags JavaScript content loading as an SEO issue, update it to reflect current Google guidance. Server-side rendering (SSR) or static rendering is still recommended for performance and Core Web Vitals reasons, but is not required for indexing.",
2840
+ "enabled": true,
2841
+ "appliesTo": [
2842
+ "html",
2843
+ "jsx",
2844
+ "tsx",
2845
+ "vue",
2846
+ "svelte"
2847
+ ],
2848
+ "references": [
2849
+ "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics"
2850
+ ],
2851
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09)",
2852
+ "lastUpdated": "2026-06-09"
2853
+ },
2854
+ {
2855
+ "id": "crawling-docs-migrated",
2856
+ "name": "Google crawling documentation migrated to new infrastructure site",
2857
+ "severity": "info",
2858
+ "category": "technical",
2859
+ "description": "Google has migrated its core crawling documentation to a new dedicated site at Google's crawling infrastructure documentation. The migrated documentation includes: overview of Google crawlers and fetchers, verifying requests from Google crawlers, reducing Google crawl rate, Google common crawlers, how Google interprets the robots.txt specification, managing crawling of faceted navigation URLs, optimizing crawl budget, how HTTP status codes affect crawlers, and debugging DNS and network errors. The functionality and guidance has not changed — only the location of the documentation. A separate changelog feed is now available for crawling infrastructure updates at https://developers.google.com/crawling/docs/changelog/crawling_docs_updates.rss. This migration reflects that Google's crawling infrastructure is shared across multiple Google products beyond Search, including Google Shopping, News, Gemini, AdSense, and more.",
2860
+ "fixTemplate": "Update any internal documentation, bookmarks, or tooling that references the old crawling documentation URLs to point to the new Google crawling infrastructure site. Subscribe to the new crawling infrastructure changelog feed at https://developers.google.com/crawling/docs/changelog/crawling_docs_updates.rss to receive updates about crawling behavior changes that may affect your site across all Google products, not just Search.",
2861
+ "enabled": true,
2862
+ "appliesTo": [
2863
+ "html",
2864
+ "jsx",
2865
+ "tsx",
2866
+ "vue",
2867
+ "svelte"
2868
+ ],
2869
+ "references": [
2870
+ "https://developers.google.com/search/docs/crawling-indexing/googlebot",
2871
+ "https://developers.google.com/crawling/docs/changelog/crawling_docs_updates.rss"
2872
+ ],
2873
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09)",
2874
+ "lastUpdated": "2026-06-09"
2875
+ },
2876
+ {
2877
+ "id": "turkey-carousel-structured-data",
2878
+ "name": "Structured data carousels (beta) available in Turkey",
2879
+ "severity": "info",
2880
+ "category": "schema",
2881
+ "description": "Google's structured data carousels (beta) feature has been expanded to Turkey, in addition to South Africa and other previously supported regions. If you operate a site in Turkey with summary pages that link out to detail pages (such as travel, local, shopping, or other supported query types), implementing carousel structured data markup may make your content eligible for carousel rich results in Google Search in Turkey. The markup must be placed on the summary page; you do not need to add markup to the detail pages.",
2882
+ "fixTemplate": "If your site operates in Turkey and has summary pages that link to detail pages in supported verticals (travel, local, shopping, and others), review Google's structured data carousels (beta) documentation to implement the appropriate carousel markup. Place the markup on the summary page only. Use the interest form in the documentation to express interest in the feature.",
2883
+ "enabled": true,
2884
+ "appliesTo": [
2885
+ "html",
2886
+ "jsx",
2887
+ "tsx",
2888
+ "vue",
2889
+ "svelte"
2890
+ ],
2891
+ "references": [
2892
+ "https://developers.google.com/search/docs/appearance/structured-data/carousels"
2893
+ ],
2894
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09)",
2895
+ "lastUpdated": "2026-06-09"
2896
+ },
2897
+ {
2898
+ "id": "spam-reports-manual-action",
2899
+ "name": "Spam report submissions may trigger manual actions",
2900
+ "severity": "warning",
2901
+ "category": "technical",
2902
+ "description": "Google has clarified that spam report submissions may now be used to take manual action against sites that violate Google's spam policies. Previously, spam reports were used primarily to improve Google's automated systems and were not directly used to trigger manual actions. Site owners should be aware that user-submitted spam reports can now result in manual penalties. This makes compliance with Google's spam policies more important than ever, as violations are now more likely to result in direct manual action in addition to algorithmic penalties.",
2903
+ "fixTemplate": "Audit your site against Google's full spam policies at https://developers.google.com/search/docs/essentials/spam-policies. Ensure your site does not engage in cloaking, doorway pages, scaled content abuse, site reputation abuse, back button hijacking, or any other prohibited practices. Monitor Google Search Console for any manual action notifications. If you receive a manual action, follow the reconsideration request process after resolving the violation.",
2904
+ "enabled": true,
2905
+ "appliesTo": [
2906
+ "html",
2907
+ "jsx",
2908
+ "tsx",
2909
+ "vue",
2910
+ "svelte"
2911
+ ],
2912
+ "references": [
2913
+ "https://developers.google.com/search/docs/essentials/spam-policies",
2914
+ "https://developers.google.com/search/docs/monitor-debug/manual-actions"
2915
+ ],
2916
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-09)",
2917
+ "lastUpdated": "2026-06-09"
2918
+ },
2919
+ {
2920
+ "id": "speakable-schema-deprecated",
2921
+ "name": "SpeakableSpecification structured data no longer supported",
2922
+ "severity": "warning",
2923
+ "category": "schema",
2924
+ "description": "The SpeakableSpecification schema type was introduced in schema.org 3.2 and promoted to core in schema.org 3.5. It was designed to indicate sections of a document particularly suitable for text-to-speech rendering. However, Google has removed Speakable from its list of supported rich result types and no longer processes SpeakableSpecification structured data for Search features. Implementing this schema type will have no effect on Google Search appearance. The schema.org type itself remains in the vocabulary for other consumers, but Google Search does not use it.",
2925
+ "fixTemplate": "Remove or stop adding SpeakableSpecification JSON-LD structured data blocks. If you have existing Speakable schema, you may leave it in place as it will not cause harm to Google Search, but it will not produce any rich result or Search feature benefit. Example of markup to remove: {\"@type\":\"WebPage\",\"speakable\":{\"@type\":\"SpeakableSpecification\",\"cssSelector\":[\".speakable\"]}}",
2926
+ "enabled": true,
2927
+ "appliesTo": [
2928
+ "html",
2929
+ "jsx",
2930
+ "tsx",
2931
+ "vue",
2932
+ "svelte"
2933
+ ],
2934
+ "references": [
2935
+ "https://schema.org/SpeakableSpecification",
2936
+ "https://developers.google.com/search/docs/appearance/structured-data"
2937
+ ],
2938
+ "source": "Schema.org Release Notes — https://schema.org/docs/releases.html (scraped 2026-06-09)",
2939
+ "lastUpdated": "2026-06-09",
2940
+ "check": {
2941
+ "type": "jsonld-has-type",
2942
+ "schemaType": "SpeakableSpecification"
2943
+ }
2944
+ },
2945
+ {
2946
+ "id": "schema-org-iptc-digital-source-type",
2947
+ "name": "Missing IPTCDigitalSourceEnumeration for AI-generated media",
2948
+ "severity": "info",
2949
+ "category": "schema",
2950
+ "description": "Schema.org version 24.0 introduced the IPTCDigitalSourceEnumeration vocabulary with 14 coded values to describe the digital source type of media, including AI-generated and algorithmically manipulated content (e.g., TrainedAlgorithmicMediaDigitalSource, CompositeWithTrainedAlgorithmicMediaDigitalSource). Schema.org version 29.4 added additional missing enumeration values to IPTCDigitalSourceEnumeration. This vocabulary is used via the digitalSourceType property on MediaObject and its subtypes (ImageObject, VideoObject, AudioObject). Correctly tagging AI-generated or AI-assisted media with the appropriate IPTC digital source type supports content provenance signals used by Google's 'About this image' feature and aligns with C2PA metadata standards. This rule complements the c2pa-metadata rule.",
2951
+ "fixTemplate": "Add the digitalSourceType property to your ImageObject or VideoObject structured data using the appropriate IPTCDigitalSourceEnumeration value. For AI-generated images: {\"@type\":\"ImageObject\",\"contentUrl\":\"https://yourdomain.com/image.jpg\",\"digitalSourceType\":\"https://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia\"}. For AI-composite images use: \"https://cv.iptc.org/newscodes/digitalsourcetype/compositeWithTrainedAlgorithmicMedia\". For human-captured original content use: \"https://cv.iptc.org/newscodes/digitalsourcetype/originalDigitalCapture\".",
2952
+ "enabled": true,
2953
+ "appliesTo": [
2954
+ "html",
2955
+ "jsx",
2956
+ "tsx",
2957
+ "vue",
2958
+ "svelte"
2959
+ ],
2960
+ "references": [
2961
+ "https://schema.org/IPTCDigitalSourceEnumeration",
2962
+ "https://schema.org/digitalSourceType",
2963
+ "https://developers.google.com/search/docs/appearance/google-images",
2964
+ "https://cv.iptc.org/newscodes/digitalsourcetype/"
2965
+ ],
2966
+ "source": "Schema.org Release Notes — https://schema.org/docs/releases.html (scraped 2026-06-09)",
2967
+ "lastUpdated": "2026-06-09"
2968
+ },
2969
+ {
2970
+ "id": "schema-org-shipping-vocabulary-updated",
2971
+ "name": "Deprecated shipping schema types in use",
2972
+ "severity": "warning",
2973
+ "category": "schema",
2974
+ "description": "Schema.org version 29.0 deprecated the DeliveryTimeSettings and ShippingRateSettings types, superseding them with new updated shipping vocabulary types. Ecommerce sites that implemented shipping structured data using the older DeliveryTimeSettings or ShippingRateSettings types should migrate to the replacement types introduced in schema.org 29.0. Using deprecated schema.org types may reduce the accuracy of shipping information displayed in Google merchant listings and product rich results over time as search engines adopt the updated vocabulary.",
2975
+ "fixTemplate": "Audit your shipping structured data for use of the deprecated DeliveryTimeSettings and ShippingRateSettings types. Migrate to the replacement types introduced in schema.org version 29.0. Review the schema.org shipping vocabulary documentation and Google's merchant shipping policy structured data guidance for the current recommended implementation. Update your OfferShippingDetails markup to use the new type references.",
2976
+ "enabled": true,
2977
+ "appliesTo": [
2978
+ "html",
2979
+ "jsx",
2980
+ "tsx",
2981
+ "vue",
2982
+ "svelte"
2983
+ ],
2984
+ "references": [
2985
+ "https://schema.org/docs/releases.html",
2986
+ "https://schema.org/OfferShippingDetails",
2987
+ "https://developers.google.com/search/docs/appearance/structured-data/product"
2988
+ ],
2989
+ "source": "Schema.org Release Notes — https://schema.org/docs/releases.html (scraped 2026-06-09)",
2990
+ "lastUpdated": "2026-06-09",
2991
+ "check": {
2992
+ "type": "raw-match",
2993
+ "pattern": "DeliveryTimeSettings|ShippingRateSettings",
2994
+ "flags": "i"
2995
+ }
2996
+ },
2997
+ {
2998
+ "id": "site-move-domain-variants",
2999
+ "name": "Site move guidance: include all domain variants",
3000
+ "severity": "warning",
3001
+ "category": "technical",
3002
+ "description": "Google has updated its site move guidance to explicitly include information on using the Change of Address tool for all subdomain variants (including www and non-www) during domain migrations. When performing a domain migration, domain moves work best when all variants of a site are migrated properly. Failing to migrate all subdomain variants (e.g., migrating example.com but not www.example.com, or vice versa) can result in incomplete migration signals and slower consolidation of ranking signals to the new domain.",
3003
+ "fixTemplate": "When performing a domain migration, use the Change of Address tool in Google Search Console for all subdomain variants of your site, including both www and non-www versions. Ensure 301 redirects are in place from all variants of the old domain to the corresponding variants of the new domain. Verify each variant is submitted separately in Search Console if they are tracked as separate properties.",
3004
+ "enabled": true,
3005
+ "appliesTo": [
3006
+ "html",
3007
+ "jsx",
3008
+ "tsx",
3009
+ "vue",
3010
+ "svelte"
3011
+ ],
3012
+ "references": [
3013
+ "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes"
3014
+ ],
3015
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-18)",
3016
+ "lastUpdated": "2026-06-18"
3017
+ },
3018
+ {
3019
+ "id": "faq-rich-result-documentation-removed",
3020
+ "name": "FAQ rich result documentation fully removed",
3021
+ "severity": "info",
3022
+ "category": "schema",
3023
+ "description": "Google has fully removed the FAQ rich result documentation from Google Search Central, confirming that the FAQ rich result feature is no longer shown in Google Search results. This follows the deprecation notice added in May 2026. The removal of documentation is the final confirmation that FAQ structured data will produce no rich result benefit in Google Search. The faq-schema-deprecated rule already covers the actionable guidance; this rule documents the documentation removal milestone for audit trail purposes.",
3024
+ "fixTemplate": "No additional action required beyond what is described in the faq-schema-deprecated rule. Remove or stop adding FAQPage JSON-LD structured data. The feature is fully retired and its documentation has been removed from Google Search Central.",
3025
+ "enabled": true,
3026
+ "appliesTo": [
3027
+ "html",
3028
+ "jsx",
3029
+ "tsx",
3030
+ "vue",
3031
+ "svelte"
3032
+ ],
3033
+ "references": [
3034
+ "https://developers.google.com/search/docs/appearance/structured-data/faqpage"
3035
+ ],
3036
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-06-18)",
3037
+ "lastUpdated": "2026-06-18",
3038
+ "check": {
3039
+ "type": "jsonld-has-type",
3040
+ "schemaType": "FAQPage"
3041
+ }
3042
+ },
3043
+ {
3044
+ "id": "html-standard-for-seo",
3045
+ "name": "Markdown files have no SEO advantage over HTML",
3046
+ "severity": "info",
3047
+ "category": "technical",
3048
+ "description": "Google has explicitly stated that HTML is the standard for SEO, not Markdown files. Publishing content as Markdown files (e.g., .md files served directly, or llms.txt-style Markdown documents) confers no SEO advantage over standard HTML pages. Google's crawlers and ranking systems are built around HTML as the canonical document format for the web. This complements the llms-txt-not-required rule: not only are AI-specific Markdown files unnecessary, but Markdown as a general content delivery format is not a recommended or advantaged format for SEO purposes. Content intended to rank in Google Search should be served as properly structured HTML.",
3049
+ "fixTemplate": "Ensure your content is served as HTML pages rather than raw Markdown files. If you use a static site generator or CMS that outputs Markdown, confirm it is compiled to HTML before being served to users and Googlebot. Do not create .md files or Markdown-formatted documents as a strategy to improve SEO or AI search visibility — serve standard HTML instead.",
3050
+ "enabled": true,
3051
+ "appliesTo": [
3052
+ "html",
3053
+ "jsx",
3054
+ "tsx",
3055
+ "vue",
3056
+ "svelte"
3057
+ ],
3058
+ "references": [
3059
+ "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
3060
+ "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide"
3061
+ ],
3062
+ "source": "Search Engine Roundtable — https://www.seroundtable.com (scraped 2026-06-18); headline: 'Google: HTML The Standard For SEO, Not Markdown Files'",
3063
+ "lastUpdated": "2026-06-18",
3064
+ "check": {
3065
+ "type": "raw-match",
3066
+ "pattern": "\\.md[\"'\\s]",
3067
+ "flags": "i"
3068
+ }
3069
+ },
3070
+ {
3071
+ "id": "social-video-platform-search-console",
3072
+ "name": "Social and video platform content not tracked in Search Console",
3073
+ "severity": "info",
3074
+ "category": "technical",
3075
+ "description": "Google has added a new guide on how to analyze social and video platform content performance in Search Console. Content creators, social media managers, and SEO professionals can now understand how their social and video platform content (e.g., YouTube videos, social posts) performs on Google Search through dedicated Search Console reporting. Site owners with social or video platform content should review this guide to understand how to measure and optimize their content's search performance across platforms.",
3076
+ "fixTemplate": "Review the new Search Console guide on social and video platform content performance. Connect your social and video platform accounts to Search Console where supported. Monitor performance data for your platform content in Search Console Performance reports to understand how it appears in Google Search results.",
3077
+ "enabled": true,
3078
+ "appliesTo": [
3079
+ "html",
3080
+ "jsx",
3081
+ "tsx",
3082
+ "vue",
3083
+ "svelte"
3084
+ ],
3085
+ "references": [
3086
+ "https://developers.google.com/search/docs/appearance/social-video-platform"
3087
+ ],
3088
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-20)",
3089
+ "lastUpdated": "2026-08-20"
3090
+ },
3091
+ {
3092
+ "id": "fake-incentivized-reviews-policy",
3093
+ "name": "Fake or undisclosed incentivized reviews violate review snippet guidelines",
3094
+ "severity": "critical",
3095
+ "category": "schema",
3096
+ "description": "Google has added a new guideline to the review snippet documentation specifically addressing fake and undisclosed incentivized reviews. Sites that collect or display fake reviews, or reviews where an incentive was provided but not disclosed, risk losing eligibility for review rich results and may be subject to manual action under Google's spam policies. This applies to both first-party reviews collected on your site and third-party review markup you implement. All incentivized reviews must be clearly disclosed as such. Fake reviews of any kind are prohibited.",
3097
+ "fixTemplate": "Audit your review collection and display practices: (1) remove any fake or fabricated reviews from your structured data and visible content; (2) ensure any reviews where an incentive was provided (discount, free product, payment) are clearly labeled as incentivized; (3) update your review schema to only include genuine, unbiased reviews or properly disclosed incentivized reviews; (4) implement review policies that prohibit fake reviews and require disclosure of incentives. Do not implement ReviewSnippet structured data for reviews that violate these guidelines.",
3098
+ "enabled": true,
3099
+ "appliesTo": [
3100
+ "html",
3101
+ "jsx",
3102
+ "tsx",
3103
+ "vue",
3104
+ "svelte"
3105
+ ],
3106
+ "references": [
3107
+ "https://developers.google.com/search/docs/appearance/structured-data/review-snippet"
3108
+ ],
3109
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-20)",
3110
+ "lastUpdated": "2026-08-20"
3111
+ },
3112
+ {
3113
+ "id": "package-tracking-early-adopters-closed",
3114
+ "name": "Package tracking early adopters program no longer accepting new partners",
3115
+ "severity": "info",
3116
+ "category": "schema",
3117
+ "description": "Google has updated the package tracking documentation to reflect that the package tracking early adopters program is no longer accepting new partners. Sites that were not already accepted into the program cannot apply to participate. Existing partners should review the updated feature availability and eligibility requirements sections of the package tracking documentation to ensure continued compliance.",
3118
+ "fixTemplate": "If you are an existing package tracking early adopter partner, review the updated feature availability and eligibility requirements in the package tracking documentation to ensure your implementation remains compliant. If you are not yet a partner, the program is closed to new applicants — monitor Google Search Central for any future announcements about program expansion.",
3119
+ "enabled": true,
3120
+ "appliesTo": [
3121
+ "html",
3122
+ "jsx",
3123
+ "tsx",
3124
+ "vue",
3125
+ "svelte"
3126
+ ],
3127
+ "references": [
3128
+ "https://developers.google.com/search/docs/appearance/structured-data/package-tracking"
3129
+ ],
3130
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-20)",
3131
+ "lastUpdated": "2026-08-20"
3132
+ },
3133
+ {
3134
+ "id": "canonicalization-reevaluation-time",
3135
+ "name": "Canonicalization changes take time to re-evaluate",
3136
+ "severity": "info",
3137
+ "category": "technical",
3138
+ "description": "Google has updated the canonicalization troubleshooting guide with clarifications on re-evaluation time. When you make changes to canonical tags, hreflang annotations, or other canonicalization signals, Google does not immediately re-evaluate and update its canonical selection. Site owners should set realistic expectations: canonicalization changes can take days to weeks to be reflected in Google Search, depending on crawl frequency and site size. Do not make rapid successive changes to canonical signals while waiting for previous changes to take effect, as this can create conflicting signals and further delay resolution.",
3139
+ "fixTemplate": "After making canonicalization changes (updating canonical tags, fixing hreflang, resolving duplicate content): (1) use Google Search Console URL Inspection to request indexing of affected pages; (2) allow sufficient time (days to weeks) for Google to re-crawl and re-evaluate canonical signals before concluding a change has not worked; (3) monitor Search Console Coverage and URL Inspection reports to track canonicalization status; (4) avoid making additional conflicting canonicalization changes while waiting for previous changes to propagate.",
3140
+ "enabled": true,
3141
+ "appliesTo": [
3142
+ "html",
3143
+ "jsx",
3144
+ "tsx",
3145
+ "vue",
3146
+ "svelte"
3147
+ ],
3148
+ "references": [
3149
+ "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls"
3150
+ ],
3151
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-20)",
3152
+ "lastUpdated": "2026-08-20"
3153
+ },
3154
+ {
3155
+ "id": "product-category-schema",
3156
+ "name": "Missing google_product_category in Product structured data",
3157
+ "severity": "info",
3158
+ "category": "schema",
3159
+ "description": "Google has updated the product structured data documentation to detail how the google_product_category property can be used with both Product and Offer types. This aligns with the Google Merchant Center feed specification for the google_product_category attribute. Providing both merchant-defined category information and Google-defined category information within schema.org markup enhances product information for Google Search and Shopping, improving product discoverability and classification accuracy in merchant listings.",
3160
+ "fixTemplate": "Add category information to your Product or Offer structured data using the appropriate property for google_product_category. Include both your merchant-defined category and the Google product taxonomy category where applicable: {\"@type\":\"Product\",\"name\":\"Product Name\",\"category\":\"Your Category > Subcategory\"}. Review the Google Merchant Center product category taxonomy and the updated product structured data documentation for the specific property and value format required.",
3161
+ "enabled": true,
3162
+ "appliesTo": [
3163
+ "html",
3164
+ "jsx",
3165
+ "tsx",
3166
+ "vue",
3167
+ "svelte"
3168
+ ],
3169
+ "references": [
3170
+ "https://developers.google.com/search/docs/appearance/structured-data/product",
3171
+ "https://support.google.com/merchants/answer/6324436"
3172
+ ],
3173
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-20)",
3174
+ "lastUpdated": "2026-08-20"
3175
+ },
3176
+ {
3177
+ "id": "sale-price-effective-date-schema",
3178
+ "name": "Missing sale price effective date in Product structured data",
3179
+ "severity": "info",
3180
+ "category": "schema",
3181
+ "description": "Google has added a new section on 'Sale duration' to the Merchant listing guide explaining how to use schema.org properties to set the effective range for sale prices. This aligns schema.org usage with the Merchant Center feed attribute sale_price_effective_date. Specifying sale price effective dates helps Google accurately display sale pricing information in merchant listings and product rich results, including the duration of the sale. Without effective date information, Google cannot determine when a sale price is valid, which may result in incorrect or missing sale price display.",
3182
+ "fixTemplate": "Add sale price effective date information to your Offer structured data using the priceValidUntil property and, where applicable, the priceValidFrom equivalent. Example: {\"@type\":\"Offer\",\"price\":\"19.99\",\"priceCurrency\":\"USD\",\"priceValidUntil\":\"2026-12-31\"}. For sale prices with both start and end dates, review the updated Merchant listing guide for the recommended schema.org property combination. Ensure your implementation aligns with the sale_price_effective_date attribute format used in Merchant Center feeds.",
3183
+ "enabled": true,
3184
+ "appliesTo": [
3185
+ "html",
3186
+ "jsx",
3187
+ "tsx",
3188
+ "vue",
3189
+ "svelte"
3190
+ ],
3191
+ "references": [
3192
+ "https://developers.google.com/search/docs/appearance/structured-data/product",
3193
+ "https://support.google.com/merchants/answer/6324371"
3194
+ ],
3195
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-20)",
3196
+ "lastUpdated": "2026-08-20"
3197
+ },
3198
+ {
3199
+ "id": "amp-direct-publisher-hosting",
3200
+ "name": "AMP Cache and signed exchanges no longer required for AMP pages",
3201
+ "severity": "info",
3202
+ "category": "technical",
3203
+ "description": "Google Search has updated how it connects users to AMP pages. Starting with this change, Google will now take users directly to the publisher's AMP host pages rather than serving them from the AMP Cache or via signed exchanges. This simplifies and reduces maintenance efforts for publishers creating AMP content. Publishers no longer need to update the AMP Cache or configure signed exchanges for their AMP content. AMP content will continue to rank just like any other web page. Existing AMP Cache configurations and signed exchange setups will not cause harm but are no longer required for AMP pages to appear in Google Search.",
3204
+ "fixTemplate": "No immediate action required. If you maintain AMP pages: (1) you no longer need to configure or maintain signed exchanges (SXG) specifically for AMP; (2) you no longer need to manually update the AMP Cache; (3) ensure your AMP pages are accessible at their canonical publisher URLs as Google will now link directly to those URLs; (4) review and update any internal documentation that references AMP Cache or signed exchange requirements for AMP. AMP content continues to be supported and will rank normally.",
3205
+ "enabled": true,
3206
+ "appliesTo": [
3207
+ "html",
3208
+ "jsx",
3209
+ "tsx",
3210
+ "vue",
3211
+ "svelte"
3212
+ ],
3213
+ "references": [
3214
+ "https://developers.google.com/search/docs/appearance/amp"
3215
+ ],
3216
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-20)",
3217
+ "lastUpdated": "2026-08-20"
3218
+ },
3219
+ {
3220
+ "id": "google-august-2026-spam-update",
3221
+ "name": "Google August 2026 Spam Update released",
3222
+ "severity": "warning",
3223
+ "category": "technical",
3224
+ "description": "Google has released an August 2026 Spam Update. Spam updates target sites that violate Google's spam policies, including cloaking, doorway pages, scaled content abuse, site reputation abuse, back button hijacking, fake reviews, and other prohibited practices. Sites affected by spam updates may experience significant ranking drops or removal from Google Search results. Recovery from a spam update requires identifying and resolving the spam policy violation, then submitting a reconsideration request if a manual action was applied.",
3225
+ "fixTemplate": "Audit your site against Google's full spam policies at https://developers.google.com/search/docs/essentials/spam-policies. Check Google Search Console for any manual action notifications. If your site experienced a traffic drop around August 2026, review your content and practices against all spam policies including: cloaking, doorway pages, scaled content abuse, site reputation abuse, back button hijacking, fake or undisclosed incentivized reviews, and link spam. Resolve any violations and submit a reconsideration request if a manual action was applied.",
3226
+ "enabled": true,
3227
+ "appliesTo": [
3228
+ "html",
3229
+ "jsx",
3230
+ "tsx",
3231
+ "vue",
3232
+ "svelte"
3233
+ ],
3234
+ "references": [
3235
+ "https://developers.google.com/search/docs/essentials/spam-policies",
3236
+ "https://developers.google.com/search/docs/monitor-debug/manual-actions"
3237
+ ],
3238
+ "source": "Search Engine Roundtable — https://www.seroundtable.com (scraped 2026-08-20); headline: 'Google August 2026 Spam Update Has Been Unleashed'",
3239
+ "lastUpdated": "2026-08-20"
3240
+ },
3241
+ {
3242
+ "id": "schema-org-v30-equivalence-annotations",
3243
+ "name": "schema.org v30 equivalence annotations for GS1, Dublin Core, Open Graph",
3244
+ "severity": "info",
3245
+ "category": "schema",
3246
+ "description": "Schema.org version 30.0 added GS1, Dublin Core, and Open Graph equivalence annotations and exports to the schema.org vocabulary. This means schema.org properties now have formally declared equivalences to terms in these widely-used external vocabularies. For ecommerce sites using GS1 identifiers, publishers using Dublin Core metadata, and sites using Open Graph markup, these equivalence annotations improve interoperability between schema.org structured data and other metadata systems. Sites that implement both schema.org structured data and Open Graph tags can now benefit from formally declared cross-vocabulary alignment. Additionally, version 30.0 extended credential vocabulary to allow specification of credentials beyond just educational credentials, and extended CompoundPriceSpecification to have the more generic UnitPriceSpecification.",
3247
+ "fixTemplate": "No immediate code change required. If your site uses GS1 product identifiers, Dublin Core metadata, or Open Graph tags alongside schema.org structured data, review the schema.org version 30.0 release notes to understand the new equivalence mappings. Ensure your structured data and Open Graph tags are consistent with each other, as the formal equivalence annotations may affect how search engines and other consumers interpret cross-vocabulary signals.",
3248
+ "enabled": true,
3249
+ "appliesTo": [
3250
+ "html",
3251
+ "jsx",
3252
+ "tsx",
3253
+ "vue",
3254
+ "svelte"
3255
+ ],
3256
+ "references": [
3257
+ "https://schema.org/docs/releases.html",
3258
+ "https://schema.org/version/latest"
3259
+ ],
3260
+ "source": "Schema.org Release Notes — https://schema.org/docs/releases.html (scraped 2026-08-20)",
3261
+ "lastUpdated": "2026-08-20"
3262
+ },
3263
+ {
3264
+ "id": "schema-org-v30-eu-digital-product-passport",
3265
+ "name": "EU Digital Product Passport (DPP) schema.org examples available",
3266
+ "severity": "info",
3267
+ "category": "schema",
3268
+ "description": "Schema.org version 30.0 added EU Digital Product Passport (DPP) examples aligned with UN/CEFACT codes. The EU Digital Product Passport is a regulatory requirement under the EU Ecodesign for Sustainable Products Regulation (ESPR) that will require products sold in the EU to carry a digital record of sustainability, repairability, and lifecycle information. Schema.org now provides vocabulary and examples for implementing DPP data in structured data. Ecommerce sites targeting EU markets should be aware of this emerging structured data vocabulary as DPP requirements come into force.",
3269
+ "fixTemplate": "Review the schema.org version 30.0 release notes and EU Digital Product Passport examples at https://schema.org/docs/releases.html. If your site sells products in EU markets, evaluate whether implementing DPP-aligned structured data is relevant to your compliance and SEO strategy. The vocabulary is aligned with UN/CEFACT codes for interoperability with regulatory and supply chain systems.",
3270
+ "enabled": true,
3271
+ "appliesTo": [
3272
+ "html",
3273
+ "jsx",
3274
+ "tsx",
3275
+ "vue",
3276
+ "svelte"
3277
+ ],
3278
+ "references": [
3279
+ "https://schema.org/docs/releases.html",
3280
+ "https://schema.org/version/latest"
3281
+ ],
3282
+ "source": "Schema.org Release Notes — https://schema.org/docs/releases.html (scraped 2026-08-20)",
3283
+ "lastUpdated": "2026-08-20"
3284
+ },
3285
+ {
3286
+ "id": "schema-org-v29-financial-incentives",
3287
+ "name": "Missing financial incentive structured data for eligible offers",
3288
+ "severity": "info",
3289
+ "category": "schema",
3290
+ "description": "Schema.org version 29.0 added vocabulary to represent financial incentives, for example in the area of sustainability. New types and enumeration types (including IncentiveQualifiedExpenseType) were added, along with new properties for use on Offer including eligibleWithSupplier. This vocabulary is particularly relevant for ecommerce sites that offer sustainability-related incentives, rebates, or government-backed financial incentives on products. Implementing financial incentive structured data can help search engines accurately represent offer conditions in merchant listings and product rich results.",
3291
+ "fixTemplate": "If your site offers products with associated financial incentives (e.g., sustainability rebates, government incentives, supplier-specific pricing), review the schema.org version 29.0 financial incentives vocabulary at https://schema.org/docs/releases.html. Add the appropriate incentive properties to your Offer structured data. Example: {\"@type\":\"Offer\",\"price\":\"299.99\",\"priceCurrency\":\"USD\",\"eligibleWithSupplier\":{\"@type\":\"Organization\",\"name\":\"Supplier Name\"}}. Review the full vocabulary for IncentiveQualifiedExpenseType and related enumeration values.",
3292
+ "enabled": true,
3293
+ "appliesTo": [
3294
+ "html",
3295
+ "jsx",
3296
+ "tsx",
3297
+ "vue",
3298
+ "svelte"
3299
+ ],
3300
+ "references": [
3301
+ "https://schema.org/docs/releases.html",
3302
+ "https://schema.org/version/latest"
3303
+ ],
3304
+ "source": "Schema.org Release Notes — https://schema.org/docs/releases.html (scraped 2026-08-20)",
3305
+ "lastUpdated": "2026-08-20"
3306
+ },
3307
+ {
3308
+ "id": "http-query-method-google-search",
3309
+ "name": "Google Search will eventually support HTTP QUERY method",
3310
+ "severity": "info",
3311
+ "category": "technical",
3312
+ "description": "Google has indicated that Google Search will eventually support the HTTP QUERY method, an emerging web standard for safe, cacheable requests with a request body (unlike GET which has no body, and unlike POST which is not safe or cacheable). The HTTP QUERY method is being standardized to enable more expressive search and query interactions on the web. No immediate implementation is required, but site owners and developers building search interfaces or APIs should be aware of this emerging standard and monitor its adoption timeline.",
3313
+ "fixTemplate": "No immediate action required. Monitor the HTTP QUERY method standardization progress and Google Search's implementation timeline. If you build search APIs or query interfaces, evaluate whether adopting the HTTP QUERY method when it becomes available would benefit your architecture. Do not implement HTTP QUERY for SEO purposes until Google formally announces support and provides implementation guidance.",
3314
+ "enabled": true,
3315
+ "appliesTo": [
3316
+ "html",
3317
+ "jsx",
3318
+ "tsx",
3319
+ "vue",
3320
+ "svelte"
3321
+ ],
3322
+ "references": [
3323
+ "https://developers.google.com/search/docs",
3324
+ "https://www.ietf.org/archive/id/draft-ietf-httpbis-safe-method-w-body-02.txt"
3325
+ ],
3326
+ "source": "Search Engine Roundtable — https://www.seroundtable.com (scraped 2026-08-20); headline: 'Google Search Will Eventually Support HTTP QUERY Method'",
3327
+ "lastUpdated": "2026-08-20"
3328
+ },
3329
+ {
3330
+ "id": "site-reputation-policy-eea",
3331
+ "name": "Site reputation abuse policy adjusted for EEA",
3332
+ "severity": "warning",
3333
+ "category": "technical",
3334
+ "description": "Google has adjusted its enforcement approach for the site reputation abuse policy within the European Economic Area (EEA). The site reputation abuse policy prohibits hosting third-party content on a site in an attempt to exploit the site's ranking signals, regardless of whether there is first-party involvement or oversight of the content. Site owners operating in the EEA should review the updated site reputation policy to understand how enforcement differs in that region and ensure their content hosting practices comply with both the global policy and the EEA-specific enforcement approach.",
3335
+ "fixTemplate": "Review the updated site reputation abuse policy at https://developers.google.com/search/docs/essentials/spam-policies#site-reputation-abuse for EEA-specific enforcement guidance. Audit any third-party content hosted on your site to ensure it is not being used to exploit your site's ranking signals. If you operate in the EEA, review the specific enforcement adjustments that apply to your region.",
3336
+ "enabled": true,
3337
+ "appliesTo": [
3338
+ "html",
3339
+ "jsx",
3340
+ "tsx",
3341
+ "vue",
3342
+ "svelte"
3343
+ ],
3344
+ "references": [
3345
+ "https://developers.google.com/search/docs/essentials/spam-policies#site-reputation-abuse"
3346
+ ],
3347
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-08-29)",
3348
+ "lastUpdated": "2026-08-29"
3349
+ },
3350
+ {
3351
+ "id": "european-search-dataset-licensing",
3352
+ "name": "European Search Dataset Licensing Program eligibility",
3353
+ "severity": "info",
3354
+ "category": "technical",
3355
+ "description": "Google has refreshed the European Search Dataset Licensing Program page with updated program overview, eligibility criteria, and application details. Publishers in the European Economic Area (EEA) who wish to license their content to Google Search should review the updated eligibility criteria and application process. This program is distinct from standard indexing and is relevant only to publishers seeking a formal licensing arrangement with Google for their content in European Search.",
3356
+ "fixTemplate": "Review the updated European Search Dataset Licensing Program page at https://developers.google.com/search/docs/appearance/european-search-dataset-licensing to determine eligibility and apply if appropriate for your organization. No code change is required; this is an administrative and contractual process.",
3357
+ "enabled": true,
3358
+ "appliesTo": [
3359
+ "html",
3360
+ "jsx",
3361
+ "tsx",
3362
+ "vue",
3363
+ "svelte"
3364
+ ],
3365
+ "references": [
3366
+ "https://developers.google.com/search/docs/appearance/european-search-dataset-licensing"
3367
+ ],
3368
+ "source": "Google Search Central Documentation Changelog — https://developers.google.com/search/updates (scraped 2026-09-04)",
3369
+ "lastUpdated": "2026-09-04"
3370
+ },
3371
+ {
3372
+ "id": "vacation-rental-schema",
3373
+ "name": "Missing Vacation Rental structured data",
3374
+ "severity": "info",
3375
+ "category": "schema",
3376
+ "description": "Google Search supports Vacation Rental structured data, which allows vacation property listings to appear as rich results in Google Search. The structured data can include the property name, description, images, location, rating, and reviews. Sites that list vacation rental properties should implement this structured data to improve discoverability and eligibility for rich result appearances in Google Search.",
3377
+ "fixTemplate": "Add VacationRental structured data to your vacation property listing pages: <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"LodgingBusiness\",\"name\":\"Property Name\",\"description\":\"Property description\",\"image\":\"https://yourdomain.com/property-image.jpg\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"123 Main St\",\"addressLocality\":\"City\",\"addressCountry\":\"US\"},\"aggregateRating\":{\"@type\":\"AggregateRating\",\"ratingValue\":\"4.5\",\"reviewCount\":\"100\"}}</script>. Review Google's vacation rental structured data documentation for the full list of supported properties.",
3378
+ "enabled": true,
3379
+ "appliesTo": [
3380
+ "html",
3381
+ "jsx",
3382
+ "tsx",
3383
+ "vue",
3384
+ "svelte"
3385
+ ],
3386
+ "references": [
3387
+ "https://developers.google.com/search/docs/appearance/structured-data/vacation-rental"
3388
+ ],
3389
+ "source": "Google Structured Data Search Gallery — https://developers.google.com/search/docs/appearance/structured-data/search-gallery (scraped 2026-09-04)",
3390
+ "lastUpdated": "2026-09-04"
3391
+ },
3392
+ {
3393
+ "id": "movie-schema",
3394
+ "name": "Missing Movie structured data for movie listing pages",
3395
+ "severity": "info",
3396
+ "category": "schema",
3397
+ "description": "Google Search supports Movie structured data, which enables movie carousel rich results in Google Search (for example, 'best movies of 2023'). Sites that publish movie listing pages, movie databases, or editorial movie content can implement Movie structured data to provide details such as the movie title, director information, and images, making the content eligible for the movie carousel rich result experience.",
3398
+ "fixTemplate": "Add Movie structured data to your movie listing or detail pages: <script type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"Movie\",\"name\":\"Movie Title\",\"director\":{\"@type\":\"Person\",\"name\":\"Director Name\"},\"image\":\"https://yourdomain.com/movie-poster.jpg\",\"dateCreated\":\"2026-01-01\",\"description\":\"Movie description\"}</script>. Review Google's movie structured data documentation for the full list of supported properties and carousel eligibility requirements.",
3399
+ "enabled": true,
3400
+ "appliesTo": [
3401
+ "html",
3402
+ "jsx",
3403
+ "tsx",
3404
+ "vue",
3405
+ "svelte"
3406
+ ],
3407
+ "references": [
3408
+ "https://developers.google.com/search/docs/appearance/structured-data/movie"
3409
+ ],
3410
+ "source": "Google Structured Data Search Gallery — https://developers.google.com/search/docs/appearance/structured-data/search-gallery (scraped 2026-09-04)",
3411
+ "lastUpdated": "2026-09-04"
3412
+ }
3413
+ ]
3414
+ }