Daily SEO Note — November 6, 2026: AI Overviews Cites Pages That Block AI Crawlers
Part of Daily SEO Notes, a daily series.

Window for this edition: the 24 hours to 06:00 UTC on November 6, 2026. Today is a Friday, so the weekend extension does not apply. Every timestamp below is UTC unless a source states otherwise.
Start with what did not move. Google's Search Status Dashboard shows no incidents across Crawling, Indexing, Ranking and Serving, last updated 22:04 PST on November 5, 2026, so there is no ranking update in flight. The Search Central documentation changelog has published nothing since October 26, 2026. The Bing Webmaster blog is still headed by the Topics Portfolio beta from October 13, 2026. The one Search Central blog post in the window announces the return of Search Central Live Zurich and carries no guidance for site owners. Everything substantive below arrived from somewhere other than Google's announcement channels.
SEO for Content Writers
The most consequential editorial finding today is that Google's AI Overviews routinely cites a directory of tens of millions of AI-generated pages whose owner blocks AI crawlers from reading them. Two things a lot of content strategies have assumed for the past year are wrong in the same piece of evidence: that blocking AI crawlers reduces your exposure in AI Overviews, and that AI-generated pages at scale are self-limiting because Google will eventually catch them.
Blocking AI crawlers does not keep you out of AI Overviews
Saul Westbrook of Peripheral Creative published first-hand research into Facebook Answers, the AI-generated pages Meta hosts at facebook.com/fb-answers/, which was surfaced across the industry on November 5, 2026. Buried in it is the finding that matters most for the rest of us: his tests showed LLM crawlers were blocked from those pages, so he could not get a chatbot to cite them — and yet Google's AI Overviews cites them frequently. Rollout status: observed behaviour of a live system, documented with examples, and consistent with what Google has already written down.
Google's documentation explains it, and it is worth reading the words exactly. The AI features page says a page is eligible for AI Overviews or AI Mode when it is "indexed" and "eligible to be shown in Google Search with a snippet," and that "there are no additional technical requirements." The same page points to Google-Extended only as a way "to limit AI training and grounding in some of Google's other systems." AI Overviews is not one of those other systems. It draws on the Search index and the snippet you already allow, which means the lever that actually reduces your AI Overviews surface is a snippet control, not a crawler rule.
Who it affects: all content, and most sharply the publishers who added AI-crawler blocks over the last eighteen months on the understanding that it would reduce their AI Overviews exposure. It did not, and the Facebook Answers pages are the cleanest available demonstration — blocked to chatbots, cited by AI Overviews, at scale.
What to do differently in the next brief: write the two decisions as two separate lines. One is which assistants may ingest the page, which is a crawler and edge policy question. The other is how much of the page a search snippet may expose, which is nosnippet, data-nosnippet and max-snippet, and is the only one of the two that touches AI Overviews. When a stakeholder asks for less AI Overviews visibility on a specific article, the editorial instruction is to mark the passage you do not want quoted, and to accept that doing so also shortens your ordinary snippet.
What to stop doing: stop writing "we block AI crawlers" into a strategy document as though it were AI Overviews protection. It is a training and chatbot-retrieval decision, and labelling it anything else means the next person who reads the document will make a bad call.
Tens of millions of AI pages ranked straight through a spam update
The same research puts numbers on the scale, all of them third-party estimates that the author flags as such. Semrush data cited in the write-up has more than 39 million Facebook Answers pages ranking for at least one US keyword, the count of keywords with a ranking Answers page rising from roughly 4 million to 53 million worldwide between July and August 2026, and worldwide traffic reaching about 40.6 million visits in October 2026 from almost nothing in April. The pages first appeared in results in May 2026. Rollout status: ongoing, levelling off, and still live — the directory ranked through Google's September 2026 spam update, and Meta has not commented publicly.
The "scaled content abuse" framing came from Glenn Gabe, who said so on X on November 5, 2026. That characterisation is his, not Google's, and no Google representative has commented — treat the label as unconfirmed. What is not in doubt is the standard it would be judged against. Google's spam policies define scaled content abuse as "when many pages are generated for the primary purpose of manipulating search rankings," and list "using generative AI tools or other similar tools to generate many pages without adding value for users" as an example. The whole weight sits on "without adding value." These pages summarise first-party posts that exist nowhere else, which is a defensible answer to that test even when the output is mediocre.
What to do differently: delete "AI-written" from your list of competitive complaints and replace it with a question you can actually answer in an audit — does this page carry something a reader cannot get anywhere else. That is the test the policy sets, and it is the test your own briefs should be built to pass. First-hand testing, proprietary data, named sources and original reporting are not nice-to-haves against a competitor with 39 million pages of summarised user content; they are the only thing that distinguishes you from it.
The research also documents inaccurate and stale output on those pages, including an incorrect weather forecast and summaries built on posts dating back to 2010. That is a freshness lesson pointed the other way from the one most editorial calendars encode. Freshness is not the date on your own byline; it is the age of the material the page is built from. A 2026 update that recycles 2019 source material is the failure mode being demonstrated here at scale.
What to stop doing: stop treating a September spam update as a reason to wait. Nothing in the enforcement record suggests a competitor's scaled content will be removed on a schedule you can plan around.
Google will hold an important URL in the index for a while after it starts returning 4xx
Gary Illyes of Google explained, in a LinkedIn thread reported on November 5, 2026, why the VLC media player site kept appearing in results without a favicon. The site had been serving HTTP 418, which Google treats like most other 4xx responses — essentially "not found" — and because the site is so important, Search "temporarily protected the URL from falling out of the index right away." Rollout status: described behaviour of a live system, not a change, and the only on-the-record Google comment in the window.
For an editor this is a diagnostic rule, not a strategy. The signature Illyes describes is specific: the link and the last known title survive, while the snippet and the favicon disappear, because Google cannot read the page any more. If you see that pattern on one of your articles, the cause is upstream of the writing. Nothing about the copy changed, nothing about the topic decayed, and a rewrite will not bring the snippet back.
What to do differently: add one line to your triage checklist before any URL goes on a rewrite list. If the snippet is gone but the link is still ranking, check the status code first and hand it to engineering. What to stop doing: stop reading a vanished snippet as a quality signal. It is usually a 4xx, and the protection Illyes describes is what buys you the time to notice.
Unconfirmed: booking buttons in AI Mode on home services listings
Reports on November 5, 2026 describe AI Mode showing booking buttons on home services listings through partners including Angi, Thumbtack, Housecall Pro and GetJobber, with ServiceTitan said to be coming. There is no Google announcement, no Search Central or Keyword blog post, and no documentation change, so this is logged and labelled unconfirmed and kept out of the checklist below. If it holds up, the editorial consequence for home services content is that the booking step moves off your page entirely — worth a plan, not worth a rewrite today.
Apply to your next brief
- Split the AI question into two lines in every brief: which assistants may ingest the page (crawler and edge policy) and how much a search snippet may expose (
nosnippet,data-nosnippet,max-snippet). Only the second affects AI Overviews. - Remove any claim in a live strategy document that blocking AI crawlers limits AI Overviews exposure.
- Replace "competitor uses AI" in audits with "what does this page carry that a reader cannot get elsewhere," and brief the answer in: first-hand testing, original data, named sources.
- Date the source material, not just the article. Add a line to the brief recording how old the underlying facts, posts or data are.
- Before any URL joins a rewrite list, check whether a missing snippet is actually a 4xx. Ranking link plus missing snippet and favicon is an engineering ticket.
- Keep the AI Mode home services booking reports out of client decks until Google documents them.
SEO for Developers
The engineering change that matters today is a patch, not a feature: Astro 7.4.6 fixes an i18n fallback path that answered a locale-prefixed URL with a 302 and no Location header, which is a dead end for any crawler that followed it. Alongside it, SvelteKit backported five security fixes to its 2.x line, two of them in the prerender path, and Vercel replaced Cron Jobs with a scheduling product that quietly fixes something SEO teams have been shipping wrong for years.
Astro 7.4.6 fixes a locale-prefixed URL answering 302 with no Location header
Version and date: [email protected], published November 5, 2026 at 16:16 UTC. Non-breaking to adopt. The symptom if you do not is precise, and it is the kind of thing that never shows up in a browser: with i18n fallback configured, a locale-prefixed request for a page that exists only in the fallback locale — the release notes use /de/about with fallback: { de: 'en' } — was answered with status 302 and no Location header on on-demand rendered pages. A redirect with nowhere to go is not a redirect. Googlebot gets a response it cannot follow, the URL never resolves to content, and the page is absent from the index for that locale while your hreflang cluster keeps advertising it.
The fix routes those requests properly: they are now rewritten or redirected to the fallback locale according to i18n.routing.fallbackType, including encoded paths and sites with a configured base, with query strings preserved and explicit page statuses and redirects left alone. A second change in the same release (#18541) makes matchAllRoutes consider fallbackRoutes so the dev server matches the production router, which means this class of bug is now reproducible locally instead of appearing only in production.
The setting to change is the version. Then verify from outside, because this is a status-code bug and only a status-code check will catch it.
import { defineConfig } from 'astro/config'
export default defineConfig({
site: 'https://example.com',
output: 'server',
i18n: {
defaultLocale: 'en',
locales: ['en', 'de', 'fr'],
fallback: { de: 'en', fr: 'en' },
routing: {
// 'rewrite' serves the fallback content at the locale URL.
// 'redirect' sends a real redirect with a Location header.
// Before 7.4.6, on-demand pages could answer 302 with neither.
fallbackType: 'rewrite',
},
},
})#!/usr/bin/env bash
set -euo pipefail
# A 302 with no Location is the bug. Print both so it cannot hide.
BASE="${1:?usage: check-i18n-fallback.sh https://example.com}"
PATHS=("/de/about" "/fr/about" "/de/about?utm_source=test" "/de/%C3%BCber-uns")
for p in "${PATHS[@]}"; do
read -r code location < <(
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' "${BASE}${p}"
)
printf '%-34s %s Location=%s\n' "$p" "$code" "${location:-<none>}"
done
# Fail the check on any 3xx without a redirect target.Astro 7.4.6 makes astro check fail CI instead of passing silently
Identifier and date: #18589, in [email protected] on November 5, 2026. This one is breaking, deliberately, and it will break the right pipelines. Previously astro check exited with code 0 when @astrojs/check or typescript was not installed, so a CI job that ran it reported green while no type checking happened at all. It now exits 1.
The symptom of having ignored this is retrospective rather than future: every green astro check run in a job where those dependencies were missing told you nothing. For an SEO-relevant codebase that is not a small gap. The typed surfaces in an Astro project are exactly the ones that break quietly — a content collection schema that no longer matches the frontmatter your sitemap iterates, a getStaticPaths return shape that drops a route, a canonical or hreflang prop threaded through a layout. Those produce wrong HTML, not a crash, and a type check is the cheapest place to catch them.
The file to change is your CI workflow, and the change is to install the checker explicitly rather than relying on it being present. A related fix in the same release (#18602) stops astro check crashing with an EPIPE stack trace when its output is piped to something that closes early, such as astro check | head, so piping the output in CI is now safe.
name: seo-checks
on: [push, pull_request]
jobs:
types:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version: '22'
- run: npm ci
# Make the checker a real dependency. On >= 7.4.6 a missing
# @astrojs/check or typescript now exits 1 instead of 0.
- run: npm install --no-save @astrojs/check typescript
- run: npx astro check
- run: npx astro build
# Fail the build if the sitemap did not come out of it.
- run: test -s dist/sitemap-index.xmlSvelteKit 2.70.4 backports five security fixes, two of them in the prerender path
Version and date: @sveltejs/[email protected], published November 5, 2026 at 12:28 UTC and on npm at 12:30. The source is PR #17620, titled "fix: backport security fixes to version 2," opened November 2 and merged into the version-2 branch on November 5. No CVE or GHSA identifier was referenced at publication, so your scanner will not flag this for you — the version bump is the only signal you get.
Five fixes ship in it, and the two that belong on this beat touch prerendered output directly. The first escapes cache-control headers in prerendered HTML; the second stops server-side self-fetch fallbacks from following redirects. Prerendered HTML is the exact bytes a crawler receives, and the Cache-Control value attached to it governs how long a CDN and Google's own caches keep serving a stale copy — a header that can be influenced through the prerender path is a serving-correctness problem as much as a security one. The remaining three: reroute now returns a 400 instead of throwing when it rewrites a malformed pathname, path traversal when previewing prerendered pages and data on Windows is blocked, and server-side route resolution no longer loads code from another origin for pathnames beginning //.
Non-breaking to apply. If you are on the 3.x line, note that 3.1.1 from October 29 already carried two of the five; 2.x received the full backport yesterday, so a 2.x project is the one that needs attention today.
#!/usr/bin/env bash
set -euo pipefail
# Resolve what is installed, not what package.json asks for.
npm ls @sveltejs/kit --all --depth=3 2>/dev/null \
| grep -E '@sveltejs/kit@' || echo "kit not installed"
# 2.x maintenance line: 2.70.4 carries the full security backport.
npm install @sveltejs/kit@^2.70.4
# Then confirm prerendered pages still carry the headers you intend.
npm run build
grep -ril 'cache-control' .svelte-kit/output/prerendered | headAstro 7.4.7 fixes the image endpoint on case-sensitive filesystems
Version and date: [email protected], on npm November 5, 2026 at 19:59 UTC. Non-breaking patch. It fixes the image endpoint treating directories whose names differ only by letter case as being inside the build output directory on case-sensitive filesystems.
The reason this is worth a line rather than a shrug is where it bites. macOS is case-insensitive by default and Linux is not, so a project with a Public/ or Assets/ directory alongside the expected lowercase one behaves differently on a developer's laptop than it does in a container build. An image endpoint that mis-resolves a path serves a wrong or missing optimised image, and the URLs in your srcset are the ones Google Images crawls. If your image pipeline has ever worked locally and produced broken derivatives in CI, this is a candidate explanation.
#!/usr/bin/env bash
set -euo pipefail
# Directories that differ only by case break on Linux but not on macOS.
find . -path ./node_modules -prune -o -type d -print \
| awk '{ k = tolower($0); if (k in seen) print seen[k]" <-> "$0; else seen[k] = $0 }'
# Then confirm optimised images actually resolve in the built output.
npm install astro@^7.4.7
npm run build
grep -roh 'src="/_image[^"]*"' dist | sort -u | headVercel Schedules enters public beta and makes your sitemap job private
Identifier and date: Vercel Schedules is now in public beta, November 5, 2026, public beta on all plans. It succeeds Cron Jobs, which keep working, so this is non-breaking. The symptom of ignoring it is not an outage; it is staying on the older primitive while the one thing SEO teams keep getting wrong stays wrong.
That one thing is exposure. Sitemap regeneration, IndexNow submission, and the regression monitors that check robots.txt availability, canonical drift and accidental noindex all tend to run on cron, and under Cron Jobs they ran at a public URL that anyone — and any crawler — could hit. Schedules defines the job in vercel.json and marks the target function with "experimentalTriggers": [{ "type": "schedule/v1beta" }], which makes the function private: it has no public URL and only Vercel's scheduling infrastructure can invoke it. Your sitemap-regeneration endpoint stops being a crawlable URL, which is a genuine SEO improvement disguised as an infrastructure change.
The configuration is in two places — vercel.json for the schedule and the trigger, and the handler wrapped with handleSchedule from @vercel/schedules. Schedules can also be created at runtime with Schedules.create() targeting a Queue topic, and any schedule can be enabled, disabled or run on demand without redeploying, which is what you want for a monitor you need to fire manually during an incident. Pricing on Pro and Enterprise is $5 per million runs and $10 per million schedule creations; Hobby includes 500 creations and 5,000 runs a month. The Schedules documentation covers migration from Cron Jobs.
{
"schedules": [
{
"schedule": "0 3 * * *",
"function": "api/regenerate-sitemap.ts",
"timezone": "UTC"
},
{
"schedule": "*/30 * * * *",
"function": "api/seo-regression-monitor.ts",
"timezone": "UTC"
}
],
"functions": {
"api/regenerate-sitemap.ts": {
"experimentalTriggers": [{ "type": "schedule/v1beta" }]
},
"api/seo-regression-monitor.ts": {
"experimentalTriggers": [{ "type": "schedule/v1beta" }]
}
}
}import { handleSchedule } from '@vercel/schedules'
const BASE = 'https://example.com'
// Private function: no public URL, invoked only by Vercel Schedules.
export const POST = handleSchedule(async ({ name, scheduledTime }) => {
const problems: string[] = []
const robots = await fetch(`${BASE}/robots.txt`)
if (!robots.ok) problems.push(`robots.txt ${robots.status}`)
const sitemap = await fetch(`${BASE}/sitemap.xml`)
if (!sitemap.ok) problems.push(`sitemap.xml ${sitemap.status}`)
const home = await fetch(BASE)
const html = await home.text()
if (/<meta[^>]+name=["']robots["'][^>]+noindex/i.test(html)) {
problems.push('noindex on homepage')
}
if (!/<link[^>]+rel=["']canonical["']/i.test(html)) {
problems.push('canonical missing on homepage')
}
if (problems.length) {
throw new Error(`[${name} @ ${scheduledTime}] ${problems.join('; ')}`)
}
})Quiet: advisories, Next.js, performance and structured data
No SEO-relevant advisory landed in the window. The reviewed entries in the GitHub Advisory Database for November 5, 2026 are filecoin-pin (npm, moderate), Banks (pip, high), kaniko (Go, critical) and lxd (Go, high) — nothing in a crawler, sitemap, metadata or CMS dependency, and nothing at all published on November 6 as of this window closing. Next.js stable remains 16.4.5 and 15.5.29 from November 3, with only canaries since (16.5.0-canary.42 on November 5), so the Metadata API is unchanged. Nuxt is still 4.6.4 from November 2. Lighthouse is unchanged at v13.6.0 from October 27, web-vitals at 6.2.3 from October 5, and Schema.org at version 30.1 from September 16, 2026. The web.dev blog has published nothing since October 2, 2026, so Core Web Vitals thresholds are where they were. Google's common crawlers documentation and RFC 9309 handling are both unchanged.
Ship today
- Upgrade Astro to 7.4.7 if you run i18n with a fallback locale on on-demand rendered pages, then curl your locale-prefixed URLs and assert that no
3xxcomes back without aLocationheader. - Install
@astrojs/checkandtypescriptexplicitly in CI. Any greenastro checkrun from a job that lacked them proved nothing, so treat the first red run after upgrading as real debt, not a regression. - Bump
@sveltejs/kitto 2.70.4 on any 2.x project. There is no CVE or GHSA to scan for, so the version number is the only signal, and two of the five fixes land in the prerender path. - Re-grep your prerendered output for
Cache-Controlvalues after that upgrade and confirm they match what you intend a CDN to cache. - Scan the repository for directories differing only by letter case before the next container build, and confirm optimised image URLs resolve in
distrather than only in dev. - Move cron-based SEO jobs — sitemap regeneration, IndexNow pings, robots and canonical monitors — onto Vercel Schedules with
experimentalTriggers, so the endpoints stop being publicly reachable URLs. Existing Cron Jobs keep running, so this can be a staged pull request rather than a cutover.
Comments
Share your thoughts and join the conversation
Leave a Comment
Keep reading.

Codex 0.167 Adds an Agent Command Center as Copilot Expands Usage Metrics

Django Patches Six CVEs, Node 26 Goes LTS, Astro 7.4.7 Ships: Dev Stack Release Audit, November 6, 2026
