Daily SEO Note — September 16, 2026: Schema.org 30.1 Ships and Chrome Publishes Your Ad Load

1. SEO for Content Writers
The one editorial change that matters today: Search Live now runs on Gemini 3.8 Live for everyone, which means a growing share of your pages get read aloud one paragraph at a time, stripped of the layout you wrote them into. Everything else in the writer track is either measurement that is now public or a rumour Google has not touched. Window covered: September 15, 06:00 UTC to September 16, 06:00 UTC.
Search Live moved to Gemini 3.8 Live, and voice answers do not read tables
Google announced Gemini 3.8 Live and Gemini 3.8 Live Extended Thinking on September 15, 2026, rolling the pair across the Gemini API, AI Studio, Gemini Enterprise, Gemini Live, Workspace and Search Live. Rollout status: shipped. Gemini 3.8 Live is the model available to everyone in Search Live; Extended Thinking is limited to Gemini Live, Docs for AI Pro and Ultra subscribers, and Gmail and Keep for AI subscribers.
Who it affects: all content, but it bites hardest on how-to, troubleshooting and comparison pages, where people ask spoken follow-ups instead of returning to a results page. Google's framing is conversational collaboration with visual grounding, which in practice means your paragraph is the unit of retrieval, not your page.
What to do differently in the next article: put a single self-contained sentence that answers the heading directly underneath every H3, and write it so it survives being lifted out with no surrounding page. If the most important fact in a section lives only in a comparison table, restate it in prose, because a spoken answer cannot read a table aloud.
What to stop doing: stop opening sections with setup prose that defers the answer by two paragraphs. That pattern was always weak, and in a spoken follow-up chain it means the answer never gets extracted at all.
Rank trackers moved on September 15; Google has logged nothing
Search Engine Roundtable reported elevated volatility across thirteen tracking tools on September 15, 2026 at 7:52 am, writing that it suspected the start of an update. Treat this as unconfirmed. Detection only: the Roundtable write-up is not a citation of record, and no primary source supports an update.
The citation of record is the absence of one. The Google Search Status Dashboard showed no incidents and all four systems, crawling, indexing, ranking and serving, available across September 8 to 15, last updated September 15 at 23:03 PDT. The Search documentation changelog has logged nothing since September 8. Rollout status: no announced or dashboard-logged update exists.
Action: watch. Do not commission rewrites, prune pages or reverse an editorial decision on twenty-four hours of third-party volatility data, and do not put this in a client report as an update. If Google confirms something, that is the day the story changes.
Chrome now publishes how ad-heavy your article templates are
On September 15, 2026, Chrome added four experimental ad metrics to the Chrome UX Report: Ad Count, Ad Density, Ad Weight by network usage and Ad Weight by CPU usage. Ad Density is the one editors should care about: Chrome samples the visible viewport once per second for the whole visit and reports the average share of viewport area covered by ad frames, as field data from real users. Rollout status: live in the CrUX APIs now, with coverage widening over the coming month.
Who it affects: any ad-supported editorial site. The consequence is not a ranking one. Google states plainly that these are experimental, that they are not part of Core Web Vitals, and that there are no suggested targets or thresholds. What changed is visibility: your ad load on an article template is now a public number that a client, an advertiser or a competitor can pull with an API key.
What to do differently: when you brief long-form, specify how many ad slots the template is allowed to interleave and treat mid-article inserts as an editorial decision with a named owner, not a monetisation default. The Chrome announcement is the source to hand your revenue team when you argue for fewer slots above the fold.
Schema.org 30.1 adds product compliance vocabulary, not new rich results
Schema.org 30.1 was released on September 16, 2026. For editorial it matters in one narrow way: the release adds vocabulary for product compliance and consumer disclosure, including DigitalProductPassport, EnvironmentalProductDeclaration and a consumerNotice property on Product, plus commerce terms such as isOftenBoughtWith, minimumOrderValue and MaximumRetailPrice. MedicalSpecialty gained Ophthalmology and Audiology.
Who it affects: product, commerce and regulated-vertical writers, especially anyone publishing into EU markets where product passports are becoming a compliance artefact. What to do differently: start sourcing the underlying facts as on-page copy that a reader can verify, the certifying body, the certification identifier and the expiry date, rather than treating compliance as something the developers bury in markup.
What to stop doing: stop reading a Schema.org release as a new Google feature. DigitalProductPassport sits in the vocabulary's new area, which is explicitly a call for implementation feedback, and Google rich result eligibility is governed by the search gallery, which has not changed. Rollout status: vocabulary released, no search feature attached.
Google's AI Overviews guidance did not change, whatever your feed says
Worth stating because the volume of advice suggests otherwise: Google's AI features and your website page is unchanged, last updated 2025-12-10, and it still says there are no additional requirements to appear in AI Overviews or AI Mode and no special optimizations necessary. Rollout status: documentation stable, no change inside the window.
The one mechanic the page does describe is query fan-out: AI Overviews and AI Mode issue multiple related searches across subtopics and data sources, which is why they surface a wider spread of links than a classic results page. That is a brief-level instruction, not a formatting trick. Cover the subtopics a curious person would ask next, and you are covering the fan-out.
Action: no action, beyond removing "optimize for AI Overviews" from your brief template as though it were a distinct discipline with its own checklist.
Apply to your next brief
- Put one self-contained sentence answering the heading directly under every H3, written to survive being read aloud with no page around it.
- Never let a table carry a section's single most important fact; restate it in prose.
- Brief the subtopics a fan-out would generate, not just the head term.
- On product and regulated-vertical pieces, require sourced compliance facts in the copy: certifying body, certification identifier, expiry date.
- Set an explicit ad-slot budget for long-form templates and name an owner for mid-article inserts.
- Do not brief rewrites off September 15 volatility. Google has confirmed nothing.
- Delete "optimize for AI Overviews" as a standalone brief instruction; Google's documented position is that no special optimization exists.
2. SEO for Developers
The consequential engineering change today is Schema.org 30.1, released September 16, 2026. The one worth a same-day pull request, though, is smaller and less glamorous: OpenAI's crawler roster now carries a fourth agent, and Cloudflare moved a batch of managed WAF rules from Log to Block yesterday, which is exactly the combination that produces edge 403s on URLs your robots.txt says are allowed.
Schema.org 30.1 released September 16, 2026
Version 30.1, released 2026-09-16. Non-breaking, purely additive. Nothing in your existing markup fails and no validator starts erroring. The symptom if you ignore it is simply that you cannot express product compliance data in a standard way.
The release adds DigitalProductPassport and EnvironmentalProductDeclaration classes for EU product passport and certification discovery, a consumerNotice property plus isOftenBoughtWith and specification on Product, shipping and pricing terms including minimumOrderValue and MaximumRetailPrice, and two new MedicalSpecialty enumeration values, Ophthalmology and Audiology. Several previously pending terms were promoted to generally available.
What to change: your JSON-LD emitter, whether that is a hand-rolled component, next-seo or a schema-dts typed builder. One caution before you ship: DigitalProductPassport is in the vocabulary's "new" area, which is a request for implementation feedback, and emitting it buys you no Google rich result, because eligibility lives in the search gallery and did not change. Emit it only where you hold real certification data.
<!-- Schema.org 30.1 (2026-09-16): consumerNotice + product passport.
Additive only. Emit these terms ONLY when you hold real data;
they grant no Google rich-result eligibility on their own. -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Example Cordless Drill",
"sku": "DRL-2026-01",
"consumerNotice": "Contains a lithium-ion battery. Do not incinerate.",
"hasDigitalProductPassport": {
"@type": "DigitalProductPassport",
"certificationIdentification": "DPP-EU-118422",
"certificationStatus": "https://schema.org/CertificationActive",
"issuedBy": { "@type": "Organization", "name": "EU Notified Body 0402" },
"datePublished": "2026-04-01",
"expires": "2031-04-01"
}
}
</script>Four experimental ad metrics landed in the CrUX API
Shipped September 15, 2026. Non-breaking. The symptom if you ignore it is asymmetry rather than breakage: third parties can query your origin's ad load while you are not watching it yourself.
The four metric keys are experimental_ad_count, experimental_ad_density, experimental_ad_cpu and experimental_ad_kilobytes, and they are accepted in the metrics array of the CrUX API queryRecord endpoint, plus queryHistoryRecord for weekly time series. They also appear in the Chrome DevTools Ad panel and in CrUX Vis. BigQuery is stated as planned, not shipped, so do not write a BigQuery job against them yet, and note the CrUX release notes still list August 2026 as the latest dataset entry.
Google is explicit that these are not part of Core Web Vitals and carry no suggested thresholds, so do not wire them to a CI gate that fails a build. Put them on a dashboard next to LCP, INP and CLS, and alert on trend rather than on an absolute number you would have to invent.
#!/usr/bin/env bash
# Pull the four experimental CrUX ad metrics for an origin.
# Docs: https://developer.chrome.com/docs/ads/tooling
set -euo pipefail
: "${CRUX_API_KEY:?set CRUX_API_KEY}"
ORIGIN="${1:-https://example.com}"
curl -sS -X POST \
"https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=${CRUX_API_KEY}" \
-H 'Content-Type: application/json' \
-d "$(cat <<JSON
{
"origin": "${ORIGIN}",
"formFactor": "PHONE",
"metrics": [
"experimental_ad_count",
"experimental_ad_density",
"experimental_ad_cpu",
"experimental_ad_kilobytes"
]
}
JSON
)" | jq '.record.metrics'
# Weekly history: swap records:queryRecord -> records:queryHistoryRecordOpenAI's crawler roster is now four agents, and the docs URL moved
Important. Ship today. The symptom if you ignore it: a wildcard AI-bot block silently removes your ChatGPT ad landing pages from policy validation, and can cost you ChatGPT Search visibility, because a blanket rule cannot tell a training crawler from a search crawler.
The current OpenAI bots documentation lists four agents that must stay four separate decisions: GPTBot for generative model training, OAI-SearchBot for surfacing sites in ChatGPT search, ChatGPT-User for user-triggered fetches, and OAI-AdsBot, which validates ad landing pages against OpenAI's ad policies and does not feed model training. Two operational details matter. OpenAI publishes IP range files for gptbot, searchbot and chatgpt-user but not for OAI-AdsBot, so you can only match it on user agent today. And robots.txt changes take roughly twenty-four hours to propagate across OpenAI's systems, so do not judge a fix on the same afternoon.
One housekeeping item worth catching in your runbooks: platform.openai.com/docs/bots now returns a 301 to developers.openai.com/api/docs/bots. While you are in the file, remember that RFC 9309 resolves groups by the most specific matching user-agent, so a named group beats your wildcard. Perplexity's bots documentation splits the same way, PerplexityBot for search and Perplexity-User for user-triggered fetches, and Perplexity notes the latter generally ignores robots.txt because a human asked for it.
# Separate decisions: training vs search vs user-triggered vs ad validation.
# Named groups win over `*` per RFC 9309 sec. 2.2.1.
# Roster: https://developers.openai.com/api/docs/bots
# --- Search / answer surfaces: allow (these earn you citations) ---
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /
# --- Ad landing page validation: allow only if you buy ChatGPT ads ---
# No published IP range file yet; UA matching only.
User-agent: OAI-AdsBot
Allow: /
# --- Model training: your call. Blocking here does NOT hurt search. ---
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Bytespider
Disallow: /
Sitemap: https://example.com/sitemap.xmlCloudflare moved managed WAF rules from Log to Block on 2026-09-15
WAF release 2026-09-15. Potentially breaking at the edge. The symptom if you ignore it is the nastiest class of SEO bug, because it does not look like an SEO bug: your robots.txt allows a path, your origin would serve 200, and the edge returns 403 to the fetcher. In Search Console it surfaces as a crawl anomaly or a 4xx, never as a robots error, so the usual robots.txt tester tells you everything is fine.
Yesterday's Cloudflare changelog entry added detections for command injection, SSRF targeting cloud metadata endpoints and version control information disclosure, and transitioned a set of updated rules from Log action to Block. A further batch is scheduled for 2026-09-22: SSRF jar loopback payload, SSRF cloud and link-local notation, SSRF local notation, and SSTI Jinja dangerous globals. That scheduled date is your window to find false positives before they start blocking.
What to change: nothing in a config file yet, and that is the point. Go and read WAF events filtered to crawler user agents over the last twenty-four hours, and confirm your CDN is not quietly overriding robots.txt intent on faceted or query-heavy URLs, which is where injection signatures produce false positives. Verify real Googlebot by reverse DNS rather than user agent, per Google's crawler documentation, before you add any allow rule.
#!/usr/bin/env bash
# After the Cloudflare WAF release 2026-09-15, confirm the edge is not
# returning 403 on URLs robots.txt allows. Run against YOUR OWN origin.
set -euo pipefail
HOST="${1:?usage: check-crawler-403.sh https://example.com paths.txt}"
PATHS="${2:-paths.txt}"
UA='Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
while read -r path; do
[ -z "$path" ] && continue
code=$(curl -sS -o /dev/null -w '%{http_code}' -A "$UA" "${HOST}${path}")
case "$code" in
403|429) echo "EDGE-BLOCKED $code ${path}" ;;
200) echo "ok 200 ${path}" ;;
*) echo "check $code ${path}" ;;
esac
done < "$PATHS"
# Cross-check anything flagged against Cloudflare WAF events, then
# verify genuine Googlebot by reverse DNS before adding an allow rule.Quiet surfaces: Next.js, Google docs, security advisories
Stated so you do not go looking. Next.js shipped no stable release inside the window: the Next.js blog shows its most recent post on September 4, 2026, the current stable line is 16.3 from August 3, and the only tags dated September 14 are 16.4.0 canaries, none of which touch the Metadata API, app/sitemap.ts or app/robots.ts. Canaries are not a rollout; do not upgrade production on one.
No GitHub advisory published inside the window affects mainstream SEO tooling, no sitemap, robots, structured-data or crawler package. Google's documentation changelog has logged nothing since September 8, and the Search Status Dashboard is clean. Rollout status across all three: no change.
Ship today
- Add explicit named groups for OAI-SearchBot and OAI-AdsBot to public/robots.txt so no wildcard rule decides ad validation and search visibility for you. Allow roughly twenty-four hours for OpenAI to pick up the change.
- Read Cloudflare WAF events filtered to crawler user agents for the last twenty-four hours and resolve false positives before the 2026-09-22 batch moves more rules to Block.
- Wire experimental_ad_count, experimental_ad_density, experimental_ad_cpu and experimental_ad_kilobytes into your CrUX dashboard. Alert on trend, not on thresholds, because none exist.
- Update any runbook or bookmark still pointing at platform.openai.com/docs/bots to the developers.openai.com path it now 301s to.
- Leave Schema.org 30.1 terms out of production markup unless you hold the underlying certification data. Additive vocabulary is not a rich result.
Comments
Share your thoughts and join the conversation
Leave a Comment
Keep reading.

Sept 17 2026 Dev Stack Release Audit: Fastify DoS Fix, MongoDB's Critical CVE, and a Wave of Sept 16 Patches

Daily SEO Note — September 17, 2026: Google Search Profiles Open at 10,000 Followers

