<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: SEOCode</title>
    <description>The latest articles on DEV Community by SEOCode (@seocode_writer).</description>
    <link>https://dev.to/seocode_writer</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3976273%2F0212d42e-1cba-404a-a100-38f553a26324.png</url>
      <title>DEV Community: SEOCode</title>
      <link>https://dev.to/seocode_writer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/seocode_writer"/>
    <language>en</language>
    <item>
      <title>SEOCode Rules Update v1.3.6</title>
      <dc:creator>SEOCode</dc:creator>
      <pubDate>Thu, 18 Jun 2026 20:08:01 +0000</pubDate>
      <link>https://dev.to/seocode_writer/seocode-rules-update-v136-49nj</link>
      <guid>https://dev.to/seocode_writer/seocode-rules-update-v136-49nj</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Rule&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Engine&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Update&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1.3.6:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;HTML&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Is&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;SEO&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Standard,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Not&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Markdown"&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-06-18&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1.3.6&lt;/span&gt;
&lt;span class="na"&gt;slug&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;rule-engine-update-1-3-6&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SEOCode&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1.3.6&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;adds&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;one&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;new&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;informational&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rule&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;clarifying&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;that&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Markdown&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;files&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;served&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;as&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;carry&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;no&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;SEO&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;advantage&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;over&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;HTML,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;per&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Google's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;own&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;guidance."&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;rule-engine&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;changelog&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;technical-seo&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;html&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;markdown&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Rule Engine Update 1.3.6: HTML Is the SEO Standard, Not Markdown
&lt;/h1&gt;

&lt;p&gt;Version 1.3.6 adds one new informational rule based on explicit guidance from Google: serving content as Markdown files provides no SEO advantage over HTML, and HTML remains the canonical document format for Google Search.&lt;/p&gt;




&lt;h2&gt;
  
  
  New Rules
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;html-standard-for-seo&lt;/code&gt; — Markdown files have no SEO advantage over HTML
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Info&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; Technical&lt;/p&gt;

&lt;h4&gt;
  
  
  What the rule checks
&lt;/h4&gt;

&lt;p&gt;This rule flags cases where content is being served directly as Markdown files — for example, &lt;code&gt;.md&lt;/code&gt; files exposed at a public URL, or &lt;code&gt;llms.txt&lt;/code&gt;-style Markdown documents intended to carry indexable content. It surfaces a warning when your repository appears to be routing Markdown files as primary content endpoints rather than rendering them as HTML before serving.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why it matters for SEO
&lt;/h4&gt;

&lt;p&gt;Google has stated directly that HTML is the standard for SEO, not Markdown. Google's crawlers and ranking systems are built around HTML as the document format of the web. A Markdown file served at a URL is not treated as an equivalent substitute for a properly structured HTML page. If you are publishing content you want to rank — articles, documentation, landing pages — and that content is being delivered as raw Markdown rather than rendered HTML, you are working against how Google's systems are designed to process and evaluate pages.&lt;/p&gt;

&lt;p&gt;This rule complements the existing &lt;code&gt;llms-txt-not-required&lt;/code&gt; rule. That rule addresses the specific pattern of creating &lt;code&gt;llms.txt&lt;/code&gt; files for AI crawlers. This rule addresses the broader question: even setting aside AI-specific files, Markdown as a general content delivery format is not a recommended or advantaged format for SEO.&lt;/p&gt;

&lt;h4&gt;
  
  
  What you need to do
&lt;/h4&gt;

&lt;p&gt;If this rule fires on your PR, check whether the files being added or modified are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Served directly as &lt;code&gt;.md&lt;/code&gt; files at a public URL&lt;/strong&gt; — If so, consider whether those files should be rendered to HTML before being served. Most static site generators (Jekyll, Hugo, Eleventy, Next.js, etc.) do this automatically. Verify your build pipeline is not accidentally exposing raw Markdown at canonical URLs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intended only as source files&lt;/strong&gt; — If the &lt;code&gt;.md&lt;/code&gt; files are build inputs that get compiled to HTML, and the HTML output is what gets served and indexed, no action is needed. The rule is informational and may not apply to your setup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intended as AI-readable documents&lt;/strong&gt; — See &lt;code&gt;llms-txt-not-required&lt;/code&gt; for guidance on that specific pattern.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No code change is required if your Markdown files are already being rendered to HTML by your build process. This rule exists to catch cases where that rendering step is missing or bypassed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources &amp;amp; References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.seroundtable.com" rel="noopener noreferrer"&gt;Search Engine Roundtable&lt;/a&gt; — "Google: HTML The Standard For SEO, Not Markdown Files" (scraped 2026-06-18)&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Catch SEO issues before they ship
&lt;/h2&gt;

&lt;p&gt;SEOCode reviews every pull request against the latest Google SEO rules — automatically. No manual audits. No surprises after deploy.&lt;/p&gt;

&lt;p&gt;It checks for missing metadata, broken structured data, hreflang errors, robots.txt issues, and more — right inside your existing GitHub workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://seocode.io" rel="noopener noreferrer"&gt;Try SEOCode →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>release</category>
      <category>rulesupdate</category>
      <category>newrules</category>
    </item>
    <item>
      <title>SEOCode Rules Update v1.3.5</title>
      <dc:creator>SEOCode</dc:creator>
      <pubDate>Thu, 18 Jun 2026 19:38:30 +0000</pubDate>
      <link>https://dev.to/seocode_writer/seocode-rules-update-v135-an6</link>
      <guid>https://dev.to/seocode_writer/seocode-rules-update-v135-an6</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SEOCode&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Rule&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Engine&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Update:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;v1.3.5"&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-06-18&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1.3.5&lt;/span&gt;
&lt;span class="na"&gt;slug&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;rule-engine-update-1-3-5&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Version&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1.3.5&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;adds&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;two&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;new&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rules&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;covering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;migration&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;subdomain&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;variant&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;requirements&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;final&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;removal&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;of&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;FAQ&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rich&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;result&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;documentation&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;from&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Google&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Search&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Central."&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;rule-engine&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;changelog&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;technical-seo&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;schema&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;domain-migration&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  SEOCode Rule Engine Update: v1.3.5
&lt;/h1&gt;

&lt;p&gt;Version 1.3.5 adds two new rules reflecting changes Google made to its Search Central documentation on 2026-06-18: updated site move guidance that now explicitly requires migrating all subdomain variants, and the complete removal of FAQ rich result documentation confirming the feature is dead.&lt;/p&gt;




&lt;h2&gt;
  
  
  New Rules
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;site-move-domain-variants&lt;/code&gt; — Site move guidance: include all domain variants
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Warning&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; Technical&lt;/p&gt;

&lt;h4&gt;
  
  
  What it checks
&lt;/h4&gt;

&lt;p&gt;When SEOCode detects a domain migration in progress (based on redirect configurations, canonical changes, or Search Console Change of Address signals in your codebase), this rule verifies that all subdomain variants of the origin domain are accounted for in the migration. Specifically, it flags cases where &lt;code&gt;www&lt;/code&gt; and non-&lt;code&gt;www&lt;/code&gt; variants are not both being migrated.&lt;/p&gt;

&lt;p&gt;For example: migrating &lt;code&gt;example.com&lt;/code&gt; → &lt;code&gt;newdomain.com&lt;/code&gt; without also migrating &lt;code&gt;www.example.com&lt;/code&gt; → &lt;code&gt;www.newdomain.com&lt;/code&gt; (or the appropriate canonical target) will trigger this warning.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why it matters for SEO
&lt;/h4&gt;

&lt;p&gt;Google's Change of Address tool works at the domain level, but ranking signals are associated with specific URLs — including both &lt;code&gt;www&lt;/code&gt; and non-&lt;code&gt;www&lt;/code&gt; variants. If you only submit a Change of Address for one variant, Google may consolidate signals for that variant but leave the other behind. The result is a slower, incomplete migration where some of your historical ranking authority doesn't transfer to the new domain.&lt;/p&gt;

&lt;p&gt;Google updated its site move documentation on 2026-06-18 to make this requirement explicit. This rule encodes that guidance so incomplete migrations are caught at the PR stage rather than weeks later in Search Console.&lt;/p&gt;

&lt;h4&gt;
  
  
  What you need to do
&lt;/h4&gt;

&lt;p&gt;If this rule fires on your PR:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm that both &lt;code&gt;www.olddomain.com&lt;/code&gt; and &lt;code&gt;olddomain.com&lt;/code&gt; have redirects pointing to the correct destination on the new domain.&lt;/li&gt;
&lt;li&gt;Submit the Change of Address tool in Google Search Console for each variant separately — the tool does not automatically apply to both.&lt;/li&gt;
&lt;li&gt;Ensure canonical tags on the new domain are consistent and point to your preferred variant.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If your site only ever served one variant (e.g., you enforced &lt;code&gt;www&lt;/code&gt; everywhere and &lt;code&gt;non-www&lt;/code&gt; returned a redirect), document that in your migration plan. The rule accepts a configuration override for sites that can confirm only one variant was ever active.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;code&gt;faq-rich-result-documentation-removed&lt;/code&gt; — FAQ rich result documentation fully removed
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Info&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; Schema&lt;/p&gt;

&lt;h4&gt;
  
  
  What it checks
&lt;/h4&gt;

&lt;p&gt;This rule flags any use of &lt;code&gt;FAQPage&lt;/code&gt; structured data in your codebase. It does not block merges. It surfaces as an informational notice to ensure developers are aware that &lt;code&gt;FAQPage&lt;/code&gt; schema produces no rich result benefit in Google Search as of this update.&lt;/p&gt;

&lt;p&gt;Note: The existing rule &lt;code&gt;faq-schema-deprecated&lt;/code&gt; already issues actionable guidance on removing or replacing &lt;code&gt;FAQPage&lt;/code&gt; markup. This rule adds a milestone marker: Google has now fully removed the FAQ rich result documentation from Search Central, which is the final confirmation that the feature is gone — not deprecated, not limited, gone.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why it matters for SEO
&lt;/h4&gt;

&lt;p&gt;When Google deprecates a rich result type, there is typically a window where the documentation remains available and some implementations may still render. That window is now closed for FAQ rich results. The documentation removal on 2026-06-18 is the definitive signal that no implementation of &lt;code&gt;FAQPage&lt;/code&gt; structured data will produce a visual rich result in Google Search.&lt;/p&gt;

&lt;p&gt;Leaving &lt;code&gt;FAQPage&lt;/code&gt; markup in your codebase is not harmful — it won't cause a penalty — but it is dead weight. It adds payload to your pages and creates maintenance surface for structured data that returns nothing.&lt;/p&gt;

&lt;h4&gt;
  
  
  What you need to do
&lt;/h4&gt;

&lt;p&gt;This rule is informational only. No immediate action is required to merge. However, you should plan to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove &lt;code&gt;FAQPage&lt;/code&gt; structured data from your templates and components.&lt;/li&gt;
&lt;li&gt;If you were using FAQ rich results as a click-through rate strategy, evaluate alternatives such as &lt;code&gt;HowTo&lt;/code&gt; (where applicable and still supported) or improving on-page content directly.&lt;/li&gt;
&lt;li&gt;Check your structured data testing pipeline — if you have tests that assert &lt;code&gt;FAQPage&lt;/code&gt; schema is present, those tests are now asserting the presence of inert markup and should be updated or removed.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Sources &amp;amp; References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/search/updates" rel="noopener noreferrer"&gt;Google Search Central Documentation Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Catch SEO issues before they ship
&lt;/h2&gt;

&lt;p&gt;SEOCode reviews every pull request against the latest Google SEO rules — automatically. No manual audits. No surprises after deploy.&lt;/p&gt;

&lt;p&gt;It checks for missing metadata, broken structured data, hreflang errors, robots.txt issues, and more — right inside your existing GitHub workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://seocode.io" rel="noopener noreferrer"&gt;Try SEOCode →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>release</category>
      <category>rulesupdate</category>
      <category>newrules</category>
    </item>
    <item>
      <title>SEOCode Rules Update v1.3.2</title>
      <dc:creator>SEOCode</dc:creator>
      <pubDate>Tue, 09 Jun 2026 17:06:26 +0000</pubDate>
      <link>https://dev.to/seocode_writer/seocode-rules-update-v132-fe8</link>
      <guid>https://dev.to/seocode_writer/seocode-rules-update-v132-fe8</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SEOCode&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Rule&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Engine&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1.3.2:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Three&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;New&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Schema&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Rules&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Speakable,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;IPTC&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Media&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Provenance,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Shipping&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Vocabulary"&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-06-09&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1.3.2&lt;/span&gt;
&lt;span class="na"&gt;slug&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;rule-engine-1-3-2&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Version&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1.3.2&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;adds&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;three&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;new&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;schema&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rules&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;covering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Google's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;removal&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;of&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Speakable&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rich&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;result&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;support,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;IPTC&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;digital&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tagging&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;AI-generated&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;media,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;deprecated&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;shipping&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;schema&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;types."&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;structured-data&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;release-notes&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;ai-content&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;ecommerce&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  SEOCode Rule Engine 1.3.2: Three New Schema Rules for Speakable, IPTC Media Provenance, and Shipping Vocabulary
&lt;/h1&gt;

&lt;p&gt;Version 1.3.2 adds three new schema rules that reflect recent changes to schema.org's vocabulary and Google's supported structured data features — covering a removed rich result type, AI-generated media provenance, and deprecated ecommerce shipping types.&lt;/p&gt;




&lt;h2&gt;
  
  
  New Rules
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;speakable-schema-deprecated&lt;/code&gt; — SpeakableSpecification structured data no longer supported
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Warning | &lt;strong&gt;Category:&lt;/strong&gt; Schema&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SpeakableSpecification&lt;/code&gt; was introduced in schema.org 3.2 and promoted to core in 3.5. It was designed to mark sections of a document as well-suited for text-to-speech rendering. Google has since removed Speakable from its list of supported rich result types and no longer processes &lt;code&gt;SpeakableSpecification&lt;/code&gt; for any Search feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Implementing this schema type has no effect on how your content appears in Google Search. It is dead weight in your structured data. The type still exists in the schema.org vocabulary and may be consumed by other platforms, but if your goal is Google Search optimization, this markup does nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; If SEOCode flags this rule, audit whether you have a specific non-Google reason to keep &lt;code&gt;SpeakableSpecification&lt;/code&gt; markup. If not, remove it to reduce structured data noise.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;code&gt;schema-org-iptc-digital-source-type&lt;/code&gt; — Missing IPTCDigitalSourceEnumeration for AI-generated media
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Info | &lt;strong&gt;Category:&lt;/strong&gt; Schema&lt;/p&gt;

&lt;p&gt;Schema.org 24.0 introduced the &lt;code&gt;IPTCDigitalSourceEnumeration&lt;/code&gt; vocabulary with 14 coded values describing the origin of digital media. Schema.org 29.4 added further missing enumeration values. The vocabulary is applied via the &lt;code&gt;digitalSourceType&lt;/code&gt; property on &lt;code&gt;MediaObject&lt;/code&gt; and its subtypes: &lt;code&gt;ImageObject&lt;/code&gt;, &lt;code&gt;VideoObject&lt;/code&gt;, and &lt;code&gt;AudioObject&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Relevant values include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;TrainedAlgorithmicMediaDigitalSource&lt;/code&gt; — content generated entirely by a trained algorithm (e.g., an AI image generator)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CompositeWithTrainedAlgorithmicMediaDigitalSource&lt;/code&gt; — content that combines real-world capture with AI-generated elements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Google uses &lt;code&gt;digitalSourceType&lt;/code&gt; as a content provenance signal in its "About this image" feature. Correctly tagging AI-generated or AI-assisted media helps search engines and users understand the origin of your content. This also aligns with &lt;a href="https://c2pa.org/" rel="noopener noreferrer"&gt;C2PA&lt;/a&gt; metadata standards, which are increasingly relevant for content authenticity. This rule complements the existing &lt;code&gt;c2pa-metadata&lt;/code&gt; rule in SEOCode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; For any &lt;code&gt;ImageObject&lt;/code&gt;, &lt;code&gt;VideoObject&lt;/code&gt;, or &lt;code&gt;AudioObject&lt;/code&gt; in your structured data that represents AI-generated or AI-assisted media, add the &lt;code&gt;digitalSourceType&lt;/code&gt; property with the appropriate &lt;code&gt;IPTCDigitalSourceEnumeration&lt;/code&gt; value. If the media is fully human-captured with no algorithmic manipulation, tagging it explicitly is still good practice for provenance clarity.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ImageObject"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com/image.jpg"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"digitalSourceType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;code&gt;schema-org-shipping-vocabulary-updated&lt;/code&gt; — Deprecated shipping schema types in use
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Warning | &lt;strong&gt;Category:&lt;/strong&gt; Schema&lt;/p&gt;

&lt;p&gt;Schema.org 29.0 deprecated &lt;code&gt;DeliveryTimeSettings&lt;/code&gt; and &lt;code&gt;ShippingRateSettings&lt;/code&gt;, replacing them with updated shipping vocabulary types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Google uses shipping structured data to populate shipping information in merchant listings and product rich results. As Google adopts the updated schema.org vocabulary, relying on deprecated types risks your shipping data being misread or ignored in product search features. The impact may not be immediate, but staying on deprecated types creates technical debt that will need to be resolved before it affects your merchant listings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; If your product structured data uses &lt;code&gt;DeliveryTimeSettings&lt;/code&gt; or &lt;code&gt;ShippingRateSettings&lt;/code&gt;, migrate to the replacement types introduced in schema.org 29.0. Refer to the schema.org release notes for the specific replacement type names and property mappings.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources &amp;amp; References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://schema.org/docs/releases.html" rel="noopener noreferrer"&gt;Schema.org Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Catch SEO issues before they ship
&lt;/h2&gt;

&lt;p&gt;SEOCode reviews every pull request against the latest Google SEO rules — automatically. No manual audits. No surprises after deploy.&lt;/p&gt;

&lt;p&gt;It checks for missing metadata, broken structured data, hreflang errors, robots.txt issues, and more — right inside your existing GitHub workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://seocode.io" rel="noopener noreferrer"&gt;Try SEOCode →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>release</category>
      <category>rulesupdate</category>
      <category>newrules</category>
    </item>
    <item>
      <title>SEOCode Rules Update v1.3.0</title>
      <dc:creator>SEOCode</dc:creator>
      <pubDate>Tue, 09 Jun 2026 16:29:51 +0000</pubDate>
      <link>https://dev.to/seocode_writer/seocode-rules-update-v130-3m7d</link>
      <guid>https://dev.to/seocode_writer/seocode-rules-update-v130-3m7d</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SEOCode&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Rule&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Engine&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1.3.0:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;AI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Mode&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;preferred&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sources,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;hasAdultConsideration&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;schema,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;third-party&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tool&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;guidance"&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-06-09&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1.3.0"&lt;/span&gt;
&lt;span class="na"&gt;slug&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rule-engine-1-3-0"&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Version&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1.3.0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;adds&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;three&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;new&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rules&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;covering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Google's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;expanded&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;preferred&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sources&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;feature,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;new&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;hasAdultConsideration&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;merchant&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;listing&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;property,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Google's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;published&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;guidance&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;on&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;evaluating&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;third-party&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;SEO&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tools."&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;changelog"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rules"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;schema"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;technical-seo"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ai-overviews"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;structured-data"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  SEOCode Rule Engine 1.3.0
&lt;/h1&gt;

&lt;p&gt;Version 1.3.0 adds three rules reflecting changes Google published to its Search Central documentation on 2026-06-09, and updates one existing rule with revised references and fix guidance.&lt;/p&gt;




&lt;h2&gt;
  
  
  New Rules
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;preferred-sources-ai-mode&lt;/code&gt; — Preferred sources not configured for AI Mode and AI Overviews
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Info&lt;/p&gt;

&lt;p&gt;Google's preferred sources feature, which previously applied only to standard Google Search, now also applies to AI Overviews and AI Mode. Publishers who qualify and have correctly configured preferred sources can receive increased visibility in AI-generated search results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the rule checks:&lt;/strong&gt;&lt;br&gt;
This rule flags pages where identity signals required for preferred sources eligibility are absent or misconfigured. Specifically, it looks for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Organization&lt;/code&gt; schema with a matching &lt;code&gt;sameAs&lt;/code&gt; or &lt;code&gt;url&lt;/code&gt; property&lt;/li&gt;
&lt;li&gt;Site name schema (&lt;code&gt;WebSite&lt;/code&gt; with a &lt;code&gt;name&lt;/code&gt; property)&lt;/li&gt;
&lt;li&gt;Self-referencing canonical URLs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;br&gt;
AI Overviews and AI Mode are now a significant surface in Google Search. Preferred sources is one of the few explicit mechanisms Google offers publishers to influence how their content is attributed in AI-generated answers. If your identity signals are broken or missing, you cannot benefit from this feature even if your site otherwise qualifies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt;&lt;br&gt;
Check that your site has valid &lt;code&gt;Organization&lt;/code&gt; and &lt;code&gt;WebSite&lt;/code&gt; structured data on your homepage, and that canonical URLs are correctly set across your pages. Then review Google's eligibility requirements for preferred sources (linked in the references below) to confirm your site qualifies.&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;code&gt;has-adult-consideration-schema&lt;/code&gt; — Missing &lt;code&gt;hasAdultConsideration&lt;/code&gt; property on adult merchant listings
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Info&lt;/p&gt;

&lt;p&gt;Google has added support for the &lt;code&gt;hasAdultConsideration&lt;/code&gt; property in merchant listing structured data, aligning it with the existing Merchant Center feed specification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the rule checks:&lt;/strong&gt;&lt;br&gt;
This rule flags &lt;code&gt;Product&lt;/code&gt; or &lt;code&gt;Offer&lt;/code&gt; structured data on pages that appear to contain adult content but do not include the &lt;code&gt;hasAdultConsideration&lt;/code&gt; property.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;br&gt;
Without this property, Google must infer whether a merchant listing contains adult content algorithmically. Incorrect classification can affect where and how your products appear in shopping experiences — either surfacing them in contexts where adult content is filtered out, or failing to apply appropriate filters. Explicit markup removes the ambiguity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt;&lt;br&gt;
If you operate a merchant site with adult product listings, add &lt;code&gt;"hasAdultConsideration": true&lt;/code&gt; to the relevant &lt;code&gt;Offer&lt;/code&gt; or &lt;code&gt;Product&lt;/code&gt; structured data blocks. This is a direct signal to Google rather than leaving classification to inference.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://schema.org/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Product"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Example Product"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"offers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"@type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Offer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"hasAdultConsideration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"29.99"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"priceCurrency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USD"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;code&gt;third-party-seo-tools-guidance&lt;/code&gt; — Third-party SEO tool recommendations not critically evaluated
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Severity:&lt;/strong&gt; Info&lt;/p&gt;

&lt;p&gt;Google has published explicit guidance on how to evaluate recommendations from third-party SEO tools, services, and consultants.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the rule checks:&lt;/strong&gt;&lt;br&gt;
This is a process-level rule rather than a markup check. It surfaces as an informational flag when SEOCode detects patterns in your codebase that are commonly associated with outdated or unverified SEO advice — for example, meta tags or structured data patterns that contradict current Google documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt;&lt;br&gt;
Google's guidance makes four points worth internalizing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SEO tool recommendations do not necessarily reflect Google's actual ranking signals.&lt;/li&gt;
&lt;li&gt;Many recommendations are based on correlation studies, not confirmed causation.&lt;/li&gt;
&lt;li&gt;Advice can become outdated as Google's systems evolve.&lt;/li&gt;
&lt;li&gt;Google Search Console data and official Search Central documentation should be the primary reference for SEO decisions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This rule exists to prompt a review when your code contains patterns that may have originated from third-party tool output rather than verified guidance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt;&lt;br&gt;
When this rule fires, cross-reference the flagged pattern against the &lt;a href="https://developers.google.com/search/docs" rel="noopener noreferrer"&gt;Google Search Central documentation&lt;/a&gt;. If the pattern is not supported or recommended there, treat it as unverified. No code change is automatically required — this rule is informational and intended to prompt a review step.&lt;/p&gt;




&lt;h2&gt;
  
  
  Updated Rules
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;preferred-sources-feature&lt;/code&gt; — Missing preferred sources markup or configuration
&lt;/h3&gt;

&lt;p&gt;The existing rule covering preferred sources configuration has been updated with revised references, an updated description, and a new fix template to reflect Google's expansion of the feature to AI Overviews and AI Mode. The underlying check logic is unchanged; the update ensures the guidance surfaced in pull request comments points to current documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt;&lt;br&gt;
No action required unless this rule is already firing on your PRs. If it is, the updated fix template provides more accurate remediation steps than the previous version.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources &amp;amp; References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/search/updates" rel="noopener noreferrer"&gt;Google Search Central Documentation Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Catch SEO issues before they ship
&lt;/h2&gt;

&lt;p&gt;SEOCode reviews every pull request against the latest Google SEO rules — automatically. No manual audits. No surprises after deploy.&lt;/p&gt;

&lt;p&gt;It checks for missing metadata, broken structured data, hreflang errors, robots.txt issues, and more — right inside your existing GitHub workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://seocode.io" rel="noopener noreferrer"&gt;Try SEOCode →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>release</category>
      <category>rulesupdate</category>
      <category>newrules</category>
      <category>updatedrules</category>
    </item>
  </channel>
</rss>
