{
  "version": "v2.13.0",
  "data_through": "2026-10-02",
  "event": "Search Central Live Deep Dive Europe 2026",
  "levels": {
    "MUST": "Required: the site is not ready to launch without it.",
    "SHOULD": "Recommended: skip it only for a reason you can name.",
    "MAY": "Optional: worth doing where it fits.",
    "AVOID": "Must not: the site is not ready to launch while it does this."
  },
  "statuses": {
    "documented": {
      "label": "Documented",
      "meaning": "At least one cited Google document states or supports it."
    },
    "event-only": {
      "label": "Said at Search Central Live",
      "meaning": "Said or shown at the event and not in Google's documentation. Present it as said at Search Central Live, never as documented policy."
    }
  },
  "areas": [
    {
      "id": "server-crawling",
      "title": "Server, status codes and crawling",
      "intro": "How the server answers Google's crawlers decides whether anything else on the site matters. These requirements cover reachability through firewalls and CDNs, status codes for outages and overload, robots.txt on every host, HTTP versions and caching headers.",
      "requirements": [
        {
          "id": "DEV-SRV-01",
          "level": "MUST",
          "title": "Let verified Google crawlers through firewalls, CDNs and bot protection",
          "why": "Google does not know that a firewall or bot-protection rule is blocking it; it only sees failing requests. Timeouts, connection resets and DNS errors are treated like 5xx errors: crawling slows down at once, and indexed URLs that stay unreachable drop out of the index within days.",
          "how": "Allowlist Google's crawlers in WAF, CDN and bot-management rules by the IP ranges Google publishes for its common and special-case crawlers (common-crawlers.json, special-crawlers.json), or by reverse DNS to crawl-*.googlebot.com or geo-crawl-*.geo.googlebot.com hosts; never by user-agent string alone (it is trivial to fake), and never by a whole googleusercontent.com host, where Google Cloud customers' machines resolve too. Do not rate-limit or challenge verified Googlebot with CAPTCHAs or JavaScript puzzles, which it cannot solve. Make sure DNS resolves reliably for every host that serves pages, scripts, styles or APIs. Review the rules after every CDN or security-vendor change, including rules written for HTTP/3 traffic or AI scrapers. When Search Console reports DNS or network errors, first ask the hosting provider, CDN or DNS provider what changed and check for recently added firewall rules: said at Search Central Live, most network errors happen between the origin and Google's data centres, where neither Google nor the site owner can see them.",
          "test": "Search Console Crawl stats report: host status shows no robots.txt fetch, DNS resolution or server connectivity failures, and no Search Console alert for DNS errors, which can get a site removed from Google Search very aggressively and, with it, from every feature that depends on Search. URL Inspection live test succeeds for one URL per template. WAF/CDN logs show no 403, 429 or challenge responses to IPs that verify as Googlebot.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "verify-googlebot",
          "claims": [
            {
              "id": "D1-C069",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "DNS issues and firewalls are blind spots: Google does not know a firewall is blocking it, it only sees that requests fail.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C126",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google treats network timeouts, connection resets and DNS errors like 5xx server errors: crawling slows down immediately, and already indexed URLs that stay unreachable are removed from Google's index within days.",
              "quote": "Google treats network timeouts, connection reset, and DNS errors similarly to 5xx server errors.",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C374",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A growing cause of wrong clustering is bot protection: when a CDN or another protection system shows Googlebot the same 'you look like a bot, solve this puzzle' page on many unrelated URLs or domains, Google can cluster those pages as duplicates.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C375",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's systems find it very hard to recognise a bot-challenge page as an error page, and Googlebot cannot solve the puzzles, such as selecting all the cats, that those pages ask for.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C138",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's page on verifying its crawlers says Googlebot and Google's other common crawlers resolve to crawl-*.googlebot.com or geo-crawl-*.geo.googlebot.com host names, special-case crawlers to rate-limited-proxy-*.google.com and user-triggered fetchers to *.gae.googleusercontent.com or google-proxy-*.google.com, and it publishes each group's IP ranges as JSON files such as common-crawlers.json and special-crawlers.json.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "verify-google-requests",
                  "title": "Verify requests from Google crawlers and fetchers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/verify-google-requests",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C358",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "DNS errors get a site removed from Google Search very aggressively, and Search Console alerts site owners to them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C359",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Most network errors happen somewhere between the site's origin server and Google's data centers, where they are invisible to both Google and the site owner; the way TCP networks work leaves no way to see what went wrong there.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D1-C360",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When Search Console reports network errors, the first step Google recommends is to ask the hosting provider, or the CDN, whether they changed anything.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C361",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Network timeouts are usually caused close to the site, very often by a firewall, a CDN, the hosting provider or the DNS provider, and Google has no visibility into them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C362",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Network errors and timeouts, like DNS errors, can get a site removed from Google Search and, with it, from every feature that depends on Search.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C363",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "For DNS and network errors caused by a firewall or CDN, Google advises checking whether new firewall rules were set recently and otherwise asking in the CDN's forum, as Google itself cannot see or help with these errors.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-errors",
            "duplicate-content",
            "ai-crawlers-and-agents",
            "crawl-rate-limit"
          ],
          "docs": [
            {
              "key": "crawling-december-cdns",
              "title": "Crawling December: CDNs and crawling",
              "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
              "publisher": "Search Central blog (24 December 2024)",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "dns-network-errors",
              "title": "Debug network and DNS errors for Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "verify-google-requests",
              "title": "Verify requests from Google crawlers and fetchers",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/verify-google-requests",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "crawlers-overview",
              "title": "Overview of Google crawlers and fetchers (user agents)",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "cdn",
              "count": 4,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 3,
              "own": false
            },
            {
              "id": "google-search-console",
              "count": 2,
              "own": false
            },
            {
              "id": "http-5xx",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-02",
          "level": "AVOID",
          "title": "Never serve bot challenges or error pages to crawlers with a 200 status",
          "why": "Google finds a bot-challenge page very hard to recognise as an error. Served with 200 on many URLs, the identical page can make Google cluster those URLs as duplicates and drop them, and recovery is slow because Google has little reason to recrawl duplicates. A 200 error page is also a soft 404.",
          "how": "If a crawler must get a challenge or block page, send it with 503 (temporary), as Google's CDN guidance recommends for bot-verification interstitials, or 429 for rate limiting; never 200. Most CDN and bot-management products let you set the status code of challenge responses. Better still, do not challenge verified Google crawlers at all (DEV-SRV-01). A CDN that throttles crawlers by injecting 429 or 503 responses on the network path shows up as a rise in HTTP errors in crawl reports.",
          "test": "Request a few URLs with a Googlebot user agent from an unverified IP: any challenge comes back as 503 or 429, never 200. The Page indexing report shows no sudden rise of \"Duplicate\" or \"Soft 404\" on unrelated URLs.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C376",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Search Central post on CDNs says that if Google cannot recognise an error message served with a 200 status as an error, all pages showing the same message may be dropped from the index as duplicates, and recovery can be slow because Google has little incentive to recrawl duplicates. For bot-verification interstitials it recommends sending crawlers a 503 status.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (24 December 2024)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C374",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A growing cause of wrong clustering is bot protection: when a CDN or another protection system shows Googlebot the same 'you look like a bot, solve this puzzle' page on many unrelated URLs or domains, Google can cluster those pages as duplicates.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C375",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's systems find it very hard to recognise a bot-challenge page as an error page, and Googlebot cannot solve the puzzles, such as selecting all the cats, that those pages ask for.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C078",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For temporary blocks return 503 or 429, never a 200 page with a captcha or error message, which becomes a soft 404 and can replace real content in the index. Verify Googlebot by reverse DNS, not by user agent.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C378",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Check what your CDN or bot protection serves to verified Googlebot and to the AI agents you want to allow; if crawlers must get a challenge page, return it with a 503 status as Google recommends, never as a 200 page across many URLs, which Google may cluster as duplicates.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C367",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "CDN captcha challenges often return HTTP 200; Googlebot does not solve them and sees only content with a 200 status, which indexing then classifies as a soft 404, reported as an error in Search Console.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C364",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A rise in HTTP errors in crawl reports can come from a CDN throttling crawlers by injecting 429 or 503 responses on the network path between Google's crawler and the site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-errors",
            "duplicate-content",
            "soft-404",
            "ai-crawlers-and-agents",
            "crawl-rate-limit"
          ],
          "docs": [
            {
              "key": "crawling-december-cdns",
              "title": "Crawling December: CDNs and crawling",
              "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
              "publisher": "Search Central blog (24 December 2024)",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "http-network-errors",
              "title": "How HTTP status codes affect Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "cdn",
              "count": 5,
              "own": false
            },
            {
              "id": "googlebot",
              "count": 5,
              "own": false
            },
            {
              "id": "http-200",
              "count": 4,
              "own": true
            },
            {
              "id": "http-503",
              "count": 4,
              "own": false
            },
            {
              "id": "http-429",
              "count": 2,
              "own": false
            },
            {
              "id": "soft-404-error",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-03",
          "level": "MUST",
          "title": "Answer planned maintenance and short outages with 503, for a day or two at most",
          "why": "5xx and 429 responses make Google slow down temporarily and keep already indexed URLs for a while, but URLs that keep failing are eventually dropped. A 200 \"we'll be back soon\" page becomes a soft 404 or replaces your content in the index, and a 404 removes the URLs. Google's crawl rate guide says crawling picks up again automatically once the errors drop. Said at Search Central Live (October 2026): Google lowers a site's crawl capacity within about four hours of a burst of 500 errors, while increases take one to three weeks, so a botched maintenance window can cost weeks of crawling.",
          "how": "During maintenance return 503 for every page (Retry-After is optional standard HTTP), keep robots.txt answering normally, and limit the 503 period to one or two days. For a longer pause keep the site online with reduced functionality, for example a disabled cart and an information banner, and update Product markup to the real availability. Use 503 or 429 only for genuine outages or overload, never as a permanent throttle.",
          "test": "In a maintenance drill, curl -I on any page returns 503 while curl -I on /robots.txt returns 200. Afterwards, the 5xx share in Crawl stats falls back to zero.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "http-503-maintenance",
          "claims": [
            {
              "id": "D1-C071",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "5xx and 429 responses prompt Google's crawlers to slow down temporarily. Already indexed URLs are preserved in the index for a while but eventually dropped.",
              "quote": "already indexed URLs are preserved in the index, but eventually dropped",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C126",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google treats network timeouts, connection resets and DNS errors like 5xx server errors: crawling slows down immediately, and already indexed URLs that stay unreachable are removed from Google's index within days.",
              "quote": "Google treats network timeouts, connection reset, and DNS errors similarly to 5xx server errors.",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C012",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to temporarily pausing an online business recommends that a shop expecting to sell again within weeks or months stays online with limited functionality, such as a disabled cart, and updates its Product structured data to show current availability.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "pause-online-business",
                  "title": "Temporarily pause or disable a website",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/pause-online-business",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C078",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For temporary blocks return 503 or 429, never a 200 page with a captcha or error message, which becomes a soft 404 and can replace real content in the index. Verify Googlebot by reverse DNS, not by user agent.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C342",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Return real error status codes for error states, 404 or 410 for missing content and 503 for outages such as a failed database connection, also in single-page apps; a 200 page whose main content is only an error message is treated as a soft 404 even when header and navigation look normal.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C618",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When a site starts serving 500 errors, Google lowers the crawl capacity allocated to the site within about four hours on average.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "reduce-crawl-rate",
                  "title": "Reduce the Google crawl rate",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/reduce-crawl-rate",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C619",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Increases in crawl capacity take longer than decreases, within one to three weeks, because Google first needs to know that the higher demand will last.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "reduce-crawl-rate",
                  "title": "Reduce the Google crawl rate",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/reduce-crawl-rate",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C668",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's crawl rate guide says that when a significant number of URLs return 500, 503 or 429, Google reduces the site's crawl rate, which starts increasing again automatically once the errors drop; it warns against doing this for longer than 1-2 days.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "reduce-crawl-rate",
                  "title": "Reduce the Google crawl rate",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/reduce-crawl-rate",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C621",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Spoken and slide figures for capacity increases differ (one to three weeks, up to a month, versus 1-2 weeks typical and 1-3 weeks in recovery), but the lesson is the same: a burst of 5xx errors cuts crawling within hours and recovery takes weeks, so keep servers stable before launches and migrations.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C353",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "429 Too Many Requests is the exception among 4xx codes: instead of meaning there is nothing at the URL, it tells Google's crawler to slow down, and Google slows its crawling.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C354",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google slows crawling when a site returns 5xx errors, because a 5xx usually means the server, and often the whole site, cannot serve requests, and Google does not want to break the site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "crawl-errors",
            "crawl-rate-limit",
            "soft-404",
            "crawl-demand",
            "javascript-seo",
            "site-moves",
            "merchant-markup"
          ],
          "docs": [
            {
              "key": "pause-online-business",
              "title": "Temporarily pause or disable a website",
              "url": "https://developers.google.com/search/docs/crawling-indexing/pause-online-business",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "http-network-errors",
              "title": "How HTTP status codes affect Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "dns-network-errors",
              "title": "Debug network and DNS errors for Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "reduce-crawl-rate",
              "title": "Reduce the Google crawl rate",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/reduce-crawl-rate",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "http-429",
              "count": 4,
              "own": true
            },
            {
              "id": "http-5xx",
              "count": 4,
              "own": true
            },
            {
              "id": "http-503",
              "count": 3,
              "own": true
            },
            {
              "id": "crawl-capacity-limit",
              "count": 2,
              "own": true
            },
            {
              "id": "http-200",
              "count": 2,
              "own": true
            },
            {
              "id": "soft-404-error",
              "count": 2,
              "own": true
            },
            {
              "id": "http-404",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-04",
          "level": "MUST",
          "title": "Keep robots.txt reachable on every host: 200 with rules, or 404 if there are none",
          "why": "If robots.txt answers with a 5xx error, Google stops crawling the site for the first 12 hours and then relies on a cached copy for up to 30 days. robots.txt rules apply per host, so the file on www.example.com does nothing for api.example.com or a CDN host name, and the file is read only at the root of a host: a robots.txt in a subdirectory is never used.",
          "how": "Serve the file at the root path /robots.txt on every host name that serves pages or rendering resources: www, the bare domain if it answers, API, static and CDN hosts, every country subdomain. Answer 200 with the rules, or 404 if the host has no rules (Google then crawls everything). Exclude robots.txt from maintenance modes, WAF challenges and authentication, and never let an API or CDN host fall back to a blanket Disallow or an error page.",
          "test": "curl -I https://<each-host>/robots.txt returns 200 or 404, never 5xx, 401/403 or a redirect to a login page. Search Console's robots.txt report (Settings) shows each host's file as fetched.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-txt",
          "claims": [
            {
              "id": "D1-C074",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "If robots.txt returns a 5xx error, Google stops crawling the site for the first 12 hours, then uses the cached copy for up to 30 days.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C209",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "robots.txt rules apply per host, so the rules in example.com/robots.txt do not apply at all to an API served from api.example.com.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C210",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "An API or CDN on its own host needs its own robots.txt check: a blanket Disallow there, or a robots.txt that returns 5xx errors, can stop Google fetching the data a page renders from.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C515",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The robots.txt file always sits in the root of the host; it cannot be placed anywhere else.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "robots-txt",
            "javascript-seo",
            "crawl-errors"
          ],
          "docs": [
            {
              "key": "robots-spec",
              "title": "How Google interprets the robots.txt specification",
              "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "pause-online-business",
              "title": "Temporarily pause or disable a website",
              "url": "https://developers.google.com/search/docs/crawling-indexing/pause-online-business",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 4,
              "own": true
            },
            {
              "id": "http-5xx",
              "count": 2,
              "own": true
            },
            {
              "id": "cdn",
              "count": 1,
              "own": true
            },
            {
              "id": "http-200",
              "count": 0,
              "own": true
            },
            {
              "id": "http-404",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-05",
          "level": "MUST",
          "title": "Rely only on the fields Google supports (user-agent, allow, disallow, sitemap) and keep robots.txt under 500 KiB",
          "why": "Robots.txt is an IETF standard, RFC 9309, that basically all major crawlers follow, and it was kept simple on purpose. Google supports only user-agent, allow, disallow and sitemap in robots.txt; it ignores other lines, such as crawl-delay or Content-Signal, so they save no crawl budget with Google but can stay for other crawlers as long as they never sit between user-agent lines (DEV-SRV-06). Google reads only the first 500 KiB of the file and generally caches it for up to 24 hours, so a change can take a day to apply. Google refreshes its cached copy every 24 hours (its service level objective, as RFC 9309 asks), and the Request a recrawl option in Search Console's robots.txt report refreshes it sooner.",
          "how": "Everything is allowed by default, so use allow only to re-open a path inside a disallowed one. Cover URL patterns with the * and $ wildcards instead of listing URLs: * matches any run of characters (Disallow: /*/live/ blocks /science/live/ and /sports/live/, and Allow: /science/live/ re-opens one of them), and $ ends the match (Disallow: / with Allow: /$ leaves only the home page open to that group). The longest matching rule wins and, when rules conflict, Google uses the least restrictive one. A crawler follows only the most specific group that names it, so give each named crawler a complete group (DEV-SRV-10). Start comments with # and spell field names exactly: said at Search Central Live, robots.txt is forgiving, Google skips a line it cannot parse and still uses the rest of the file, so a misspelt rule fails silently (Google's open-source parser happens to accept some misspellings of disallow and user-agent, but not of allow, and other crawlers may be stricter). Add the Sitemap line with an absolute URL. To slow Google down in an emergency, return 503 or 429 briefly instead of inventing directives. Plan robots.txt changes a day ahead; for an urgent change, request a recrawl in the robots.txt report. Listing the sitemap in robots.txt is fine, but it makes the sitemap public; submit it only in Search Console if that matters.",
          "test": "Check the file's fetch status, warnings and errors in Search Console's robots.txt report and test it with an RFC 9309 parser such as Google's open-source robots.txt library (github.com/google/robotstxt); check the size is well under 500 KiB; spot-check important URLs (homepage with tracking parameters, JS bundles, API endpoints, filter URLs) against the rules.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-txt",
          "claims": [
            {
              "id": "D1-C084",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google supports only the user-agent, allow, disallow and sitemap fields in robots.txt. Other fields such as crawl-delay are not supported.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C085",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google generally caches robots.txt for up to 24 hours and reads only the first 500 KiB of the file.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C080",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Rules can be grouped for several crawlers by repeating user-agent lines. A crawler follows only the most specific group that names it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C081",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "When matching rules to a URL, Google uses the most specific rule by path length. If rules conflict, it uses the least restrictive one.",
              "quote": "In case of conflicting rules, including those with wildcards, Google uses the least restrictive rule.",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C082",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "In robots.txt, * matches zero or more of any character and $ marks the end of the URL.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C108",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The non-standard crawl-delay rule is not processed by Googlebot, so it does not save any crawl budget.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C140",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Search Console's robots.txt report shows the robots.txt files Google found for the top 20 hosts of a Domain property, with their fetch status, warnings and errors; to test whether a specific URL is blocked, Google's help page points to the URL Inspection tool and to Google's open-source robots.txt library.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-txt-report",
                  "title": "robots.txt report",
                  "url": "https://support.google.com/webmasters/answer/6062598",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C613",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google estimated that a robots.txt update is picked up in about 24 hours, with a minimum of seconds and an end point of 25 hours on the slide.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "submit-updated-robots-txt",
                  "title": "Update your robots.txt file",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/submit-updated-robots-txt",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C614",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google said its service level objective is to refresh robots.txt every 24 hours, as RFC 9309 calls for, though delays happen now and then.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "submit-updated-robots-txt",
                  "title": "Update your robots.txt file",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/submit-updated-robots-txt",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C615",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A site owner can submit robots.txt in Search Console to force Google to refresh it sooner.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "submit-updated-robots-txt",
                  "title": "Update your robots.txt file",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/submit-updated-robots-txt",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-txt-report",
                  "title": "robots.txt report",
                  "url": "https://support.google.com/webmasters/answer/6062598",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C667",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's robots.txt guide says its crawlers update their cached copy of a site's robots.txt every 24 hours, and that the Request a recrawl option in Search Console's robots.txt report refreshes it faster.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central, Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "submit-updated-robots-txt",
                  "title": "Update your robots.txt file",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/submit-updated-robots-txt",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-txt-report",
                  "title": "robots.txt report",
                  "url": "https://support.google.com/webmasters/answer/6062598",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C512",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Robots.txt is now an IETF standard, RFC 9309, supported by basically all major crawlers; Google said it follows it because it is the right thing to do: anyone who wants to opt out of crawling should be able to.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-refresher-future-blog",
                  "title": "Robots Refresher: Future-proof Robots Exclusion Protocol",
                  "url": "https://developers.google.com/search/blog/2025/03/robots-future",
                  "publisher": "Search Central blog (28 March 2025)",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "rep-formalizing-blog",
                  "title": "Formalizing the Robots Exclusion Protocol Specification",
                  "url": "https://developers.google.com/search/blog/2019/07/rep-id",
                  "publisher": "Search Central blog (1 July 2019)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C516",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Robots.txt was made extremely simple by design so that anyone could implement and understand it; it was extended as websites grew more complex, but it still has only three rules: user-agent (a named crawler, or * for every crawler), disallow and allow.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "robots-refresher-future-blog",
                  "title": "Robots Refresher: Future-proof Robots Exclusion Protocol",
                  "url": "https://developers.google.com/search/blog/2025/03/robots-future",
                  "publisher": "Search Central blog (28 March 2025)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C517",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Everything on a site is implicitly allowed, so an allow rule is only needed to re-open a specific path inside a disallowed one.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C518",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Comments in robots.txt start with #, and a line without the # that a parser cannot read is ignored anyway, because the standard requires parsers to skip lines they cannot parse, so it acts like a comment.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C520",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "In the talk's worked example, disallow /*/live/ blocks /science/live/ and /sports/live/, because * matches any number of characters, and an allow /science/live/ rule re-opens that one path.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C521",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To let unnamed crawlers fetch only the homepage, use user-agent: *, disallow: / and allow: /$; the $ ends the match, so /$ means only the root path and /cats$ means exactly /cats.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C525",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google called robots.txt extremely forgiving: a typo in a path only blocks the wrong path, a typo in a rule name such as disallow makes Google ignore that line, and the rest of the file is still used.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C532",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "A typo in a rule name is not always ignored by Google: its open-source robots.txt parser deliberately accepts common misspellings of disallow (such as dissallow, dissalow and disalow) and of user-agent (useragent, user agent), but not of allow. Google's spec page does not mention typos, and other crawlers may be stricter, so spell rule names correctly.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "robotstxt-parser",
                  "title": "google/robotstxt",
                  "url": "https://github.com/google/robotstxt",
                  "publisher": "Google (open-source robots.txt parser and matcher library, GitHub)",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C528",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Search Console's robots.txt report shows the robots.txt file as Google last fetched it, with a version history and the errors and successes of each fetch.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-txt-report",
                  "title": "robots.txt report",
                  "url": "https://support.google.com/webmasters/answer/6062598",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "robots-txt",
            "web-standards",
            "crawl-directives",
            "processing-times",
            "robots-group-parsing",
            "search-console-features"
          ],
          "docs": [
            {
              "key": "robots-spec",
              "title": "How Google interprets the robots.txt specification",
              "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "robots-txt-report",
              "title": "robots.txt report",
              "url": "https://support.google.com/webmasters/answer/6062598",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "submit-updated-robots-txt",
              "title": "Update your robots.txt file",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots/submit-updated-robots-txt",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "robotstxt-parser",
              "title": "google/robotstxt",
              "url": "https://github.com/google/robotstxt",
              "publisher": "Google (open-source robots.txt parser and matcher library, GitHub)",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 14,
              "own": true
            },
            {
              "id": "allow",
              "count": 6,
              "own": true
            },
            {
              "id": "disallow",
              "count": 6,
              "own": true
            },
            {
              "id": "google-search-console",
              "count": 4,
              "own": true
            },
            {
              "id": "robots-txt-report",
              "count": 3,
              "own": true
            },
            {
              "id": "crawl-budget-metric",
              "count": 1,
              "own": true
            },
            {
              "id": "sitemap-file",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-06",
          "level": "AVOID",
          "title": "Do not put Content-Signal or other non-standard lines between user-agent lines",
          "why": "Googlebot ignores an unknown line placed between two user-agent lines and merges both user agents into one group, so the rules that follow apply to both. A Google slide at Search Central Live showed Bing closing the group at that line instead, so the same file blocks one crawler and not the other. Google's robots.txt talk called this the real trouble spot of the format: while RFC 9309 was being written, opinions on whether the first crawler should inherit the rules that follow split roughly 50-50. Managed robots.txt files from some CDNs add such lines, and said at Search Central Live, CDNs sometimes update a site's robots.txt without the owner's knowledge.",
          "how": "Keep each group as an uninterrupted run of user-agent lines followed by its allow and disallow rules. If a CDN or plug-in adds Content-Signal or other non-standard lines, make sure they sit after a group's rules, never between user-agent lines, and review the generated file after every CDN setting change. Check the version history in Search Console's robots.txt report for changes nobody on the team made.",
          "test": "Fetch the live file (curl https://www.example.com/robots.txt) and check that every run of user-agent lines is uninterrupted; test it in Bing Webmaster Tools' robots.txt tester and with Google's open-source robots.txt parser (github.com/google/robotstxt). The robots.txt report's latest fetched version matches the file the team deployed.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C087",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Googlebot ignores an unknown line, such as a Content-signal line, placed between two user-agent lines and joins both user agents into one group, so the rules that follow apply to both; in the slide's example both are blocked.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C123",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Bing closes the robots.txt group at an unknown line placed between two user-agent lines, so in the slide's example bingbot ends up not blocked while Googlebot is; the slide warned that different crawlers behave differently.",
              "quote": "Unpredictability is never a good time.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C088",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Content-Signal lines are now common because a large CDN provider adds them to its managed robots.txt files. Never place any non-standard directive between user-agent lines; put it after a group's rules and test the file with each search engine's tools, such as Bing's robots.txt tester and Google's open-source robots.txt parser.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C526",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "The real trouble is an unknown line placed between two user-agent lines: while writing RFC 9309, Google asked people whether the first crawler should then inherit the rules that follow, and opinions split roughly 50-50 (how the talk said the question was settled is unclear in the recording).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C529",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google said the robots.txt report helps catch CDNs that update a site's robots.txt without the owner's knowledge, and hosts that cloak the robots.txt file, which happens more often than people think.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C528",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Search Console's robots.txt report shows the robots.txt file as Google last fetched it, with a version history and the errors and successes of each fetch.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-txt-report",
                  "title": "robots.txt report",
                  "url": "https://support.google.com/webmasters/answer/6062598",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "robots-group-parsing",
            "robots-txt",
            "search-console-features",
            "web-standards"
          ],
          "docs": [
            {
              "key": "robots-spec",
              "title": "How Google interprets the robots.txt specification",
              "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "robots-txt-report",
              "title": "robots.txt report",
              "url": "https://support.google.com/webmasters/answer/6062598",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 5,
              "own": true
            },
            {
              "id": "cdn",
              "count": 2,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 2,
              "own": true
            },
            {
              "id": "robots-txt-report",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-SRV-07",
          "level": "MUST",
          "title": "Answer crawlers over HTTP/1.1 (HTTP/2 optional); never run a crawlable host on HTTP/3 only",
          "why": "Google's crawlers support HTTP/1.1, their default, and HTTP/2, and use whichever crawls best; Googlebot does not support HTTP/3 today. HTTP/2 can save server resources but gives no ranking benefit, and a site can opt out of HTTP/2 crawling by answering such requests with 421.",
          "how": "Make every crawlable host answer over HTTP/1.1. HTTP/2 may save server resources and is worth enabling on the origin and the CDN; to opt out of HTTP/2 crawling, return 421 to Google's HTTP/2 requests. Treat HTTP/3 as an extra for browsers. Check that CDN, firewall and load-balancer rules written for HTTP/3 (QUIC) traffic do not break HTTP/1.1 or HTTP/2 responses. Support gzip or Brotli compression, which Google's crawlers accept.",
          "test": "curl -I --http1.1 https://www.example.com/ returns 200, and curl -I --http2 https://www.example.com/ returns the same status, canonical, robots and caching headers (Date and similar headers may differ), unless the site deliberately answers 421 to opt out of HTTP/2 crawling; Crawl stats shows normal response times.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C076",
              "day": 1,
              "session_id": "D1-S00",
              "session": "Day 1, session not recorded",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's crawlers support HTTP/1.1 and HTTP/2, use whichever gives the best crawling performance, and may switch between sessions. HTTP/2 can save server resources but gives no ranking benefit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "crawlers-overview",
                  "title": "Overview of Google crawlers and fetchers (user agents)",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C075",
              "day": 1,
              "session_id": "D1-S00",
              "session": "Day 1, session not recorded",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Googlebot does not support HTTP/3 today.",
              "quote": "",
              "quote_checked": false,
              "credit": "a speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawlers-overview",
                  "title": "Overview of Google crawlers and fetchers (user agents)",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C077",
              "day": 1,
              "session_id": "D1-S00",
              "session": "Day 1, session not recorded",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "This does not mean avoiding HTTP/3, which benefits browsers. The rule is never to run a host that only answers over HTTP/3, and to check that CDN or firewall rules written for HTTP/3 traffic do not break HTTP/1.1 and HTTP/2.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C139",
              "day": 1,
              "session_id": "D1-S00",
              "session": "Day 1, session not recorded",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's crawler overview says HTTP/1.1 is the default protocol of Google's crawlers and that a site can opt out of crawling over HTTP/2 by answering Google's HTTP/2 requests with a 421 status code.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "crawlers-overview",
                  "title": "Overview of Google crawlers and fetchers (user agents)",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "http-protocols"
          ],
          "docs": [
            {
              "key": "crawlers-overview",
              "title": "Overview of Google crawlers and fetchers (user agents)",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-08",
          "level": "SHOULD",
          "title": "Support conditional requests with ETag or Last-Modified and answer 304 when nothing changed",
          "why": "A 304 Not Modified response tells Google to reuse its copy, so unchanged pages cost almost nothing to recrawl. Google lists HTTP cache control among the ways to manage crawl budget, and its crawling team has said it prefers ETag.",
          "how": "Send a strong ETag (a hash of the content) or Last-Modified on HTML and on the JS, CSS and API responses used for rendering, and answer If-None-Match or If-Modified-Since with 304 and no body when nothing changed. Derive the ETag from the content only, not from timestamps, nonces or session data, and keep it identical across CDN nodes.",
          "test": "curl -sI https://www.example.com/page shows an ETag; repeating the request with -H 'If-None-Match: \"<etag>\"' returns 304. The Crawl stats response breakdown shows 304 responses.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "conditional-requests",
          "claims": [
            {
              "id": "D1-C104",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "HTTP caching for crawlers means supporting conditional requests (ETag with If-None-Match, or Last-Modified with If-Modified-Since) and answering 304 Not Modified when nothing changed. Google's crawling team has said it prefers ETag.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google, Search Central blog (9 December 2024)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "crawling-december-caching",
                  "title": "Crawling December: HTTP caching",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-caching",
                  "publisher": "Search Central blog (9 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C103",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Four ways to manage crawl budget: use HTTP cache control, have good site navigation, restrict crawlers' access to faceted navigation and action URLs, and improve or remove useless content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C321",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes pointed to the Last-Modified and ETag headers as the fields of an HTTP response that matter for caching.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawlers-overview",
                  "title": "Overview of Google crawlers and fetchers (user agents)",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C350",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A 304 Not Modified response tells Google's crawler that the content has not changed since its last visit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C384",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Every fetch that returns a 2xx success response consumes crawl budget.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-blog",
                  "title": "What Crawl Budget Means for Googlebot",
                  "url": "https://developers.google.com/search/blog/2017/01/what-crawl-budget-means-for-googlebot",
                  "publisher": "Search Central blog (16 January 2017)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "http-caching",
            "crawl-budget",
            "faceted-navigation"
          ],
          "docs": [
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawling-december-caching",
              "title": "Crawling December: HTTP caching",
              "url": "https://developers.google.com/search/blog/2024/12/crawling-december-caching",
              "publisher": "Search Central blog (9 December 2024)",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "crawl-budget-metric",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-09",
          "level": "AVOID",
          "title": "Do not answer crawlers with 401, 402 or 403 on pages that should be in Search",
          "why": "Google does not index URLs that return a 4xx status (except 429) and removes already indexed ones. Said at Search Central Live by Gary Illyes: Google has recently seen more 403 responses to its crawlers (described on stage as \"authentication required\"), treats them as client errors like 404 or 410 and drops those pages from Search and its AI features; more recently still it has seen an uptick in 402 Payment Required responses, which it treats as a 404 because Googlebot cannot pay. A 403 tells the crawler it may not see the content, so there is nothing to index.",
          "how": "Check that login walls, paywalls, geo-blocks and bot-management rules never return 401, 402 or 403 to verified Google crawlers on public pages. For paywalled articles serve the content with the paywalled-content markup instead of an error (DEV-SDA-13). Keep 401 and 403 for pages that must stay out of Search, such as account areas.",
          "test": "Crawl stats and server logs show no 401, 402 or 403 responses to verified Googlebot on indexable templates, and URL Inspection's live test returns 200 for one URL per template.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C365",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google has recently seen more 403 responses to its crawlers (described on stage as 'authentication required'); it treats them as client errors, technically equivalent to 404 or 410, and drops those pages from Search and its AI features.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C366",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google treats a 402 Payment Required response as a 404 Not Found, because Googlebot cannot pay for content.",
              "quote": "402 will just mean 404 to us",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C352",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A 403 response tells Google's crawler it has no permission to see the requested content, so there is nothing for Google to index.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C351",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "404 Not Found and 410 Gone both tell Google there is nothing at the URL, so the URL is not indexable.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C509",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google has seen an uptick in 402 Payment Required responses to its crawlers, an even more recent trend than the rise in 403 responses.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-errors",
            "ai-crawlers-and-agents"
          ],
          "docs": [
            {
              "key": "http-network-errors",
              "title": "How HTTP status codes affect Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "page-indexing-help",
              "title": "Page indexing report",
              "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "paywalled-content-sd",
              "title": "Structured data for subscription and paywalled content (CreativeWork)",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/paywalled-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "http-403",
              "count": 3,
              "own": true
            },
            {
              "id": "http-404",
              "count": 3,
              "own": true
            },
            {
              "id": "http-410",
              "count": 2,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            },
            {
              "id": "http-4xx",
              "count": 1,
              "own": true
            },
            {
              "id": "http-429",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-10",
          "level": "MUST",
          "title": "Give a crawler its own robots.txt group only when needed, and make that group complete",
          "why": "Robots.txt groups are not additive. A crawler obeys only the most specific group that names it and ignores the * group, so a Googlebot group that blocks only /dogs/ leaves Googlebot free to crawl the /goats/ and /cows/ that the * group blocks (Dave Smart's example at Search Central Live). One group can name several crawlers, and Google combines all groups that name the same user agent into one. In the robots.txt quiz of Google's talk, a Googlebot group with only an allow rule, or an allow rule in the * group, was the wrong answer for opening /staging/preview/ to Googlebot while keeping the rest of /staging/ closed.",
          "how": "Put the rules every crawler shares in the * group. Add a named group (Googlebot, Storebot-Google, an AI crawler token) only when that crawler needs different rules, and copy into it every rule from the * group that should still apply to it. To give several crawlers the same rules, list their user-agent lines on top of one group. Generate the file from one template so that a change to the shared rules updates every named group too.",
          "test": "For each named group, run Google's open-source robots.txt parser (github.com/google/robotstxt) with that crawler's token against a list of sample URLs covering every path the * group disallows: each result is the one intended for that crawler. For the quiz case, /staging/preview/ is allowed and /staging/other/ disallowed for Googlebot.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-txt-groups",
          "claims": [
            {
              "id": "D1-C533",
              "day": 1,
              "session_id": "D1-S08",
              "session": "Lightning session B: Robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Dave Smart said robots.txt groups are not additive: if a group matches a crawler's user agent, only that group's rules apply, so a googlebot group that blocks /dogs/ leaves Googlebot free to crawl the /goats/ and /cows/ that the * group blocks.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Dave Smart",
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C531",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "In the talk's quiz, the answer for letting Googlebot crawl /staging/preview/ while keeping the rest of /staging/ closed to it was a user-agent: googlebot group with both rules, disallow /staging/ and allow /staging/preview/, rather than an allow in the * group or a Googlebot group with only the allow.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C527",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The talk's fix for giving one crawler both an extra rule and the rules of another group: simply add another group for that crawler. Google's spec combines all groups that name the same user agent into one.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C519",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A user-agent line with its allow and disallow rules forms a user-agent group, and one group can name several crawlers (the talk's example: Googlebot and Bingbot); give named crawlers their own group only when they need rules the * group should not grant to every crawler.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C080",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Rules can be grouped for several crawlers by repeating user-agent lines. A crawler follows only the most specific group that names it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "robots-group-parsing",
            "robots-txt"
          ],
          "docs": [
            {
              "key": "robots-spec",
              "title": "How Google interprets the robots.txt specification",
              "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "robotstxt-parser",
              "title": "google/robotstxt",
              "url": "https://github.com/google/robotstxt",
              "publisher": "Google (open-source robots.txt parser and matcher library, GitHub)",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "googlebot",
              "count": 3,
              "own": true
            },
            {
              "id": "allow",
              "count": 2,
              "own": true
            },
            {
              "id": "disallow",
              "count": 2,
              "own": false
            },
            {
              "id": "robots-txt-file",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SRV-11",
          "level": "AVOID",
          "title": "Never use robots.txt to hide private paths; protect them with authentication",
          "why": "Robots.txt is not a security measure: it sits at a predictable public address, so anyone can read the paths it disallows, and it only asks well-behaved crawlers not to fetch them. Google's guide says it is not a mechanism for keeping a page out of Google: a disallowed URL can still be indexed if other sites link to it, and Google points to password protection for private files.",
          "how": "Put admin areas, internal tools, exports and staging behind authentication or an IP allowlist (DEV-CAN-07), or keep them off the internet; do not list their paths in robots.txt. To keep a public page out of Search, use noindex and leave it crawlable (DEV-IDX-01).",
          "test": "The live robots.txt names no admin, backup, export or internal paths, and curl -I on each private path returns 401 or 403 without credentials.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C514",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Robots.txt is not a security measure: the file sits at a predictable public address, so anyone can read the paths it disallows. Protect a secret folder with authentication, or do not put it on the internet.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "robots-txt"
          ],
          "docs": [
            {
              "key": "robots-intro",
              "title": "Introduction to robots.txt",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 1,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "urls-links",
      "title": "URLs, links and discovery",
      "intro": "Google discovers pages through the links it extracts from HTML and sends them back to the crawl queue; links also tell it how a site is structured and feed ranking. Every page that should rank needs a real URL and a real link to it.",
      "requirements": [
        {
          "id": "DEV-URL-01",
          "level": "MUST",
          "title": "Make every navigational link an <a> element whose href holds a real URL",
          "why": "Google extracts links from a elements with an href holding an absolute or relative URL, once from the server HTML and again from the rendered page, and uses them to discover pages, understand the site's structure and rank. Googlebot does not click, so a link that only works through JavaScript leaves its target without a link Google can reliably extract.",
          "how": "Audit every component that outputs links: main and sub-navigation, breadcrumbs, pagination, filters, product tiles, footers and language selectors. Each needs <a href=\"/real/path\">, and framework link components must render that href. Client-side routing may intercept the click as long as the href stays (DEV-URL-03). Do not rely on plain-text URLs or on sitemaps alone for discovery.",
          "test": "In URL Inspection (rendered HTML) and in a crawler with JavaScript off and on, every navigation item appears as <a href=\"...\">; a crawl from the homepage reaches all key templates through links; search the rendered HTML for onclick=, javascript:, routerLink and href=\"#\".",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "crawlable-links",
          "claims": [
            {
              "id": "D2-C039",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google can extract links written as an a element with an href attribute that holds an absolute or a relative URL, which the speaker called the good old normal way.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C043",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's link best practices say Google can generally crawl a link only if it is an a element with an href attribute, and list routerLink without href, href on a span, onclick-only a elements and javascript: URLs as not recommended, while noting that Google may still attempt to parse them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C038",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google uses the links it extracts for three purposes: discovering new pages, determining a site's structure, and ranking.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C169",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's JavaScript SEO basics guide says Googlebot extracts links twice, from the HTML response before rendering and again from the rendered HTML, so links injected with JavaScript can be found if they use crawlable <a href> markup.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C287",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A link that is an <a> element but does not point to a real URL gives Google something to look at, but Google will not know where the link goes.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C036",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Links and anchors are among the things Google extracts from a page's HTML, and the slide card for them simply read 'We like links.'",
              "quote": "We like links.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "meta-tags-supported",
                  "title": "meta tags and attributes that Google supports",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/special-tags",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "crawlable-links",
            "indexing-pipeline",
            "url-discovery",
            "rendering",
            "javascript-seo"
          ],
          "docs": [
            {
              "key": "links-crawlable",
              "title": "Link best practices for Google",
              "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            },
            {
              "id": "javascript",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-02",
          "level": "AVOID",
          "title": "Do not navigate with onclick handlers, javascript: URLs, routerLink without href or # pseudo-links",
          "why": "A Google slide put onclick-only links, javascript: URLs, routerLink without href and href on non-a elements under \"cannot extract\"; Google's link documentation calls them not recommended and says Google may still try to parse them. Either way they are not dependable for discovery, and they are common in single-page apps and faceted navigation.",
          "how": "Replace each pattern with <a href=\"/path\">. Keep buttons for actions that do not change the URL (add to cart, open a dialog). Use URL fragments only where you deliberately do not want Google to follow, such as filter combinations (DEV-URL-08).",
          "test": "Search templates and the rendered HTML (DevTools Elements panel, URL Inspection) for onclick navigation, javascript:, routerLink without href, href on span or div, and href=\"#/\"; a JavaScript-rendering crawler finds no orphaned templates.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "crawlable-links",
          "claims": [
            {
              "id": "D2-C040",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google cannot extract a link from an a element that only has an onclick handler, because Googlebot does not click, so the JavaScript is never triggered.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C041",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google cannot extract a link from an href attribute placed on an element other than a, such as a span, because that is not a standard way to make a link.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C042",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A Google slide also listed as not extractable an a element with a routerLink attribute instead of an href, and javascript: URLs such as javascript:goTo('products') or javascript:window.location.href='/products'.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C043",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's link best practices say Google can generally crawl a link only if it is an a element with an href attribute, and list routerLink without href, href on a span, onclick-only a elements and javascript: URLs as not recommended, while noting that Google may still attempt to parse them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C184",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google follows links in <a href> elements; a link that only runs an onclick handler, or a hash pseudo-link such as href=#/products, may be invisible to Google.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C186",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Non-crawlable link markup, such as onclick links and hash pseudo-links, is common in single-page web apps, and sites that use faceted navigation should check their links for it.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            }
          ],
          "topics": [
            "crawlable-links",
            "javascript-seo",
            "faceted-navigation"
          ],
          "docs": [
            {
              "key": "links-crawlable",
              "title": "Link best practices for Google",
              "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "faceted-navigation-concept",
              "count": 1,
              "own": true
            },
            {
              "id": "single-page-app",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-03",
          "level": "MUST",
          "title": "Route single-page apps with the History API and real paths, not # fragments",
          "why": "A fragment (the part of a URL after #) exists only in the browser and is often ignored by crawlers, so hash-routed views are not separate pages for Google. Google recommends the History API for clean URLs, and moving from hash routes to real paths keeps the same client-side behaviour.",
          "how": "Run the router in history mode. Render links as <a href=\"/path\">, intercept the click, call history.pushState and handle popstate. Configure the server or hosting rewrites so a direct request to every valid path returns 200 with the page, ideally server-rendered, and unknown paths return 404 (DEV-ERR-02). Real paths also work as deep links on Android, iOS and desktop.",
          "test": "Open a deep URL directly in a fresh browser session and with curl: it returns 200 and the right content. The rendered HTML in URL Inspection contains no href=\"#/...\" routes.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "spa-history-routing",
          "claims": [
            {
              "id": "D2-C185",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The crawlable pattern for single-page app navigation is a real URL in the href, such as <a href=/products>, combined with History API routing (window.history.pushState) instead of hash routes.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C284",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "URL fragments (#) are often ignored by crawlers: a fragment exists only in the browser, so Google cannot request it.",
              "quote": "Fragment identifiers (#) are often ignored by crawlers.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C285",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google recommends the History API to give single-page apps clean URLs instead of fragment-based routes.",
              "quote": "Use the History API for clean URLs in SPAs.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C288",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "With the History API, a single-page app can use real links and attach event listeners that intercept the click, rewrite the URL with pushState and load the new content, so Google can follow the links while users avoid full page reloads.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C286",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Moving a single-page app from fragment-based routes to real paths with the History API keeps the same client-side behaviour and was described as not free but relatively straightforward.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C289",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Real URLs also work as deep links: Android, iOS and desktop operating systems accept full URLs as keys to specific content in an app, so clean URLs simplify the cross-platform user experience, not only indexing.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": []
            }
          ],
          "topics": [
            "crawlable-links",
            "javascript-seo"
          ],
          "docs": [
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "single-page-app",
              "count": 4,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-04",
          "level": "MUST",
          "title": "Link every indexable page from the normal navigation or a hub page",
          "why": "Discovery works through links: the homepage links to sections, which link to further pages, and Google infers a page's importance from its internal links (how many point to it and how many steps it is from the homepage). A page reachable only through a sitemap is found slowly and attracts little crawl demand. For large sites, Google pointed to category hub pages rather than HTML sitemaps.",
          "how": "Link menus to category pages, category pages to sub-categories and sub-categories to every product or article, all with <a href>. Keep important pages within a few clicks of the homepage. Where not every item can be linked, list the rest in the XML sitemap or a Merchant Center feed as a supplement, not a replacement. Never let a page be reachable only through a canonical tag (DEV-CAN-04).",
          "test": "Crawl from the homepage following only <a href> links and compare the result with the sitemap: sitemap URLs missing from the crawl are orphans. Check the click depth of key templates.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C040",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "URL discovery works through links: a homepage links to section pages, which link to further pages.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C005",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's ecommerce documentation recommends linking from menus to category pages, from category pages to sub-category pages and from sub-category pages to all product pages; where not every product can be linked, it recommends a sitemap or a Merchant Center feed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ecommerce-site-structure",
                  "title": "Help Google understand your ecommerce website structure",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/help-google-understand-your-ecommerce-site-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C006",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's ecommerce documentation says Google can infer a page's relative importance within a site from its internal links, such as how many links point to the page and how many links Google must follow to reach it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ecommerce-site-structure",
                  "title": "Help Google understand your ecommerce website structure",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/help-google-understand-your-ecommerce-site-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C820",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's Q&A slide advised large sites to rely on hub pages, such as category pages, that link out to their important pages, instead of on HTML sitemaps.",
              "quote": "Better rely on hubs like category pages that link out to your important pages.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "ecommerce-site-structure",
                  "title": "Help Google understand your ecommerce website structure",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/help-google-understand-your-ecommerce-site-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C003",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Google's Q&A slide on HTML sitemaps added that category hub pages linking to a site's important pages have the extra benefit that they may also be useful to users.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C067",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "A page with no internal links depends on sitemaps alone to be found, so it is discovered slowly and attracts little crawl demand.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C838",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Answering whether HTML sitemaps still matter for large sites, Google said a site that wants one can make one, but that the effort is better spent on hub pages such as category pages.",
              "quote": "if you want to make one, knock yourself out, but I will focus on some better things like hub pages, category pages",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "ecommerce-site-structure",
                  "title": "Help Google understand your ecommerce website structure",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/help-google-understand-your-ecommerce-site-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C202",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google may visit hub pages, such as a homepage or category pages, more often than other pages, because they usually link out to new or updated pages.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "url-discovery",
            "sitemaps",
            "crawl-demand"
          ],
          "docs": [
            {
              "key": "how-search-works",
              "title": "In-depth guide to how Google Search works",
              "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "ecommerce-site-structure",
              "title": "Help Google understand your ecommerce website structure",
              "url": "https://developers.google.com/search/docs/specialty/ecommerce/help-google-understand-your-ecommerce-site-structure",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "sitemap-file",
              "count": 2,
              "own": true
            },
            {
              "id": "crawl-demand-metric",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-05",
          "level": "SHOULD",
          "title": "Publish XML sitemaps listing only canonical, indexable URLs with accurate lastmod",
          "why": "A sitemap listed in robots.txt can be picked up by any crawler; one that is not listed has to be submitted, for example in Search Console. Sitemap inclusion is a weak canonical signal, so a sitemap full of redirects, parameters or noindexed URLs sends mixed signals.",
          "how": "Generate sitemaps from the same source as the canonical tags: only URLs that return 200, are indexable and are their own canonical. Change lastmod only for significant updates (main content, structured data or links), never for footer, copyright or timestamp changes; Google uses lastmod only when it is consistently accurate. Split files at 50,000 URLs or 50 MB uncompressed under a sitemap index, and add hreflang (DEV-INT-05), image (DEV-IMG-04) and video (DEV-VID-04) entries where used. Reference the index in robots.txt and submit it in Search Console.",
          "test": "Crawl the sitemap URLs: every one returns 200, has a self-referencing canonical and no noindex. The Sitemaps report shows each file as read, and the Page indexing report filtered by sitemap shows how many listed URLs are indexed.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "xml-sitemap",
          "claims": [
            {
              "id": "D2-C017",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google answered on a Q&A slide that a sitemap listed in the robots.txt file can be picked up by any crawler, not only by Google's.",
              "quote": "If it's included in the robots.txt file, any crawler can pick your sitemaps up",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C018",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's Q&A slide said that a sitemap not listed in robots.txt has to be submitted instead, for example in Search Console.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "build-sitemap",
                  "title": "Build and submit a sitemap",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C391",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's canonical guide ranks the ways to signal a preferred canonical by strength: redirects and rel=canonical annotations are strong signals, sitemap inclusion is a weak signal, and combining methods makes them more effective.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C390",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Clear site-owner signals about which URL should be canonical make a big difference to Google's choice; the speaker named redirects, listing only the preferred URL in sitemaps, and rel=canonical, which the speaker said also helps a bit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C067",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "A page with no internal links depends on sitemaps alone to be found, so it is discovered slowly and attracts little crawl demand.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C833",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's sitemap guide says Google uses lastmod only when it is consistently and verifiably accurate, and counts a change to the main content, the structured data or the links of a page as significant, but not a changed copyright date.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "build-sitemap",
                  "title": "Build and submit a sitemap",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C842",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google said listing the sitemap in robots.txt is fine, as many websites do.",
              "quote": "you can include it in robots.txt. No problem whatsoever.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "build-sitemap",
                  "title": "Build and submit a sitemap",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C843",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google pointed out the trade-off of listing a sitemap in robots.txt: anyone can then see the sitemap, which a site may not want.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "create-robots-txt",
                  "title": "How to write and submit a robots.txt file",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/create-robots-txt",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C475",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "There is no sweet spot to find for a sitemap: technically it should list every URL you want indexed, so that Google can find each of them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "build-sitemap",
                  "title": "Build and submit a sitemap",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C337",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "An XML sitemap, a format from around 2005, gives Google, other search engines and potentially AI systems a list of the URLs a site wants crawled; Google called it nothing fancy but said it still uses sitemaps.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "sitemaps-overview",
                  "title": "Learn about sitemaps",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "html-sitemap-blog",
                  "title": "How is a Google Sitemap different from an HTML sitemap?",
                  "url": "https://developers.google.com/search/blog/2005/09/how-is-google-sitemap-different-from",
                  "publisher": "Search Central blog (26 September 2005)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C336",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google finds what to crawl mainly by extracting URLs from previously crawled pages, and additionally from sitemaps.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "sitemaps-overview",
                  "title": "Learn about sitemaps",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "sitemaps",
            "robots-txt",
            "url-discovery",
            "canonical-selection",
            "crawl-demand",
            "site-moves"
          ],
          "docs": [
            {
              "key": "build-sitemap",
              "title": "Build and submit a sitemap",
              "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "robots-spec",
              "title": "How Google interprets the robots.txt specification",
              "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "sitemap-file",
              "count": 11,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 4,
              "own": true
            },
            {
              "id": "canonicalization",
              "count": 2,
              "own": true
            },
            {
              "id": "redirects",
              "count": 2,
              "own": true
            },
            {
              "id": "rel-canonical",
              "count": 2,
              "own": false
            },
            {
              "id": "google-search-console",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-06",
          "level": "MUST",
          "title": "Give each page of a paginated series its own URL, its own canonical and an <a href> to the next page",
          "why": "Google's crawlers do not click \"next\" buttons, and rel=next and rel=prev are no longer used. Pointing the canonical of page 2 and later at page 1 is incorrect because the pages are not duplicates, and items listed only on later pages may never be indexed. A remark at Search Central Live that a canonical to page 1 can sometimes make sense was hedged; the documented rule stands.",
          "how": "Use ?page=n (or /page/n/) URLs, with page 1 at the clean listing URL. Each page carries a self-referencing canonical and <a href> links to the next page and back to page 1, ideally also to nearby pages; titles and descriptions may stay the same across the series, so a page number in the title is optional. Never put page numbers in # fragments. Keep sort and filter variants out of the crawl (DEV-URL-08).",
          "test": "For pages 1 to 3 of a listing, curl the HTML: the canonical is self-referencing and the next-page <a href> is present without JavaScript. URL Inspection shows later pages as indexable.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "pagination-links",
          "claims": [
            {
              "id": "D1-C115",
              "day": 1,
              "session_id": "D1-S00",
              "session": "Day 1, session not recorded",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's crawlers do not click buttons. Each page in a series needs its own URL and an <a href> link to the next page, should not use page 1 as its canonical, and rel=next and rel=prev are no longer used.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C395",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's 2013 post on rel=canonical mistakes says pointing rel=canonical from page 2 or later of a paginated series to page 1 is incorrect because the pages are not duplicates, and that it would result in the content on later pages not being indexed at all.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (8 April 2013)",
              "speaker": null,
              "sources": [
                {
                  "key": "rel-canonical-mistakes-blog",
                  "title": "5 common mistakes with rel=canonical",
                  "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
                  "publisher": "Search Central blog (8 April 2013)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C394",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Google's pagination guide still says not to use page 1 as the canonical of a paginated series, so keep self-referencing canonicals on paginated pages unless you deliberately want later pages folded into page 1 and the items they list are linked from elsewhere.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C393",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's speaker said that pointing rel=canonical from the pages of a paginated set to the first page can sometimes make sense depending on the goal, for example to make a category page more visible, but that it affects canonicalization and deduplication.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C114",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A Google panelist called pagination one of the trickiest things in web development and said switching to infinite scroll or a load-more button is risky, depending on what you want to achieve, because Googlebot does not click buttons.",
              "quote": "the infinite scrolling or load more thing is kind of dangerous, depending on what you want to achieve",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C832",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's pagination guide says the pages of a paginated sequence may share the same title and description, and suggests linking every page of the sequence back to the first page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "pagination",
            "canonical-selection"
          ],
          "docs": [
            {
              "key": "pagination-guide",
              "title": "Pagination, incremental page loading, and their impact on Google Search",
              "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "rel-canonical-mistakes-blog",
              "title": "5 common mistakes with rel=canonical",
              "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
              "publisher": "Search Central blog (8 April 2013)",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 2,
              "own": true
            },
            {
              "id": "rel-canonical",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-URL-07",
          "level": "MUST",
          "title": "Back infinite scroll and load-more buttons with paginated URLs",
          "why": "Google renders a page in a very tall viewport instead of scrolling, which is not efficient and can miss content; a figure of around 10,000 pixels was said at Search Central Live but is not documented. Content that appears only after scrolling beyond that, or after clicking \"load more\", stays invisible unless each chunk also has its own URL. Said at Search Central Live: a Google panelist called pagination one of the trickiest things in web development and a switch to infinite scroll or a load-more button risky, depending on what you want to achieve, because Googlebot does not click buttons; without crawlable links to them, Google does not see the further pages at all.",
          "how": "Build load-more and infinite scroll on top of the paginated series (DEV-URL-06): each chunk has a persistent, unique URL that also works on direct load, chunks link to each other with <a href>, and the History API updates the address when a new chunk becomes the main visible element. Trigger loading with an IntersectionObserver, never a scroll listener (DEV-REN-03).",
          "test": "With JavaScript disabled, follow the \"more\" link through every page of a listing. In URL Inspection the rendered HTML of page 1 contains a crawlable link to page 2, and server logs show Googlebot fetching the paginated URLs.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "lazy-loading",
          "claims": [
            {
              "id": "D2-C276",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "To make infinite scroll indexable, Google's lazy-loading guide says to support paginated loading: give each chunk its own persistent, unique URL, link sequentially to those URLs, and update the displayed URL with the History API when a new chunk becomes the main visible element.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C273",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's March 2023 SEO office hours say Google sees infinite-scroll content through viewport expansion, rendering a page like a very long phone, which is not particularly efficient and can miss infinite content.",
              "quote": "a technique called \"viewport expansion\", where we render a page like a very long phone",
              "quote_checked": false,
              "credit": "Google Search Central (SEO office hours transcript, March 2023)",
              "speaker": null,
              "sources": [
                {
                  "key": "seo-office-hours-2023-03",
                  "title": "March 2023 Google SEO office hours",
                  "url": "https://developers.google.com/search/help/office-hours/2023/march",
                  "publisher": "Google Search Central (SEO office hours transcript, March 2023)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C271",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google does not scroll a page when it renders it for indexing, so content that infinite scroll loads on scroll-depth triggers works for users but is never loaded for Google.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C272",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Instead of scrolling, Google renders a page in a very tall viewport, around 10,000 pixels high.",
              "quote": "it renders it in a very tall viewport. Specifically, around 10,000 pixels is what the viewport gets rendered as.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": []
            },
            {
              "id": "D1-C114",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A Google panelist called pagination one of the trickiest things in web development and said switching to infinite scroll or a load-more button is risky, depending on what you want to achieve, because Googlebot does not click buttons.",
              "quote": "the infinite scrolling or load more thing is kind of dangerous, depending on what you want to achieve",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C491",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "If paginated pages are replaced by a load-more button or infinite scroll without crawlable links to them, Google will not see the further pages at all.",
              "quote": "Googlebot is not running around clicking on buttons",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "lazy-loading",
            "rendering",
            "pagination",
            "crawlable-links"
          ],
          "docs": [
            {
              "key": "lazy-loading-guide",
              "title": "Fix lazy-loaded content",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "pagination-guide",
              "title": "Pagination, incremental page loading, and their impact on Google Search",
              "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "seo-office-hours-2023-03",
              "title": "March 2023 Google SEO office hours",
              "url": "https://developers.google.com/search/help/office-hours/2023/march",
              "publisher": "Google Search Central (SEO office hours transcript, March 2023)",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "googlebot",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-08",
          "level": "MUST",
          "title": "Keep faceted navigation out of the crawl with robots.txt rules or URL fragments",
          "why": "Facets create near-infinite URL spaces (the same filters in another order, conflicting or excessive combinations, facets on paginated or search pages), one of the things named as burning crawl budget. Google's faceted navigation guide prefers prevention: disallow filter URLs in robots.txt or use URL fragments, which Google generally does not crawl; rel=canonical and nofollow are weaker, slower options.",
          "how": "Decide per facet whether it deserves an indexable landing page, for example a main category or brand with real search demand, and give those a clean URL, unique content and <a href> links. Put every other filter, sort and view parameter behind a robots.txt Disallow pattern or in the # fragment, and do not link filter combinations with crawlable hrefs. Also disallow internal search results and action URLs (cart, wishlist, compare). Audit CMS plug-ins for generated URL spaces: Google's crawling team said many crawling complaints it receives turn out to come from a plug-in, such as a calendar plug-in that adds calendar parameters to the URLs of every post, page, category and tag page, and Google crawls such URLs until its systems learn from large samples that they are useless. A Google panelist added that useless plug-in parameter URLs can also be handled at the web server, for example with a rewrite rule or a custom module, so that crawl budget goes to the URLs that matter.",
          "test": "A crawl that respects robots.txt finds a bounded number of listing URLs; server logs and Crawl stats show Googlebot not spending fetches on parameter URLs; Google's open-source robots.txt parser (github.com/google/robotstxt), run with the Googlebot token, returns disallowed for sample filter URLs and allowed for item pages, and URL Inspection shows item pages as Crawl allowed.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-txt",
          "claims": [
            {
              "id": "D1-C101",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's faceted navigation guide prefers prevention: disallow filter URLs in robots.txt and keep crawlable only item pages plus one unfiltered listing page, or use URL fragments, which Google generally does not crawl. rel=canonical and nofollow are weaker, slower options.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "faceted-nav-guide",
                  "title": "Managing crawling of faceted navigation URLs",
                  "url": "https://developers.google.com/crawling/docs/faceted-navigation",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C100",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Six faceted-URL problems were shown: the same facets in a different order, irrelevant or conflicting facet combinations, excessive facet selection, facets on paginated series, facets combined with search queries, and optional facets with default values.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "faceted-nav-guide",
                  "title": "Managing crawling of faceted navigation URLs",
                  "url": "https://developers.google.com/crawling/docs/faceted-navigation",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C099",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Three things burn crawl budget: server errors unrelated to server load, useless pages and resources, and infinite URL spaces.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C103",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Four ways to manage crawl budget: use HTTP cache control, have good site navigation, restrict crawlers' access to faceted navigation and action URLs, and improve or remove useless content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C188",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Hash-fragment links are a problem only where Google should follow them: product, category and language links need a real URL in an <a href>, while fragments can deliberately keep filter combinations out of the crawl, as Google's faceted navigation guide allows.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C469",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes said disallowing a section that should not be crawled, such as /ads, in a Googlebot group in robots.txt shifts crawl budget to the rest of the site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C430",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google follows robots.txt partly in its own interest: crawling an infinite URL space such as a calendar that robots.txt blocks would waste Google's crawling time as well as the site's resources.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C446",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Many crawling complaints that reach Google's crawling team turn out to be caused by a plugin, for example a WordPress calendar plugin that adds calendar parameters to the URLs of every post, page, category and tag page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C447",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google crawls new URLs, such as plugin-generated calendar pages, because it wants to see what they are; its automated systems learn that such URLs are useless only from large samples, which takes time.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "faceted-nav-guide",
                  "title": "Managing crawling of faceted navigation URLs",
                  "url": "https://developers.google.com/crawling/docs/faceted-navigation",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C378",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google treats URLs that differ as different URLs and crawls all of them even when they lead to the same content, so infinite URL spaces such as calendars or many versions of a page burn crawl budget.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "url-structure-guide",
                  "title": "URL structure best practices for Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/url-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawl-budget-blog",
                  "title": "What Crawl Budget Means for Googlebot",
                  "url": "https://developers.google.com/search/blog/2017/01/what-crawl-budget-means-for-googlebot",
                  "publisher": "Search Central blog (16 January 2017)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C444",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Log files are worth checking on sites with filter parameters or complicated URLs, because crawlers can easily wander off into URLs that make no sense for the site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "faceted-nav-guide",
                  "title": "Managing crawling of faceted navigation URLs",
                  "url": "https://developers.google.com/crawling/docs/faceted-navigation",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C539",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A Google panelist said useless plugin-generated parameter URLs can be handled at the web server, for example with a rule or a custom module in Apache, which saves crawl budget so that Google may pick up the URLs that matter instead (the exact mechanism is not clear in the recording).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "faceted-nav-guide",
                  "title": "Managing crawling of faceted navigation URLs",
                  "url": "https://developers.google.com/crawling/docs/faceted-navigation",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-budget",
            "faceted-navigation",
            "robots-txt",
            "soft-404",
            "crawl-demand",
            "http-caching",
            "crawl-directives",
            "crawlable-links"
          ],
          "docs": [
            {
              "key": "faceted-nav-guide",
              "title": "Managing crawling of faceted navigation URLs",
              "url": "https://developers.google.com/crawling/docs/faceted-navigation",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "crawl-budget-metric",
              "count": 5,
              "own": true
            },
            {
              "id": "faceted-navigation-concept",
              "count": 3,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 3,
              "own": true
            },
            {
              "id": "disallow",
              "count": 1,
              "own": true
            },
            {
              "id": "nofollow",
              "count": 1,
              "own": true
            },
            {
              "id": "rel-canonical",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-09",
          "level": "SHOULD",
          "title": "If facet URLs must be crawlable, use & separators, a fixed filter order and 404 for empty results",
          "why": "Google's faceted navigation guide asks crawlable facet URLs to use the standard & separator, keep filters in a consistent order and return 404 when a combination has no results. Said at Search Central Live: many similar-looking URLs leading to the same or empty content can make Google fold a whole URL pattern into one canonical and stop crawling new URLs that fit it.",
          "how": "Normalise the parameter order on the server (redirect or canonicalise ?size=m&color=red and ?color=red&size=m to one order). Use key=value pairs joined with &, not custom separators. Return 404, not an empty 200 page, for combinations with no items. Make indexable facet pages differ in their main content (heading, introduction, items), not only in the title.",
          "test": "Request one combination in two parameter orders: one redirects or canonicalises to the other. curl -I on an empty combination returns 404. The Page indexing report shows no growth of duplicate reasons on facet URLs.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C102",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "If faceted URLs must be crawled, use the standard & separator, keep filters in a consistent order, and return a 404 when a filter combination has no results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "faceted-nav-guide",
                  "title": "Managing crawling of faceted navigation URLs",
                  "url": "https://developers.google.com/crawling/docs/faceted-navigation",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C371",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To avoid pattern-based deduplication, Google's speaker recommended not having many unrelated, similar-looking URLs that lead to the same content, and returning error pages for URLs that no longer exist so they are clearly unrelated.",
              "quote": "Misleading site structure (use clear signals!)",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "troubleshoot-crawling-errors",
                  "title": "Troubleshoot Google Search crawling errors",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C368",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google sometimes picks a canonical that looks unrelated because it recognised a URL pattern: if /buy/fax, /buy/typewriter and /office-equipment show the same content, its systems may assume any /buy/ URL, even /buy/seo-service, shows that same office-equipment content without looking at the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C369",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's slide on structurally similar content asked whether a new URL that fits a known duplicate pattern, such as /buy/seo-service, even needs to be crawled.",
              "quote": "Do we even need to crawl /buy/seo-service ?",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C372",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Make location and variant pages differ in their main content (local stock, staff, prices, addresses) and return 404 for empty or invalid combinations; otherwise every URL that fits the pattern can be folded into one canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "duplicate-content",
            "canonical-selection",
            "crawl-budget",
            "faceted-navigation"
          ],
          "docs": [
            {
              "key": "faceted-nav-guide",
              "title": "Managing crawling of faceted navigation URLs",
              "url": "https://developers.google.com/crawling/docs/faceted-navigation",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "canonicalization-troubleshooting",
              "title": "Fix canonicalization issues",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 2,
              "own": true
            },
            {
              "id": "http-404",
              "count": 2,
              "own": true
            },
            {
              "id": "faceted-navigation-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-10",
          "level": "SHOULD",
          "title": "Group URLs into meaningful section paths and launch new content under sections Google already indexes well",
          "why": "Said at Search Central Live: when Google does not yet know a URL's quality or popularity, it uses the aggregate of the URL's parent path, then that path's parent, and index selection is more forgiving with new URLs from a site or a section that already satisfies users well. Neither rule is in Google's documentation. Author's view: URL paths are a lever for crawl demand and index selection, not only for tidiness.",
          "how": "Plan the URL structure so each template lives under a section path that reflects the site's structure (/chairs/oak-dining-chair rather than /p?id=123 or a flat root). Launch new content types under sections Google already crawls and indexes well rather than under weak or brand-new ones, and improve or remove weak sections before adding to them.",
          "test": "The URL plan maps every template to a section path, and after launch each new section is reviewed on its own (a URL-prefix property or a sitemap per section) in the Page indexing report and in Crawl stats.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C094",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "If the quality or popularity of a URL is unknown, the aggregate quality or popularity of its parent path is used, then that path's parent, and so on.",
              "quote": "If quality or popularity is unknown, use parent root's aggregate quality or popularity is used, then, that path's parent's, and so on.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C095",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "New content inherits its starting crawl demand from the folder it sits in. Put new high-value content under sections Google already rates well, not under weak ones.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C685",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Index selection uses what Google already knows about a site: if the site, or even a section of it, satisfies users' needs well, new URLs from it are treated more forgivingly.",
              "quote": "the index selection system is going to be more forgiving when it sees a new URL from your site",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C686",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Launch new pages under sections that Google already indexes well, and improve or remove weak sections, because index selection judges new URLs partly by what it knows about the site and the section they sit in.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "crawl-demand-inheritance",
            "index-selection"
          ],
          "docs": [],
          "entities": [
            {
              "id": "index-selection-concept",
              "count": 2,
              "own": true
            },
            {
              "id": "crawl-demand-metric",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-URL-11",
          "level": "SHOULD",
          "title": "Compute the expected URL for every request and redirect variants to it",
          "why": "Google treats URLs that differ as different URLs and crawls them all, even when they show the same content. A community speaker showed five kinds of similar URLs on well-known brand sites: another protocol or host, other capitalisation, extra slashes, a space encoded as %20 in one URL and + in another, and parameters in another order. Such URLs signal duplicate content, broken links and unnecessary redirects, and anyone can link to them from other sites, so the application should be hardened against them.",
          "how": "In the application, build the expected URL for each request from the route, the page type and ID (reverse routing) and the parameters the page actually uses, in a fixed order. When the requested URL differs, answer one 301 to the expected URL, or an error page when it maps to nothing. Generate internal links with the same function so they are never variants.",
          "test": "Requests for the uppercase, double-slash, reordered-parameter and unused-parameter variants of a sample URL each return one 301 to the expected URL; a crawl that normalises URLs (lowercase scheme and host, default port removed, dot segments resolved, fragment dropped) finds no two crawled URLs that collapse to the same normalised URL.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "url-normalization",
          "claims": [
            {
              "id": "D1-C397",
              "day": 1,
              "session_id": "D1-S11",
              "session": "Lightning session C: Crawling",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker said similar URLs are an indicator of duplicate content, broken links, unnecessary redirects and other technical issues.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "url-structure-guide",
                  "title": "URL structure best practices for Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/url-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C399",
              "day": 1,
              "session_id": "D1-S11",
              "session": "Lightning session C: Crawling",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker showed five kinds of similar URLs on well-known brand sites: a different protocol or host (HTTP vs HTTPS, www vs non-www), different capitalisation, a different number of delimiters such as slashes, a space encoded as %20 in one URL and + in another, and parameters in a different order.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "url-structure-guide",
                  "title": "URL structure best practices for Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/url-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C400",
              "day": 1,
              "session_id": "D1-S11",
              "session": "Lightning session C: Crawling",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To find similar URLs in a URL list, a community speaker first applies basic normalisation that keeps the meaning: lowercase the scheme and host, remove default ports such as 80 for HTTP, resolve relative path segments and usually drop the fragment, which matters only to clients.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "url-structure-guide",
                  "title": "URL structure best practices for Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/url-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C402",
              "day": 1,
              "session_id": "D1-S11",
              "session": "Lightning session C: Crawling",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Similar URLs usually come from programming errors or manually set links, but anyone can link to them from other sites, including malicious actors, so a site should be hardened against them.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Tobias Schwarz",
              "sources": []
            },
            {
              "id": "D1-C403",
              "day": 1,
              "session_id": "D1-S11",
              "session": "Lightning session C: Crawling",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker advised that a web application compute the expected URL for every request, for example with reverse routing from the page type and ID, and redirect or return an error page when the requested URL differs.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C404",
              "day": 1,
              "session_id": "D1-S11",
              "session": "Lightning session C: Crawling",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "For query parameters, a community speaker advised checking that every parameter in a request is actually used and in the expected order, and otherwise redirecting to the expected URL with only the used parameters in the correct order.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "faceted-nav-guide",
                  "title": "Managing crawling of faceted navigation URLs",
                  "url": "https://developers.google.com/crawling/docs/faceted-navigation",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C445",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "One fix for parameter variants of a URL is to work out the normalised URL and redirect the variants to it: the redirects cost crawl budget at first, but leave the site with a clean slate.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C378",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google treats URLs that differ as different URLs and crawls all of them even when they lead to the same content, so infinite URL spaces such as calendars or many versions of a page burn crawl budget.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "url-structure-guide",
                  "title": "URL structure best practices for Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/url-structure",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawl-budget-blog",
                  "title": "What Crawl Budget Means for Googlebot",
                  "url": "https://developers.google.com/search/blog/2017/01/what-crawl-budget-means-for-googlebot",
                  "publisher": "Search Central blog (16 January 2017)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "url-normalization",
            "faceted-navigation",
            "duplicate-content",
            "crawl-budget",
            "canonical-selection"
          ],
          "docs": [
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "url-structure-guide",
              "title": "URL structure best practices for Google Search",
              "url": "https://developers.google.com/search/docs/crawling-indexing/url-structure",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "faceted-nav-guide",
              "title": "Managing crawling of faceted navigation URLs",
              "url": "https://developers.google.com/crawling/docs/faceted-navigation",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "redirects",
              "count": 4,
              "own": true
            },
            {
              "id": "crawl-budget-metric",
              "count": 2,
              "own": false
            },
            {
              "id": "duplicate-content-concept",
              "count": 1,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "rendering-javascript",
      "title": "Rendering and JavaScript",
      "intro": "Google renders pages with a headless Chromium in a separate, queued system and indexes what is in the DOM when rendering ends. Content and links that depend on clicks, scrolling, blocked resources, permission prompts or slow APIs can be missing from what Google indexes.",
      "requirements": [
        {
          "id": "DEV-REN-01",
          "level": "SHOULD",
          "title": "Server-render the main content and everything indexing depends on (SSR, static generation or hybrid)",
          "why": "Every 200 page waits in a render queue, for seconds or longer, and rendering can fail or time out; content already in the server HTML does not depend on that slower pass. Google named server-side rendering as the fix for slow live reads of a page, and a community speaker stressed that AI systems that cannot render JavaScript see only the raw HTML. Said at Search Central Live (October 2026): content that JavaScript adds is usually seen by indexing within a few hours but at worst within weeks, and a Google speaker doubted that every URL is actually rendered; Google's JavaScript guide says every 200 page is queued for rendering, and queued is not the same as rendered.",
          "how": "Choose the rendering mode per template before launch: server-render or pre-render every template that must rank (product, category, article, landing pages), including the title, meta description, canonical, robots meta tag, hreflang, main text, prices and internal links. Hydrate on the client for interactivity only. With a headless CMS, render on the server or at build time rather than only in the browser.",
          "test": "curl -s the page and find the main heading, price and key links in the raw HTML; compare with the rendered HTML in URL Inspection; with JavaScript disabled in DevTools the page still shows its main content.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "semantic-page-template",
          "claims": [
            {
              "id": "D2-C131",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's JavaScript SEO guide says Googlebot sends every page with a 200 HTTP status code to the rendering queue, whether or not it contains JavaScript, unless a robots meta tag or header tells Google not to index it, and Google uses the rendered HTML to index the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C172",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's JavaScript SEO basics guide says a page may wait in the render queue for a few seconds but that it can take longer, and it gives no upper limit.",
              "quote": "The page may stay on this queue for a few seconds, but it can take longer than that.",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C124",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's simple solution for the extra time of live page reads is to make JavaScript-generated content render quickly and efficiently, or to use server-side rendering.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "dynamic-rendering",
                  "title": "Dynamic rendering as a workaround",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C139",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker strongly advised putting everything you want cited into the raw, server-side rendered HTML, especially for AI systems that cannot render JavaScript yet.",
              "quote": "everything you want cited, include it in the raw HTML, server-side rendered",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "dynamic-rendering",
                  "title": "Dynamic rendering as a workaround",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C133",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Put everything indexing depends on (title, meta description, canonical, robots meta tag, main text and links) in the raw HTML so it is available without rendering, let JavaScript add enhancements only, and check the rendered HTML in URL Inspection for the rest.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C125",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For pages people are likely to ask an AI assistant about (product, pricing, documentation and policy pages), server-render the main content so a live, user-triggered read does not depend on client-side JavaScript finishing quickly.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C627",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Content that JavaScript adds to a page is typically seen by Google's indexing system within a few hours, and at worst within weeks.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C628",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Gary Illyes said Google keeps saying it renders every URL on the internet and that he would say this is not true, though it is what he was told; he went on to say that Google's logs show the rendering queue cleared within weeks.",
              "quote": "we keep saying that we render every single URL on the internet. I would say that that's not true",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D3-C676",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The stage doubt that every URL gets rendered sits beside Google's JavaScript guide, which says every page with a 200 status is queued for rendering unless a robots rule blocks indexing: queued is not the same as rendered, so do not rely on rendering for critical content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C247",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Natalia Venditto recommended that web fragments be server-rendered.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Natalia Venditto",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C249",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Natalia Venditto said a server-rendered app reframed into the host page is fully indexable.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Natalia Venditto",
              "sources": []
            }
          ],
          "topics": [
            "javascript-seo",
            "rendering",
            "ai-crawlers-and-agents",
            "web-fragments",
            "gemini-and-search",
            "indexing-pipeline"
          ],
          "docs": [
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "dynamic-rendering",
              "title": "Dynamic rendering as a workaround",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "javascript",
              "count": 7,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 5,
              "own": true
            },
            {
              "id": "http-200",
              "count": 2,
              "own": true
            },
            {
              "id": "meta-robots-tag",
              "count": 2,
              "own": false
            },
            {
              "id": "main-content-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-REN-02",
          "level": "MUST",
          "title": "Have all indexable content in the DOM after load, without clicks, typing or scrolling",
          "why": "Googlebot does not click, type or scroll. Content that loads only after a user action is not in the DOM when Google renders the page, so it cannot be indexed, while content that is in the DOM but hidden (tabs, accordions, read-more) can be. Google's slide called content missing from the rendered HTML the most common JavaScript indexing issue.",
          "how": "Ship tab, accordion and read-more content in the initial HTML or DOM and hide it with CSS or the hidden attribute; never fetch it on click. Product specifications, reviews, FAQs and descriptions belong in the page at load. Keep interaction-only loading for content you do not need indexed.",
          "test": "In URL Inspection (rendered HTML) or the Rich Results Test, find text from every tab and accordion panel. In the DevTools Network panel, no content request waits for a click.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "tabs-in-dom",
          "claims": [
            {
              "id": "D2-C195",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Content that loads only after a user action such as a click or a scroll is not in the DOM while Google renders the page, so Google cannot index it.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "mobile-first-indexing",
                  "title": "Mobile site and mobile-first indexing best practices",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C268",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Content that loads only when a user clicks an element is not supported in the way Google renders pages for indexing.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C201",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Tab or accordion content fetched from an API only when a user clicks the tab, as in tab.onclick = () => fetch('/api/specs'), does not exist for Google until someone clicks.",
              "quote": "Doesn't exist until someone clicks",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "mobile-first-indexing",
                  "title": "Mobile site and mobile-first indexing best practices",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "pagination-guide",
                  "title": "Pagination, incremental page loading, and their impact on Google Search",
                  "url": "https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C196",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "For rendering, what matters is whether content is present in the DOM, not whether it is visible on screen: hidden content can be indexed, absent content cannot.",
              "quote": "Not visible versus hidden. Present versus absent in the DOM.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mobile-first-indexing",
                  "title": "Mobile site and mobile-first indexing best practices",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C202",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Tab and accordion content should be in the DOM from the start and only hidden with CSS or the hidden attribute; Google indexes such hidden content.",
              "quote": "CSS-hidden is fine. Google indexes it.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "mobile-first-indexing",
                  "title": "Mobile site and mobile-first indexing best practices",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C262",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Content that is not in the final DOM after rendering cannot be seen by Google, so it cannot be indexed.",
              "quote": "If it's not in the final DOM, Google can't see it.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C261",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's slide called content missing from the rendered HTML the most common JavaScript issue for indexing.",
              "quote": "The most common issue.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": []
            },
            {
              "id": "D2-C866",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Content inside tabs, for example separate tabs for a product description and a manufacturer description, might be part of a page's main content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "rendering",
            "lazy-loading",
            "javascript-seo",
            "main-content"
          ],
          "docs": [
            {
              "key": "lazy-loading-guide",
              "title": "Fix lazy-loaded content",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "mobile-first-indexing",
              "title": "Mobile site and mobile-first indexing best practices",
              "url": "https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "rendering-concept",
              "count": 2,
              "own": false
            },
            {
              "id": "javascript",
              "count": 1,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-REN-03",
          "level": "MUST",
          "title": "Lazy-load with native lazy loading or an IntersectionObserver, never with scroll events",
          "why": "Googlebot does not scroll, so a scroll event listener never fires and the content it would load never appears. Google renders with a very tall viewport instead (said at Search Central Live to be around 10,000 pixels), so content loaded when it enters the viewport does load during rendering.",
          "how": "Use loading=\"lazy\" on img and iframe elements, with a real src plus width and height, and an IntersectionObserver for other components. Never make indexable content depend on scroll position, scroll depth or a timer. Treat the tall viewport as a safety margin, not a target, and give long lists paginated URLs (DEV-URL-07).",
          "test": "The rendered HTML in URL Inspection contains below-the-fold images and list items. A code search finds no addEventListener('scroll') or onscroll handler that loads content.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "lazy-loading",
          "claims": [
            {
              "id": "D2-C198",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Lazy loading should be triggered by an Intersection Observer that watches a sentinel element instead of by a scroll event listener.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C197",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Lazy loading triggered by a scroll event listener, such as window.addEventListener('scroll', loadMoreProducts), never runs for Googlebot because Googlebot does not scroll.",
              "quote": "Googlebot doesn't scroll. Never runs.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "seo-office-hours-2023-03",
                  "title": "March 2023 Google SEO office hours",
                  "url": "https://developers.google.com/search/help/office-hours/2023/march",
                  "publisher": "Google Search Central (SEO office hours transcript, March 2023)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C271",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google does not scroll a page when it renders it for indexing, so content that infinite scroll loads on scroll-depth triggers works for users but is never loaded for Google.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C274",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Content loaded as elements enter the viewport, for example with an Intersection Observer, does load when Google renders a page, because Google's rendering viewport is very tall.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C199",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "An Intersection Observer fires when the observed element enters the viewport, and the viewport Google renders with is tall, so content lazy-loaded this way can load during rendering.",
              "quote": "Fires on viewport entry. Viewport is tall.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "seo-office-hours-2023-03",
                  "title": "March 2023 Google SEO office hours",
                  "url": "https://developers.google.com/search/help/office-hours/2023/march",
                  "publisher": "Google Search Central (SEO office hours transcript, March 2023)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C272",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Instead of scrolling, Google renders a page in a very tall viewport, around 10,000 pixels high.",
              "quote": "it renders it in a very tall viewport. Specifically, around 10,000 pixels is what the viewport gets rendered as.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": []
            }
          ],
          "topics": [
            "lazy-loading",
            "rendering",
            "javascript-seo"
          ],
          "docs": [
            {
              "key": "lazy-loading-guide",
              "title": "Fix lazy-loaded content",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "seo-office-hours-2023-03",
              "title": "March 2023 Google SEO office hours",
              "url": "https://developers.google.com/search/help/office-hours/2023/march",
              "publisher": "Google Search Central (SEO office hours transcript, March 2023)",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "lazy-loading-concept",
              "count": 3,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 2,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-REN-04",
          "level": "AVOID",
          "title": "Do not block JavaScript, CSS or API endpoints that pages need for rendering in robots.txt",
          "why": "Google's renderer fetches scripts, styles and API requests through Googlebot and obeys robots.txt: if it cannot fetch a resource, it cannot run it. Blocking a script folder or a generic /api/ folder leaves blank modules or an empty page, which can be treated as a soft 404 although users see a full page.",
          "how": "Allow all JS, CSS and font paths. If an API folder must stay disallowed, carve out the endpoints rendering needs (Disallow: /api/ plus Allow: /api/products/), since the longer Allow rule wins. Check the robots.txt of every host the page loads data from, and re-test a rendered page after every robots.txt change touching script or API paths.",
          "test": "URL Inspection live test, page resources: nothing needed for content is \"Blocked by robots.txt\". The DevTools Network panel (Fetch/XHR) lists each API host, and each host's robots.txt allows those paths.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-txt",
          "claims": [
            {
              "id": "D2-C204",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Blocking JavaScript or API resources in robots.txt is a classic rendering mistake: if Google's renderer cannot fetch a resource, it cannot run it.",
              "quote": "If the renderer can't fetch it, the renderer can't run it.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawling-december-resources",
                  "title": "Crawling December: The how and why of Googlebot crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-resources",
                  "publisher": "Search Central blog (3 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C206",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google says its Web Rendering Service fetches the resources a page references through Googlebot, including JavaScript, CSS and XHR requests to APIs, but not images or videos.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (3 December 2024), Search Central blog (31 March 2026)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-resources",
                  "title": "Crawling December: The how and why of Googlebot crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-resources",
                  "publisher": "Search Central blog (3 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "inside-googlebot-blog",
                  "title": "Inside Googlebot: demystifying crawling, fetching, and the bytes we process",
                  "url": "https://developers.google.com/search/blog/2026/03/crawler-blog-post",
                  "publisher": "Search Central blog (31 March 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C297",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's introduction to robots.txt says unimportant image, script or style files may be blocked, but resources whose absence makes a page harder for Google to understand should not be blocked.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C207",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "If an API folder must stay blocked in robots.txt, allow the endpoints that rendering needs, for example Disallow: /api/ together with Allow: /api/products/.",
              "quote": "Carve out only what rendering needs.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C265",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Blocked resources, one of Google's four common JavaScript indexing problems, means robots.txt disallowing the crawling of critical JavaScript files or API endpoints.",
              "quote": "robots.txt disallowing crawling of critical .js or API endpoints.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C296",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "If robots.txt blocks JavaScript that client-side code needs to render, Google cannot render the content that the JavaScript would produce.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C213",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A page that renders empty for Google, such as a client-side product page hit by these mistakes, is seen as thin content and ends up treated as a soft 404 even though users see a full page.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "javascript-seo",
            "robots-txt",
            "rendering",
            "soft-404"
          ],
          "docs": [
            {
              "key": "robots-intro",
              "title": "Introduction to robots.txt",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "crawling-december-resources",
              "title": "Crawling December: The how and why of Googlebot crawling",
              "url": "https://developers.google.com/search/blog/2024/12/crawling-december-resources",
              "publisher": "Search Central blog (3 December 2024)",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "inside-googlebot-blog",
              "title": "Inside Googlebot: demystifying crawling, fetching, and the bytes we process",
              "url": "https://developers.google.com/search/blog/2026/03/crawler-blog-post",
              "publisher": "Search Central blog (31 March 2026)",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 5,
              "own": true
            },
            {
              "id": "javascript",
              "count": 4,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 3,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            },
            {
              "id": "soft-404-error",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-REN-05",
          "level": "AVOID",
          "title": "Do not add, change or remove robots meta tags with JavaScript",
          "why": "Robots rules added with JavaScript take longer to be seen, and removing a noindex with JavaScript does not work: Google may skip rendering a page that arrives with noindex, so it stays out of the index. Google's documentation recommends avoiding JavaScript to inject or change meta tags.",
          "how": "Decide indexability on the server and send the final robots meta tag or X-Robots-Tag header in the first response. Never ship noindex in the HTML shell and remove it after hydration, and never toggle data-nosnippet with JavaScript. The one documented exception is adding noindex with JavaScript to an error view in a client-rendered app (DEV-ERR-02).",
          "test": "The robots meta tag in curl output and in URL Inspection's rendered HTML is identical on every indexable template. A search of the client bundle finds no code that writes meta[name=\"robots\"] except error views.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C108",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Removing a robots restriction such as noindex with JavaScript does not work, a slide said.",
              "quote": "But... it takes more time, and removing restrictions (like \"noindex\") doesn't work.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C106",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A slide said robots meta rules can be added to a page's HTML with JavaScript, but doing so takes more time.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C107",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's meta tags documentation recommends avoiding JavaScript to inject or change meta tags whenever possible and testing the implementation thoroughly when it must be used.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "meta-tags-supported",
                  "title": "meta tags and attributes that Google supports",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/special-tags",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C257",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's JavaScript SEO basics says every page with a 200 status code is queued for rendering, whether or not it uses JavaScript, unless a robots meta tag or header says not to index it; for non-200 pages such as 404 error pages, rendering might be skipped.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C109",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Ship robots rules in the HTML the server sends and never rely on JavaScript to lift a noindex: Google may skip rendering a page that arrives with noindex, so the page can stay out of the index even if a script removes the tag later.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C079",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's robots meta tag specification says data-nosnippet may be extracted both before and after rendering, so the attribute should not be added to or removed from existing elements with JavaScript.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C852",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When Google finds a noindex rule in a page's HTML, it drops the page without even processing its JavaScript, so a script cannot switch the page back to indexable, John Mueller said.",
              "quote": "we will see the noindex and say, oh, we will get rid of this page; we won't even process the JavaScript",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C853",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "John Mueller recommended putting robots meta tags directly in a page's HTML exactly as intended, and adding them with JavaScript only where that is not possible, as in a JavaScript web app.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "meta-tags-supported",
                  "title": "meta tags and attributes that Google supports",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/special-tags",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C854",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's JavaScript SEO basics guide says that when Google encounters a noindex rule it may skip rendering and JavaScript execution, so using JavaScript to change or remove a noindex robots meta tag may not work as expected.",
              "quote": "it may skip rendering and JavaScript execution",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "javascript-seo",
            "robots-meta-tag",
            "rendering",
            "snippet-controls"
          ],
          "docs": [
            {
              "key": "meta-tags-supported",
              "title": "meta tags and attributes that Google supports",
              "url": "https://developers.google.com/search/docs/crawling-indexing/special-tags",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "javascript",
              "count": 9,
              "own": true
            },
            {
              "id": "meta-robots-tag",
              "count": 4,
              "own": true
            },
            {
              "id": "noindex",
              "count": 4,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 4,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-REN-06",
          "level": "SHOULD",
          "title": "Make rendering robust: no slow API dependencies and no unresolved placeholders",
          "why": "Said at Search Central Live by a community speaker: a renderer does not wait forever before taking its snapshot, so content from slow internal systems can be missing and template placeholders can end up in indexed titles and snippets; because timing varies, the broken page changes from crawl to crawl. Server-side or hybrid rendering, fallbacks and never leaving placeholders in the DOM were named as safeguards.",
          "how": "Render critical content on the server from data available at request time, give slow services timeouts with sensible fallbacks, and never write a template variable, undefined or null into the DOM, title or meta description (render nothing or a neutral default). Keep JavaScript bundles and API waterfalls small so the main content appears quickly. Never make content depend on cookies, localStorage, sessionStorage or a consent state from an earlier page, because Google's renderer clears them between page loads, and give JS and CSS bundles content-hashed file names (main.2bb85551.js), because the renderer may ignore caching headers and use stale files.",
          "test": "Render the same URLs several times with a JavaScript-rendering crawler and search titles, descriptions and body text for {{, undefined, null and NaN; investigate any URL whose rendered output differs between runs.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C259",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Erin Sparling named server-side or hybrid rendering, fallbacks and not leaving placeholders in the DOM, among other measures, as ways to guard against failed JavaScript rendering.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C149",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "A search engine's renderer does not wait forever before taking its snapshot, so content from slow internal systems or APIs can be missing and unresolved placeholders can end up in the final snapshot, a community speaker said.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C263",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Content is missing from the rendered HTML either because the server does not serve it or because the content has still not appeared after some period of time.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": []
            },
            {
              "id": "D2-C175",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "If a page keeps loading content indefinitely, not all of that content will be indexed, because Google's rendering does not go on forever (this passage of the recording is partly unclear).",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": []
            },
            {
              "id": "D2-C151",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Unresolved placeholders caused by rendering timeouts are hard to catch because the problem moves around: it is not always the same page that is broken.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C154",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Add a check for unresolved template placeholders (such as {{brand}}, undefined or null) in rendered titles, meta descriptions and visible text to recurring crawls, and render the same URLs more than once, because such failures are intermittent.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C828",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to fixing Search-related JavaScript problems says its Web Rendering Service keeps no state across page loads: local storage, session storage and HTTP cookies are cleared.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C829",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to fixing Search-related JavaScript problems says the Web Rendering Service may ignore caching headers and so use outdated JavaScript or CSS, and recommends content fingerprinting, which puts a hash of the content in the file name, as in main.2bb85551.js.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            }
          ],
          "topics": [
            "javascript-seo",
            "rendering",
            "rendering-debugging",
            "http-caching"
          ],
          "docs": [
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "rendering-concept",
              "count": 5,
              "own": true
            },
            {
              "id": "javascript",
              "count": 3,
              "own": false
            },
            {
              "id": "snippets",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-REN-07",
          "level": "SHOULD",
          "title": "Keep prices, offer counts and other commercial data identical in raw and rendered HTML",
          "why": "Said at Search Central Live by a community speaker: offer counts, prices and promotions sometimes differ between the server HTML and the rendered page, for example a different newsletter discount in each, so bots and users can get different versions. Google's documentation does not cover this case specifically.",
          "how": "Generate both versions from the same data source with the same filters, and treat any difference in prices, availability, offer counts, links or meta tags between raw and rendered HTML as a bug.",
          "test": "On every release, diff the raw HTML (curl) and the rendered HTML (headless Chrome or URL Inspection) of each key template for prices, offer counts, links and meta tags.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C147",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Offer counts, discounts and other data should always be the same in the raw HTML and the rendered page, a community speaker advised.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C137",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The first rendering blind spot a community speaker showed was content changes: text, images and recommendations that differ between the raw HTML and the rendered page, illustrated by a shop page whose rendered version had a whole extra section.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C148",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Diff the raw and the rendered HTML of each key template for prices, offer counts, links and meta tags, and treat any difference in commercial data as a bug, because bots and users may get different versions.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "javascript-seo",
            "rendering-debugging"
          ],
          "docs": [],
          "entities": []
        },
        {
          "id": "DEV-REN-08",
          "level": "SHOULD",
          "title": "Feature-detect permission-based APIs and WebGL, and render the content without them",
          "why": "Browser APIs that need user permission, such as location and payments, are not supported when Google renders a page, and WebGL effects are not applied. Google recommends feature detection with polyfills or differential serving, and prerendering on the server for content that depends on WebGL.",
          "how": "Render indexable content first; ask for permissions only after a user action and keep a complete default (for example the full store list) if the request is declined. Wrap WebGL and other optional APIs in feature detection with a plain HTML fallback. Add polyfills for missing APIs the content needs, knowing that some features cannot be polyfilled.",
          "test": "In URL Inspection the screenshot and rendered HTML show the main content, and the JavaScript console messages of the live test show no uncaught errors from missing APIs.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "feature-detection-fallback",
          "claims": [
            {
              "id": "D2-C269",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Browser APIs that need user permission, such as payments and location, are not supported when Google renders a page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C277",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "WebGL does not work well in Google's rendering: a WebGL shader that makes a page look like it is underwater will not be applied when Google renders the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C278",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "For effects that need WebGL, which Googlebot does not support, Google's guide to fixing JavaScript problems suggests skipping the effect or prerendering it with server-side rendering so that the content is accessible to Googlebot.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C280",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's JavaScript SEO basics recommends differential serving and polyfills when feature detection finds a missing browser API, and warns that some browser features cannot be polyfilled.",
              "quote": "We recommend using differential serving and polyfills if you feature-detect a missing browser API that you need.",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C282",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Wrap permission-based features (location, payments, camera) and WebGL effects in feature detection with a fallback, so the main content renders when the API is missing or the permission is declined; never make indexable content wait for a permission prompt.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "rendering",
            "javascript-seo"
          ],
          "docs": [
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "javascript",
              "count": 2,
              "own": false
            },
            {
              "id": "rendering-concept",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-REN-09",
          "level": "SHOULD",
          "title": "Monitor JavaScript console errors and Content Security Policy violations on key templates",
          "why": "Console messages reveal problems that remove content, such as uncaught exceptions and Content Security Policy violations that block a script or a video. An unhandled exception in an embedded third-party or AI-generated app can break the host page as well.",
          "how": "Collect console errors in automated browser tests and in a rendering crawl of one URL per template. List in the CSP every host the page needs (scripts, APIs, media, fonts) and test CSP changes in staging, for example with Content-Security-Policy-Report-Only first. Isolate third-party widgets so their errors cannot stop the main content from rendering.",
          "test": "URL Inspection live test, JavaScript console messages: no errors on key templates. Browser tests fail on new console errors or securitypolicyviolation events.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C144",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Browser console messages reveal further problems on a page, Content Security Policy violations among them; few teams analyse console messages at scale, but they should, a community speaker said.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "url-inspection-help",
                  "title": "URL Inspection tool",
                  "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C155",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Content Security Policy lowers the risk of cross-site scripting and clickjacking by defining trusted hosts; a resource from a host that is not trusted is not used.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C222",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Pages that embed third-party or AI-generated apps can share their fate, since an unhandled exception in the embedded code can break the host page; check the rendered HTML and JavaScript console output of such pages in Google's testing tools to make sure the host's own content still renders.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C158",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "When something is missing from a rendered page, check both robots.txt and the Content Security Policy: the URL Inspection live test shows the page resources, the JavaScript console output and a screenshot of the rendered page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "rendering-debugging",
            "javascript-seo",
            "robots-txt",
            "web-fragments"
          ],
          "docs": [
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "url-inspection-help",
              "title": "URL Inspection tool",
              "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "javascript",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-REN-10",
          "level": "SHOULD",
          "title": "Keep indexable content out of iframes, and check web components in the rendered HTML",
          "why": "Google generally tries to index iframe content as part of the embedding page, but that is not guaranteed because both are normal pages of their own. Google flattens shadow DOM and light DOM when it renders web components, and content that does not appear in the rendered HTML cannot be indexed.",
          "how": "Put the main content in the page's own DOM and use iframes for third-party widgets you do not need indexed. For web components and micro-frontend libraries that patch browser APIs, verify the result in Google's tools rather than trusting a library's promise of indexability.",
          "test": "The rendered HTML in URL Inspection or the Rich Results Test shows the component's and embedded content's text as part of the page.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C227",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google says its systems generally try to index the content of a page embedded with an iframe as part of the page that embeds it, but this is not guaranteed because both pages are also normal HTML pages on their own.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central (SEO office hours transcript, December 2023), Search Central blog (21 January 2022)",
              "speaker": null,
              "sources": [
                {
                  "key": "seo-office-hours-2023-12",
                  "title": "December 2023 Google SEO office hours",
                  "url": "https://developers.google.com/search/help/office-hours/2023/december",
                  "publisher": "Google Search Central (SEO office hours transcript, December 2023)",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "indexifembedded-blog",
                  "title": "New robots tag: indexifembedded",
                  "url": "https://developers.google.com/search/blog/2022/01/robots-meta-tag-indexifembedded",
                  "publisher": "Search Central blog (21 January 2022)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C235",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's documentation says Google supports web components and flattens shadow DOM and light DOM content when it renders a page, and that content not visible in the rendered HTML cannot be indexed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C250",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Because Google flattens shadow DOM when it renders, content that Web Fragments places in a shadow root can in principle be indexed with the host page, but only if it appears in the rendered HTML; check that in URL Inspection rather than relying on a library's promise of indexability.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C240",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Because Web Fragments monkey-patches core browser APIs such as document, history and location, test pages that use it in Google's rendering (the rendered HTML in Search Console's URL Inspection tool or the Rich Results Test), not only in a normal desktop browser.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            }
          ],
          "topics": [
            "web-fragments",
            "rendering",
            "rendering-debugging"
          ],
          "docs": [
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "seo-office-hours-2023-12",
              "title": "December 2023 Google SEO office hours",
              "url": "https://developers.google.com/search/help/office-hours/2023/december",
              "publisher": "Google Search Central (SEO office hours transcript, December 2023)",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "indexifembedded-blog",
              "title": "New robots tag: indexifembedded",
              "url": "https://developers.google.com/search/blog/2022/01/robots-meta-tag-indexifembedded",
              "publisher": "Search Central blog (21 January 2022)",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "url-inspection",
              "count": 2,
              "own": false
            }
          ]
        }
      ]
    },
    {
      "id": "indexing-controls",
      "title": "Indexing and snippet controls",
      "intro": "robots.txt controls crawling; the robots meta tag and the X-Robots-Tag header control indexing and how a page appears, including how much of it AI Overviews and AI Mode may use. Search Console and the Google-Extended token add controls for generative AI.",
      "requirements": [
        {
          "id": "DEV-IDX-01",
          "level": "MUST",
          "title": "Use noindex to keep a page out of Search, and leave that URL crawlable",
          "why": "robots.txt does not control indexing: a disallowed URL can still appear in results without its content when other pages link to it, and Google never sees a noindex on a page it may not fetch. Google said it does not treat a disallow as noindex because important sites sometimes disallow their most important pages by mistake, and robots meta rules only work if robots.txt lets Google fetch the page.",
          "how": "For admin, thin, temporary or internal-search pages that may be crawled but should not be indexed, send <meta name=\"robots\" content=\"noindex\"> or X-Robots-Tag: noindex in the server response and do not disallow the URL. Use robots.txt only for URLs that should never be fetched. Use name=\"googlebot\" only for Google-specific rules. To de-index URLs that are already disallowed, add the noindex first (or in the same release), then remove the disallow so Google can see it.",
          "test": "For each noindexed URL: URL Inspection shows Crawl allowed: Yes, curl shows the noindex, and URL Inspection and the Page indexing report list it as excluded by the noindex tag.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-meta-tags",
          "claims": [
            {
              "id": "D2-C022",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's noindex documentation says the noindex rule works only if the page is not blocked by robots.txt: a crawler that cannot fetch the page never sees the rule, and the page can still appear in search results, for example if other pages link to it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "block-indexing-noindex",
                  "title": "Block Search indexing with noindex",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C069",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's robots meta tag specification says robots meta tags and X-Robots-Tag headers are found only when a URL is crawled, so the rules on a URL disallowed in robots.txt are never seen and are ignored.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "block-indexing-noindex",
                  "title": "Block Search indexing with noindex",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C021",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's Q&A slide said Google does not index the content of pages disallowed in robots.txt, but users will still find the URLs of those pages in Search.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "no-page-information-help",
                  "title": "No page information in search results",
                  "url": "https://support.google.com/webmasters/answer/7489871?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C020",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google answered on a Q&A slide that it does not treat a robots.txt disallow as a noindex because some extremely important sites disallow their most important pages, by accident or out of ignorance.",
              "quote": "Simply put, it's because of sites that are extremely important and like to disallow their most important pages, either accidentally or out of ignorance.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C061",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The noindex robots rule tells Google not to show the page in search results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "block-indexing-noindex",
                  "title": "Block Search indexing with noindex",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C110",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "A URL blocked in robots.txt can still be indexed without its content if other pages link to it, and Google cannot see a noindex on a page it is not allowed to fetch.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C023",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Explain robots.txt and noindex to developers as two separate controls: robots.txt controls crawling, noindex controls indexing. To keep a page out of Search, let Google crawl it and serve noindex; a robots.txt disallow alone can leave the bare URL in results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C850",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "John Mueller said robots meta rules only work if robots.txt allows Google to fetch the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "block-indexing-noindex",
                  "title": "Block Search indexing with noindex",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C851",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "When robots.txt blocks a page, the page's content is not indexable but Google can still index its URL, John Mueller said.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "block-indexing-noindex",
                  "title": "Block Search indexing with noindex",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C846",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google said a URL disallowed by robots.txt might still be indexed if the URL is important, in which case the URL is indexed but not its content.",
              "quote": "if a URL is important, then it might get indexed even if it's disallowed by robots.txt. So the URL gets indexed, not the content.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C844",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google illustrated why it does not treat a robots.txt disallow as noindex with an extremely important site, such as a national tax authority, that blocks very important PDF files with robots.txt: Google cannot index the PDFs' content but can at least show their URLs in search results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C845",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google said very few URLs disallowed by robots.txt are in its index, compared with the index as a whole (no figure given).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "robots-txt",
            "crawl-directives",
            "robots-meta-tag",
            "index-selection"
          ],
          "docs": [
            {
              "key": "block-indexing-noindex",
              "title": "Block Search indexing with noindex",
              "url": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "robots-intro",
              "title": "Introduction to robots.txt",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 11,
              "own": true
            },
            {
              "id": "noindex",
              "count": 6,
              "own": true
            },
            {
              "id": "disallow",
              "count": 3,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-02",
          "level": "AVOID",
          "title": "Do not use noindex, nofollow or crawl-delay to save crawl budget",
          "why": "noindex consumes crawl budget because Google must fetch the page to see it; nofollow is a hint, and the linked URLs may still be crawled through other links or sitemaps; crawl-delay is not processed at all. Google advises against noindex for crawl budget and against using robots.txt to reallocate it temporarily.",
          "how": "To stop Google fetching URLs on your own site, disallow them in robots.txt; return 404 or 410 for removed pages; consolidate duplicates with redirects or canonicals. Keep crawl rules stable instead of switching them to steer Googlebot around.",
          "test": "Server logs show few or no Googlebot fetches of parameter and action URLs; robots.txt has no crawl-delay meant for Google; Crawl stats shows fewer fetches of low-value URLs after fixes.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C106",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The noindex rule consumes crawl budget, because Google must fetch the page to see it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C109",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google advises against using noindex to save crawl budget and against using robots.txt to temporarily reallocate budget. Use robots.txt only for pages you never want crawled, and 404 or 410 for removed pages.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C127",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google treats nofollow as a hint for crawling, not a block: nofollow links will generally not be followed, but the linked pages may still be crawled if Google finds them through sitemaps or other links. To stop Google fetching URLs on your own site, use a robots.txt disallow rule.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central, Search Central blog (10 September 2019)",
              "speaker": null,
              "sources": [
                {
                  "key": "qualify-outbound-links",
                  "title": "Qualify your outbound links to Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "nofollow-hints-blog",
                  "title": "Evolving \"nofollow\" – new ways to identify the nature of links",
                  "url": "https://developers.google.com/search/blog/2019/09/evolving-nofollow-new-ways-to-identify",
                  "publisher": "Search Central blog (10 September 2019)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C107",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The nofollow rule can still consume crawl budget: Google does not crawl through the nofollow link itself, but it still crawls the linked page when it finds that page through other links.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "qualify-outbound-links",
                  "title": "Qualify your outbound links to Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "faceted-nav-guide",
                  "title": "Managing crawling of faceted navigation URLs",
                  "url": "https://developers.google.com/crawling/docs/faceted-navigation",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "crawl-budget-blog",
                  "title": "What Crawl Budget Means for Googlebot",
                  "url": "https://developers.google.com/search/blog/2017/01/what-crawl-budget-means-for-googlebot",
                  "publisher": "Search Central blog (16 January 2017)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C108",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The non-standard crawl-delay rule is not processed by Googlebot, so it does not save any crawl budget.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C105",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "URLs disallowed through robots.txt do not affect crawl budget, because they are not fetched.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-directives",
            "robots-txt"
          ],
          "docs": [
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "qualify-outbound-links",
              "title": "Qualify your outbound links to Google",
              "url": "https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "robots-spec",
              "title": "How Google interprets the robots.txt specification",
              "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "crawl-budget-metric",
              "count": 5,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 3,
              "own": true
            },
            {
              "id": "nofollow",
              "count": 2,
              "own": true
            },
            {
              "id": "noindex",
              "count": 2,
              "own": true
            },
            {
              "id": "sitemap-file",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-03",
          "level": "SHOULD",
          "title": "Send robots rules for PDFs, images and other non-HTML files in the X-Robots-Tag header",
          "why": "Files without an HTML head can carry robots rules only in the HTTP response. X-Robots-Tag accepts the same rules as the meta tag and, like the tag, is seen only when the URL is crawled.",
          "how": "Add X-Robots-Tag in the web server or CDN for the file types or folders that should stay out of Search (internal PDFs, exports, private images), and do not also disallow those URLs in robots.txt. Use the user-agent form (X-Robots-Tag: googlebot: noindex) only for crawler-specific rules.",
          "test": "curl -I on a sample file shows the X-Robots-Tag header; URL Inspection of the file reports it excluded by noindex.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "x-robots-tag",
          "claims": [
            {
              "id": "D2-C069",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's robots meta tag specification says robots meta tags and X-Robots-Tag headers are found only when a URL is crawled, so the rules on a URL disallowed in robots.txt are never seen and are ignored.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "block-indexing-noindex",
                  "title": "Block Search indexing with noindex",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C529",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's documented ways to keep a site's images out of search results are a robots.txt disallow rule (for example for Googlebot-Image) or a noindex X-Robots-Tag HTTP header, with the Removals tool for emergencies.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "remove-images",
                  "title": "Remove images hosted on your site from search results",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/prevent-images-on-your-page",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C095",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Search documentation gives notranslate as a rule for a robots or googlebot meta tag or an X-Robots-Tag header, and says the rule opts a page out of all translation features in Google Search.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "translated-results",
                  "title": "Translated results in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/translated-results",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "robots-meta-tag",
            "snippet-controls",
            "robots-txt",
            "crawl-directives",
            "images",
            "localisation"
          ],
          "docs": [
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "remove-images",
              "title": "Remove images hosted on your site from search results",
              "url": "https://developers.google.com/search/docs/crawling-indexing/prevent-images-on-your-page",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "x-robots-tag",
              "count": 3,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-IDX-04",
          "level": "SHOULD",
          "title": "Allow full snippets and large previews with max-snippet:-1 and max-image-preview:large",
          "why": "Robots meta rules can make a page more visible than having none. max-image-preview:large allows the largest image previews, which matters mainly in Discover, and max-snippet:-1 removes the length limit so Google picks the length it finds most effective. Google's closing slide on robots meta tags recommended exactly these two rules for maximum visibility.",
          "how": "Add <meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large\"> (optionally with max-video-preview:-1) to every indexable template unless licensing requires limits, and check that no CMS, SEO plug-in or CDN feature adds lower limits by default. Provide large, high-quality images, at least 1,200 px wide for Discover.",
          "test": "curl the HTML of each template and check the robots meta content; the Discover performance report in Search Console shows impressions for article templates.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-meta-tags",
          "claims": [
            {
              "id": "D2-C087",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The max-image-preview rule sets the maximum size of a page's image previews: none shows no preview, standard a default-sized one and large the largest possible, for example in Discover.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C082",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The max-snippet:[number] rule limits a page's search result snippet to that number of characters (100 characters, for example), and max-snippet:0 shows no snippet, the same as nosnippet.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C086",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's robots meta tag specification says Google chooses the snippet length when no max-snippet rule is set, and with max-snippet:-1 chooses the length it believes most effective; it does not say that -1 produces longer snippets.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C104",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To be as visible as possible in Google, John Mueller's closing slide recommended the robots rules max-image-preview:large and max-snippet:-1.",
              "quote": "To be as visible as possible in Google, use: max-image-preview:large, max-snippet:-1",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C053",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller opened with a true-or-false quiz slide asking whether robots meta tags can make a page more visible in Search results than having none, and later answered that the statement is true.",
              "quote": "You can use robots meta tags to be more visible in Search results than without robots meta tags.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C105",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Set max-snippet:-1 and max-image-preview:large on every indexable template unless licensing requires otherwise, and check that no CMS, plug-in or CDN setting adds lower snippet or image preview limits by default.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C224",
              "day": 3,
              "session_id": "D3-S06",
              "session": "Uncovering Trustworthy Experiences on Discover",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's Discover slide recommended large images at least 1,200 px wide, with more than 300,000 total pixels and a 16x9 aspect ratio, enabled by the max-image-preview:large setting.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C936",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Setting the max-image-preview robots meta tag to large can make content perform surprisingly well in Discover, Gary Illyes said.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "snippet-controls",
            "images",
            "discover",
            "robots-meta-tag"
          ],
          "docs": [
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "google-discover",
              "title": "Discover and your website",
              "url": "https://developers.google.com/search/docs/appearance/google-discover",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "max-image-preview",
              "count": 5,
              "own": true
            },
            {
              "id": "max-snippet",
              "count": 4,
              "own": true
            },
            {
              "id": "google-discover",
              "count": 3,
              "own": true
            },
            {
              "id": "meta-robots-tag",
              "count": 3,
              "own": true
            },
            {
              "id": "snippets",
              "count": 3,
              "own": true
            },
            {
              "id": "allow",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-05",
          "level": "AVOID",
          "title": "Do not add nosnippet or a short max-snippet unless you accept losing snippets and AI feature use",
          "why": "nosnippet removes the text snippet and video preview and also stops the page's content being used as a direct input for AI Overviews and AI Mode; max-snippet limits that use too. A page must be eligible for a snippet to be a supporting link in AI features, and Google said its AI answers are built from snippets. Said at Search Central Live: a value too short for a useful snippet may lead to no snippet at all.",
          "how": "Keep nosnippet and max-snippet limits off by default. To hide one detail, such as a phone number or a member price, use data-nosnippet on that element instead (DEV-IDX-07). If licensing requires limits, set them per template deliberately and record the trade-off.",
          "test": "Search the codebase, CMS settings and CDN transforms for nosnippet and max-snippet; curl key templates to confirm none is present unless intended.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C728",
              "day": 2,
              "session_id": "D2-S23",
              "session": "How does the index look like?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's robots meta tag specification says the nosnippet rule also prevents a page's content from being used as a direct input for AI Overviews and AI Mode, and max-snippet also limits how much of it may be used that way.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C072",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The nosnippet rule also prevents a page's content from being used as a direct input for AI Overviews and AI Mode in Search.",
              "quote": "Also prevents the content from being used as a direct input for AI Overviews and AI Mode in Search results.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C074",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's AI features guide says a page must be indexed and eligible to be shown in Google Search with a snippet to appear as a supporting link in AI Overviews or AI Mode, with no additional technical requirements.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C070",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The nosnippet rule stops Google from showing a text snippet or video preview for a page in search results, while the page's title is still shown.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "snippets-guide",
                  "title": "Control your snippets in search results",
                  "url": "https://developers.google.com/search/docs/appearance/snippet",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C073",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller said Google uses the snippet as a way of building AI Overviews and AI Mode answers, so if a page forbids a snippet, Google cannot use that snippet for them.",
              "quote": "we use the snippet as a way of building out the AI Overviews and the AI Mode answers",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C084",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "A max-snippet value too short for a useful snippet may lead Google to show no snippet at all, John Mueller said.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": []
            }
          ],
          "topics": [
            "snippet-controls",
            "query-fanout",
            "ai-links-to-web",
            "genai-optout",
            "index-structure"
          ],
          "docs": [
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "ai-features-guide",
              "title": "AI features and your website",
              "url": "https://developers.google.com/search/docs/appearance/ai-features",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "snippets-guide",
              "title": "Control your snippets in search results",
              "url": "https://developers.google.com/search/docs/appearance/snippet",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "ai-mode",
              "count": 4,
              "own": true
            },
            {
              "id": "ai-overviews",
              "count": 4,
              "own": true
            },
            {
              "id": "snippets",
              "count": 4,
              "own": true
            },
            {
              "id": "nosnippet",
              "count": 3,
              "own": true
            },
            {
              "id": "max-snippet",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-06",
          "level": "SHOULD",
          "title": "Prefer rel attributes on individual links to a page-level nofollow",
          "why": "The page-level nofollow rule tells search engines not to pass signals through any link on the page, a very broad rule that, as Google put it at Search Central Live, makes the page stand on its own, while an explicit robots all rule does nothing. Google recommends rel attributes on individual links so a site chooses which links to qualify; its documentation does not forbid a page-level nofollow.",
          "how": "Remove page-level nofollow and redundant all or index, follow values from template and plug-in robots meta tags; where a template uses none, replace it with noindex if the page must stay out of Search (none also means nofollow), never simply delete it. Mark individual links instead: rel=\"sponsored\" for paid links, rel=\"ugc\" for user-generated content and rel=\"nofollow\" for other links you do not vouch for. nofollow is not an access control; use robots.txt to keep crawlers out (DEV-IDX-02).",
          "test": "A crawl lists no page with a page-level nofollow (none included) that lacks a recorded reason, and every page that must stay out of Search still carries noindex; outbound links in comments, ads and affiliate modules carry the right rel values.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C063",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The page-level nofollow robots rule tells search engines not to pass signals to any of the links on the page, which John Mueller called a weird and very broad rule that makes the page stand on its own.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "nofollow-hints-blog",
                  "title": "Evolving \"nofollow\" – new ways to identify the nature of links",
                  "url": "https://developers.google.com/search/blog/2019/09/evolving-nofollow-new-ways-to-identify",
                  "publisher": "Search Central blog (10 September 2019)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C064",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller recommends rel=nofollow on individual links instead of the page-level nofollow robots rule, so a site can choose which links are useful and which are not.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "qualify-outbound-links",
                  "title": "Qualify your outbound links to Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "nofollow-hints-blog",
                  "title": "Evolving \"nofollow\" – new ways to identify the nature of links",
                  "url": "https://developers.google.com/search/blog/2019/09/evolving-nofollow-new-ways-to-identify",
                  "publisher": "Search Central blog (10 September 2019)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C059",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The robots meta rule all is the default value and does nothing: it places no restrictions on indexing the page or following its links, the same as having no robots meta tag, and it is not an instruction that search engines must index the page.",
              "quote": "This is the default value - it does nothing",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "meta-tags-supported",
                  "title": "meta tags and attributes that Google supports",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/special-tags",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C127",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google treats nofollow as a hint for crawling, not a block: nofollow links will generally not be followed, but the linked pages may still be crawled if Google finds them through sitemaps or other links. To stop Google fetching URLs on your own site, use a robots.txt disallow rule.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central, Search Central blog (10 September 2019)",
              "speaker": null,
              "sources": [
                {
                  "key": "qualify-outbound-links",
                  "title": "Qualify your outbound links to Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "nofollow-hints-blog",
                  "title": "Evolving \"nofollow\" – new ways to identify the nature of links",
                  "url": "https://developers.google.com/search/blog/2019/09/evolving-nofollow-new-ways-to-identify",
                  "publisher": "Search Central blog (10 September 2019)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C065",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Audit robots meta tags set by templates and plug-ins: an explicit all rule does nothing and can go, while a page-level nofollow strips link signals from every link on the page and is better replaced by qualifying only the specific links that need it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C068",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The robots rule none is equivalent to noindex plus nofollow, so a page that carries it will not show up in Search, provided Google can see the tag.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "block-indexing-noindex",
                  "title": "Block Search indexing with noindex",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/block-indexing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "robots-meta-tag",
            "crawl-directives"
          ],
          "docs": [
            {
              "key": "qualify-outbound-links",
              "title": "Qualify your outbound links to Google",
              "url": "https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "nofollow-hints-blog",
              "title": "Evolving \"nofollow\" – new ways to identify the nature of links",
              "url": "https://developers.google.com/search/blog/2019/09/evolving-nofollow-new-ways-to-identify",
              "publisher": "Search Central blog (10 September 2019)",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "nofollow",
              "count": 5,
              "own": true
            },
            {
              "id": "meta-robots-tag",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-IDX-07",
          "level": "MAY",
          "title": "Use data-nosnippet on a span, div or section to keep one detail out of snippets",
          "why": "data-nosnippet keeps a passage such as a phone number or a member price out of snippets while the page can still be found for it. It works on only a handful of elements, may be read before and after rendering, and broken HTML can widen it: an unclosed element marked data-nosnippet can hide the rest of the page from snippets.",
          "how": "Wrap the passage in <span data-nosnippet>, <div data-nosnippet> or <section data-nosnippet> in the server HTML, never add or remove the attribute with JavaScript, and validate the HTML of templates that use it so every element is closed.",
          "test": "An HTML validator (W3C Nu or html-validate in CI) reports no unclosed elements on templates that use data-nosnippet; after recrawl, the page's snippet avoids the marked text.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "data-nosnippet",
          "claims": [
            {
              "id": "D2-C077",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The data-nosnippet attribute can be used on only a handful of HTML elements.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "meta-tags-supported",
                  "title": "meta tags and attributes that Google supports",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/special-tags",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C078",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Broken HTML can widen data-nosnippet: if a div marked data-nosnippet is not closed properly, the rest of the page can be blocked from the snippet as well.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C079",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's robots meta tag specification says data-nosnippet may be extracted both before and after rendering, so the attribute should not be added to or removed from existing elements with JavaScript.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C076",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller said data-nosnippet is rarely needed but lets a site keep a specific piece of text, such as a business phone number, out of the snippet, so the page can still be found for it while searchers have to visit the page to see it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "snippets-guide",
                  "title": "Control your snippets in search results",
                  "url": "https://developers.google.com/search/docs/appearance/snippet",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C080",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller said valid HTML is technically not a ranking factor but does matter for controls such as data-nosnippet.",
              "quote": "valid HTML is technically not an SEO ranking factor, but it does play a role",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "seo-starter-guide",
                  "title": "Search Engine Optimization (SEO) Starter Guide",
                  "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C081",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "To hide one detail, such as a phone number, a price or a direct answer, instead of the whole snippet, wrap it in data-nosnippet on a span, div or section in the server HTML and validate the HTML so that an unclosed element cannot hide the rest of the page from snippets.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "snippet-controls",
            "javascript-seo"
          ],
          "docs": [
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "data-nosnippet",
              "count": 6,
              "own": true
            },
            {
              "id": "snippets",
              "count": 3,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-08",
          "level": "MAY",
          "title": "Use unavailable_after on pages with a known end date",
          "why": "The unavailable_after rule drops a page from results after a set date and time, and Googlebot considerably reduces how often it crawls the URL after that date. Index selection was described as checking the rule and dropping the page once the date is reached.",
          "how": "Add <meta name=\"robots\" content=\"unavailable_after: 2026-12-31T23:59:59+01:00\"> (ISO 8601, RFC 822 or RFC 850 dates) to event pages, time-limited offers and job ads when they are published. After the end date, either keep the page as an archive without the rule or return 404 or 410 if it is gone.",
          "test": "curl shows the rule with a valid date; after the date, URL Inspection reports the page as not indexed.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-meta-tags",
          "claims": [
            {
              "id": "D2-C100",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The unavailable_after rule lets a page drop out of search results after a set date and time, which suits time-bound pages, though John Mueller said most sites do not use it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C101",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's robots meta tag specification says Googlebot considerably decreases the crawl rate of a URL after the date and time set in its unavailable_after rule.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C698",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Index selection checks for the robots unavailable_after rule and its date, and drops a page from the index once that date is reached.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C699",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Use the unavailable_after robots rule on pages with a known end date, such as event pages, time-limited offers or job ads, so that index selection drops them automatically when the date passes instead of leaving expired pages in search results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "robots-meta-tag",
            "index-selection",
            "crawl-demand"
          ],
          "docs": [
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "index-selection-concept",
              "count": 2,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-09",
          "level": "SHOULD",
          "title": "Leave notranslate and noimageindex out of templates unless translation or image indexing must be prevented",
          "why": "notranslate, as a robots or googlebot rule or in X-Robots-Tag, opts a page out of all translation features in Google Search, and the meta tag named google with notranslate also turns off Chrome's automatic translation for visitors who cannot read the language. noimageindex stops Google indexing every image on the page; said at Search Central Live, it also affects the page's videos, because Google has to index a video's thumbnail, which is an image. Both are often inherited from templates without a reason.",
          "how": "Remove notranslate and noimageindex from global templates. Where a specific passage must not be translated, the standard HTML translate=\"no\" attribute on that element is narrower than a page-wide rule. To keep specific images out of Search, use DEV-IMG-06.",
          "test": "A crawl lists every robots, googlebot or google meta tag and X-Robots-Tag header containing notranslate or noimageindex, and each one has a documented reason.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C093",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The notranslate robots rule tells Google not to offer a translation of the page in search results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "translated-results",
                  "title": "Translated results in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/translated-results",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C095",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Search documentation gives notranslate as a rule for a robots or googlebot meta tag or an X-Robots-Tag header, and says the rule opts a page out of all translation features in Google Search.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "translated-results",
                  "title": "Translated results in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/translated-results",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C094",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller said notranslate can also be set in a meta tag named google, and that in that form it also turns off Chrome's automatic translation of the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "notranslate-blog-2008",
                  "title": "Helping you break the language barrier",
                  "url": "https://developers.google.com/search/blog/2008/10/helping-you-break-language-barrier",
                  "publisher": "Search Central blog (14 October 2008)",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "chromium-translate",
                  "title": "Translate",
                  "url": "https://www.chromium.org/developers/design-documents/translate/",
                  "publisher": "The Chromium Projects",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C096",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "A 2008 Search Central blog post says a meta tag named google with the value notranslate stops Google Translate from translating any of a page's content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (14 October 2008)",
              "speaker": null,
              "sources": [
                {
                  "key": "notranslate-blog-2008",
                  "title": "Helping you break the language barrier",
                  "url": "https://developers.google.com/search/blog/2008/10/helping-you-break-language-barrier",
                  "publisher": "Search Central blog (14 October 2008)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C099",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The noimageindex rule tells Google not to index any of the images on the page, and John Mueller said he could not see why a site would want that.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C098",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "International sites should remove notranslate from their templates unless translation must be prevented: the robots or googlebot form switches off Google Search's translation features, and John Mueller said the form named google also blocks Chrome's translation for visitors who do not read the language.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C934",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The noimageindex robots meta tag tells Google not to index the images on the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C935",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Gary Illyes said noimageindex also affects videos on the page, because Google has to index a video's thumbnail, which is an image.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            }
          ],
          "topics": [
            "localisation",
            "snippet-controls",
            "robots-meta-tag",
            "images",
            "accessibility",
            "video"
          ],
          "docs": [
            {
              "key": "translated-results",
              "title": "Translated results in Google Search",
              "url": "https://developers.google.com/search/docs/appearance/translated-results",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "notranslate-blog-2008",
              "title": "Helping you break the language barrier",
              "url": "https://developers.google.com/search/blog/2008/10/helping-you-break-language-barrier",
              "publisher": "Search Central blog (14 October 2008)",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "chromium-translate",
              "title": "Translate",
              "url": "https://www.chromium.org/developers/design-documents/translate/",
              "publisher": "The Chromium Projects",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "notranslate",
              "count": 5,
              "own": true
            },
            {
              "id": "chrome",
              "count": 2,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 2,
              "own": true
            },
            {
              "id": "x-robots-tag",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-10",
          "level": "MAY",
          "title": "Use the Search generative AI setting in Search Console only to take a property out of AI Overviews and AI Mode",
          "why": "This property-level setting (include, exclude or inherit from parent) controls AI Overviews, AI Mode and generative AI features in Discover without affecting web rankings. Excluding removes both links to the site and the use of its content for grounding, so the site gets no traffic or impressions from those features; include is the default and changes generally apply within one to two days.",
          "how": "Leave most properties on include or inherit. If a business decision requires exclusion, set it on a child property such as a folder first and measure the effect. The setting lives in Search Console, not in code, so record it in the launch checklist. Use nosnippet only if you also want out of regular snippets.",
          "test": "Search Console settings show the intended state for each property; the Generative AI performance report shows impressions for included properties.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C029",
              "day": 1,
              "session_id": "D1-S02",
              "session": "What's new in the world of Search",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Search Console has a property setting called Search generative AI that gives direct control over AI Overviews and AI Mode without affecting web rankings. Its states are inherit from parent, include and exclude.",
              "quote": "Direct control over AI Overviews and AI Mode without impacting web rankings.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "gsc-genai-control",
                  "title": "Search generative AI control",
                  "url": "https://support.google.com/webmasters/answer/16908024?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C030",
              "day": 1,
              "session_id": "D1-S02",
              "session": "What's new in the world of Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "The Search generative AI control covers AI Overviews, AI Mode and generative AI features in Discover. Excluding removes both links to the site and use of its content to ground answers.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "gsc-genai-control",
                  "title": "Search generative AI control",
                  "url": "https://support.google.com/webmasters/answer/16908024?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C031",
              "day": 1,
              "session_id": "D1-S02",
              "session": "What's new in the world of Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google says the control is not used as a ranking or inclusion signal for regular results.",
              "quote": "this control isn't used as a ranking or inclusion signal",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "gsc-genai-control",
                  "title": "Search generative AI control",
                  "url": "https://support.google.com/webmasters/answer/16908024?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C033",
              "day": 1,
              "session_id": "D1-S02",
              "session": "What's new in the world of Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Changes to the control generally apply within 1–2 days, though some content takes longer. It works at property level only, and a child property inherits from its closest parent that changed the setting.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "gsc-genai-control",
                  "title": "Search generative AI control",
                  "url": "https://support.google.com/webmasters/answer/16908024?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C103",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Setting the Search generative AI control in Search Console to exclude keeps a site's links and content out of Search generative AI features such as AI Overviews and AI Mode, so the site gets no traffic or impressions from them; include is the default.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "gsc-genai-control",
                  "title": "Search generative AI control",
                  "url": "https://support.google.com/webmasters/answer/16908024?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C034",
              "day": 1,
              "session_id": "D1-S02",
              "session": "What's new in the world of Search",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Lead-generation, local-service and e-commerce sites should normally stay included, because AI answers cite and link sources. Sites selling paywalled or licensed content should test exclusion on a child property first. Use nosnippet only if you also want out of regular snippets.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "genai-optout"
          ],
          "docs": [
            {
              "key": "gsc-genai-control",
              "title": "Search generative AI control",
              "url": "https://support.google.com/webmasters/answer/16908024?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "ai-mode",
              "count": 3,
              "own": true
            },
            {
              "id": "ai-overviews",
              "count": 3,
              "own": true
            },
            {
              "id": "google-search-console",
              "count": 2,
              "own": true
            },
            {
              "id": "search-generative-ai-control",
              "count": 2,
              "own": false
            },
            {
              "id": "google-discover",
              "count": 1,
              "own": true
            },
            {
              "id": "grounding",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-11",
          "level": "MAY",
          "title": "Use the Google-Extended robots.txt token to control Gemini training and grounding",
          "why": "Google-Extended is a robots.txt control token, not a crawler: it decides whether crawled content may be used to train future Gemini models and to ground Gemini Apps and Vertex AI, and it does not affect inclusion or ranking in Google Search. The Search generative AI setting does not affect training, and user-triggered fetchers, which fetch a page because a user asked, generally ignore robots.txt.",
          "how": "To opt out, add a User-agent: Google-Extended group with Disallow: / for the whole site, or Disallow lines for specific directories, to robots.txt; never block Googlebot for this purpose. Google's robots.txt talk confirmed that Google respects that policy for Gemini model training. Said at Search Central Live: rendering for Gemini training reuses the rendering done for Search. Author's view: so no separate rendering work is needed for Gemini.",
          "test": "Google's open-source robots.txt parser (github.com/google/robotstxt), run with the Google-Extended token, returns disallowed for the intended paths, and run with the Googlebot token returns allowed for the same URLs; URL Inspection shows them as Crawl allowed.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-txt",
          "claims": [
            {
              "id": "D1-C086",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google-Extended is a control token, not a crawler with its own user agent string. It decides whether crawled content may be used to train future Gemini models and to ground Gemini apps and Vertex AI.",
              "quote": "Google-Extended does not impact a site's inclusion in Google Search nor is it used as a ranking signal in Google Search.",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C032",
              "day": 1,
              "session_id": "D1-S02",
              "session": "What's new in the world of Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "The control does not affect AI training. Training of the models is limited with Google-Extended instead.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "gsc-genai-control",
                  "title": "Search generative AI control",
                  "url": "https://support.google.com/webmasters/answer/16908024?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C121",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's crawler documentation defines grounding in Gemini Apps and in Grounding with Google Search on Vertex AI as providing content from the Google Search index to the model at prompt time, and sites manage whether their content is used for it with the Google-Extended robots.txt token.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C122",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google says user-triggered fetchers, which fetch a URL because a user asked for it in a Google product (for example Gemini Notebook fetching URLs users add as sources, or Google-Agent acting on a user's request), generally ignore robots.txt rules.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "user-triggered-fetchers",
                  "title": "List of Google user-triggered fetchers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-user-triggered-fetchers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C118",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "To train Gemini models, Google renders every page just as it does for Search, so a page that renders correctly for Search also works for Gemini training, provided the site allows its content to be used for training.",
              "quote": "if it works for Search, it works for Gemini for training",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": []
            },
            {
              "id": "D2-C119",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "If Gemini training reuses the rendering done for Search, a site needs no separate rendering work for Gemini; whether its rendered content is used for training is decided with the Google-Extended token in robots.txt, not by rendering choices.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C485",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "To opt out of Google's AI training, a site can use the Google-Extended token in robots.txt.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C522",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google said a site can keep a directory or the whole site out of Gemini model training by disallowing it for the Google-Extended token in robots.txt, and that Google respects that policy; the speaker believed Google was the first to offer such an opt-out from model training.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "google-extended",
            "genai-optout",
            "gemini-and-search",
            "ai-crawlers-and-agents",
            "robots-txt",
            "rendering"
          ],
          "docs": [
            {
              "key": "common-crawlers",
              "title": "List of Google's common crawlers",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "user-triggered-fetchers",
              "title": "List of Google user-triggered fetchers",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-user-triggered-fetchers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "gsc-genai-control",
              "title": "Search generative AI control",
              "url": "https://support.google.com/webmasters/answer/16908024?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "gemini",
              "count": 6,
              "own": true
            },
            {
              "id": "google-extended-token",
              "count": 6,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 5,
              "own": true
            },
            {
              "id": "grounding",
              "count": 1,
              "own": true
            },
            {
              "id": "user-triggered-fetchers",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IDX-12",
          "level": "SHOULD",
          "title": "On sites with explicit content, keep it on its own subdomain or domain and label it with rating markup",
          "why": "Google's guidelines for sites with explicit content recommend grouping explicit pages on a separate domain or subdomain; otherwise Google's systems may judge the whole site explicit and filter all of it when SafeSearch is on. Explicit pages are marked with rating markup set to adult, as a meta tag or an HTTP response header. Author's view: SafeSearch signals are calculated at indexing from the whole page and its links, so a fix counts only after Google recrawls and reprocesses the pages.",
          "how": "Only for sites that host explicit material: serve it from a dedicated subdomain or domain, add <meta name=\"rating\" content=\"adult\"> (or the same value as an HTTP response header) to every explicit page, and keep explicit images, links and teasers off general templates. After moving or relabelling pages, request recrawling of the most important URLs.",
          "test": "A crawl finds every explicit URL on the dedicated host with the rating markup, and no general template links to or embeds explicit content.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C664",
              "day": 2,
              "session_id": "D2-S19",
              "session": "Calculating (some) signals",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guidelines for sites with explicit content recommend grouping explicit pages on a separate domain or subdomain; otherwise Google's systems may judge the whole site explicit and filter all of it when SafeSearch is on.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "safesearch-guidelines",
                  "title": "Guidelines for sites with explicit content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/safesearch",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C837",
              "day": 2,
              "session_id": "D2-S19",
              "session": "Calculating (some) signals",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guidelines for sites with explicit content say to mark each explicit page with rating markup set to adult, either as a meta tag named rating or as an HTTP response header.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "safesearch-guidelines",
                  "title": "Guidelines for sites with explicit content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/safesearch",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C665",
              "day": 2,
              "session_id": "D2-S19",
              "session": "Calculating (some) signals",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Because explicit content on its own does not lower a page's chance of being indexed, the practical risk for a site that mixes explicit and general content is SafeSearch classification, which looks at the whole page and its links; keep explicit pages on a separate domain or subdomain, as Google advises.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "safesearch-guidelines",
                  "title": "Guidelines for sites with explicit content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/safesearch",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C677",
              "day": 2,
              "session_id": "D2-S19",
              "session": "Calculating (some) signals",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Language, country, SafeSearch and spam signals, and some freshness signals, are calculated when a page is indexed, so a fix such as correcting a page's language or removing content that triggers SafeSearch only counts once Google recrawls and reprocesses the page; request recrawling of the most important URLs after the fix.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "indexing-signals",
            "indexing-pipeline"
          ],
          "docs": [
            {
              "key": "safesearch-guidelines",
              "title": "Guidelines for sites with explicit content",
              "url": "https://developers.google.com/search/docs/crawling-indexing/safesearch",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-IDX-13",
          "level": "SHOULD",
          "title": "For an urgent removal, use the Removals tool in Search Console and also return 404 or noindex",
          "why": "Google's Removals tool help says a temporary removal usually takes up to a day and lasts only about six months. Said at Search Central Live: removals take about two hours on average because Google pushes them to its serving system about every two hours, while a 404 or noindex usually drops a page from the serving index within one to three weeks after Google processes it. Only the permanent signal keeps the page out once the temporary removal expires.",
          "how": "For leaked, outdated or legally sensitive URLs, file a temporary removal in Search Console at once and, at the same time, return 404 or 410, add noindex, or put the content behind a login. Never rely on the Removals tool alone, and keep the URL crawlable so Google can see the 404 or noindex (DEV-IDX-01).",
          "test": "The Removals report shows the request processed within a day; curl -I on the URL returns 404 or 410, or the page carries noindex; months later the URL is still absent from Search.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C651",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google estimated that a removal requested by the site owner in Search Console takes effect in about 2 hours on average, from minutes up to 24 hours.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "removals-tool-help",
                  "title": "Removals and SafeSearch reports tool",
                  "url": "https://support.google.com/webmasters/answer/9689846?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C673",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Removals tool help says a temporary removal request usually takes up to a day to process and lasts only about six months, so the content must also be removed permanently, for example with a 404 or 410, a noindex or a password.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "removals-tool-help",
                  "title": "Removals and SafeSearch reports tool",
                  "url": "https://support.google.com/webmasters/answer/9689846?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C639",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "After Google processes a page that now returns a 404 or a noindex, it usually removes the page from its serving index within one to three weeks, sometimes much sooner.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C652",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Search Console removals average about 2 hours because Google pushes removals out to its serving system about every 2 hours.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D3-C653",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "To hide a URL from Google Search urgently, use the Removals tool in Search Console (about 2 hours) and also add a noindex or a 404, which takes one to three weeks to drop the page from the index.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "removals-tool-help",
                  "title": "Removals and SafeSearch reports tool",
                  "url": "https://support.google.com/webmasters/answer/9689846?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "processing-times",
            "robots-meta-tag"
          ],
          "docs": [
            {
              "key": "removals-tool-help",
              "title": "Removals and SafeSearch reports tool",
              "url": "https://support.google.com/webmasters/answer/9689846?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "google-search-console",
              "count": 3,
              "own": true
            },
            {
              "id": "http-404",
              "count": 3,
              "own": true
            },
            {
              "id": "noindex",
              "count": 3,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "canonicals-duplicates",
      "title": "Canonicals, redirects and duplicates",
      "intro": "Google clusters duplicate pages, picks one representative URL (the canonical) and forwards signals to it. Redirects, rel=canonical, internal links and sitemaps tell it which URL you prefer: when they agree Google follows them, and when they conflict it decides on its own.",
      "requirements": [
        {
          "id": "DEV-CAN-01",
          "level": "MUST",
          "title": "Use permanent server-side redirects (301 or 308) for moved URLs, straight to the final URL",
          "why": "Google trusts redirects very much when it clusters duplicates, and whether a redirect is permanent or temporary decides which URL becomes canonical: with a temporary redirect Google keeps showing the source URL. Google's crawlers follow up to 10 redirect hops, and long chains hurt crawling. Google follows JavaScript redirects only after rendering and may never see one if rendering fails; said at Search Central Live, even Google's own site consolidation used JavaScript only because it was the only option available to the person doing it, a fallback rather than a pattern to copy.",
          "how": "Answer every moved, merged or renamed URL with one 301 or 308 to the final URL, and collapse old chains in the redirect map into single hops. Update internal links, canonicals, hreflang and sitemaps to the new URL. Use 302 or 307 only for genuinely temporary moves, and avoid meta refresh and JavaScript redirects for permanent ones.",
          "test": "curl -sIL on an old URL shows one 301 or 308 hop ending in 200; a crawler's redirect-chain report is empty; after recrawl, URL Inspection of the new URL shows it as the Google-selected canonical.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "redirects",
          "claims": [
            {
              "id": "D2-C013",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's redirect documentation says that with a temporary redirect, such as a 302, Google Search shows the source page in search results and does not use the redirect as a signal that the target should be canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C361",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google trusts redirects very much for clustering, because a redirect is a clear sign that there is one version of the content; Google keeps track of both URLs but stores only one copy of the content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C362",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Whether a redirect is permanent or temporary matters only for choosing the canonical, not for clustering the URLs together.",
              "quote": "the permanent redirect really only matters for canonicalization, not for clustering.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C363",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Use permanent redirects (301 or 308) for moves you want reflected in Search: a temporary redirect still groups the URLs, but it changes which URL Google is likely to pick as the canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C357",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's redirects guide says Google keeps track of both the source and the target of a redirect: one becomes the canonical, depending on signals such as whether the redirect is permanent or temporary, and the other becomes an alternate name that may appear in results when a query suggests the user trusts the old URL more. After a move to a new domain, old URLs may still show occasionally; the guide calls this normal.",
              "quote": "This is normal and as users get used to the new domain name, the alternate names will fade away without you doing anything.",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C387",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google named three considerations when picking a representative URL: hijacking across pages or sites, user experience (the page can load, meta refresh, security) and site-owner signals (redirects, rel=canonical, sitemaps).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C349",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google follows 3xx redirects, permanent (301, 308) and temporary (302, 307), to the new location, and whether content gets indexed depends on what the redirect target returns.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C370",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's crawlers follow up to 10 redirect hops by default (some products' crawlers have other limits); content served by the redirecting URL is ignored and the final target's content is processed instead.",
              "quote": "Any content Google receives from the redirecting URL is ignored, and the final target URL's content is processed instead.",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C541",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "A Google panelist said, as a fun fact, that JavaScript was used for the language-consolidation redirects in Google's own site migration, because it was the only option available to the person doing it (the recording does not make fully clear whether the JavaScript performed the redirects or built the mapping).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C542",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Google's redirects guide says Google Search follows JavaScript location redirects only after rendering, may never see one if rendering fails, and should be used only when server-side or meta refresh redirects are impossible; its site move guide asks for server-side permanent redirects (301 or 308) where technically possible. The JavaScript in Google's own migration was a fallback ('my only option'), not a pattern to copy.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "site-moves",
            "duplicate-content",
            "canonical-selection",
            "crawl-errors",
            "javascript-seo"
          ],
          "docs": [
            {
              "key": "redirects-guide",
              "title": "Redirects and Google Search",
              "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "http-network-errors",
              "title": "How HTTP status codes affect Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "redirects",
              "count": 10,
              "own": true
            },
            {
              "id": "canonicalization",
              "count": 3,
              "own": true
            },
            {
              "id": "javascript",
              "count": 2,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-CAN-02",
          "level": "MUST",
          "title": "Serve one host over HTTPS with a valid certificate and redirect every other origin to it",
          "why": "The www and non-www versions of a page are exact duplicates that Google clusters, keeping one. Whether a page loads properly counts in canonical selection: a broken certificate, failing JavaScript or a page that cannot load counts against a URL, and Google's slide also listed meta refresh and security.",
          "how": "Pick one origin (for example https://www.example.com), redirect every other combination of protocol and host name with a single 301, serve a valid TLS certificate on every host name that answers, including the redirecting ones, and use only the chosen origin in internal links, canonicals, hreflang and sitemaps. Enable HSTS once HTTPS works everywhere.",
          "test": "curl -I on http://example.com, http://www.example.com and https://example.com each returns one 301 to the https://www. URL; a TLS check (openssl s_client or an online scanner) shows a valid certificate on every host name.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "redirects",
          "claims": [
            {
              "id": "D2-C365",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Exact-match duplicates, such as the www and non-www versions of the same page, are clustered and Google keeps only one of them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C389",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Whether a page can load is really important for canonical selection: a broken certificate, failing JavaScript or a page that cannot be loaded counts against a URL, and the slide also listed meta refresh and security.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C387",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google named three considerations when picking a representative URL: hijacking across pages or sites, user experience (the page can load, meta refresh, security) and site-owner signals (redirects, rel=canonical, sitemaps).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C396",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's closing suggestions on duplication: use redirects for site migrations, use HTTP result codes, don't block agents, check your rel=canonical links, use hreflang links to help Google localize, report weird canonicals in the forums, make secure pages that work, and keep canonical signals clear.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "troubleshoot-crawling-errors",
                  "title": "Troubleshoot Google Search crawling errors",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            }
          ],
          "topics": [
            "canonical-selection",
            "duplicate-content",
            "javascript-seo",
            "site-moves"
          ],
          "docs": [
            {
              "key": "canonicalization",
              "title": "What is canonicalization",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "redirects-guide",
              "title": "Redirects and Google Search",
              "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 2,
              "own": true
            },
            {
              "id": "redirects",
              "count": 2,
              "own": true
            },
            {
              "id": "rel-canonical",
              "count": 2,
              "own": false
            },
            {
              "id": "javascript",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-CAN-03",
          "level": "MUST",
          "title": "Put exactly one absolute rel=canonical in the server-rendered head of every indexable page",
          "why": "Google extracts rel=canonical from the head and uses it in deduplication and canonical selection, but the tag is very often wrong, so Google treats it as a strong hint rather than an order. With more than one canonical on a page, Google will likely ignore all of them.",
          "how": "Give every indexable page a self-referencing canonical, and point duplicates (tracking parameters, print views, sort orders) at the preferred URL. Use absolute URLs on the chosen origin. Output the tag from one layer only, making sure the CMS, an SEO plug-in and the front-end framework do not each add one, and put it in the server-sent head, not only in JavaScript-rendered HTML, with no invalid element (such as an img or iframe) before it, because Google stops reading the head at the first invalid element. For PDFs use an HTTP Link header.",
          "test": "A crawl finds no indexable page with zero or several canonicals, or with a relative or placeholder value; raw and rendered HTML carry the same canonical; URL Inspection shows the user-declared and Google-selected canonical as equal on key templates.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "canonical-link",
          "claims": [
            {
              "id": "D2-C032",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The rel=canonical link element is placed in the head section of the HTML and tells Google that one page is the representative of another.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C031",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google extracts the rel=canonical link, through which site owners state their preferred canonical URL, and uses it in deduplication and in canonical selection.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C418",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's 2013 Search Central blog post on rel=canonical mistakes says to specify no more than one rel=canonical per page: when a page has more than one, Google will likely ignore all of them, and any benefit of a legitimate canonical is lost.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (8 April 2013)",
              "speaker": null,
              "sources": [
                {
                  "key": "rel-canonical-mistakes-blog",
                  "title": "5 common mistakes with rel=canonical",
                  "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
                  "publisher": "Search Central blog (8 April 2013)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C417",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Multiple canonical declarations on one page conflict and are invalid, so the search engine applies its own heuristic and picks the canonical for the site owner; a page should declare only one canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "rel-canonical-mistakes-blog",
                  "title": "5 common mistakes with rel=canonical",
                  "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
                  "publisher": "Search Central blog (8 April 2013)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C379",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "rel=canonical is probably the most common way site owners signal duplicates, but it is very often wrong, for example a tag whose value reads 'canonical target' instead of a real URL (the example is partly unclear in the recording), so Google can only sometimes trust it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "rel-canonical-mistakes-blog",
                  "title": "5 common mistakes with rel=canonical",
                  "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
                  "publisher": "Search Central blog (8 April 2013)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C035",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Put rel=canonical and hreflang link elements in the head of the HTML the server sends, not only in JavaScript-rendered HTML, so Google can read them during HTML parsing without depending on rendering.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C831",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's page on valid page metadata says that once Google detects an invalid element in the head, it assumes the head has ended and stops reading further elements there; only title, meta, link, script, style, base, noscript and template elements belong in the head.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "valid-page-metadata",
                  "title": "Use valid HTML to specify page metadata",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/valid-page-metadata",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C873",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker said that, under the canonical link specification, an improperly declared canonical tag can also be ignored completely by the application that processes it, not only replaced by that application's own heuristic.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "rel-canonical-mistakes-blog",
                  "title": "5 common mistakes with rel=canonical",
                  "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
                  "publisher": "Search Central blog (8 April 2013)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "canonical-selection",
            "indexing-pipeline",
            "canonical-graphs",
            "robots-meta-tag",
            "duplicate-content",
            "hreflang"
          ],
          "docs": [
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "rel-canonical-mistakes-blog",
              "title": "5 common mistakes with rel=canonical",
              "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
              "publisher": "Search Central blog (8 April 2013)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "valid-page-metadata",
              "title": "Use valid HTML to specify page metadata",
              "url": "https://developers.google.com/search/docs/crawling-indexing/valid-page-metadata",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "rel-canonical",
              "count": 6,
              "own": true
            },
            {
              "id": "canonicalization",
              "count": 4,
              "own": true
            },
            {
              "id": "duplicate-content-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-CAN-04",
          "level": "MUST",
          "title": "Point every canonical directly at a final URL that returns 200, is indexable and is linked",
          "why": "Google can follow canonical chains but strongly recommends pointing every link at a single canonical page. Said at Search Central Live by a community speaker: a canonical loop leaves a group with no leader at all. The leader should carry no noindex, return no error, not be blocked in robots.txt and not redirect; a leader that visitors cannot reach through links asks Google to index a page humans cannot reach.",
          "how": "Resolve each canonical target to its final URL when pages are generated, and update canonicals to the new final URLs after migrations or host changes. Never canonicalise to a URL that redirects, returns non-200, carries noindex or is disallowed. Make the canonical target the URL that internal links use, fixing whichever of the two is wrong.",
          "test": "Canonical audit in a crawler: group URLs by the final URL their canonicals and redirects lead to, and flag groups with more than one hop, a loop, several canonicals on one page, or a leader that is noindexed, blocked, non-200, redirecting or without internal links.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C420",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's 2009 Search Central blog post introducing rel=canonical says Google's algorithm is lenient and can follow canonical chains, but strongly recommends updating links to point to a single canonical page for optimal canonicalization.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (12 February 2009)",
              "speaker": null,
              "sources": [
                {
                  "key": "specify-canonical-blog",
                  "title": "Specify your canonical",
                  "url": "https://developers.google.com/search/blog/2009/02/specify-your-canonical",
                  "publisher": "Search Central blog (12 February 2009)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C419",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Canonical chains, where a page's canonical target leads on to yet another URL, are named as improper use in the canonical link specification, according to a community speaker.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "specify-canonical-blog",
                  "title": "Specify your canonical",
                  "url": "https://developers.google.com/search/blog/2009/02/specify-your-canonical",
                  "publisher": "Search Central blog (12 February 2009)",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C438",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker advised fixing canonical chains by cleaning up the canonical graph so that every canonical link points directly to the canonical leader.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "specify-canonical-blog",
                  "title": "Specify your canonical",
                  "url": "https://developers.google.com/search/blog/2009/02/specify-your-canonical",
                  "publisher": "Search Central blog (12 February 2009)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C432",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The canonical leader of a group should be indexable: it should carry no noindex robots directive, return no error status code and not be blocked in robots.txt.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "rel-canonical-mistakes-blog",
                  "title": "5 common mistakes with rel=canonical",
                  "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
                  "publisher": "Search Central blog (8 April 2013)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C424",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Canonical loops, such as two HTML pages whose canonical tags point to each other, are a structural conflict: the group has no canonical leader, so its canonical information cannot be used.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": []
            },
            {
              "id": "D2-C427",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When internal links point only to page A and the canonical leader is reached only through A's canonical link, the leader is reachable by machines but not by human visitors, a signal conflict that asks the search engine to index a page users cannot reach.",
              "quote": "you're telling the search engine to index something that a human can't reach",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C416",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "To audit canonicals at scale, resolve every crawled URL to the final URL its canonical links and redirects lead to, group URLs by that leader, and flag groups with more than one hop, a loop, several canonicals on one page, or a leader that is noindexed, blocked, non-200 or redirecting.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C423",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "After a migration or a subdomain change, update rel=canonical tags to the new final URLs: canonicals still pointing at old, redirecting URLs create chains through server-side redirects like the one in the real-world example shown.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "canonical-graphs",
            "robots-meta-tag",
            "url-discovery",
            "robots-txt",
            "canonical-selection",
            "site-moves"
          ],
          "docs": [
            {
              "key": "specify-canonical-blog",
              "title": "Specify your canonical",
              "url": "https://developers.google.com/search/blog/2009/02/specify-your-canonical",
              "publisher": "Search Central blog (12 February 2009)",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "rel-canonical-mistakes-blog",
              "title": "5 common mistakes with rel=canonical",
              "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
              "publisher": "Search Central blog (8 April 2013)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "rel-canonical",
              "count": 7,
              "own": false
            },
            {
              "id": "canonicalization",
              "count": 6,
              "own": true
            },
            {
              "id": "redirects",
              "count": 2,
              "own": true
            },
            {
              "id": "noindex",
              "count": 1,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 1,
              "own": true
            },
            {
              "id": "http-200",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-CAN-05",
          "level": "MUST",
          "title": "Make all canonical signals agree: redirects, rel=canonical, internal links, sitemaps and hreflang",
          "why": "When all signals point to the same URL Google follows the site owner, and when they point in different directions it cannot tell what the owner wants. Redirects and rel=canonical are strong signals, sitemap inclusion is a weak one, and combining them makes them more effective; links to duplicates are consolidated once the preferred URL becomes canonical.",
          "how": "Generate canonical tags, sitemap entries, hreflang URLs and internal links from one URL-building function so they cannot drift apart, and check every signal against the preferred URL before a migration or template change.",
          "test": "A crawl finds zero internal links to non-canonical URLs, zero sitemap URLs that are not self-canonical and zero hreflang targets that redirect or canonicalise elsewhere; sampled URLs in URL Inspection show matching user-declared and Google-selected canonicals.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C399",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When all canonical signals point to the same URL, Google follows what the site owner says; when they point in different directions, Google cannot tell what the owner wants.",
              "quote": "if there are multiple things in different directions, we don't know what to do.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C391",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's canonical guide ranks the ways to signal a preferred canonical by strength: redirects and rel=canonical annotations are strong signals, sitemap inclusion is a weak signal, and combining methods makes them more effective.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C430",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to specifying canonical URLs says a canonical helps consolidate signals for duplicate pages: links to a duplicate URL are consolidated with links to the preferred URL once the preferred URL becomes canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C390",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Clear site-owner signals about which URL should be canonical make a big difference to Google's choice; the speaker named redirects, listing only the preferred URL in sitemaps, and rel=canonical, which the speaker said also helps a bit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C400",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Before a migration or template change, align every canonical signal for the preferred URL (redirects, rel=canonical, internal links, sitemap entries, hreflang and working HTTPS); Google says it follows the site owner only when the signals agree.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C431",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "A leader reachable only through a canonical and a leader with weak link equity share one fix: point internal links, sitemap entries and redirects at the URL chosen as canonical, so the leader is both reachable for users and the strongest page in its group.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "canonical-selection",
            "sitemaps",
            "canonical-graphs",
            "site-moves",
            "url-discovery",
            "duplicate-content"
          ],
          "docs": [
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "canonicalization",
              "title": "What is canonicalization",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 6,
              "own": true
            },
            {
              "id": "redirects",
              "count": 4,
              "own": true
            },
            {
              "id": "sitemap-file",
              "count": 4,
              "own": true
            },
            {
              "id": "rel-canonical",
              "count": 3,
              "own": true
            },
            {
              "id": "hreflang-annotation",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-CAN-06",
          "level": "AVOID",
          "title": "Do not canonicalise one language version to another; connect them with hreflang",
          "why": "A canonical from one language version to another asks Google to keep only one language in the index, so only that version would rank. Google's guide says that on pages using hreflang the canonical should be a page in the same language, or the best substitute language if none exists.",
          "how": "Every language or country version keeps a self-referencing canonical and lists its alternates with hreflang (DEV-INT-03). Check that no template falls back to the default-language canonical on translated pages.",
          "test": "Canonical audit: no canonical group contains documents in more than one language, and every localized page's canonical equals its own URL.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C433",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Canonical links between different language versions of a page are a misuse: if a search engine accepted such a canonical group, only one language version would rank.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C434",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Language versions of a page should be connected with hreflang annotations instead of canonical links.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C435",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to specifying canonical URLs says that on pages using hreflang, the canonical should be a page in the same language, or the best possible substitute language if no canonical page exists in the same language.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C436",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Check that every canonical group contains a single document language: a group spanning languages means canonicals are joining versions that hreflang should connect, and each language version should keep its own self-referencing canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "canonical-graphs",
            "hreflang",
            "page-language"
          ],
          "docs": [
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "localized-versions",
              "title": "Tell Google about localized versions of your page",
              "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 3,
              "own": true
            },
            {
              "id": "hreflang-annotation",
              "count": 3,
              "own": true
            },
            {
              "id": "rel-canonical",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-CAN-07",
          "level": "AVOID",
          "title": "Never leave staging, preview or mirror copies of the site publicly crawlable",
          "why": "Google watches for canonical hijacking, where several domains try to be canonical for the same content, including a site owner's own copies such as a staging site. A crawlable copy competes with production for canonical selection and can win.",
          "how": "Protect staging, preview and QA environments with HTTP authentication or an IP allowlist, since a 401 or 403 cannot be indexed, and add a site-wide noindex header as a second layer. Never launch with staging's blanket noindex or Disallow: / still in place, and never point production canonicals or hreflang at a staging host.",
          "test": "curl -I on the staging host returns 401 or 403 without credentials; the pre-launch check confirms production has no global noindex and no Disallow: /.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C388",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google watches for canonical hijacking, where several domains try to be canonical for the same content, whether accidentally across a site owner's own domains (such as a staging copy) or through third-party domains, maliciously or not, and asks site owners to report cases it gets wrong.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C387",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google named three considerations when picking a representative URL: hijacking across pages or sites, user experience (the page can load, meta refresh, security) and site-owner signals (redirects, rel=canonical, sitemaps).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "canonical-selection",
            "duplicate-content"
          ],
          "docs": [
            {
              "key": "canonicalization-troubleshooting",
              "title": "Fix canonicalization issues",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "canonicalization",
              "title": "What is canonicalization",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 1,
              "own": true
            },
            {
              "id": "redirects",
              "count": 1,
              "own": false
            },
            {
              "id": "rel-canonical",
              "count": 1,
              "own": false
            },
            {
              "id": "sitemap-file",
              "count": 1,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-CAN-08",
          "level": "SHOULD",
          "title": "Make pages that share a URL pattern differ in their main content",
          "why": "Google clusters near matches and structurally similar pages, and fixing a wrong cluster comes down to making the pages sufficiently different; they can stay clustered for up to two weeks after a fix. Said at Search Central Live: when several URLs under one pattern, or city pages with similar stock, show the same content, Google may assume that every URL fitting the pattern shows that content without looking at the page.",
          "how": "Give location, variant and category pages distinct main content (local stock, staff, prices, addresses, a unique introduction), not just a different title. Return 404 for empty or invalid combinations and for URLs that no longer exist, and avoid generating many similar-looking URLs that lead to the same content.",
          "test": "The Page indexing report's \"Duplicate, Google chose different canonical than user\" reason, grouped by URL pattern, stays flat; URL Inspection shows sampled pattern URLs as their own canonical.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C373",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's canonicalization troubleshooting guide says fixing a wrong duplicate cluster comes down to making the clustered pages sufficiently different; pages split out faster when the difference is clear and significant, and Google may keep pages in a duplicate cluster for up to two weeks after a fix.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C371",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To avoid pattern-based deduplication, Google's speaker recommended not having many unrelated, similar-looking URLs that lead to the same content, and returning error pages for URLs that no longer exist so they are clearly unrelated.",
              "quote": "Misleading site structure (use clear signals!)",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "troubleshoot-crawling-errors",
                  "title": "Troubleshoot Google Search crawling errors",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C368",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google sometimes picks a canonical that looks unrelated because it recognised a URL pattern: if /buy/fax, /buy/typewriter and /office-equipment show the same content, its systems may assume any /buy/ URL, even /buy/seo-service, shows that same office-equipment content without looking at the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C370",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "City pages can trigger the same pattern-based deduplication: for a car dealer brand with branches in several cities and similar stock, Google's systems may decide the city name does not matter and canonicalise to one city's page; the slide asked whether a further city page such as /zurich/services would be treated the same way.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C369",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's slide on structurally similar content asked whether a new URL that fits a known duplicate pattern, such as /buy/seo-service, even needs to be crawled.",
              "quote": "Do we even need to crawl /buy/seo-service ?",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C372",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Make location and variant pages differ in their main content (local stock, staff, prices, addresses) and return 404 for empty or invalid combinations; otherwise every URL that fits the pattern can be folded into one canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "duplicate-content",
            "canonical-selection",
            "crawl-budget"
          ],
          "docs": [
            {
              "key": "canonicalization-troubleshooting",
              "title": "Fix canonicalization issues",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "canonicalization",
              "title": "What is canonicalization",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 3,
              "own": false
            },
            {
              "id": "duplicate-content-concept",
              "count": 3,
              "own": false
            },
            {
              "id": "main-content-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-CAN-09",
          "level": "SHOULD",
          "title": "Keep migration redirects in place long term and judge a move in Search Console, not with site: queries",
          "why": "Google keeps the source of a redirect as an alternate name and may still show old URLs to people who search for the old domain or brand; its redirect guide calls this normal and says it fades over time. Removing redirects early breaks those visits and the consolidation of signals. Google's site move guide says to keep redirects generally at least one year so it can transfer all signals, and that small to medium sites take a few weeks for most pages to move. Said at Search Central Live: a site move takes one to three months on average and up to about a year, because Google's slowest signal is recalculated only about once a year (a partly uncertain passage of the recording). Asked how to plan a migration that does not leave many URLs unindexed, a Google panelist said sitemaps are not the main tool: decide first what matters from the business's perspective, for example whether to consolidate languages; listing the new URLs in a sitemap cannot hurt.",
          "how": "Map every old URL to its final new URL in one hop (DEV-CAN-10), keep the redirects for at least a year and ideally indefinitely, use Search Console's Change of address tool for domain moves, submit the new sitemaps, update internal links to the new URLs so pages do not rely on redirects alone, and follow the new property's indexing and traffic against a pre-migration baseline.",
          "test": "Old URLs still answer 301 to the right targets months after launch; in Search Console the new property's indexed pages rise as the old property's fall.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C357",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's redirects guide says Google keeps track of both the source and the target of a redirect: one becomes the canonical, depending on signals such as whether the redirect is permanent or temporary, and the other becomes an alternate name that may appear in results when a query suggests the user trusts the old URL more. After a move to a new domain, old URLs may still show occasionally; the guide calls this normal.",
              "quote": "This is normal and as users get used to the new domain name, the alternate names will fade away without you doing anything.",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C354",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Alternate names are why a site: query for an old domain still shows the old domain's URLs after a site migration, which site owners often misread as a migration that is not working.",
              "quote": "FYI \"alternate names\" is why you see old domains in site:-queries",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C355",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "When someone searches for an old domain after a migration, Google shows the old URL as an alternate version because that is what was searched for, and relies on the redirect to take the user to the new site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C358",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "After a migration, judge success by the new domain's indexing and traffic in Search Console rather than by a site: query on the old domain, and keep the old domain's redirects in place long term so searches for the old brand still reach the new site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C351",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google treats a site migration as deduplication across sites, in which the site owner says the old and the new domain are the same and that Google should pick the new domain, so deduplication also helps Google handle migrations.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C643",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A site move can finish within a few weeks for a small site, takes one to three months on average, and in the worst case about a year.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C644",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes said a site move can take up to about a year in the worst case, because Google's slowest signal is recalculated only about once a year (some words of this passage are uncertain readings).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C671",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's site move guide says to keep redirects for as long as possible, generally at least one year, so that Google can transfer all signals to the new URLs.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C672",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's site move guide says that, as a general rule, a small to medium-sized site can take a few weeks for most pages to move and larger sites take longer, depending on the number of URLs and server speed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C645",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Keep migration redirects in place for at least a year and judge a site move after one to three months, not days: Google's speaker said its slowest signal needs about a year to be recalculated (a partly uncertain passage of the recording), and Google's site move guide says to keep redirects generally at least one year.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C884",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The technical steps of a community speaker's domain consolidation included submitting new sitemaps, filing a change of address in Search Console and updating internal links so the new pages did not rely on redirects alone.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Martyna Ağanoğlu",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C912",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's site move guide says to submit a Change of Address in Search Console when moving from one domain or subdomain to another, to submit the new sitemap, and to change internal links on the new site from the old URLs to the new ones.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C888",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "After a domain consolidation went live, a community speaker's team checked Search Console every day, ran full site crawls and compared the numbers with the pre-migration baseline for months.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Martyna Ağanoğlu",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C540",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Asked how to plan a migration that does not leave many URLs unindexed, a Google panelist said the answer is probably not sitemaps: decide what matters from the business's perspective (for example whether to consolidate languages); listing the new URLs in a sitemap is probably a good idea and cannot hurt, but it is not the main tool.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "site-moves",
            "sitemaps",
            "duplicate-content",
            "measurement",
            "search-console-features",
            "processing-times",
            "crawlable-links",
            "indexing-signals",
            "search-console-data"
          ],
          "docs": [
            {
              "key": "redirects-guide",
              "title": "Redirects and Google Search",
              "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "site-move-with-url-changes",
              "title": "How to move a site",
              "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "redirects",
              "count": 6,
              "own": true
            },
            {
              "id": "site-move",
              "count": 6,
              "own": true
            },
            {
              "id": "google-search-console",
              "count": 4,
              "own": true
            },
            {
              "id": "sitemap-file",
              "count": 3,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-CAN-10",
          "level": "MUST",
          "title": "Redirect an old URL only to a page with the same intent, and return 404 or 410 when there is none",
          "why": "Google's site move guide warns against redirecting many old URLs to one irrelevant destination such as the home page, which can confuse users and might be treated as a soft 404, and says to return 404 or 410 for content that is not moved. Community speakers who ran migrations at the event built them around one redirect map that gives every old URL an approved destination, redirected only where a new page served the same intent and never sent removed URLs to the home page, even those still bringing traffic. A 200 on every new URL proves only that the URLs work, not that the content users came for is still there.",
          "how": "Before launch, freeze the inventory (CMS export, crawl, sitemaps, search data and logs) and approve a redirect map with one row per old URL: a same-intent target, or 404 or 410. Where two language or market versions duplicate each other, redirect both old URLs to one shared target. After launch, test the live site against the map.",
          "test": "A script requests every old URL in the map and checks it returns one 301 to the mapped target, or the mapped 404 or 410; no old URL other than the old home page redirects to the new home page; the Page indexing report shows no rise in soft 404s on redirect targets.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C911",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's site move guide says not to redirect many old URLs to one irrelevant destination such as the new site's home page, which can confuse users and might be treated as a soft 404, and to return a 404 or 410 for deleted or merged content that is not moved to the new site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C882",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "In a community case study, an old URL got a 301 redirect only when a new page served the same intent; URLs with no same-intent match were removed with an error status instead of being redirected (the exact code is unclear in the recording).",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Martyna Ağanoğlu",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C883",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker's team never redirected removed URLs to the homepage, even those that still brought traffic, because the aim was a clear signal about what the site is rather than keeping every visitor.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Martyna Ağanoğlu",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C895",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker said a migration should be run around one document, the redirect map, which gives every old URL an approved destination.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "David Carrasco Pamies",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C902",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Before a migration launches, a community speaker advised freezing the inventory (CMS export, crawl, sitemap, search data and logs), saving all content and approving the redirect map.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "David Carrasco Pamies",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C903",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker warned that HTTP 200 responses across a new domain show only that the URLs work, not that the content users came for is still there, so after launch the redirect map becomes the test.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "David Carrasco Pamies",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C479",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Where content was duplicated across languages, Google's own site consolidation redirected two language versions into one, giving both old URLs one target path to redirect to.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "site-moves",
            "soft-404",
            "measurement",
            "duplicate-content",
            "content-pruning"
          ],
          "docs": [
            {
              "key": "site-move-with-url-changes",
              "title": "How to move a site",
              "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "http-network-errors",
              "title": "How HTTP status codes affect Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "redirects",
              "count": 7,
              "own": true
            },
            {
              "id": "http-200",
              "count": 1,
              "own": true
            },
            {
              "id": "http-404",
              "count": 1,
              "own": true
            },
            {
              "id": "http-410",
              "count": 1,
              "own": true
            },
            {
              "id": "site-move",
              "count": 1,
              "own": true
            },
            {
              "id": "soft-404-error",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-CAN-11",
          "level": "AVOID",
          "title": "Never route a crawlable URL's redirects through a URL that robots.txt blocks",
          "why": "Said at Search Central Live by Dave Smart: robots.txt is checked for every URL in a redirect chain and crawling stops at the first blocked one. His example was a shop that redirected every page through a disallowed /cart/ URL with JavaScript to set the local currency and back, so its pages were reported as blocked by robots.txt. It applies to every kind of redirect, for example through an external authorisation service whose own robots.txt blocks crawlers, through an old intermediate URL that was disallowed years after the content moved past it, or a redirect served only to Googlebot's user agent. Search Console shows the block on the first URL of the chain, which is not itself disallowed; Google's URL Inspection help confirms that the live test follows redirects without saying so or showing the final URL it tested.",
          "how": "Set currency, language, consent or session state on the page itself or with a cookie, not with a redirect hop through cart, checkout, login or tracking URLs. Point every redirect straight at its final URL (DEV-CAN-01) and re-check the redirect map whenever robots.txt gains a Disallow rule, so a historical intermediate URL cannot block the target. Do not send crawlers through third-party hosts in a redirect chain, and never redirect Googlebot differently from users (DEV-SPM-03).",
          "test": "When Search Console reports a URL as blocked by robots.txt that the file does not block, follow its redirect chain hop by hop, with a browser user agent and with Googlebot's, and test every hop against its own host's robots.txt with Google's open-source parser; run the same check on one URL per template after each release. JavaScript redirects only show in a rendered check, such as URL Inspection's live test.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "redirect-chain-robots",
          "claims": [
            {
              "id": "D1-C534",
              "day": 1,
              "session_id": "D1-S08",
              "session": "Lightning session B: Robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Dave Smart said robots.txt is checked for every URL in a redirect chain and crawling stops at the first blocked one; in his example a site redirected through /cart/ with JavaScript to set the local currency and back, and because /cart/ was disallowed the page was reported as blocked.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Dave Smart",
              "sources": []
            },
            {
              "id": "D1-C535",
              "day": 1,
              "session_id": "D1-S08",
              "session": "Lightning session B: Robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Dave Smart said Search Console reports such a block only on the first URL of the chain, which is confusing: the URL shown as blocked by robots.txt is not itself disallowed.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Dave Smart",
              "sources": [
                {
                  "key": "url-inspection-help",
                  "title": "URL Inspection tool",
                  "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C536",
              "day": 1,
              "session_id": "D1-S08",
              "session": "Lightning session B: Robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Dave Smart said this applies to all redirects, not only JavaScript ones; his examples: a redirect through an external authorisation service that is blocked by its own robots.txt, content that moved through several URLs over the years with one of them later blocked, and unexpected redirects, such as one served only to Googlebot's user agent.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Dave Smart",
              "sources": []
            },
            {
              "id": "D1-C537",
              "day": 1,
              "session_id": "D1-S08",
              "session": "Lightning session B: Robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When Search Console says a URL is blocked by robots.txt but the file does not block it, check whether the URL redirects and test every URL in the chain.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Dave Smart",
              "sources": [
                {
                  "key": "url-inspection-help",
                  "title": "URL Inspection tool",
                  "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "robots-txt",
            "crawl-errors",
            "page-indexing-report"
          ],
          "docs": [
            {
              "key": "url-inspection-help",
              "title": "URL Inspection tool",
              "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "robots-spec",
              "title": "How Google interprets the robots.txt specification",
              "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "redirects-guide",
              "title": "Redirects and Google Search",
              "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 4,
              "own": true
            },
            {
              "id": "redirects",
              "count": 3,
              "own": true
            },
            {
              "id": "google-search-console",
              "count": 2,
              "own": true
            },
            {
              "id": "javascript",
              "count": 2,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            },
            {
              "id": "url-inspection",
              "count": 0,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "errors-soft-404",
      "title": "Error pages and soft 404s",
      "intro": "A page that should be an error but returns 200 is a soft 404: Google keeps it out of the index but keeps crawling it, may cluster many such pages together, and recognises it from the main content rather than from keywords. Every response needs the status code that matches the state of the page.",
      "requirements": [
        {
          "id": "DEV-ERR-01",
          "level": "MUST",
          "title": "Return 404 or 410 for removed and non-existent URLs",
          "why": "4xx codes other than 429 do not slow crawling, URLs that return them are not indexed, and a 404 is a strong signal not to crawl the URL again. A soft 404 is kept out of the index but keeps being crawled, wasting crawl budget, and soft 404 pages can be clustered together as duplicates.",
          "how": "Answer unknown paths, deleted items without a close replacement and invalid parameters with 404 or 410 and a helpful error page (search box, main categories). Redirect only when a genuinely equivalent replacement exists, and never send every missing URL to the homepage.",
          "test": "curl -I https://www.example.com/this-does-not-exist-123 returns 404; the Page indexing report's \"Soft 404\" count stays near zero.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C072",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "4xx status codes other than 429 have no effect on crawl rate.",
              "quote": "The 4xx status codes, except 429, have no effect on crawl rate.",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C073",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "A soft 404 is a page that returns a success code while its content looks like an error or an empty page. It is kept out of the index but continues to be crawled, wasting crawl budget.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google, Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "troubleshoot-crawling-errors",
                  "title": "Troubleshoot Google Search crawling errors",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C109",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google advises against using noindex to save crawl budget and against using robots.txt to temporarily reallocate budget. Use robots.txt only for pages you never want crawled, and 404 or 410 for removed pages.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C334",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A soft 404 is a page that should return an error status code but returns HTTP 200; from a crawling point of view it looks indexable, but because it has no real content Google throws it out of the index.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "troubleshoot-crawling-errors",
                  "title": "Troubleshoot Google Search crawling errors",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C367",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Soft 404 pages are another reason Google clusters pages together, an outcome site owners usually do not want.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C351",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "404 Not Found and 410 Gone both tell Google there is nothing at the URL, so the URL is not indexable.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C385",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "4xx responses do not affect a site's crawl budget, because Google expects pages, content and products to come and go as a natural part of the web.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-errors",
            "soft-404",
            "crawl-budget",
            "crawl-directives",
            "duplicate-content",
            "index-selection"
          ],
          "docs": [
            {
              "key": "http-network-errors",
              "title": "How HTTP status codes affect Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "troubleshoot-crawling-errors",
              "title": "Troubleshoot Google Search crawling errors",
              "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "crawl-budget-metric",
              "count": 3,
              "own": true
            },
            {
              "id": "soft-404-error",
              "count": 3,
              "own": true
            },
            {
              "id": "http-404",
              "count": 2,
              "own": true
            },
            {
              "id": "http-410",
              "count": 2,
              "own": true
            },
            {
              "id": "http-4xx",
              "count": 2,
              "own": true
            },
            {
              "id": "http-429",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-ERR-02",
          "level": "MUST",
          "title": "Return a real 404 for unknown routes in single-page apps, or use a documented client-side fallback",
          "why": "In single-page apps the server often returns the app with 200 for every URL and the front-end router shows a \"not found\" view, so no error is reported. When a server-side 404 is impractical, Google documents two fallbacks: a JavaScript redirect to a URL that returns 404, or a noindex robots meta tag added with JavaScript.",
          "how": "Prefer the server: route known paths, look up dynamic ones such as product slugs, and send the app shell with 404 for everything else. Otherwise, in the client, redirect error views to a URL the server answers with 404, or inject <meta name=\"robots\" content=\"noindex\"> on error views.",
          "test": "curl -I on a made-up deep URL returns 404, or the rendered HTML in URL Inspection shows the redirect or the noindex; the Page indexing report shows no soft 404s on app routes.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "spa-404",
          "claims": [
            {
              "id": "D2-C190",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "In single-page apps, a missing page often shows a custom 404 page while the server returns HTTP 200, because the front-end router, not the server, handles the 404.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C291",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "In JavaScript single-page apps, soft 404s typically arise because the server returns the app with a 200 status for every URL, so when the app shows a 'not found' message for a URL that does not exist, no error is reported.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C264",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's slide defined a soft 404 in a JavaScript application as a page that serves a 'Not Found' message but returns a 200 HTTP status code.",
              "quote": "Your application serves a \"Not Found\" message but returns a 200 HTTP status code.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C192",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's JavaScript guides say that when client-side routing makes a real 404 status impractical, a single-page app can avoid soft 404s by redirecting with JavaScript to a URL whose server returns 404, or by adding a robots noindex meta tag with JavaScript.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C294",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "For client-side rendered single-page apps, where meaningful status codes can be impossible or impractical, Google's documentation gives two ways to avoid soft 404s: a JavaScript redirect to a URL that returns a 404 status, or a noindex robots meta tag added with JavaScript.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C191",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The fix for a client-side soft 404 is to make a missing page end with a real HTTP 404 status code instead of 200.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C295",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "After moving to real paths, set the server or hosting rewrite rules so a direct request to every valid path returns 200 with the content (ideally server-rendered) and an unknown path returns a 404 status, which removes client-side soft 404s at the source.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "soft-404",
            "javascript-seo"
          ],
          "docs": [
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "soft-404-error",
              "count": 6,
              "own": false
            },
            {
              "id": "http-200",
              "count": 5,
              "own": true
            },
            {
              "id": "http-404",
              "count": 5,
              "own": true
            },
            {
              "id": "javascript",
              "count": 4,
              "own": true
            },
            {
              "id": "single-page-app",
              "count": 4,
              "own": true
            },
            {
              "id": "noindex",
              "count": 2,
              "own": true
            },
            {
              "id": "redirects",
              "count": 2,
              "own": true
            },
            {
              "id": "meta-robots-tag",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-ERR-03",
          "level": "AVOID",
          "title": "Never serve error states, empty results or failed data loads with a 200 status",
          "why": "Google listed four common causes of soft 404s: pages that look like errors, thin or empty content, server or CMS misconfiguration, and JavaScript-dependent content that fails to load. Said at Search Central Live: detection uses a model that understands page layout, so an error message alone in the main content, such as a database connection error, makes a soft 404 even when header and navigation look normal.",
          "how": "Database and backend failures return 503; missing content returns 404 or 410; empty search and filter results return 404 or carry noindex. Client-rendered pages whose data request fails show a retry option and never leave an empty main area on a 200 URL.",
          "test": "In staging, simulate a backend outage: pages answer 503, not 200. Crawl for 200 pages with a very short main content or error wording, and review the Page indexing report's soft 404 list after each release.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C336",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google listed four common causes of soft 404s: pages that look like errors but are not, thin or empty content, server or CMS misconfigurations, and JavaScript-dependent content that fails to load.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "troubleshoot-crawling-errors",
                  "title": "Troubleshoot Google Search crawling errors",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C339",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "For soft 404 detection, the position of error text decides: an error in a less important part such as the navigation need not make a page a soft 404, but an error message alone in the main content, like 'Error establishing a database connection', does, much as a human would judge it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C213",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A page that renders empty for Google, such as a client-side product page hit by these mistakes, is seen as thin content and ends up treated as a soft 404 even though users see a full page.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C376",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Search Central post on CDNs says that if Google cannot recognise an error message served with a 200 status as an error, all pages showing the same message may be dropped from the index as duplicates, and recovery can be slow because Google has little incentive to recrawl duplicates. For bot-verification interstitials it recommends sending crawlers a 503 status.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (24 December 2024)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C342",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Return real error status codes for error states, 404 or 410 for missing content and 503 for outages such as a failed database connection, also in single-page apps; a 200 page whose main content is only an error message is treated as a soft 404 even when header and navigation look normal.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C334",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A soft 404 is a page that should return an error status code but returns HTTP 200; from a crawling point of view it looks indexable, but because it has no real content Google throws it out of the index.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "troubleshoot-crawling-errors",
                  "title": "Troubleshoot Google Search crawling errors",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C348",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A 204 No Content response is not eligible for indexing, because the server confirms the request but returns no content to index.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C355",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A soft 404 is a 404 in disguise: the page returns 200 but its content says something like 'page not found', information the site should have sent as the HTTP status.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Cherry Prommawin",
              "sources": [
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C320",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "An HTTP 200 OK status only means that the server believes it managed to do what the client asked for.",
              "quote": "just means that the server believes that it managed to accomplish whatever the user was asking for",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C369",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's status code page says that with a 204 No Content response Google receives no content and cannot process it, and that a 2xx page whose content is empty or an error message shows as a soft 404 in Search Console.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "soft-404",
            "crawl-errors",
            "javascript-seo",
            "duplicate-content",
            "main-content",
            "index-selection"
          ],
          "docs": [
            {
              "key": "troubleshoot-crawling-errors",
              "title": "Troubleshoot Google Search crawling errors",
              "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "http-network-errors",
              "title": "How HTTP status codes affect Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawling-december-cdns",
              "title": "Crawling December: CDNs and crawling",
              "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
              "publisher": "Search Central blog (24 December 2024)",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "soft-404-error",
              "count": 7,
              "own": true
            },
            {
              "id": "http-200",
              "count": 5,
              "own": true
            },
            {
              "id": "http-404",
              "count": 2,
              "own": false
            },
            {
              "id": "http-503",
              "count": 2,
              "own": false
            },
            {
              "id": "main-content-concept",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-ERR-04",
          "level": "SHOULD",
          "title": "Keep temporarily out-of-stock product pages live with 200 and their current availability",
          "why": "Google's guide to pausing a business recommends staying online with limited functionality, such as a disabled cart, and updating Product markup with current availability. Google's answer on out-of-stock pages was that it depends on how important the page is to users, who may wait months or pre-order; a temporary redirect keeps the source URL in results anyway.",
          "how": "Keep the page at 200, show the availability (OutOfStock, PreOrder, BackOrder) on the page and in Product markup, offer pre-ordering or a back-in-stock alert, and link to alternatives. Redirect with 301 only when the product is gone for good and a true successor exists; otherwise return 404 or 410 for discontinued items.",
          "test": "The Rich Results Test shows the current availability in Product markup; out-of-stock URLs answer 200 and stay indexed in URL Inspection.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C012",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to temporarily pausing an online business recommends that a shop expecting to sell again within weeks or months stays online with limited functionality, such as a disabled cart, and updates its Product structured data to show current availability.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "pause-online-business",
                  "title": "Temporarily pause or disable a website",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/pause-online-business",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C010",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google answered on a Q&A slide that whether to keep a temporarily out-of-stock product page or redirect it depends on how important that product page is to users.",
              "quote": "It depends on the importance of the PDPs to the users.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C011",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's Q&A slide on out-of-stock product pages said users might wait months for some products, or even pre-order them if the site offers pre-ordering.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "pause-online-business",
                  "title": "Temporarily pause or disable a website",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/pause-online-business",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C013",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's redirect documentation says that with a temporary redirect, such as a 302, Google Search shows the source page in search results and does not use the redirect as a signal that the target should be canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "redirects-guide",
                  "title": "Redirects and Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C014",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Keep a product page that is out of stock for a few months live with a 200 status, show its availability on the page and in Product structured data, and offer pre-ordering where possible when users would wait for the product. Redirect it only when users would rather switch to a similar product than wait.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "site-moves",
            "merchant-markup"
          ],
          "docs": [
            {
              "key": "pause-online-business",
              "title": "Temporarily pause or disable a website",
              "url": "https://developers.google.com/search/docs/crawling-indexing/pause-online-business",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "redirects-guide",
              "title": "Redirects and Google Search",
              "url": "https://developers.google.com/search/docs/crawling-indexing/301-redirects",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "merchant-listing-sd",
              "title": "Merchant listing (Product, Offer) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "redirects",
              "count": 3,
              "own": true
            },
            {
              "id": "structured-data-concept",
              "count": 2,
              "own": false
            },
            {
              "id": "http-200",
              "count": 1,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "international",
      "title": "International and multilingual sites",
      "intro": "Google reads a page's language from its content, stores one language per page and uses hreflang to show searchers the right version. Each version needs its own URL, crawlable links to its alternates, valid and reciprocal annotations and content that really differs.",
      "requirements": [
        {
          "id": "DEV-INT-01",
          "level": "MUST",
          "title": "Give every language and country version its own URL",
          "why": "Switching languages with cookies or by swapping content in place makes the versions very hard for Google to handle. Googlebot mostly crawls from US IP addresses without an Accept-Language header, so content that adapts to the visitor's location or language may never be crawled in its other versions.",
          "how": "Give each version its own URL (example.de, de.example.com or example.com/de/), never a ?lang= parameter or a cookie. The URL alone decides the language and region served; a remembered choice may only preselect the language selector, never change the content of a URL.",
          "test": "curl each version's URL from one location with no Accept-Language header and no cookies: each returns its own language and content.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C560",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Each language version should have its own URL; switching languages with cookies or by updating the content in place makes the versions very difficult for Google to handle.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "locale-adaptive-pages",
                  "title": "How Google crawls locale-adaptive pages",
                  "url": "https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C561",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's documentation says Googlebot mostly crawls from US IP addresses and sends no Accept-Language header, so pages that change content or redirect by the visitor's perceived country or language may not have every version crawled, indexed or ranked; it recommends separate URLs annotated with hreflang.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "locale-adaptive-pages",
                  "title": "How Google crawls locale-adaptive pages",
                  "url": "https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C562",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Language versions can also be language-plus-region variants: Google's example site had a generic English page (en), a UK English page (en-gb) and a Spanish page (es), each on its own URL.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C595",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's table of URL structures for country targeting gives pros and cons for a country-specific domain (example.de), a subdomain (de.example.com) and a subdirectory (example.com/de/) on a generic domain, and marks URL parameters (site.com?loc=de) as not recommended.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "page-language",
            "hreflang",
            "geotargeting"
          ],
          "docs": [
            {
              "key": "multi-regional-sites",
              "title": "Managing multi-regional and multilingual sites",
              "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "locale-adaptive-pages",
              "title": "How Google crawls locale-adaptive pages",
              "url": "https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "localized-versions",
              "title": "Tell Google about localized versions of your page",
              "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-02",
          "level": "AVOID",
          "title": "Do not redirect visitors automatically by IP address or browser language",
          "why": "Google advised against clever geo-redirecting because it very often goes wrong, and its documentation explains why: Googlebot mostly crawls from the US without Accept-Language, so automatic redirects can hide every other version from it.",
          "how": "Serve the requested URL as it is and suggest another version with a dismissible banner or the language selector. Point x-default at a language selector or a generic page instead of redirecting from the root.",
          "test": "curl -I on each country URL with IP addresses or Accept-Language headers of other countries: no 3xx to another version.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C383",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's speaker advised against 'clever' geo-redirecting, because it very often goes wrong.",
              "quote": "clever\" geo-redirecting (is often not so clever)",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C561",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's documentation says Googlebot mostly crawls from US IP addresses and sends no Accept-Language header, so pages that change content or redirect by the visitor's perceived country or language may not have every version crawled, indexed or ranked; it recommends separate URLs annotated with hreflang.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "locale-adaptive-pages",
                  "title": "How Google crawls locale-adaptive pages",
                  "url": "https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "geotargeting",
            "duplicate-content",
            "page-language"
          ],
          "docs": [
            {
              "key": "multi-regional-sites",
              "title": "Managing multi-regional and multilingual sites",
              "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "locale-adaptive-pages",
              "title": "How Google crawls locale-adaptive pages",
              "url": "https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            },
            {
              "id": "hreflang-annotation",
              "count": 1,
              "own": false
            },
            {
              "id": "redirects",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-03",
          "level": "MUST",
          "title": "Make hreflang complete: a self-reference, return links and fully qualified URLs",
          "why": "Missing return links and missing self-references are common hreflang mistakes, and Google ignores annotations that point only one way, since otherwise any site could claim to be a version of someone else's. Alternate URLs must be fully qualified, including https://, and may be on other domains. A brand-only query reveals no language, so Google falls back on the user's location and browser settings and sometimes shows the wrong language version; complete hreflang is what lets it swap in the right one.",
          "how": "Every page in a set lists itself and every alternate with an identical block, plus x-default for the fallback or selector page. Point only at canonical, indexable 200 URLs and generate the block for all versions from one data source. If keeping every pair is impractical, at least link new versions both ways with the original or dominant language.",
          "test": "An hreflang audit in a crawler reports, per cluster, no missing return links, no missing self-references, no non-200 or non-canonical targets and no relative URLs.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "hreflang-html",
          "claims": [
            {
              "id": "D2-C565",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Missing return links are a common hreflang mistake: if page X names page Y as a language version, page Y must link back to page X.",
              "quote": "If page X links to page Y, page Y must link back to page X.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C566",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Each page in an hreflang set must also list its own URL, and a missing self-reference is a common mistake Google sees.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C570",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google ignores hreflang annotations that point only one way, where page A names page B as a language version but page B does not name page A back.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C572",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google requires hreflang return links because an alternate URL is a full URL that can be on any domain, so without them any site could declare itself a language version of someone else's website.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C573",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's hreflang guide says alternate URLs must be fully qualified, including the protocol (https://example.com/foo, not //example.com/foo or /foo), and need not be on the same domain.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C564",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's hreflang example lists every language version in the page's HTML head as a link element with rel=alternate, the version's full URL and its hreflang code (en, en-gb, es), including the page's own URL.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C571",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's hreflang guide says a site that finds it hard to keep every language pair bidirectional may omit some languages on some pages, because Google still processes the pairs that point to each other; new language versions should at least link both ways with the original or dominant language.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C574",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Audit hreflang per cluster rather than per page: check that every page lists itself and all its alternates, that every alternate links back, and that only one method (HTML head, HTTP header or sitemap) supplies the annotations.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C007",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Query language detection works poorly when someone searches only for a brand name, such as Facebook or Google, because the query does not show which language the user wants results in.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "results-language-help",
                  "title": "How Google knows what language to show in search results",
                  "url": "https://support.google.com/websearch/answer/13511324?hl=en",
                  "publisher": "Google Search Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C008",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "For brand-only queries Google falls back on other information, such as the user's location and browser settings, to work out the language of the results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "results-language-help",
                  "title": "How Google knows what language to show in search results",
                  "url": "https://support.google.com/websearch/answer/13511324?hl=en",
                  "publisher": "Google Search Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C009",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Because a brand-only query does not reveal the user's language, Google sometimes struggles to show the right language version of a page for brand searches.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "results-language-help",
                  "title": "How Google knows what language to show in search results",
                  "url": "https://support.google.com/websearch/answer/13511324?hl=en",
                  "publisher": "Google Search Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C010",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Sites with several language versions should not leave brand searches to chance: annotate the versions with hreflang and offer a visible language switcher, because Google may have only the user's location and browser settings to choose a version.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "hreflang",
            "page-language",
            "query-understanding"
          ],
          "docs": [
            {
              "key": "localized-versions",
              "title": "Tell Google about localized versions of your page",
              "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "results-language-help",
              "title": "How Google knows what language to show in search results",
              "url": "https://support.google.com/websearch/answer/13511324?hl=en",
              "publisher": "Google Search Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "hreflang-annotation",
              "count": 9,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-04",
          "level": "MUST",
          "title": "Use valid hreflang codes: an ISO 639-1 language, an optional ISO 15924 script and an optional ISO 3166-1 Alpha-2 region",
          "why": "Common mistakes are country codes used as languages (se, dk and cz instead of sv, da and cs), wrong regions (UK instead of GB, SW instead of CH, GE instead of DE), regions that are not countries (EU, a city such as LA) and a region on its own (GB). Some mistakes are valid codes for something else (se is Northern Sami, GE is Georgia) and silently target the wrong audience.",
          "how": "Store each version as a language plus an optional script and region (sv-SE, de-CH, en-GB, zh-Hant, zh-Hans-CN), validate every value against the ISO 639-1, ISO 15924 and ISO 3166-1 Alpha-2 lists in a build check or crawler rule, and use x-default for everyone else. hreflang targets countries, not groups such as the EU.",
          "test": "An automated check confirms every value matches x-default or language[-Script][-REGION] (case-insensitive), with each part checked against ISO 639-1, ISO 15924 and ISO 3166-1 Alpha-2.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "hreflang-html",
          "claims": [
            {
              "id": "D2-C575",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "hreflang language codes must be ISO 639-1 codes: Google's list of common mistakes marked se, dk and cz (the country codes of Sweden, Denmark and Czechia) as wrong and sv, da and cs (Swedish, Danish, Czech) as right.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C576",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Swedish content for Sweden is marked sv-SE, not se-SE: the language part must be the Swedish language code sv, even though Sweden's country code is SE.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C578",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Czech is a frequent hreflang error: CZ is the country code and ccTLD of Czechia, but the language code for Czech is cs.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C579",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "hreflang region codes must be ISO 3166-1 Alpha-2 country codes; frequent mistakes are UK instead of GB for the United Kingdom, SW instead of CH for Switzerland and GE instead of DE for Germany.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C580",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "EU is not a valid hreflang region code: sites use it hoping to target the European Union, but hreflang targeting works only by country.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C581",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google also flagged LA used as a region code for Los Angeles (a city, not a country) and SA used for South Africa as wrong hreflang region codes.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C582",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A region code cannot be used on its own in hreflang: en and en-GB are valid values, but GB alone is not, because the value must name a language.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C583",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Validate hreflang values against the ISO 639-1 and ISO 3166-1 Alpha-2 lists in a crawler rule or build check rather than by eye: reserved codes such as UK and EU are simply ignored, but some plausible mistakes are valid codes for something else (se is Northern Sami, GE Georgia, LA Laos, SA Saudi Arabia) and silently point the annotation at the wrong audience.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C830",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's hreflang guide says the ISO 639-1 language code can be followed by a script in ISO 15924 format, such as zh-Hant or zh-Hans, and by an optional ISO 3166-1 Alpha-2 region code, as in zh-Hans-US.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C962",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google said incorrect hreflang language or region codes are a mistake it finds very often, with the same wrong codes coming up again and again, especially in Europe, because site owners assume the codes are easy.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "hreflang",
            "geotargeting"
          ],
          "docs": [
            {
              "key": "localized-versions",
              "title": "Tell Google about localized versions of your page",
              "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "hreflang-annotation",
              "count": 9,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-05",
          "level": "SHOULD",
          "title": "Supply hreflang through one method only: HTML head, HTTP Link header or sitemap",
          "why": "The three methods are equivalent; combining them brings no benefit in Search and is harder to manage, and Google often sees sites using two or three methods at once with conflicting annotations. The HTTP header suits non-HTML files such as PDFs, and the sitemap suits large sites.",
          "how": "Choose one method per site (or per file type), remove leftovers from plug-ins and earlier implementations, and keep the annotations consistent with the canonicals.",
          "test": "A crawl finds annotations in only one source per URL, and the hreflang sets from that source are complete.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "hreflang-sitemap",
          "claims": [
            {
              "id": "D2-C568",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Any one hreflang method is fine, but a site should use only one: Google often sees sites using two or three methods at the same time, with annotations that conflict.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C569",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's hreflang guide says its three methods (link elements in the HTML head, an HTTP Link header, which suits non-HTML files such as PDFs, and an XML sitemap) are equivalent; using several at once is allowed but brings no benefit in Search and is harder to manage.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C567",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "When the HTML head is not suitable for a page, hreflang can be given by other methods instead, such as listing the language versions in a sitemap.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "hreflang",
            "sitemaps"
          ],
          "docs": [
            {
              "key": "localized-versions",
              "title": "Tell Google about localized versions of your page",
              "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "hreflang-annotation",
              "count": 3,
              "own": true
            },
            {
              "id": "sitemap-file",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-06",
          "level": "MUST",
          "title": "Build language and market selectors as <a href> links to each alternate URL",
          "why": "A selector built as a button works for users but leaves the whole cluster of alternate-language pages without crawlable links, so the cluster is orphaned for Google and depends on sitemaps to be found, which is slow.",
          "how": "Render the selector as a list of <a href> links to the equivalent page in each version, not only to each version's homepage, and keep any visual dropdown on top of those real links.",
          "test": "The rendered HTML of any page contains <a href> links to every version of that page, and a crawl starting from one version reaches all the others.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C187",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A market or language selector built as a button works for users but leaves the whole cluster of alternate-language pages without crawlable links, so the cluster is orphaned for Google.",
              "quote": "The nav works perfectly for users, and the entire alternate-language cluster is orphaned.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "links-crawlable",
                  "title": "Link best practices for Google",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C189",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Build market and language selectors as plain <a href> links to each alternate URL, not buttons or script handlers; otherwise the language versions have no internal links and depend on sitemaps to be found, which is slow.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "crawlable-links",
            "page-language"
          ],
          "docs": [
            {
              "key": "links-crawlable",
              "title": "Link best practices for Google",
              "url": "https://developers.google.com/search/docs/crawling-indexing/links-crawlable",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "localized-versions",
              "title": "Tell Google about localized versions of your page",
              "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "sitemap-file",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-07",
          "level": "SHOULD",
          "title": "Make each page's language unambiguous by translating the template with the main content",
          "why": "Google determines a page's language from its content, not from hreflang or the URL, and stores one language per page, so mixed-language pages make that hard. Pages that translate only the template around untranslated main content still count as duplicates. Detecting the query's language is Google's first step for almost any query, and language and country are the first signals it uses to order candidates already at retrieval, before ranking, so a page whose language is unclear can drop out before ranking starts.",
          "how": "Translate the main content and the template (navigation, buttons, footer, legal notices, the text inside structured data) together, and avoid large blocks in a second language. Set the html lang attribute for browsers and assistive technology, knowing that Google relies on the visible content.",
          "test": "Run language detection over the main text and template strings of sampled pages per version, and review pages with untranslated components.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C585",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google determines a page's language for indexing from the page content, not from a language code in the URL.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C584",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google does not use hreflang to determine a page's language when indexing the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C587",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Pages that mix several languages make it very hard for Google to decide which language a page is in, so each page should make its target language obvious and avoid mixing languages.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "results-language-help",
                  "title": "How Google knows what language to show in search results",
                  "url": "https://support.google.com/websearch/answer/13511324?hl=en",
                  "publisher": "Google Search Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C589",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's hreflang guide says pages that translate only the template (navigation, footer) around main content in one language still count as duplicates, because localized versions are duplicates only if the main content stays untranslated; it recommends hreflang for such pages.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C588",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Scattered boilerplate in a second language is sometimes fine but still not recommended, partly because mixed languages on one page are odd for users.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C366",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Pages whose boilerplate, such as menu and footer, is translated while the main content is not are near matches: the main reason to visit is the same, so Google clusters them as duplicates.",
              "quote": "When main content is the same, pages may be clustered.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C590",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Because Google reads a page's language from its content and stores one language per page, translate templates (navigation, footer, buttons, legal notices) together with the main text; large untranslated blocks risk the page being annotated with the wrong language.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C006",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's first step in understanding almost any query is to detect its language, which tells Google roughly what content the user wants: a query in German suggests German content, a query in English English content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "results-language-help",
                  "title": "How Google knows what language to show in search results",
                  "url": "https://support.google.com/websearch/answer/13511324?hl=en",
                  "publisher": "Google Search Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "hsw-ranking-results",
                  "title": "Automatically generating and ranking results",
                  "url": "https://www.google.com/search/howsearchworks/how-search-works/ranking-results/",
                  "publisher": "Google Search (How Search Works)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C079",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To order candidates at retrieval, Google uses signals collected during indexing, and the first two are language and country.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C080",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "At retrieval, Google tries to match results to the user's language wherever possible: someone searching in Spanish does not necessarily want results in Italian.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C082",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Country is the second retrieval signal: a user searching from Switzerland wants cheese from Switzerland, not from Germany, and a user in Spain is poorly served by results targeting a South American country.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C086",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Make each page's language and target country unambiguous (one main language per page, hreflang between versions, local prices, addresses and shipping details), because Google applies language and country already at retrieval, before ranking.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "page-language",
            "main-content",
            "hreflang",
            "retrieval",
            "geotargeting",
            "duplicate-content",
            "indexing-signals",
            "localisation",
            "query-understanding"
          ],
          "docs": [
            {
              "key": "multi-regional-sites",
              "title": "Managing multi-regional and multilingual sites",
              "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "localized-versions",
              "title": "Tell Google about localized versions of your page",
              "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "results-language-help",
              "title": "How Google knows what language to show in search results",
              "url": "https://support.google.com/websearch/answer/13511324?hl=en",
              "publisher": "Google Search Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "hreflang-annotation",
              "count": 3,
              "own": true
            },
            {
              "id": "main-content-concept",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-08",
          "level": "SHOULD",
          "title": "Differentiate same-language country versions beyond boilerplate and mark them with region codes",
          "why": "Same-language content for different countries, such as German for Germany, Austria and Switzerland, is tricky for deduplication; Google tries to use hreflang alternates and recommends hreflang even for small regional variations. Without real differences, Google may cluster the versions and show only one.",
          "how": "Use hreflang with region codes (de-DE, de-AT, de-CH) and show country-specific prices and currency, shipping, legal details, addresses, phone numbers and regional vocabulary in the main content.",
          "test": "Main content differs between each pair of country versions beyond the header and footer, and URL Inspection shows each version as its own canonical.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C381",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Same-language content for different countries is tricky for Google's deduplication, notably German pages for Germany, Austria and Switzerland, and possibly Spanish-language variants.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C382",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "When localized pages are clustered, Google tries to use hreflang alternates; the speaker's short version of the advice was to use hreflang, which he called really helpful for same-language, different-country content.",
              "quote": "We try to use hreflang alternates.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C628",
              "day": 2,
              "session_id": "D2-S16",
              "session": "Lightning session G: Internationalisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's documentation recommends hreflang annotations even when a site's versions differ only by small regional variations within one language, for example English-language content targeted to the US, GB and Ireland.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "localized-versions",
                  "title": "Tell Google about localized versions of your page",
                  "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C385",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's canonical guide says that for canonicalization Google prefers URLs that are part of hreflang clusters: if German pages for Germany and Switzerland point to each other with hreflang but not to the Austrian page, the German and Swiss pages are preferred as canonicals.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "consolidate-duplicate-urls",
                  "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C632",
              "day": 2,
              "session_id": "D2-S16",
              "session": "Lightning session G: Internationalisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's documentation lists the signals it uses to decide which locale a page targets: ccTLDs, hreflang statements, server location, and other signals such as local addresses and phone numbers, local language and currency, links from other local sites and Business Profile signals.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C384",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For German-language sites serving Germany, Austria and Switzerland, add hreflang with region codes (de-DE, de-AT, de-CH) and make the country pages differ in more than boilerplate (prices, shipping, legal details), or expect Google to cluster them and show one.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "hreflang",
            "duplicate-content",
            "localisation",
            "geotargeting",
            "canonical-selection"
          ],
          "docs": [
            {
              "key": "localized-versions",
              "title": "Tell Google about localized versions of your page",
              "url": "https://developers.google.com/search/docs/specialty/international/localized-versions",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "multi-regional-sites",
              "title": "Managing multi-regional and multilingual sites",
              "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "hreflang-annotation",
              "count": 5,
              "own": true
            },
            {
              "id": "duplicate-content-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-09",
          "level": "MAY",
          "title": "Choose ccTLDs, subdomains or subdirectories by business needs, and never URL parameters",
          "why": "A ccTLD is one of the strongest country signals, but subdomains and subdirectories are acceptable too, and Google marks URL parameters such as ?loc=de as not recommended. A separate ccTLD is not necessarily better, and sites should not move their domain for that reason; availability, cost, local regulations and commitment to the market decide.",
          "how": "For new markets, subdirectories on the existing domain are usually the cheapest start; ccTLDs make sense where the business is committed and can operate locally. Whatever the choice, use one consistent pattern for every version.",
          "test": "The URL structure decision is recorded before the build, and every version follows the same pattern.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C594",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "For country versions of a site, a ccTLD, subdomains or subdirectories are all acceptable choices; the right one depends on the site's needs, goals and resources.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C595",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's table of URL structures for country targeting gives pros and cons for a country-specific domain (example.de), a subdomain (de.example.com) and a subdirectory (example.com/de/) on a generic domain, and marks URL parameters (site.com?loc=de) as not recommended.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C596",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A separate ccTLD for each country version is not necessarily better, even though the ccTLD is one of the strongest country signals, and sites should not move their domain for that reason.",
              "quote": "Don't try to move your domain now.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C597",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Whether to use ccTLDs depends on whether the domain can be obtained, what it costs, local laws or regulations, and how committed the business is to expanding in that country.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C591",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The ccTLD (country-code top-level domain) is one of the most important and strongest signals Google uses to decide which country a site targets; Google also considers other signals, which matter less.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multi-regional-sites",
                  "title": "Managing multi-regional and multilingual sites",
                  "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C598",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For a business testing new countries, subdirectories on the existing domain are usually the cheapest start; a ccTLD's stronger country signal pays off only where domain availability, cost, local rules and long-term commitment justify it, and an established domain should not be moved just for the signal.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "geotargeting",
            "site-moves"
          ],
          "docs": [
            {
              "key": "multi-regional-sites",
              "title": "Managing multi-regional and multilingual sites",
              "url": "https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-INT-10",
          "level": "SHOULD",
          "title": "Publish machine-translated language versions only after human review and localisation",
          "why": "Google's spam policies count generating many pages mainly to manipulate rankings, with little or no value to users, as scaled content abuse however they are made, and list automated translating of scraped content among the examples. Said at Search Central Live: whether machine-translated content is acceptable depends on the case, after weighing translation quality, local conventions such as date formats and calendars, and cultural adaptation.",
          "how": "Route translation plug-in and CMS auto-translate output through a review workflow before publishing: a native speaker checks the text, and dates, calendars, units, currencies and examples are adapted to the market. Keep unreviewed versions unpublished or noindexed, and do not generate a language version for every market by default.",
          "test": "Every published language version has a reviewer and a review date recorded in the CMS, and no auto-translated page is indexable before review.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C611",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's spam policies define scaled content abuse as generating many pages mainly to manipulate rankings, with little or no value to users, no matter how they are created, and list automated translating of scraped content among the examples.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C608",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Whether machine-translated content is acceptable depends on the case and is the site owner's decision, after weighing three things machine translation can miss: translation quality, local conventions and cultural adaptation.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C612",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Treat machine translation as a first draft: have a native speaker review it and adapt dates, calendars and units before publishing, because unreviewed bulk translation that adds little value can also fall under Google's scaled content abuse policy.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C692",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The lower selection bar in under-served languages is an opening for content written for that market, not for machine translation at scale: index selection also applies spam signals, and Google's spam policies count generating many pages from scraped content through automated transformations such as translating, with little value for users, as scaled content abuse.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C610",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Localisation should account for local conventions such as date formats, which differ between Europe, the UK, the US and other countries, and calendars (in Thailand the current year is 2569), or a date can point users to the wrong day.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "localisation",
            "spam-detection",
            "index-selection"
          ],
          "docs": [
            {
              "key": "spam-policies",
              "title": "Spam policies for Google web search",
              "url": "https://developers.google.com/search/docs/essentials/spam-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "scaled-content-abuse",
              "count": 3,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-INT-11",
          "level": "SHOULD",
          "title": "Write pages in the words, spellings and script the audience searches with, and never add synonym or variant lists",
          "why": "Google expands almost every query with synonyms, treats spellings with and without diacritics as the same behind the scenes, and recognises an English term and its local-language equivalent as one thing, so a page needs neither every synonym nor both spellings. Blocks of keyword variants read as keyword stuffing, which Google's spam policies prohibit. Said at Search Central Live: users expect text written the way they search, which differs by language and script; Hindi users, for example, search both in Devanagari and in Latin letters.",
          "how": "Keep editors' wording as written in the CMS: do not strip diacritics from titles, headings or body text, and do not auto-append synonym, misspelling or transliteration blocks, hidden keyword fields or tag clouds. Where an audience searches in two scripts or spellings, choose the form per market from real query data instead of duplicating the page. Use another name for a term only where readers might not understand otherwise.",
          "test": "Search Console's Performance report shows which spellings and scripts users type for key terms; searching each variant on Google shows whether Google treats them as the same thing; a template audit finds no generated synonym or variant lists.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C023",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Site owners do not need to list all synonyms of a term on a page, because Google already knows the synonyms and looks for them on pages too.",
              "quote": "you don't have to do that SEO meme of, like, list all the synonyms on your page",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "seo-starter-guide",
                  "title": "Search Engine Optimization (SEO) Starter Guide",
                  "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C042",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Where Google recognises an English term and its local-language equivalent as synonyms, a page does not need to contain both.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "seo-starter-guide",
                  "title": "Search Engine Optimization (SEO) Starter Guide",
                  "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C044",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When Google already matches a term's variants, there is no need to add them to pages artificially; mention another name only where visitors might not understand otherwise.",
              "quote": "I wouldn't artificially just stuff those variations in there.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "seo-starter-guide",
                  "title": "Search Engine Optimization (SEO) Starter Guide",
                  "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C048",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google generally treats spellings with and without diacritics as synonyms behind the scenes, for example a German 'ü' written as 'ü', as 'ue' or left out.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "accented-characters-blog",
                  "title": "How search results may differ based on accented characters and interface languages",
                  "url": "https://developers.google.com/search/blog/2006/08/how-search-results-may-differ-based-on",
                  "publisher": "Search Central blog (1 September 2006)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C050",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's recommendation for diacritics, non-English words, product names and spelling variants is to focus first on what users actually search for.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "seo-starter-guide",
                  "title": "Search Engine Optimization (SEO) Starter Guide",
                  "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C051",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Users expect content written the way they search: in some languages they search in Latin characters, in others in the local script, and Hindi users, for example, search both in Hindi and in Latin letters.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": []
            },
            {
              "id": "D3-C024",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Write each page in the words its audience uses and drop synonym lists added for search engines: Google adds synonyms at query time, and blocks of keyword variants read as keyword stuffing, which Google's spam policies prohibit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C055",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For audiences that type the same words in two scripts or spellings (Hindi in Devanagari and in Latin letters, German with and without umlauts), check which forms appear in Search Console's queries and use those forms in headings and key text.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C965",
              "day": 2,
              "session_id": "D2-S16",
              "session": "Lightning session G: Internationalisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Users of non-Latin-script languages do not always search in their own script: the same Persian query may be typed in Persian script or in Latin letters, with the same intent and the same expected results.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "multilingual-searches-blog",
                  "title": "How Google Search handles multilingual searches",
                  "url": "https://developers.google.com/search/blog/2023/09/multilingual-searches",
                  "publisher": "Search Central blog (8 September 2023)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C981",
              "day": 2,
              "session_id": "D2-S16",
              "session": "Lightning session G: Internationalisation",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's post on multilingual searches (8 September 2023) says that, because of typing difficulty on some keyboards, a person in India might search in Hindi using Latin rather than Devanagari characters and want and receive Hindi results written either way.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (8 September 2023)",
              "speaker": null,
              "sources": [
                {
                  "key": "multilingual-searches-blog",
                  "title": "How Google Search handles multilingual searches",
                  "url": "https://developers.google.com/search/blog/2023/09/multilingual-searches",
                  "publisher": "Search Central blog (8 September 2023)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "query-understanding",
            "non-latin-scripts",
            "helpful-content",
            "localisation"
          ],
          "docs": [
            {
              "key": "seo-starter-guide",
              "title": "Search Engine Optimization (SEO) Starter Guide",
              "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "accented-characters-blog",
              "title": "How search results may differ based on accented characters and interface languages",
              "url": "https://developers.google.com/search/blog/2006/08/how-search-results-may-differ-based-on",
              "publisher": "Search Central blog (1 September 2006)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "spam-policies",
              "title": "Spam policies for Google web search",
              "url": "https://developers.google.com/search/docs/essentials/spam-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-INT-12",
          "level": "SHOULD",
          "title": "Mark the text direction of right-to-left and mixed-script titles, product names and URLs",
          "why": "Said at Search Central Live by a community speaker: Persian and Arabic run right to left and English left to right, so a title, product name or URL that mixes the two can display in a confusing, unpredictable order even when its content is correct.",
          "how": "Set lang and dir=\"rtl\" on the html element of right-to-left pages, wrap embedded left-to-right fragments (brand names, model numbers) in bdi or an element with dir=\"ltr\" or dir=\"auto\", and generate titles so the main language comes first. Keep URL slugs in one script per language.",
          "test": "Review the title, h1 and product names of key right-to-left templates in a browser and in search results: words, numbers and punctuation appear in the intended order.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C963",
              "day": 2,
              "session_id": "D2-S16",
              "session": "Lightning session G: Internationalisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Persian and Arabic are written right to left and English left to right, so a title that mixes the two scripts can display in a confusing, unpredictable order even when its content is correct.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C964",
              "day": 2,
              "session_id": "D2-S16",
              "session": "Lightning session G: Internationalisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "The display problem of mixing right-to-left and left-to-right text also affects product titles and URLs, the presenter of the non-Latin-script talk said, showing an example from a large Iranian e-commerce site.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "non-latin-scripts",
            "localisation"
          ],
          "docs": [],
          "entities": []
        }
      ]
    },
    {
      "id": "page-structure-html",
      "title": "Page structure and HTML",
      "intro": "Google parses each page into a DOM, tells header, navigation, main content and footer apart, and weighs words by where they appear. Templates decide whether the main content is easy to find and whether controls in the HTML work as intended.",
      "requirements": [
        {
          "id": "DEV-HTM-01",
          "level": "SHOULD",
          "title": "Wrap each page's primary content in one clearly delimited main area",
          "why": "Google extracts every element to tell header, navigation and main content apart, treats the main content as very important and clusters pages by it. A page that uses a different template can be reported as \"Crawled - currently not indexed\" because Google cannot tell where its content is, even when its quality matches indexed pages.",
          "how": "Use semantic landmarks: header, nav, one main (with article where it fits), aside and footer. Main content is any part that directly helps the page achieve its purpose: text, images, video, a tool, user-generated content such as comments or reviews, content in tabs, every heading and the visible title; Gary Illyes said it is what Google considers when ranking a page, and that what a site puts in its navigation or header tells Google the site does not particularly care about that content. Keep the h1, the opening paragraph, key images and the facts the page is about inside main, near the top, and use the same structure across templates of one type.",
          "test": "Template validation finds one main element per page, with the page's h1 inside it; the rendered HTML in URL Inspection shows the main text inside main; the DevTools accessibility tree shows the landmarks.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "semantic-page-template",
          "claims": [
            {
              "id": "D2-C028",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google extracts every element of a page so that it can tell the header, the navigation and the main content apart, and a slide labelled the main content as very important.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C309",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A Google slide labelled the parts of an example blog page, marking the header and the navigation as not so important and the main content as very important.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C310",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's canonicalization guide says that when Google indexes a page it determines the page's primary content, which it also calls the centerpiece, and clusters pages whose primary content is the same or very similar.",
              "quote": "When Google indexes a page, it determines the primary content (or centerpiece) of each page.",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C713",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "If content quality is even across a site, a page reported as 'Crawled – currently not indexed' may be using a different template that keeps Google from understanding where its content is.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C029",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Make the main content of every template easy to separate from the header, navigation and footer, for example as one clearly delimited main area, because Google identifies the main content and treats it as the most important part of the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C861",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes said that whatever a site puts in its navigation or header tells Google the site does not particularly care about that content: it may help users do something on the side, but it is not what the page wants them to do, read or take away.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C862",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Gary Illyes defined a page's main content as any part of the page that directly helps the page achieve its purpose, what it was built for.",
              "quote": "Main content is any part of the page that directly helps the page achieve its purpose",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C863",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Main content is not only text: images, videos, a tool or anything else that helps a page achieve its purpose can be main content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C864",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Content created by other users can be main content: on a user-generated content site, the user-generated content can be the page's main content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C865",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A comment section below a blog post can still be part of the page's main content and can contribute to Google's understanding of the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C867",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A page's main content includes all of its headings and its visible title.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "search-essentials",
                  "title": "Google Search Essentials",
                  "url": "https://developers.google.com/search/docs/essentials",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C868",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes said the main content is what Google considers when ranking a page.",
              "quote": "It's the main content that we consider for ranking.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "search-essentials",
                  "title": "Google Search Essentials",
                  "url": "https://developers.google.com/search/docs/essentials",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization",
                  "title": "What is canonicalization",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C870",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Search Quality Rater Guidelines define main content as any part of the page that directly helps it achieve its purpose, including text, images, videos, page features such as calculators and content created by users, and they count the title at the top of the page as part of it.",
              "quote": "Main Content is any part of the page that directly helps the page achieve its purpose.",
              "quote_checked": false,
              "credit": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
              "speaker": null,
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C871",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Search Quality Rater Guidelines say navigation links are a common type of supplementary content, and that content behind tabs and user reviews or comments may count as main content on some pages and as supplementary content on others, depending on the page's purpose.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
              "speaker": null,
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "main-content",
            "search-quality-evaluation",
            "indexing-pipeline",
            "duplicate-content",
            "page-indexing-report",
            "ranking-systems"
          ],
          "docs": [
            {
              "key": "canonicalization",
              "title": "What is canonicalization",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "how-search-works",
              "title": "In-depth guide to how Google Search works",
              "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "rater-guidelines",
              "title": "General Guidelines",
              "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
              "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "main-content-concept",
              "count": 12,
              "own": true
            },
            {
              "id": "search-quality-raters",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-HTM-02",
          "level": "SHOULD",
          "title": "Place the words a page should rank for in its main content, not in footers or sidebars",
          "why": "Google weighs words by the part of the page they appear in, and where text sits already contributes quite a bit to ranking. Said at Search Central Live: words in the footer get a lower weight, so footer keyword blocks add little.",
          "how": "Give editors template fields for the title, h1, introduction and subheadings inside the main area, and drop footer or sidebar keyword blocks and tag clouds used to add terms.",
          "test": "Per template, the target terms appear in the title, the h1 and the first paragraph, and footers contain no keyword blocks.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C312",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When Google processes a page for indexing, it gives words different weights depending on the part of the page where they appear.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "search-essentials",
                  "title": "Google Search Essentials",
                  "url": "https://developers.google.com/search/docs/essentials",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C315",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To make a word count for ranking a page, Gary Illyes said the simplest step is to move it into the main content, because where text sits on a page already contributes quite a bit to ranking.",
              "quote": "where you position text on a page will already contribute quite a bit to ranking that page",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "search-essentials",
                  "title": "Google Search Essentials",
                  "url": "https://developers.google.com/search/docs/essentials",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C313",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Words in the footer of a page get a lower weight, so text placed in the footer is unlikely to contribute much to ranking the page.",
              "quote": "if you put something in a footer, it's more likely that it's not going to contribute much to ranking",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C314",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "On Google's example blog page, the post title and opening sentence counted as important because they sit in the main content, in front of the user, while the site tagline, the 'Categories' sidebar and category links such as 'Hugo (7)' counted as less important supplementary text.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "helpful-content",
                  "title": "Creating helpful, reliable, people-first content",
                  "url": "https://developers.google.com/search/docs/fundamentals/creating-helpful-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C317",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Put the terms a page should rank for in its main content (title, headings, opening paragraphs) rather than only in sidebars, tag lists or footers; footer keyword blocks are unlikely to add ranking value.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "main-content",
            "helpful-content",
            "tokenization"
          ],
          "docs": [
            {
              "key": "search-essentials",
              "title": "Google Search Essentials",
              "url": "https://developers.google.com/search/docs/essentials",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "seo-starter-guide",
              "title": "Search Engine Optimization (SEO) Starter Guide",
              "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "main-content-concept",
              "count": 3,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-HTM-03",
          "level": "MUST",
          "title": "Give every indexable page a unique, descriptive title element in the server HTML",
          "why": "Indexing analyses a page's text and key tags such as the title element, and snippets come mainly from the page content and sometimes from the meta description. A community speaker showed a site whose rendered meta description contained HTML tags, a sign of a broken process. Google generates title links and snippets from its understanding of the page even when the site provides nothing extra, and it notices a changed title only after recrawling and reprocessing the page, which its title link guide says takes a few days to a few weeks.",
          "how": "Generate the title on the server from the page's own data, with no placeholders, no HTML and no duplicates across a template, and keep it descriptive and specific to the page. You should also generate a plain-text meta description per page in the same way: Google builds snippets mainly from the page content and uses the description only sometimes, but a broken one still reaches results.",
          "test": "A crawl finds no missing, duplicate, empty or placeholder titles, and no meta description that contains < or > or a placeholder.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C445",
              "day": 2,
              "session_id": "D2-S11",
              "session": "Finding the gold nuggets: structured data, media, and more!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to how Search works says rendering happens during the crawl, and describes indexing as analysing a page's text, key tags and attributes such as title elements and alt attributes, images and videos, and deciding whether the page is a duplicate or the canonical.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C725",
              "day": 2,
              "session_id": "D2-S23",
              "session": "How does the index look like?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's snippet documentation says snippets are created automatically, primarily from the page content, to preview the part that best relates to the user's specific search, so one page can get different snippets for different searches; sometimes the meta description is used instead.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "snippets-guide",
                  "title": "Control your snippets in search results",
                  "url": "https://developers.google.com/search/docs/appearance/snippet",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C142",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "One site that builds its whole content by rendering also rendered its meta description with HTML tags inside it, which makes no sense and points to a flawed process.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D3-C316",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google generates the parts of a text result, such as title link and snippet, from its understanding of the underlying web page, even when the site owner provides nothing extra.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "title-links",
                  "title": "Influencing your title links in search results",
                  "url": "https://developers.google.com/search/docs/appearance/title-link",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "snippets-guide",
                  "title": "Control your snippets in search results",
                  "url": "https://developers.google.com/search/docs/appearance/snippet",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C657",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google estimated that a title update takes as long as a snippet update: 1-2 days on average, up to several weeks to months.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "title-links",
                  "title": "Influencing your title links in search results",
                  "url": "https://developers.google.com/search/docs/appearance/title-link",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C675",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's title link guide says Google has to recrawl and reprocess a page to notice changes to the sources of its title link, which may take a few days to a few weeks.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "title-links",
                  "title": "Influencing your title links in search results",
                  "url": "https://developers.google.com/search/docs/appearance/title-link",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C858",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Search engines such as Google and Bing would ignore HTML tags written inside a meta description, a community speaker said.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            }
          ],
          "topics": [
            "snippet-controls",
            "javascript-seo",
            "pipeline-overview",
            "processing-times",
            "indexing-pipeline",
            "index-structure",
            "serp-anatomy"
          ],
          "docs": [
            {
              "key": "how-search-works",
              "title": "In-depth guide to how Google Search works",
              "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "snippets-guide",
              "title": "Control your snippets in search results",
              "url": "https://developers.google.com/search/docs/appearance/snippet",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "seo-starter-guide",
              "title": "Search Engine Optimization (SEO) Starter Guide",
              "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "title-links",
              "title": "Influencing your title links in search results",
              "url": "https://developers.google.com/search/docs/appearance/title-link",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "snippets",
              "count": 3,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-HTM-04",
          "level": "SHOULD",
          "title": "Use semantic, accessible HTML: real buttons, labelled forms and a logical heading order",
          "why": "Google's guide for generative AI features says browser agents may read a site through screenshots, the DOM and the accessibility tree, and recommends semantic HTML; attendees were also told to check ARIA and accessibility, and a community speaker added that an unlabelled div tells an agent nothing about its purpose and that no ARIA is better than bad ARIA. Google has not called accessibility a ranking signal, and its SEO Starter Guide says headings out of order help screen readers less but do not matter to Google Search.",
          "how": "Buttons are button elements and links are a elements with href; form fields have labels; headings follow a logical h1 to h3 order; images have alt text; ARIA roles are used only where no native element exists, and only when they are correct (a div acting as a toggle gets role=button, an aria-label and aria-pressed). Avoid layout shifts that move buttons after load. Do not block agents you want to allow (DEV-AIF-04).",
          "test": "An axe or Lighthouse accessibility audit runs in CI on key templates, plus a keyboard-only and screen-reader check of navigation, forms and checkout.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C131",
              "day": 1,
              "session_id": "D1-S00",
              "session": "Day 1, session not recorded",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide for generative AI features says browser agents may read a site through screenshots, the DOM structure and the accessibility tree, and recommends semantic HTML because it helps users such as screen reader users navigate a page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C118",
              "day": 1,
              "session_id": "D1-S00",
              "session": "Day 1, session not recorded",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Attendees were told to check ARIA and accessibility.",
              "quote": "",
              "quote_checked": false,
              "credit": "a speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C465",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gemini in Chrome relies heavily on the screenshot it takes of a page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C119",
              "day": 1,
              "session_id": "D1-S00",
              "session": "Day 1, session not recorded",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Google has not called ARIA a ranking signal. The case for it is that AI agents and assistive tools read pages through the same structure: real buttons, labelled forms and semantic headings.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C274",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker said AI agents understand a page through a combination of three inputs: a screenshot, the DOM (the HTML plus the changes rendered by JavaScript) and the accessibility tree.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C277",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker advised keeping headings inside the main content in a logical hierarchy (title, section subtitles, subsections) so agents can follow its structure, avoiding several H1 elements and skipped levels such as an H3 followed directly by an H5.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "web-dev-content-structure",
                  "title": "Content structure",
                  "url": "https://web.dev/learn/accessibility/structure",
                  "publisher": "web.dev (Google)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C278",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker said a block of content without semantic HTML or landmarks is just a div whose purpose an agent cannot tell, and recommended landmark elements (header, nav, main, article for independent sections, footer) plus p and h1-h6 for text.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "web-dev-content-structure",
                  "title": "Content structure",
                  "url": "https://web.dev/learn/accessibility/structure",
                  "publisher": "web.dev (Google)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C279",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker described ARIA (Accessible Rich Internet Applications) as a set of attributes, not a programming language, that adds accessibility information to HTML: a div used as an 'add to favourites' button can get role=button, an aria-label and aria-pressed set to true or false.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "web-dev-aria-html",
                  "title": "ARIA and HTML",
                  "url": "https://web.dev/learn/accessibility/aria-html",
                  "publisher": "web.dev (Google)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C280",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker warned that no ARIA is better than bad ARIA: wrong or confusing ARIA attributes do more harm than leaving them out.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "web-dev-aria-html",
                  "title": "ARIA and HTML",
                  "url": "https://web.dev/learn/accessibility/aria-html",
                  "publisher": "web.dev (Google)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C313",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's SEO Starter Guide says headings in semantic order help screen readers but do not matter to Google Search if used out of order, and that there is no ideal number of headings for a page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "seo-starter-guide",
                  "title": "Search Engine Optimization (SEO) Starter Guide",
                  "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "accessibility",
            "ai-crawlers-and-agents",
            "main-content",
            "gemini-and-search"
          ],
          "docs": [
            {
              "key": "ai-optimization-guide",
              "title": "Optimizing your website for generative AI features on Google Search",
              "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "web-dev-aria-html",
              "title": "ARIA and HTML",
              "url": "https://web.dev/learn/accessibility/aria-html",
              "publisher": "web.dev (Google)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "web-dev-content-structure",
              "title": "Content structure",
              "url": "https://web.dev/learn/accessibility/structure",
              "publisher": "web.dev (Google)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "seo-starter-guide",
              "title": "Search Engine Optimization (SEO) Starter Guide",
              "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-HTM-05",
          "level": "SHOULD",
          "title": "Write valid HTML and close every element",
          "why": "Valid HTML is technically not a ranking factor, but it matters for controls such as data-nosnippet, where an unclosed element can extend the rule to the rest of the page. Parsing turns the HTML into a DOM tree, and broken markup changes what ends up where.",
          "how": "Lint templates in CI with html-validate or the W3C Nu checker, and fix unclosed elements, invalid nesting and stray elements in the head: a parser ends the head at the first element that does not belong there, which pushes later meta tags into the body, and Google stops reading head elements after the first invalid one.",
          "test": "The validator reports no errors on key templates, and the robots meta tag, canonical and hreflang appear inside head in the parsed DOM.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C080",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller said valid HTML is technically not a ranking factor but does matter for controls such as data-nosnippet.",
              "quote": "valid HTML is technically not an SEO ranking factor, but it does play a role",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "seo-starter-guide",
                  "title": "Search Engine Optimization (SEO) Starter Guide",
                  "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C078",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Broken HTML can widen data-nosnippet: if a div marked data-nosnippet is not closed properly, the rest of the page can be blocked from the snippet as well.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C027",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "The HTML parsing step turns a fetched page's HTML into a Document Object Model (DOM) tree of elements, attributes and text nodes.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C831",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's page on valid page metadata says that once Google detects an invalid element in the head, it assumes the head has ended and stops reading further elements there; only title, meta, link, script, style, base, noscript and template elements belong in the head.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "valid-page-metadata",
                  "title": "Use valid HTML to specify page metadata",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/valid-page-metadata",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            }
          ],
          "topics": [
            "snippet-controls",
            "indexing-pipeline",
            "robots-meta-tag"
          ],
          "docs": [
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "seo-starter-guide",
              "title": "Search Engine Optimization (SEO) Starter Guide",
              "url": "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "valid-page-metadata",
              "title": "Use valid HTML to specify page metadata",
              "url": "https://developers.google.com/search/docs/crawling-indexing/valid-page-metadata",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "data-nosnippet",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-HTM-06",
          "level": "AVOID",
          "title": "Never hide text from users, such as white-on-white or off-screen keyword blocks",
          "why": "Hidden text is against Google's spam policies, and sites that violate them may rank lower or not appear at all. Said at Search Central Live: Google records spam metadata such as white-on-white text with a page's tokens, so leftover hidden keyword blocks are a liability rather than neutral clutter.",
          "how": "Remove hidden keyword blocks, text in the background colour and text positioned off-screen for search engines. Legitimately hidden interface content (tabs, accordions, screen-reader-only labels) is fine.",
          "test": "A crawl with a style check finds no text whose colour matches its background and no off-screen or display:none blocks outside accessibility helpers and UI components.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C324",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google also stores spam metadata with the tokens of a page, for example that text was white on a white background, so ranking can use that information.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C343",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Hidden text is recorded at token level: Google stores spam metadata such as white-on-white text with the tokens, so leftover hidden keyword blocks are a liability, not neutral clutter, and should be removed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C667",
              "day": 2,
              "session_id": "D2-S19",
              "session": "Calculating (some) signals",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's spam policies say that sites violating them may rank lower in results or not appear in results at all.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "spam-detection",
            "tokenization"
          ],
          "docs": [
            {
              "key": "spam-policies",
              "title": "Spam policies for Google web search",
              "url": "https://developers.google.com/search/docs/essentials/spam-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-HTM-07",
          "level": "MAY",
          "title": "Use real heading, title and emphasis elements instead of styling alone",
          "why": "Said at Search Central Live: when Google tokenizes a page for its index it attaches metadata to each word, such as whether it appeared in the page header, the main content, a heading or in bold. Text that only looks like a heading or bold text through CSS does not carry that information.",
          "how": "Put the page title in the title element, the visible title in an h1 and section titles in h2 to h6 elements, mark important terms with strong or b rather than CSS font-weight on spans, and keep emphasis sparing so it still means something.",
          "test": "Template review or an HTML lint rule finds no headings or emphasis built from styled div or span elements.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C323",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "When tokenizing for Search, Google attaches metadata to each token for use in ranking, such as whether the word appeared in the header or in the main content (tagged 'centerpiece' on the slide), in bold or in a heading; Gary Illyes said he was not showing all of the metadata.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C720",
              "day": 2,
              "session_id": "D2-S23",
              "session": "How does the index look like?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's Search index stores the tokens produced by tokenizing each page, as they are, together with the metadata attached to the tokens during tokenization.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "tokenization",
            "index-structure",
            "main-content"
          ],
          "docs": [],
          "entities": [
            {
              "id": "main-content-concept",
              "count": 1,
              "own": true
            },
            {
              "id": "tokenization-concept",
              "count": 1,
              "own": false
            }
          ]
        }
      ]
    },
    {
      "id": "structured-data",
      "title": "Structured data",
      "intro": "Structured data makes pages eligible for rich results, gives Google precise facts such as prices, dates and identifiers more cheaply and accurately than model-based extraction, and the same processed data feeds classic results and AI features. It must describe what users can see.",
      "requirements": [
        {
          "id": "DEV-SDA-01",
          "level": "SHOULD",
          "title": "Write structured data as JSON-LD by default",
          "why": "Google accepts JSON-LD, microdata and RDFa and interprets them identically, but recommends JSON-LD because one contiguous block is easier to author and people make fewer mistakes with it. Said at Search Central Live: microdata can save payload where page weight is critical.",
          "how": "Render JSON-LD on the server in a script type=\"application/ld+json\" block generated from the same data as the visible page, one block per entity or a single @graph. Switch to microdata only for very weight-sensitive templates.",
          "test": "The Rich Results Test on one URL per template detects the expected items without errors, and the JSON-LD is present in the raw HTML (curl).",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "product-jsonld",
          "claims": [
            {
              "id": "D2-C495",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google recommends JSON-LD because it is one contiguous block that is easier to author, so people make fewer mistakes with it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C494",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google accepts three structured data syntaxes, JSON-LD, microdata and RDFa, which are all valid and are extracted at the very start into the same pipelines, so they are interpreted identically downstream.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C496",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Microdata has an advantage when payload size matters: embedded in the existing HTML, it avoids duplicating the page content in a separate JSON-LD block.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C497",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Default to JSON-LD and switch to microdata only where page weight is critical, since Google interprets all three syntaxes identically and JSON-LD is the one people get wrong least often.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "structured-data-implementation"
          ],
          "docs": [
            {
              "key": "intro-structured-data",
              "title": "Introduction to structured data markup in Google Search",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "json-ld",
              "count": 4,
              "own": true
            },
            {
              "id": "structured-data-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SDA-02",
          "level": "MUST",
          "title": "Mark up only content that is visible on the page and relevant to it",
          "why": "Google's guidelines say not to mark up content that readers cannot see, even if it is accurate. Irrelevant structured data can be treated as abusive: filters make it ineffective, and egregious cases lead to a manual action that removes rich result eligibility without affecting web ranking. Google said at Search Central Live that once it sees markup it does not trust from a site, it may stop using that site's structured data altogether.",
          "how": "Generate markup from the same fields that render the visible content, use it for the machine-precise form of visible facts (an ISO date for a shown date, the homepage url for a named organisation), and remove markup for content a page no longer shows.",
          "test": "For each template, the Rich Results Test output matches what the page visibly shows, and the Manual actions report in Search Console is empty.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C467",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's structured data documentation says not to mark up content that is not visible to readers of the page, and not to add structured data about information that users cannot see even if it is accurate.",
              "quote": "don't add structured data about information that is not visible to the user, even if the information is accurate",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C500",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Structured data that is not relevant to the page's content can be treated as abusive: Google's filters make it ineffective, and egregious cases can lead to a manual action.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C501",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's general structured data guidelines say a structured data manual action removes a page's eligibility for rich results but does not affect how the page ranks in web search.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C468",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The 'non-visible metadata' argument is not a licence to mark up hidden content, since Google's structured data guidelines still require markup to describe what users can see; use markup for the machine-precise form of facts the page shows, such as a full ISO date with time zone for a visible event date or a homepage url for a named organisation.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C647",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google may never use structured data from a site it does not trust: once it sees markup it does not trust, it does not touch it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "structured-data-implementation",
            "structured-data",
            "rich-results"
          ],
          "docs": [
            {
              "key": "structured-data-guidelines",
              "title": "General structured data guidelines",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "intro-structured-data",
              "title": "Introduction to structured data markup in Google Search",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "structured-data-concept",
              "count": 5,
              "own": true
            },
            {
              "id": "rich-results-feature",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SDA-03",
          "level": "SHOULD",
          "title": "Choose the specific types Google documents for its features, and skip generic or irrelevant ones",
          "why": "Google uses schema.org but mostly consumes the subsets its documentation declares, and a very generic type says little and is hard to use. Pick the types relevant to the page instead of every type Google is interested in; extra relevant markup is never penalised, and Google also retires little-used features.",
          "how": "Start from Google's Search gallery, map each template to its types and their required and recommended properties, describe each entity with the most specific type, and do not spend effort marking up every semantic detail. Revisit the list when Google adds or retires features.",
          "test": "The Rich Results Test lists the intended features per template, and Search Console shows an enhancement report for each type in use.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C490",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google recommends using the Search gallery in its developer documentation to find the structured data features that suit a site; the gallery shows each feature and how Google uses the markup.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "search-gallery",
                  "title": "Structured data markup that Google Search supports",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/search-gallery",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C487",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google uses schema.org as its markup vocabulary but mostly consumes only the subsets that its developer documentation declares, for the features it builds.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C486",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Marking something up with only a very generic schema.org type says little about it and is very hard for Google to use.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C492",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Pick only the structured data types that are relevant to a page instead of adding every type Google is interested in.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C489",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Describing every semantic detail of a page in markup is probably not worth the effort; focus on the structured data that Google or other consumers actually use.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C488",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google will never penalise a site just for having more structured data on its pages than Google uses; extra markup does not hurt.",
              "quote": "we will never penalize you for having more structured data on your pages",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C522",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google keeps adding structured data features and recommendations but also removes them: in the previous year (2025) it removed several features that brought little benefit and were little used.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "simplifying-serp-blog",
                  "title": "Simplifying the search results page",
                  "url": "https://developers.google.com/search/blog/2025/06/simplifying-search-results",
                  "publisher": "Search Central blog (12 June 2025)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            }
          ],
          "topics": [
            "structured-data-implementation",
            "schema-org",
            "rich-results"
          ],
          "docs": [
            {
              "key": "search-gallery",
              "title": "Structured data markup that Google Search supports",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/search-gallery",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "intro-structured-data",
              "title": "Introduction to structured data markup in Google Search",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "structured-data-guidelines",
              "title": "General structured data guidelines",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "simplifying-serp-blog",
              "title": "Simplifying the search results page",
              "url": "https://developers.google.com/search/blog/2025/06/simplifying-search-results",
              "publisher": "Search Central blog (12 June 2025)",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "structured-data-concept",
              "count": 5,
              "own": false
            },
            {
              "id": "schema-org-vocabulary",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SDA-04",
          "level": "SHOULD",
          "title": "Identify entities with unique identifiers: url, @id and stable IDs",
          "why": "A unique identifier, such as the homepage URL in an organisation's url property, lets Google tell which specific entity is meant instead of reading a bare name. Said at Search Central Live: markup can also carry stable identifiers that the visible text lacks, for example for user-generated content.",
          "how": "Give the Organization a url (the homepage) and a logo and reference it by @id from other blocks; give products sku or gtin values; give each entity a stable @id URL with a fragment (https://www.example.com/#organization) and keep it constant across pages and releases.",
          "test": "The Rich Results Test shows url and @id on the Organization and other entities, and the @id values are identical on every page.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "organization-jsonld",
          "claims": [
            {
              "id": "D2-C502",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Use unique identifiers in structured data, for example the homepage URL in an organisation's url property, so Google can tell which specific entity is meant rather than reading just a name string.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "organization-sd",
                  "title": "Organization (Organization) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/organization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C463",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Structured data often carries non-visible metadata that the page text lacks, such as full ISO dates or stable identifiers for user-generated content.",
              "quote": "It often contains non-visible metadata, such as full ISO dates or stable identifiers for UGC, that is not present in the page text.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C468",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The 'non-visible metadata' argument is not a licence to mark up hidden content, since Google's structured data guidelines still require markup to describe what users can see; use markup for the machine-precise form of facts the page shows, such as a full ISO date with time zone for a visible event date or a homepage url for a named organisation.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "structured-data",
            "structured-data-implementation"
          ],
          "docs": [
            {
              "key": "organization-sd",
              "title": "Organization (Organization) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/organization",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "structured-data-concept",
              "count": 3,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-SDA-05",
          "level": "SHOULD",
          "title": "Write dates in ISO 8601 and give every date-time a UTC offset",
          "why": "A full ISO 8601 value in markup disambiguates a visible date whose local time zone Google might not detect correctly, and date formats also differ between countries; this matters for event extraction and wherever the date must be exactly right, such as sale periods. Google accepts a date without a time where the time is not known: its Event guide asks for 2019-08-15 rather than an invented hour.",
          "how": "Output values such as 2026-11-27T19:30:00+01:00 for startDate, uploadDate, validFrom, priceValidUntil and similar properties, generated from the same timestamp as the visible date and with the correct UTC offset. Where the time is unknown or irrelevant, write the date alone (2026-11-27).",
          "test": "The Rich Results Test shows the parsed dates, and a unit test asserts that every DateTime value has an offset (+01:00 or Z) and that date-only values are YYYY-MM-DD, used only where the time is unknown or irrelevant.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "product-jsonld",
          "claims": [
            {
              "id": "D2-C466",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Markup can state a date as a full ISO 8601 value, which disambiguates a visible date whose local time zone Google might not detect correctly; this matters for event extraction and wherever the date must be exactly right.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "event-sd",
                  "title": "Event (Event) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/event",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C463",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Structured data often carries non-visible metadata that the page text lacks, such as full ISO dates or stable identifiers for user-generated content.",
              "quote": "It often contains non-visible metadata, such as full ISO dates or stable identifiers for UGC, that is not present in the page text.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C610",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Localisation should account for local conventions such as date formats, which differ between Europe, the UK, the US and other countries, and calendars (in Thailand the current year is 2569), or a date can point users to the wrong day.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C468",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The 'non-visible metadata' argument is not a licence to mark up hidden content, since Google's structured data guidelines still require markup to describe what users can see; use markup for the machine-precise form of facts the page shows, such as a full ISO date with time zone for a visible event date or a homepage url for a named organisation.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C836",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Event structured data guide says to give a date without a time, such as 2019-08-15, when the start hour is not known, and to include the UTC or GMT offset whenever a time is given.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "event-sd",
                  "title": "Event (Event) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/event",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            }
          ],
          "topics": [
            "structured-data",
            "structured-data-implementation",
            "localisation"
          ],
          "docs": [
            {
              "key": "event-sd",
              "title": "Event (Event) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/event",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "merchant-listing-sd",
              "title": "Merchant listing (Product, Offer) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "structured-data-concept",
              "count": 3,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-SDA-06",
          "level": "SHOULD",
          "title": "Emit each structured data entity once per page, and audit CMS plug-ins for duplicates",
          "why": "Said at Search Central Live: several plug-ins emitting the same markup type is one of the most common structured data problems, and the duplicates can make an event detail page look like a list of events and change how Google interprets the page.",
          "how": "Decide which layer owns each type (theme, SEO plug-in, events plug-in, tag manager), disable the others, and merge the output into one @graph per page.",
          "test": "The Rich Results Test on one URL per template shows each item once, unless the page really lists several entities.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C503",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Several plug-ins emitting the same markup type is one of the most common structured data problems: the duplicates can make an event details page look like a list of events and change how Google interprets the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C504",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Audit CMS templates for duplicate markup by running one page per template through the Rich Results Test and checking whether an SEO plug-in and a theme or events plug-in emit the same type twice; 'more markup never hurts' covers relevant, non-duplicated markup only.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "structured-data-implementation"
          ],
          "docs": [],
          "entities": [
            {
              "id": "rich-results-test",
              "count": 1,
              "own": false
            },
            {
              "id": "structured-data-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SDA-07",
          "level": "SHOULD",
          "title": "Describe only the page's main product in Product markup, not related-product carousels",
          "why": "Google's merchant listing guide says Product rich results only support pages that focus on a single product, or on several variants of the same product. Said at Search Central Live: structured data also points Google at the pertinent data and stops its systems pulling in extraneous information such as the prices of related products, while Google's own extraction sometimes fails to find a page's main content.",
          "how": "Generate Product and Offer markup only for the product the page is about, and give recommendation, recently-viewed and bundle carousels no Product markup.",
          "test": "The Rich Results Test on product pages lists exactly one product (or one product group with its variants).",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C834",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's merchant listing guide says Product rich results only support pages that focus on a single product, or on several variants of the same product.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C473",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Structured data explicitly points to the pertinent data on a page, which reduces noise and stops Google's systems from pulling in extraneous information such as prices of related products.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C474",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's systems sometimes fail to determine a page's main content correctly, and structured data helps because site owners tend to mark up what is actually important rather than boilerplate or ads.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C475",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "On product pages with related-product or recently-viewed carousels, make sure the Product markup describes only the main item and its price; Google's own example of what markup prevents was pulling a price from related products.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "main-content",
            "structured-data",
            "merchant-markup"
          ],
          "docs": [
            {
              "key": "merchant-listing-sd",
              "title": "Merchant listing (Product, Offer) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "structured-data-concept",
              "count": 2,
              "own": true
            },
            {
              "id": "main-content-concept",
              "count": 1,
              "own": true
            },
            {
              "id": "rich-results-feature",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SDA-08",
          "level": "SHOULD",
          "title": "Mark up merchant listings completely, with validity dates for sale prices",
          "why": "Google's merchant listing guide has explained validity dates for sale prices in a Sale duration section since July 2026 (its updates log calls this a clarification). Said at Search Central Live: with the dates in place, merchants need not rush to remove a sale price for fear it shows wrongly in snippets. The template must still switch back to the regular price when the sale ends: Google warns that a listing may not display if priceValidUntil is in the past. Product markup should also show current availability. The product name is required, and unlike product snippets, merchant listing experiences require a price greater than zero; an empty name and a price of zero were among the problems the Rich Results Test flagged in a community demo at the event.",
          "how": "Product with a non-empty name, image, description, sku or gtin and brand; Offer with a price above zero, priceCurrency, availability and itemCondition. For a sale, put the sale price in price, the regular price in a StrikethroughPrice UnitPriceSpecification, and bound it with validFrom and priceValidUntil (or validThrough) in ISO 8601. When the sale ends, render the regular price in price and drop the StrikethroughPrice. Keep values and dates identical to the Merchant Center feed.",
          "test": "The Rich Results Test shows a valid merchant listing, the Merchant listings report has no errors, and a scheduled check confirms feed and markup prices match.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "product-jsonld",
          "claims": [
            {
              "id": "D2-C507",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's documentation updates log calls the July 2026 sale price change a clarification: a new Sale duration section of the merchant listing guide explains validFrom with validThrough or priceValidUntil, aligned with Merchant Center's sale_price_effective_date attribute.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "search-docs-updates",
                  "title": "Latest documentation updates",
                  "url": "https://developers.google.com/search/updates",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C506",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's structured data speaker said that in the months before the event Google added support for validity dates on sale prices in product structured data, so merchants no longer need to rush to remove a sale price when the sale ends for fear it shows wrongly in snippets.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "search-docs-updates",
                  "title": "Latest documentation updates",
                  "url": "https://developers.google.com/search/updates",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C508",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For time-limited sales, give the sale price its validity dates in the product markup (Google's merchant listing documentation describes validFrom, validThrough and priceValidUntil) instead of editing markup by hand when the sale ends, and keep the dates aligned with the Merchant Center feed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "search-docs-updates",
                  "title": "Latest documentation updates",
                  "url": "https://developers.google.com/search/updates",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C012",
              "day": 2,
              "session_id": "D2-S02",
              "session": "Welcome to indexing day!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to temporarily pausing an online business recommends that a shop expecting to sell again within weeks or months stays online with limited functionality, such as a disabled cart, and updates its Product structured data to show current availability.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "pause-online-business",
                  "title": "Temporarily pause or disable a website",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/pause-online-business",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C835",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's merchant listing guide warns that a listing may not display if its priceValidUntil property indicates a past date.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C507",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's merchant listing documentation lists the product name as a required property and, unlike product snippets, requires a price greater than zero for merchant listing experiences.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C502",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "In a community demo, the structured-data problems Google's Rich Results Test reported on the test page included an empty name, a breadcrumb problem and a price of zero, with errors shown in pink and warnings in orange (best readings of a largely unintelligible recording; each item is heard in only one of the two recordings).",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "rich-results-test-help",
                  "title": "Rich Results Test",
                  "url": "https://support.google.com/webmasters/answer/7445569?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "merchant-markup",
            "structured-data-implementation",
            "site-moves",
            "rich-results"
          ],
          "docs": [
            {
              "key": "merchant-listing-sd",
              "title": "Merchant listing (Product, Offer) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "search-docs-updates",
              "title": "Latest documentation updates",
              "url": "https://developers.google.com/search/updates",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "merchant-center",
              "count": 2,
              "own": false
            },
            {
              "id": "structured-data-concept",
              "count": 2,
              "own": false
            },
            {
              "id": "rich-results-test",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SDA-09",
          "level": "SHOULD",
          "title": "Declare return, shipping and loyalty policies once at organisation level",
          "why": "Google's shopping markup supports loyalty programs, shipping policies and return policies defined at organisation level, with details at product level only where they differ.",
          "how": "On the homepage or a policy page, add an Organization (or OnlineStore) block with hasMerchantReturnPolicy, hasShippingService (a ShippingService with shippingConditions) and hasMemberProgram (a MemberProgram with tiers). Override in the Offer (OfferShippingDetails, member prices with validForMemberTier) only for exceptions. From each Offer, reference the organisation-level policies by @id only, as Google's merchant listing guide shows: shippingDetails with an OfferShippingDetails whose hasShippingService is {\"@id\": ...}, and hasMerchantReturnPolicy {\"@id\": ...}.",
          "test": "The Rich Results Test on the homepage detects the organisation details, and the Merchant listings report recognises shipping and returns.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "organization-jsonld",
          "claims": [
            {
              "id": "D2-C505",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's shopping structured data launches of the previous year (2025) added support for merchant loyalty programs and shipping policies, letting merchants define a policy at organisation level and specify details at product level.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "loyalty-program-sd",
                  "title": "Loyalty program (MemberProgram) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/loyalty-program",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "shipping-policy-sd",
                  "title": "Merchant shipping policy (ShippingService) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/shipping-policy",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "search-docs-updates",
                  "title": "Latest documentation updates",
                  "url": "https://developers.google.com/search/updates",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C502",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Use unique identifiers in structured data, for example the homepage URL in an organisation's url property, so Google can tell which specific entity is meant rather than reading just a name string.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "organization-sd",
                  "title": "Organization (Organization) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/organization",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D3-C383",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "In product markup, an offer's shipping and return information can point through a JSON-LD identifier (@id) to shipping and return data defined elsewhere.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C384",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's merchant listing documentation recommends defining shipping and return policies once under Organization markup and referencing them from an Offer, even on another page, using only the @id keyword (through hasShippingService for shipping, hasMerchantReturnPolicy for returns).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "structured-data-implementation",
            "merchant-markup"
          ],
          "docs": [
            {
              "key": "shipping-policy-sd",
              "title": "Merchant shipping policy (ShippingService) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/shipping-policy",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "loyalty-program-sd",
              "title": "Loyalty program (MemberProgram) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/loyalty-program",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "organization-sd",
              "title": "Organization (Organization) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/organization",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "merchant-listing-sd",
              "title": "Merchant listing (Product, Offer) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "structured-data-concept",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-SDA-10",
          "level": "SHOULD",
          "title": "Put the same structured data on duplicate URLs as on the canonical",
          "why": "Google's guidelines recommend the same structured data on all duplicates of a page, not only on the canonical. Said at Search Central Live: deduplication runs before feature extraction, so markup that exists only on a URL that loses canonical selection may never be extracted.",
          "how": "Render markup from the page template rather than per URL, so parameter, print and mobile variants carry identical markup, and make sure the preferred canonical has the complete markup.",
          "test": "The Rich Results Test returns the same items for the canonical and for a duplicate variant.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C451",
              "day": 2,
              "session_id": "D2-S11",
              "session": "Finding the gold nuggets: structured data, media, and more!",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's general structured data guidelines recommend placing the same structured data on all duplicate pages of the same content, not just on the canonical page.",
              "quote": "we recommend placing the same structured data on all page duplicates, not just on the canonical page",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "structured-data-guidelines",
                  "title": "General structured data guidelines",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C444",
              "day": 2,
              "session_id": "D2-S11",
              "session": "Finding the gold nuggets: structured data, media, and more!",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google runs deduplication before feature extraction, so that the expensive extraction work is spent only on a trimmed-down, manageable set of documents.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C450",
              "day": 2,
              "session_id": "D2-S11",
              "session": "Finding the gold nuggets: structured data, media, and more!",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Because Google extracts structured data, images and videos only after deduplication, put markup and media on the URL you want as canonical and keep them identical on its duplicates; markup that exists only on a duplicate that loses canonical selection may never be extracted.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "duplicate-content",
            "indexing-pipeline",
            "structured-data-implementation"
          ],
          "docs": [
            {
              "key": "structured-data-guidelines",
              "title": "General structured data guidelines",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 2,
              "own": true
            },
            {
              "id": "duplicate-content-concept",
              "count": 2,
              "own": true
            },
            {
              "id": "structured-data-concept",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SDA-11",
          "level": "MUST",
          "title": "Validate markup in the Rich Results Test before it reaches templates, and monitor it after release",
          "why": "Google recommends testing and previewing structured data in the Rich Results Test and testing manually before putting markup into templates. AI-generated markup can contain hallucinations, such as invented properties or broken nesting, and should be fact-checked and validated before publishing.",
          "how": "Prototype each type on one page, validate it, then put it in the template. The Rich Results Test takes a public URL, which Google fetches itself, or pasted code: for staging and other private pages paste the rendered HTML, as a community demo's script did at the event, and keep the resources it loads reachable anonymously, because the test cannot load resources behind a firewall or a password. Fix every error (a critical issue makes the item invalid and stops the rich result); warnings are non-critical and only limit how the item can appear. Add a CI step that extracts JSON-LD from rendered templates and checks syntax and required properties, and review the Search Console enhancement reports after each release.",
          "test": "The Rich Results Test passes for one URL per template; CI fails on JSON-LD parse errors or missing required properties.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C498",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google recommends testing and previewing structured data in the Rich Results Test, which shows the rich result features it detected and whether the markup is valid.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "rich-results-test-help",
                  "title": "Rich Results Test",
                  "url": "https://support.google.com/webmasters/answer/7445569?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C499",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Test structured data manually first and only then put it into the site's templates.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C462",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guidance on generative AI content warns that AI output can contain hallucinations and says AI-generated metadata, including structured data and image alt text, should be fact-checked before publishing and the markup validated.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C460",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "In the speaker's own tests, even the latest LLMs asked to generate schema.org markup for a page often invent properties that do not exist, get deeply nested schemas such as complex pricing models wrong, and duplicate content across several fields.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C251",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community demo treated warnings in Google's structured-data test as not critical, in an example result of 22 items with two errors and two warnings.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "rich-results-test-help",
                  "title": "Rich Results Test",
                  "url": "https://support.google.com/webmasters/answer/7445569?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "rich-result-report-help",
                  "title": "Rich result report overview",
                  "url": "https://support.google.com/webmasters/answer/7552505?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C265",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Search Console Help separates critical issues, which make a structured-data item invalid and stop it from appearing as a rich result, from non-critical issues, listed under 'Improve item appearance'; the Rich Results Test reports valid items that have warnings.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "rich-result-report-help",
                  "title": "Rich result report overview",
                  "url": "https://support.google.com/webmasters/answer/7552505?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "rich-results-test-help",
                  "title": "Rich Results Test",
                  "url": "https://support.google.com/webmasters/answer/7445569?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C501",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community demo's script used both input modes of Google's Rich Results Test: the URL mode for public pages, which Google fetches itself, and the code mode, into which the script pasted the page's HTML, for private pages and pages Google cannot fetch (best reading of a largely unintelligible recording; the second kind of page was heard as 'dead', possibly 'dev').",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "rich-results-test-help",
                  "title": "Rich Results Test",
                  "url": "https://support.google.com/webmasters/answer/7445569?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C506",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Rich Results Test help says the tool tests either a page's full URL or a pasted code snippet (Code instead of URL); all page resources must be reachable by an anonymous user on the internet, so resources behind a firewall or a password are not available to the test unless exposed, for example through a tunnel.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "rich-results-test-help",
                  "title": "Rich Results Test",
                  "url": "https://support.google.com/webmasters/answer/7445569?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "structured-data-implementation",
            "rich-results",
            "ai-in-search-systems",
            "ai-in-seo-workflows",
            "structured-data",
            "schema-org"
          ],
          "docs": [
            {
              "key": "rich-results-test-help",
              "title": "Rich Results Test",
              "url": "https://support.google.com/webmasters/answer/7445569?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "intro-structured-data",
              "title": "Introduction to structured data markup in Google Search",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "gen-ai-content-guide",
              "title": "Google Search's guidance on using generative AI content on your website",
              "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "rich-result-report-help",
              "title": "Rich result report overview",
              "url": "https://support.google.com/webmasters/answer/7552505?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "rich-results-test",
              "count": 4,
              "own": true
            },
            {
              "id": "structured-data-concept",
              "count": 3,
              "own": true
            },
            {
              "id": "rich-results-feature",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-SDA-12",
          "level": "MAY",
          "title": "Wire Google's SHACL validation rules into the build once they are published",
          "why": "Said at Search Central Live: Google plans to publish downloadable SHACL rules on each structured data feature guide, to run inside a site's content generation so markup is checked before it is published. They will catch problems such as a missing required field but will not replace Search Console reports, and they were not yet available at the time of the event.",
          "how": "Plan a CI or CMS publishing step that runs a SHACL validator (for example pySHACL) against the generated JSON-LD, adopt the rules type by type as Google releases them, and keep the Rich Results Test and Search Console as the reference.",
          "test": "Once rules exist, the build fails when a template drops a required property.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C514",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google announced server-side structured data validation as coming soon: it will publish downloadable validation rules in SHACL on each structured data feature guide, with other kinds of checks to follow.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C515",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's planned validation workflow has five steps: download the rules from the feature guide, generate the JSON or embedded microdata or RDFa, run the rules against the generated server-side markup as a first check, deploy and test in the Rich Results Test, and monitor ongoing performance in Search Console.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C516",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "The SHACL rules are meant to run inside a site's content generation, so markup is sanity-checked before it is published and does not silently regress later, a breakage site owners might otherwise discover only through a Search Console report.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C517",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "The SHACL rules will not replace Search Console as the canonical place for structured data reports, because some checks use Google's internal libraries and cannot be expressed in SHACL, but they will catch problems such as a missing required field.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C519",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google plans a SHACL rule set for each of its structured data feature types and will release the rule sets gradually once they have been checked.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C520",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "When the SHACL rules appear, wire them into the build or CMS publishing step as an automated test, so a template change that drops a required property fails before deployment instead of surfacing weeks later in Search Console.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "structured-data-implementation"
          ],
          "docs": [],
          "entities": [
            {
              "id": "google-search-console",
              "count": 4,
              "own": true
            },
            {
              "id": "structured-data-concept",
              "count": 3,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SDA-13",
          "level": "SHOULD",
          "title": "Add Article markup with headline, images, dates and authors to every article template",
          "why": "Article structured data is not required for Top Stories or other Google News features, but Google highly recommends it for all articles: it tells Google explicitly that the content is a news article, what its headline is, who wrote it and when, and it can indicate that content is behind a paywall.",
          "how": "Render a NewsArticle, BlogPosting or Article block on the server from the article's own fields: headline, image as the visible lead image in 1x1, 4x3 and 16x9 versions, datePublished and dateModified with a UTC offset (DEV-SDA-05), and author as a list of Person or Organization objects with name and a url to the author page. For paywalled articles add isAccessibleForFree false and a hasPart WebPageElement whose cssSelector names the paywalled section.",
          "test": "The Rich Results Test detects the article on one URL per article template with no errors; the dates match the visible dates; every author url opens a real author page.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "article-jsonld",
          "claims": [
            {
              "id": "D3-C330",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Article structured data is a broad type with many properties and nested types, which Google uses to learn more about published content, such as its headline, author and publication date.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "article-sd",
                  "title": "Article (Article, NewsArticle, BlogPosting) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/article",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C331",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's rich results slide said Article structured data is not required to appear in Top Stories but is highly recommended for all articles.",
              "quote": "Not required for \"Top Stories,\" but highly recommended for all articles.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "article-sd",
                  "title": "Article (Article, NewsArticle, BlogPosting) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/article",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C332",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Article documentation says there is no markup requirement to be eligible for Google News features like Top stories, and that Article markup can tell Google more explicitly that content is a news article, who the author is and what the title is.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "article-sd",
                  "title": "Article (Article, NewsArticle, BlogPosting) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/article",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C334",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's Article slide showed the NewsArticle JSON-LD example from Google's Article documentation: a block in the page head with headline, three image URLs (1x1, 4x3 and 16x9), datePublished and dateModified with time zone offsets, and an author list of Person objects with name and url.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "article-sd",
                  "title": "Article (Article, NewsArticle, BlogPosting) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/article",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C333",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's Article rich results slide said structured data can be used to indicate that content is behind a paywall.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "article-sd",
                  "title": "Article (Article, NewsArticle, BlogPosting) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/article",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "paywalled-content-sd",
                  "title": "Structured data for subscription and paywalled content (CreativeWork)",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/paywalled-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "structured-data-implementation",
            "rich-results"
          ],
          "docs": [
            {
              "key": "article-sd",
              "title": "Article (Article, NewsArticle, BlogPosting) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/article",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "paywalled-content-sd",
              "title": "Structured data for subscription and paywalled content (CreativeWork)",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/paywalled-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "structured-data-concept",
              "count": 3,
              "own": true
            },
            {
              "id": "rich-results-feature",
              "count": 2,
              "own": false
            }
          ]
        },
        {
          "id": "DEV-SDA-14",
          "level": "AVOID",
          "title": "Do not mark up self-serving review ratings of your own business",
          "why": "Review snippets show an average star rating, and often the number of reviews, for products, local businesses, films, books and other things. Google's review snippet guide makes ratings of local businesses and organizations eligible only on sites that capture reviews about other businesses; reviews a business shows about itself are self-serving and not eligible.",
          "how": "Generate Review and AggregateRating markup only from the reviews visible on the page (DEV-SDA-02), for example on product pages, and remove LocalBusiness or Organization ratings about your own business from the site's markup, including those added by review widgets.",
          "test": "The Rich Results Test shows review snippets only on templates with visible reviews, and a crawl finds no rating on the site's own Organization or LocalBusiness entity.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C337",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Review structured data lets a site specify how its users rated something; the review snippet shows an average star rating and often the number of reviews of a product, service or piece of content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "review-snippet-sd",
                  "title": "Review snippet (Review, AggregateRating) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/review-snippet",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C339",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Review snippets can be used for many kinds of things, from products to local businesses, movies and books.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "review-snippet-sd",
                  "title": "Review snippet (Review, AggregateRating) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/review-snippet",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C340",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's review snippet documentation supports ratings for local businesses and organizations only on sites that capture reviews about other businesses; self-serving reviews of a site's own business are not eligible.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "review-snippet-sd",
                  "title": "Review snippet (Review, AggregateRating) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/review-snippet",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "rich-results",
            "structured-data-implementation"
          ],
          "docs": [
            {
              "key": "review-snippet-sd",
              "title": "Review snippet (Review, AggregateRating) structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/review-snippet",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "structured-data-guidelines",
              "title": "General structured data guidelines",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/sd-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-SDA-15",
          "level": "SHOULD",
          "title": "State the preferred site name with WebSite markup on the home page",
          "why": "The site name shown with each text result is an attribution element, generated automatically from the home page and references to the site on the web; site owners can indicate their preferred name with WebSite structured data. Google supports one site name per domain or subdomain, not per subdirectory.",
          "how": "Add a WebSite block with name, an optional alternateName and url (the canonical home page) to the home page of every domain and subdomain that should have its own name, and use the same name in the home page title and in Organization markup.",
          "test": "curl the home page of each host and find exactly one WebSite block with the intended name and the canonical home page url.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "website-site-name",
          "claims": [
            {
              "id": "D3-C335",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google described the site name as an attribution feature rather than a rich result, and said site owners can influence which site name Google shows for their site in search results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "visual-elements-gallery",
                  "title": "Visual Elements gallery of Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/visual-elements-gallery",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "site-names",
                  "title": "Provide a site name to Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/site-names",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C336",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's site name documentation says site names are generated automatically from a site's home page and references to it on the web, and that a site can indicate its preferred name with WebSite structured data on its home page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "site-names",
                  "title": "Provide a site name to Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/site-names",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "serp-anatomy",
            "structured-data-implementation",
            "rich-results"
          ],
          "docs": [
            {
              "key": "site-names",
              "title": "Provide a site name to Google Search",
              "url": "https://developers.google.com/search/docs/appearance/site-names",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "rich-results-feature",
              "count": 1,
              "own": false
            },
            {
              "id": "structured-data-concept",
              "count": 1,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "shopping",
      "title": "Shopping data (Merchant Center, product markup and Storebot)",
      "intro": "Product rich results come from structured data, the Shopping tab needs a Merchant Center feed, and Google Shopping's own crawler, Storebot-Google, checks both against the shop. AI shopping experiences ask for richer product data than classic results, delivered first through the feed.",
      "requirements": [
        {
          "id": "DEV-SHP-01",
          "level": "SHOULD",
          "title": "Use Product markup for rich results and a Merchant Center feed for the Shopping tab, with identical values",
          "why": "Product structured data alone makes pages eligible for product rich results and product annotations in Google Images; Merchant Center is not required for them, and Merchant Center does not require the markup. Google's product guide says providing both maximizes eligibility for shopping experiences and helps Google understand and verify the data, and Merchant Center's automatic item updates can use landing-page markup to fix price and availability mismatches, without replacing regular feed updates. Said at Search Central Live: the Shopping tab needs a Merchant Center feed.",
          "how": "Generate the feed and the JSON-LD from the same product database so price, sale price, availability, condition, brand and GTIN never diverge (DEV-SDA-08), update the feed whenever prices or stock change, and turn on automatic item updates as a safety net.",
          "test": "Merchant Center diagnostics show no price or availability mismatches, the Merchant listings and Product snippets reports in Search Console show no errors, and a scheduled job compares feed values with the JSON-LD of sampled product pages.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "product-jsonld",
          "claims": [
            {
              "id": "D3-C343",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google Search displays product rich results from product structured data; it may also use the product data a merchant provides in Google Merchant Center, but Merchant Center is not required for them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "product-sd-intro",
                  "title": "Introduction to Product structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C344",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Product structured data introduction says that providing both on-page structured data and a Merchant Center feed maximizes eligibility for shopping experiences and helps Google understand and verify the data; product snippets may take pricing from the feed when the markup lacks it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "product-sd-intro",
                  "title": "Introduction to Product structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C345",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Product annotations on Google Images results also come from product structured data and do not need Google Merchant Center.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "product-sd-intro",
                  "title": "Introduction to Product structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C346",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To appear in the Shopping tab of Google Search, a product must be submitted in Google Merchant Center; product structured data alone is not enough.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "product-sd-intro",
                  "title": "Introduction to Product structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-free-listings",
                  "title": "Free listings for products",
                  "url": "https://support.google.com/merchants/answer/9199328?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C349",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Product structured data can help Merchant Center in some cases, for example during data validation, but Merchant Center does not require it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "product-sd-intro",
                  "title": "Introduction to Product structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-automatic-updates",
                  "title": "Allow Merchant Center to update product information automatically",
                  "url": "https://support.google.com/merchants/answer/3246284?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C350",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Merchant Center's automatic item updates use structured data and other product data found on landing pages to fix price, sale price, availability and condition mismatches in a merchant's product data; Google says they do not replace regular feed updates.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Merchant Center Help",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-automatic-updates",
                  "title": "Allow Merchant Center to update product information automatically",
                  "url": "https://support.google.com/merchants/answer/3246284?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C354",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Product snippets in Google Search are powered by both shopping feeds and schema.org structured data.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "product-sd-intro",
                  "title": "Introduction to Product structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C402",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Basic, well-specified product attributes such as price, brand and availability remain as important as ever for Google Shopping.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "product-sd-intro",
                  "title": "Introduction to Product structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C351",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For an online shop, Product structured data is enough for product rich results and Google Images product annotations, but the Shopping tab needs a Merchant Center feed too; keep feed and markup values identical, since Google can use the markup to validate the feed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "merchant-markup",
            "shopping-data",
            "images"
          ],
          "docs": [
            {
              "key": "product-sd-intro",
              "title": "Introduction to Product structured data",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/product",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-free-listings",
              "title": "Free listings for products",
              "url": "https://support.google.com/merchants/answer/9199328?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-automatic-updates",
              "title": "Allow Merchant Center to update product information automatically",
              "url": "https://support.google.com/merchants/answer/3246284?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "structured-data-concept",
              "count": 8,
              "own": true
            },
            {
              "id": "merchant-center",
              "count": 7,
              "own": true
            },
            {
              "id": "google-shopping",
              "count": 3,
              "own": true
            },
            {
              "id": "google-images",
              "count": 2,
              "own": true
            },
            {
              "id": "rich-results-feature",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SHP-02",
          "level": "SHOULD",
          "title": "Let Storebot-Google crawl product, cart and checkout pages, through robots.txt and bot protection",
          "why": "Google Shopping crawls with its own user agent, Storebot-Google, because it needs fresh prices, availability and shipping details. It visits product, cart and checkout pages, can fill in checkout forms and records price, shipping, availability, coupons and payment methods to verify the data merchants send. robots.txt rules addressed to Storebot-Google affect all Google Shopping surfaces, and a crawler without its own group follows the * group, so a shop that disallows /cart/ and /checkout/ for every crawler also blocks these checks.",
          "how": "Give Storebot-Google its own robots.txt group that repeats the general rules but leaves cart and checkout paths open; verify it like Googlebot, as one of Google's common crawlers (DEV-SRV-01), and exempt it from rate limits, CAPTCHAs and bot challenges on product, cart and checkout flows. Block it only if the shop deliberately stays out of Google Shopping.",
          "test": "Google's open-source robots.txt parser, run with the Storebot-Google token, returns allowed for a product URL, /cart/ and /checkout/; server logs show Storebot-Google requests answered with 200, not 403, 429 or challenge pages.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-txt-storebot",
          "claims": [
            {
              "id": "D3-C385",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google Shopping uses its own crawler, Storebot (Storebot-Google), instead of Googlebot because it needs fresh product information, prices, availability and shipping details and therefore crawls much more often.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-storebot",
                  "title": "About the Google StoreBot crawler",
                  "url": "https://support.google.com/merchants/answer/13294660?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C386",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Storebot-Google is used to validate merchant feeds: when a feed gives a price, Google double-checks it on the merchant's site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-storebot",
                  "title": "About the Google StoreBot crawler",
                  "url": "https://support.google.com/merchants/answer/13294660?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C387",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Storebot-Google also does deep crawls, for example of checkout pages, which do not belong in the search index; this is another reason it is kept separate from Googlebot.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-storebot",
                  "title": "About the Google StoreBot crawler",
                  "url": "https://support.google.com/merchants/answer/13294660?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C388",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Merchant Center help says the StoreBot crawler goes through product detail, cart and checkout pages, can fill in checkout forms, and records price, shipping, availability, coupons and payment methods to verify the data merchants share in Merchant Center.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Merchant Center Help",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-storebot",
                  "title": "About the Google StoreBot crawler",
                  "url": "https://support.google.com/merchants/answer/13294660?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C389",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's crawler list says robots.txt rules addressed to the Storebot-Google user agent affect all surfaces of Google Shopping, such as the Shopping tab in Google Search.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C390",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Treat Storebot-Google separately from Googlebot in robots.txt and bot protection: a shop that blocks it on product, cart or checkout paths can undermine Shopping price and availability checks, even when Googlebot is allowed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "crawl-pipeline",
            "shopping-data",
            "robots-txt"
          ],
          "docs": [
            {
              "key": "mc-storebot",
              "title": "About the Google StoreBot crawler",
              "url": "https://support.google.com/merchants/answer/13294660?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "common-crawlers",
              "title": "List of Google's common crawlers",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "storebot-google",
              "count": 6,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 3,
              "own": false
            },
            {
              "id": "google-shopping",
              "count": 2,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SHP-03",
          "level": "SHOULD",
          "title": "Send conversational product data in the Merchant Center feed: Q&A, product details, highlights and related products",
          "why": "In 2026 Google added Merchant Center attributes intended mainly for conversational experiences such as AI Mode (question_and_answer, document_link, related_product and popularity_rank) and more flexible variant data (item_group_title and variant_option), and it now stresses the existing product_highlight and product_detail attributes for AI. In Google's testing with one brand, the conversational attributes it submitted were used in 50% of relevant product recommendations in AI Mode.",
          "how": "Extend the feed generator: up to 30 question_and_answer pairs per product (question and answer up to 1,000 characters each, 10,000 in total, with no prices, shipping, dates or company name), up to 100 product_detail specifications as section, attribute name and value, 2 to 100 product_highlight lines of up to 150 characters without promotional text, up to five document_link URLs of PDFs you hold the rights to, related_product for accessories and parts, and popularity_rank as a 0-100 rank against your own inventory. Source the answers from real customer questions, and keep the core attributes (price, availability, brand, GTIN) accurate first.",
          "test": "Merchant Center reports no errors for the new attributes, and a sampled product's Q&A, details and highlights in the feed match its product page.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "merchant-feed-conversational",
          "claims": [
            {
              "id": "D3-C365",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google added six Merchant Center feed attributes for AI shopping experiences: question and answer, documents, related products, item group title and variant option for variants, and popularity rank.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-product-data-spec",
                  "title": "Product data specification",
                  "url": "https://support.google.com/merchants/answer/7052112?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C367",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Merchant Center help marks the question_and_answer, document_link, related_product and popularity_rank attributes as primarily intended for conversational experiences such as AI Mode in Google Search.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Merchant Center Help",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-question-and-answer",
                  "title": "Question and answer [question_and_answer]",
                  "url": "https://support.google.com/merchants/answer/17085211?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-document-link",
                  "title": "Document link [document_link]",
                  "url": "https://support.google.com/merchants/answer/17084656?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-related-product",
                  "title": "Related product [related_product]",
                  "url": "https://support.google.com/merchants/answer/17085213?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-popularity-rank",
                  "title": "Popularity rank [popularity_rank]",
                  "url": "https://support.google.com/merchants/answer/17085297?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C368",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The question and answer feed attribute lets a merchant or brand upload questions and answers relevant to a product, whether they come from the manufacturer or from consumers.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-question-and-answer",
                  "title": "Question and answer [question_and_answer]",
                  "url": "https://support.google.com/merchants/answer/17085211?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C369",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Merchant Center's question_and_answer attribute takes up to 30 question-and-answer pairs per product, each question and answer up to 1,000 characters and 10,000 characters in total, and must not contain prices, shipping, dates or the company name.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Merchant Center Help",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-product-data-spec",
                  "title": "Product data specification",
                  "url": "https://support.google.com/merchants/answer/7052112?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-question-and-answer",
                  "title": "Question and answer [question_and_answer]",
                  "url": "https://support.google.com/merchants/answer/17085211?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C371",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Merchant Center's document_link attribute takes up to five URLs of PDF documents about a product, such as manuals, user guides or assembly instructions, and the merchant must own the content licensing rights.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Merchant Center Help",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-document-link",
                  "title": "Document link [document_link]",
                  "url": "https://support.google.com/merchants/answer/17084656?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-product-data-spec",
                  "title": "Product data specification",
                  "url": "https://support.google.com/merchants/answer/7052112?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C372",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The related products feed attribute describes accessories, parts and replacement products, answering frequent questions such as what else to buy with a printer.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-related-product",
                  "title": "Related product [related_product]",
                  "url": "https://support.google.com/merchants/answer/17085213?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C373",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Variant data in Google's feed specification used to be limited to basics such as colour and size; the new item group title and variant option attributes make it much more flexible.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-item-group-title",
                  "title": "Item group title [item_group_title]",
                  "url": "https://support.google.com/merchants/answer/17085146?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-variant-option",
                  "title": "Variant option [variant_option]",
                  "url": "https://support.google.com/merchants/answer/17085214?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C375",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Merchant Center's popularity_rank is a 0-100 value the merchant assigns to rank a product's popularity, based on its recent sales, against the rest of its own inventory; it does not reflect user ratings.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Merchant Center Help",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-popularity-rank",
                  "title": "Popularity rank [popularity_rank]",
                  "url": "https://support.google.com/merchants/answer/17085297?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-product-data-spec",
                  "title": "Product data specification",
                  "url": "https://support.google.com/merchants/answer/7052112?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C392",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google now emphasises two existing Merchant Center attributes for AI, product highlights (a short bulleted list) and product detail (detailed specifications), and updated its Help Center guidance to say they help AI systems.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-product-highlight",
                  "title": "Product highlight [product_highlight]",
                  "url": "https://support.google.com/merchants/answer/12471629?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-product-detail",
                  "title": "Product detail [product_detail]",
                  "url": "https://support.google.com/merchants/answer/9218260?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C393",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Merchant Center's product_highlight attribute takes 2 to 100 highlights of up to 150 characters each that describe only the product itself, without promotional text, keywords or search terms.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Merchant Center Help",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-product-highlight",
                  "title": "Product highlight [product_highlight]",
                  "url": "https://support.google.com/merchants/answer/12471629?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-product-data-spec",
                  "title": "Product data specification",
                  "url": "https://support.google.com/merchants/answer/7052112?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C394",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Instead of adding feed attributes for individual specifications such as connectivity, memory, camera settings or box contents, Google asks merchants to send them as key-value pairs in product detail, because merchants know best what matters.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": [
                {
                  "key": "mc-product-detail",
                  "title": "Product detail [product_detail]",
                  "url": "https://support.google.com/merchants/answer/9218260?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C395",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Merchant Center's product_detail attribute takes up to 100 specifications, each a section name, attribute name and attribute value, and Google's help says clean key-value specifications improve product details on Google Shopping and AI-driven surfaces.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Merchant Center Help",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-product-detail",
                  "title": "Product detail [product_detail]",
                  "url": "https://support.google.com/merchants/answer/9218260?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-product-data-spec",
                  "title": "Product data specification",
                  "url": "https://support.google.com/merchants/answer/7052112?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C408",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's 16 September 2026 holiday shopping post says that in testing with lululemon, conversational attributes submitted by the brand were used 50% of the time in relevant product recommendations in AI Mode.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google blog (16 September 2026)",
              "speaker": null,
              "sources": [
                {
                  "key": "holiday-agentic-commerce-blog",
                  "title": "Boost your holiday sales with these agentic commerce updates",
                  "url": "https://blog.google/products-and-platforms/products/shopping/google-shopping-updates-holiday-shopping/",
                  "publisher": "Google blog (16 September 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "shopping-data",
            "ai-mode-usage"
          ],
          "docs": [
            {
              "key": "mc-product-data-spec",
              "title": "Product data specification",
              "url": "https://support.google.com/merchants/answer/7052112?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-question-and-answer",
              "title": "Question and answer [question_and_answer]",
              "url": "https://support.google.com/merchants/answer/17085211?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-product-detail",
              "title": "Product detail [product_detail]",
              "url": "https://support.google.com/merchants/answer/9218260?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-product-highlight",
              "title": "Product highlight [product_highlight]",
              "url": "https://support.google.com/merchants/answer/12471629?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-document-link",
              "title": "Document link [document_link]",
              "url": "https://support.google.com/merchants/answer/17084656?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-related-product",
              "title": "Related product [related_product]",
              "url": "https://support.google.com/merchants/answer/17085213?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-popularity-rank",
              "title": "Popularity rank [popularity_rank]",
              "url": "https://support.google.com/merchants/answer/17085297?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-item-group-title",
              "title": "Item group title [item_group_title]",
              "url": "https://support.google.com/merchants/answer/17085146?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "mc-variant-option",
              "title": "Variant option [variant_option]",
              "url": "https://support.google.com/merchants/answer/17085214?hl=en",
              "publisher": "Google Merchant Center Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "merchant-center",
              "count": 8,
              "own": true
            },
            {
              "id": "ai-mode",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SHP-04",
          "level": "MAY",
          "title": "Treat product Q&A and specification markup in schema.org as an extra on top of the feed",
          "why": "Said at Search Central Live: most of the new conversational feed attributes already exist in schema.org and Google can use them from product markup too, product Q&A can be marked up as Question items, each with an acceptedAnswer, linked to the Product through subjectOf, and a recent schema.org release added specification and valueGroup for product details. As of 3 October 2026 neither Search Central nor the Merchant Center attribute pages document such markup (only item_group_title maps, to ProductGroup.name), so the feed is the documented route, and the extra markup makes pages heavier.",
          "how": "Keep the Merchant Center feed as the source (DEV-SHP-03). If you add markup, generate it from the same Q&A and specification data the page visibly shows (DEV-SDA-02), attach Question items with Answer objects to the Product through subjectOf, and watch the HTML size (DEV-PRF-04).",
          "test": "The JSON-LD parses, the Rich Results Test still reports the product without errors, and every marked-up question and answer is visible on the page.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C391",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Product Q&A can be marked up in schema.org by linking Question items, each with an acceptedAnswer of type Answer, to the product through the subjectOf property, because the product is the subject of the Q&A.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": []
            },
            {
              "id": "D3-C380",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Most of the new conversational feed attributes were already available in schema.org, so Google ties them back to structured data and can use them from product markup as well as from feeds.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": []
            },
            {
              "id": "D3-C399",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "A recent schema.org release added two properties, specification and valueGroup, so that the Merchant Center product detail attribute can be expressed in schema.org, with product specs nested under specification.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": []
            },
            {
              "id": "D3-C406",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google Shopping named the downside of adding Q&As and documentation to product markup: the page's markup becomes somewhat bigger.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Alex Jansen",
              "sources": []
            },
            {
              "id": "D3-C381",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "As of 3 October 2026 Google's Merchant Center help lists no schema.org property for question_and_answer, document_link, related_product, popularity_rank, variant_option or product_detail (only item_group_title maps, to ProductGroup.name), and Search Central does not document such markup: reading these attributes from schema.org is a stage statement, the feed is the documented route.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "mc-question-and-answer",
                  "title": "Question and answer [question_and_answer]",
                  "url": "https://support.google.com/merchants/answer/17085211?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-document-link",
                  "title": "Document link [document_link]",
                  "url": "https://support.google.com/merchants/answer/17084656?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-related-product",
                  "title": "Related product [related_product]",
                  "url": "https://support.google.com/merchants/answer/17085213?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-popularity-rank",
                  "title": "Popularity rank [popularity_rank]",
                  "url": "https://support.google.com/merchants/answer/17085297?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-variant-option",
                  "title": "Variant option [variant_option]",
                  "url": "https://support.google.com/merchants/answer/17085214?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-product-detail",
                  "title": "Product detail [product_detail]",
                  "url": "https://support.google.com/merchants/answer/9218260?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "mc-item-group-title",
                  "title": "Item group title [item_group_title]",
                  "url": "https://support.google.com/merchants/answer/17085146?hl=en",
                  "publisher": "Google Merchant Center Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "merchant-listing-sd",
                  "title": "Merchant listing (Product, Offer) structured data",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/merchant-listing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C400",
              "day": 3,
              "session_id": "D3-S11",
              "session": "Shopping on Search: Beyond the blue links",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Schema.org's release notes show version 30.1 (16 September 2026) added specification, isOftenBoughtWith and consumerNotice for Product, valueGroup for PropertyValue and itemPopularity for Offer as vocabulary for retail feed data; Google's Search Central docs did not yet document these properties on 3 October 2026.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "schema-org",
            "merchant-markup",
            "structured-data-implementation",
            "shopping-data"
          ],
          "docs": [],
          "entities": [
            {
              "id": "schema-org-vocabulary",
              "count": 5,
              "own": true
            },
            {
              "id": "merchant-center",
              "count": 2,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "images",
      "title": "Images",
      "intro": "Google finds images through img elements in the HTML and through image sitemaps, understands them through alt text and the surrounding text, and can show them in web search, Google Images, Discover and AI features.",
      "requirements": [
        {
          "id": "DEV-IMG-01",
          "level": "MUST",
          "title": "Put every image that should be found in an <img> element with a src attribute",
          "why": "Google finds images with an HTML parser that looks for img elements, and src is the most important attribute: without it Google does not know where the image is. The picture element is supported only through the img it contains, and CSS background images are not extracted.",
          "how": "Product, article and other content images use img with src, inside picture where art direction or modern formats are needed. Keep CSS backgrounds for decoration. Lazy-loaded images keep a real src with loading=\"lazy\", not only a data-src filled in by a script.",
          "test": "In the rendered HTML (URL Inspection) key images are img elements with a src; a template search finds no background-image on content images.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "responsive-image",
          "claims": [
            {
              "id": "D2-C527",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "One of the most reliable ways to make sure Google finds an image is to include it in an img element in the HTML; Gary Illyes named image sitemaps as the other method.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C528",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google does not extract CSS background images.",
              "quote": "we don't support CSS background extraction",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C526",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google supports the picture element only because a picture element must contain an img element, and that img element is what Google extracts and passes to its media indexer.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C532",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The src attribute is the most important img attribute, because without it Google does not know where the image bytes are and cannot index the image.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C524",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google extracts images and videos from the page's document object model (DOM), and finds images with a fairly standard HTML parser that looks for img elements.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C538",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Images that should rank need an img element with a real src; hero or product images set as CSS backgrounds are invisible to Google Images and image features, so keep CSS backgrounds for decorative images you do not need indexed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "images",
            "indexing-pipeline"
          ],
          "docs": [
            {
              "key": "image-seo",
              "title": "Google image SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/google-images",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-IMG-02",
          "level": "MUST",
          "title": "Describe every meaningful image in its alt attribute",
          "why": "Google calls alt text the most important attribute for image metadata and uses it, with computer vision and the page content, to understand the image. Alt text should describe the image for someone who cannot see it, and the image can rank for what it describes.",
          "how": "Make alt text a required CMS field for content images, write specific descriptions rather than file names or keyword lists, and give decorative images an empty alt=\"\". If alt text is generated with an LLM, as a community speaker showed through a crawler's custom JavaScript, first run it on a few chosen URLs and review the output, and give the model the page title as well as the image so the text carries the page's intent.",
          "test": "A crawl finds no content image with a missing alt, an empty alt or an alt equal to the file name; the axe or Lighthouse image-alt check passes.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C534",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's image SEO guide calls alt text the most important attribute for providing more metadata about an image, and says Google uses it together with computer vision and the page content to understand the image.",
              "quote": "The most important attribute when it comes to providing more metadata for an image is the alt text",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C535",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Alt text should describe the image in words for someone who cannot see it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C536",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google uses the words in an alt attribute to understand the image, may attach them to the image at serving time, and the image can rank for concepts the alt text describes.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C949",
              "day": 2,
              "session_id": "D2-S14",
              "session": "Lightning session F: Media",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "To test LLM-generated alt text before a rollout, a community speaker recommended running the crawler's custom JavaScript in Screaming Frog's List mode on a few chosen URLs and reviewing the generated alt text, instead of crawling the whole site in Spider mode.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C950",
              "day": 2,
              "session_id": "D2-S14",
              "session": "Lightning session F: Media",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Because not every generated alt text can be checked by hand, a community speaker's safer script adds the page title to the LLM's image description, so the alt text carries the page's intent and not only what the image shows.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "images",
            "accessibility"
          ],
          "docs": [
            {
              "key": "image-seo",
              "title": "Google image SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/google-images",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-IMG-03",
          "level": "SHOULD",
          "title": "Place images next to text that explains them",
          "why": "The text around an image is critical: Google uses it as context to understand and rank the image, so alt text alone is not enough. An extracted image can then appear almost anywhere Google shows results.",
          "how": "Put images in the main content near the paragraph they illustrate, add a figcaption or explanatory sentence to key images, and avoid image-only galleries without text.",
          "test": "Template review: key images sit inside main with a caption or adjacent descriptive text.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "responsive-image",
          "claims": [
            {
              "id": "D2-C537",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The text around an image is critical: Google uses it as context to understand the image and to rank it, so an alt attribute alone is not enough.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C525",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "An image Google has extracted can appear almost anywhere Google shows results, including Discover, image search, web search and AI features, so its potential reach is immense.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C539",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Give important images a caption or explanatory sentence next to them rather than relying on alt text alone, since Gary Illyes ranked src above alt and called the surrounding text critical for ranking the image.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "images",
            "ranking-signals-by-vertical",
            "accessibility"
          ],
          "docs": [
            {
              "key": "image-seo",
              "title": "Google image SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/google-images",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-IMG-04",
          "level": "SHOULD",
          "title": "List important images in an image sitemap",
          "why": "Besides img elements, image sitemaps tell Google about the images on each page, which helps for images that JavaScript loads or that are otherwise hard to find.",
          "how": "Add image:image entries with image:loc under each page's url in the sitemap, or in a separate image sitemap, up to 1,000 images per page, and list only images you want indexed.",
          "test": "The Sitemaps report reads the file, and the image URLs in it return 200 and are not disallowed.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "image-sitemap",
          "claims": [
            {
              "id": "D2-C540",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Besides img elements, image sitemaps tell Google about images: they are XML sitemaps that list, under a page's loc entry, the locations of the images on that page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-sitemaps",
                  "title": "Image sitemaps",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/image-sitemaps",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C527",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "One of the most reliable ways to make sure Google finds an image is to include it in an img element in the HTML; Gary Illyes named image sitemaps as the other method.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "images",
            "sitemaps"
          ],
          "docs": [
            {
              "key": "image-sitemaps",
              "title": "Image sitemaps",
              "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/image-sitemaps",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "sitemap-file",
              "count": 2,
              "own": true
            },
            {
              "id": "javascript",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IMG-05",
          "level": "SHOULD",
          "title": "Serve modern, compact image formats with a widely supported file in the img src",
          "why": "Google supports pretty much all popular image formats and recommends high-quality modern formats such as WebP with small files. Its documentation lists AVIF as supported, but Gary Illyes said at Search Central Live that AVIF currently has hiccups and Google may have problems ingesting it.",
          "how": "Offer AVIF and WebP through source elements inside picture, keep a WebP or JPEG file in the img src, set width and height, compress the files and serve responsive sizes with srcset.",
          "test": "Lighthouse format and sizing checks pass; the img src of key images is WebP or JPEG; key images appear in Google Images after launch.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "responsive-image",
          "claims": [
            {
              "id": "D2-C544",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Use high-quality modern image formats such as WebP for a good balance of quality and compression, and keep image files small so people can enjoy them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C541",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google supports pretty much all of the most popular image formats on the web.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C543",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's image SEO guide lists AVIF among the supported image formats (with BMP, GIF, JPEG, PNG, WebP and SVG), and Google announced in August 2024 that AVIF files need nothing special to be indexed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central, Search Central blog (30 August 2024)",
              "speaker": null,
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "avif-blog",
                  "title": "Supporting AVIF in Google Search",
                  "url": "https://developers.google.com/search/blog/2024/08/happy-avifriday",
                  "publisher": "Search Central blog (30 August 2024)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C542",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Gary Illyes said the AVIF image format currently has hiccups and Google may have problems ingesting it, although it should technically be supported.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C545",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "While the AVIF ingestion hiccup Gary Illyes mentioned lasts, serve AVIF only through source elements inside picture and keep a WebP or JPEG file in the img src, which is the URL Google extracts, even though Google's documentation lists AVIF as supported; then check in Google Images that key images appear.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "avif-blog",
                  "title": "Supporting AVIF in Google Search",
                  "url": "https://developers.google.com/search/blog/2024/08/happy-avifriday",
                  "publisher": "Search Central blog (30 August 2024)",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            }
          ],
          "topics": [
            "images"
          ],
          "docs": [
            {
              "key": "image-seo",
              "title": "Google image SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/google-images",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "avif-blog",
              "title": "Supporting AVIF in Google Search",
              "url": "https://developers.google.com/search/blog/2024/08/happy-avifriday",
              "publisher": "Search Central blog (30 August 2024)",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-IMG-06",
          "level": "SHOULD",
          "title": "Keep images out of Search with robots.txt or X-Robots-Tag, not with CSS tricks",
          "why": "Google's documented ways to keep a site's images out of search results are a robots.txt disallow (for example for Googlebot-Image) or a noindex X-Robots-Tag header, with the Removals tool for emergencies. A CSS background image, suggested on stage, only avoids extraction from that page; the same image URL used in an img element elsewhere or listed in a sitemap can still be indexed.",
          "how": "Disallow the image paths for Googlebot-Image, or send X-Robots-Tag: noindex for them, but not both for the same URLs, because the header is not seen on a disallowed URL.",
          "test": "Google's open-source robots.txt parser (github.com/google/robotstxt), run with the Googlebot-Image token, returns disallowed for the image paths, or curl -I on an image shows the X-Robots-Tag header; after recrawl the images no longer appear in Google Images.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "x-robots-tag",
          "claims": [
            {
              "id": "D2-C529",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's documented ways to keep a site's images out of search results are a robots.txt disallow rule (for example for Googlebot-Image) or a noindex X-Robots-Tag HTTP header, with the Removals tool for emergencies.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "remove-images",
                  "title": "Remove images hosted on your site from search results",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/prevent-images-on-your-page",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C530",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Hiding an image as a CSS background is a fragile way to keep it out of Google: it only stops extraction from that page, so the same image URL used in an img element elsewhere or listed in a sitemap can still be indexed; the documented robots.txt or noindex X-Robots-Tag methods are the reliable route.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "remove-images",
                  "title": "Remove images hosted on your site from search results",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/prevent-images-on-your-page",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "image-seo",
                  "title": "Google image SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/google-images",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C826",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Gary Illyes suggested a div with a CSS background image as a way to keep an image from being picked up by Google.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C931",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Googlebot-Image and Googlebot-Video are the Google crawlers that fetch images and videos, and robots.txt rules addressed to their user agent tokens control how Google indexes a site's images and videos.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C932",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "If robots.txt disallows the location of an image or video file, Google does not index that image or video.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "remove-images",
                  "title": "Remove images hosted on your site from search results",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/prevent-images-on-your-page",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "images",
            "crawl-directives",
            "robots-txt",
            "video"
          ],
          "docs": [
            {
              "key": "remove-images",
              "title": "Remove images hosted on your site from search results",
              "url": "https://developers.google.com/search/docs/crawling-indexing/prevent-images-on-your-page",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 4,
              "own": true
            },
            {
              "id": "noindex",
              "count": 2,
              "own": true
            },
            {
              "id": "x-robots-tag",
              "count": 2,
              "own": true
            },
            {
              "id": "disallow",
              "count": 1,
              "own": true
            },
            {
              "id": "sitemap-file",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IMG-07",
          "level": "SHOULD",
          "title": "Give every article a large, relevant lead image and declare it in og:image or markup",
          "why": "For Discover, Google recommends large images at least 1,200 px wide, with more than 300,000 pixels and a 16x9 aspect ratio, enabled by max-image-preview:large (DEV-IDX-04); a small thumbnail lowers click-through and a large one raises it. Avoid generic images such as the site logo, text-heavy images and misleading or exaggerated ones. The image named in schema.org markup or og:image can influence the thumbnail Discover chooses.",
          "how": "Make a lead image at least 1,200 px wide a required field of article templates, output it in og:image and in the Article markup's image list (DEV-SDA-13), crop 16x9 versions that keep the important details, and fall back to no image rather than the logo.",
          "test": "A crawl of article URLs finds on each an og:image at least 1,200 px wide that is not the logo; Search Console's Discover report shows impressions for article templates.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "discover-image-meta",
          "claims": [
            {
              "id": "D3-C224",
              "day": 3,
              "session_id": "D3-S06",
              "session": "Uncovering Trustworthy Experiences on Discover",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's Discover slide recommended large images at least 1,200 px wide, with more than 300,000 total pixels and a 16x9 aspect ratio, enabled by the max-image-preview:large setting.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C225",
              "day": 3,
              "session_id": "D3-S06",
              "session": "Uncovering Trustworthy Experiences on Discover",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's Discover slide said to avoid generic images, such as a site logo, and text-heavy images.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C226",
              "day": 3,
              "session_id": "D3-S06",
              "session": "Uncovering Trustworthy Experiences on Discover",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's Discover slide said images are subject to the same policy requirements as the content and that misleading, exaggerated or outrageous images should be avoided.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "discover-policies",
                  "title": "Discover content policies",
                  "url": "https://support.google.com/websearch/answer/9982767?hl=en",
                  "publisher": "Google Search Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C227",
              "day": 3,
              "session_id": "D3-S06",
              "session": "Uncovering Trustworthy Experiences on Discover",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Discover documentation says to specify the large image with schema.org markup or the og:image meta tag, which can influence the thumbnail Discover chooses, and that a vertical image cropped to 16x9 must keep its important details.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C221",
              "day": 3,
              "session_id": "D3-S06",
              "session": "Uncovering Trustworthy Experiences on Discover",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's Discover slide said that for eligible content image quality decides click-through: a small thumbnail lowers the click-through rate and a large, high-resolution image raises it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C230",
              "day": 3,
              "session_id": "D3-S06",
              "session": "Uncovering Trustworthy Experiences on Discover",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For Discover, set max-image-preview:large on article templates, give every article a relevant image at least 1,200 px wide in og:image or schema.org markup that is neither the site logo nor text-heavy, and show clear bylines and dates.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "google-discover",
                  "title": "Discover and your website",
                  "url": "https://developers.google.com/search/docs/appearance/google-discover",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "images",
            "discover"
          ],
          "docs": [
            {
              "key": "google-discover",
              "title": "Discover and your website",
              "url": "https://developers.google.com/search/docs/appearance/google-discover",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "google-discover",
              "count": 6,
              "own": true
            },
            {
              "id": "max-image-preview",
              "count": 2,
              "own": true
            },
            {
              "id": "schema-org-vocabulary",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-IMG-08",
          "level": "MAY",
          "title": "Keep the IPTC and C2PA metadata that marks AI-generated images",
          "why": "Whether a site uses AI-generated images is up to its owner, Google said at the event, but they must work for users and be checked for errors such as garbled text, which image models typically render poorly. Google Images supports the IPTC Digital Source Type values for algorithmically created images, such as trainedAlgorithmicMedia, and can show C2PA details in \"About this image\".",
          "how": "Keep the IPTC DigitalSourceType and any C2PA manifest from the generating tool when images are resized or compressed (many image pipelines strip metadata by default), and review AI images before publishing (DEV-SPM-05).",
          "test": "exiftool -XMP-iptcExt:DigitalSourceType on a published AI-generated image shows the source type that the original file had.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C943",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's image metadata guide says Google Images supports the IPTC Digital Source Type values for algorithmically created images, such as trainedAlgorithmicMedia, and can show C2PA details in 'About this image', such as whether an image was created or edited with AI tools.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "image-metadata",
                  "title": "Image metadata in Google Images",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/image-license-metadata",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C937",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To the frequent question about AI-generated images on a site, Google's answer is that it is up to the site owner.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C941",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Sites that use AI-generated images or videos should make sure they work for users, check them for hallucinations and regenerate them where needed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C939",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "The diffusion models that generate images were built to generate images, not text, so they are typically poor at rendering text inside an image.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            }
          ],
          "topics": [
            "images",
            "ai-content-detection",
            "ai-in-search-systems",
            "helpful-content"
          ],
          "docs": [
            {
              "key": "image-metadata",
              "title": "Image metadata in Google Images",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/image-license-metadata",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "gen-ai-content-guide",
              "title": "Google Search's guidance on using generative AI content on your website",
              "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "google-images",
              "count": 1,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "video",
      "title": "Video",
      "intro": "Google extracts videos from the page together with the data around them and passes them to its media indexing. A dedicated watch page, a video element that loads without interaction and VideoObject markup make a video eligible for video features such as key moments.",
      "requirements": [
        {
          "id": "DEV-VID-01",
          "level": "MUST",
          "title": "Embed each video in a video, iframe, embed or object element that loads without user action",
          "why": "Google finds videos referenced in these elements and extracts the video with the data around it. A video that loads only after a click, swipe or typing is not found.",
          "how": "Output the player element in the HTML at load (a poster frame is fine), at its real size and position and not hidden behind other elements, and for lazy players keep the element and its src or embed URL in the DOM. The Video indexing report flags \"Cannot determine video position and size\" when the player is not on the page at load. Said at Search Central Live: without a video container in the HTML Google treats the page as having no video, and the video should be embedded prominently, above the fold.",
          "test": "The rendered HTML in URL Inspection contains the video element or iframe with its URL, and the Video indexing report lists the page.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "video-object-jsonld",
          "claims": [
            {
              "id": "D2-C448",
              "day": 2,
              "session_id": "D2-S11",
              "session": "Finding the gold nuggets: structured data, media, and more!",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "For videos, Google's feature extraction takes the video itself and the data around it, to get a better sense of what happens in the video, and passes them to Google's media indexing engine.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C551",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google strongly suggests describing a video's metadata with JSON-LD structured data, on top of placing the video in an HTML element on the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C918",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes called a video container in the page's HTML critical: without one, Google treats the page as having no video.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "video-indexing-report",
                  "title": "Video indexing report",
                  "url": "https://support.google.com/webmasters/answer/9495631?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C942",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Video indexing report help says only videos on a watch page are eligible for indexing, and flags 'Cannot determine video position and size' when the player is not on the page at load, for example behind a click-to-play image, asking for the player to load at its real size and position without user interaction.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "video-indexing-report",
                  "title": "Video indexing report",
                  "url": "https://support.google.com/webmasters/answer/9495631?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C924",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "For a video to be discovered it must be embedded prominently, above the fold; Gary Illyes said a video placed below the fold is not going to be indexed.",
              "quote": "If it's not above the fold, then you basically lost the game.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            }
          ],
          "topics": [
            "video",
            "indexing-pipeline",
            "structured-data-implementation"
          ],
          "docs": [
            {
              "key": "video-seo",
              "title": "Video SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/video",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "video-indexing-report",
              "title": "Video indexing report",
              "url": "https://support.google.com/webmasters/answer/9495631?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-VID-02",
          "level": "SHOULD",
          "title": "Give each important video its own watch page",
          "why": "A video must be embedded on an indexed watch page to be eligible for video features, and Google recommends a dedicated watch page per video where it makes sense. A Google slide listed a dedicated watch page, compelling titles and descriptions, relevant thumbnails, markup, fast pages and sitemap inclusion as key factors.",
          "how": "Give each important video one URL where it is the main content, with a title and description specific to that video, a transcript or summary, and links from related articles. Gary Illyes said a video without a dedicated watch page is not going to be indexed, and that descriptive text around the video helps Google rank and retrieve it.",
          "test": "The Video indexing report shows the watch pages indexed with a detected video and no \"video is not the main content\" issue.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C554",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's video SEO guide says a video must be embedded on an indexed watch page to be eligible for video features and recommends a dedicated watch page per video where it makes sense for the business; a non-watch page with the video can still appear as a text result or a Google Images result with a video badge.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C553",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's video SEO slide said each video must be on its own dedicated HTML watch page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C552",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's slide listed seven key factors for video SEO success: high-quality video content, a dedicated watch page, compelling titles and descriptions, relevant thumbnails, video markup, fast-loading pages and sitemap inclusion.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C557",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Give each important video its own watch page where the video is the main content, add VideoObject markup and list the video in a video sitemap; a video buried in a long article lacks the dedicated watch page that Google listed as a key factor.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C916",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Gary Illyes said a video without a dedicated watch page is not going to be indexed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-indexing-report",
                  "title": "Video indexing report",
                  "url": "https://support.google.com/webmasters/answer/9495631?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C927",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Descriptive text around a video helps Google rank and retrieve the video.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            }
          ],
          "topics": [
            "video",
            "sitemaps",
            "structured-data-implementation",
            "retrieval"
          ],
          "docs": [
            {
              "key": "video-seo",
              "title": "Video SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/video",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "video-indexing-report",
              "title": "Video indexing report",
              "url": "https://support.google.com/webmasters/answer/9495631?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "sitemap-file",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-VID-03",
          "level": "SHOULD",
          "title": "Describe videos with VideoObject markup and mark key moments with Clip or SeekToAction",
          "why": "Google strongly suggests describing a video's metadata with JSON-LD in addition to the HTML element. Video features such as key moments and previews build on it: Clip markup gives exact segments, and SeekToAction tells Google how timestamps appear in your URLs.",
          "how": "VideoObject with name, description, thumbnailUrl, uploadDate in ISO 8601, duration, and contentUrl or embedUrl; hasPart Clip items with name, startOffset, endOffset and a url pointing at the same watch page at that second. Keep thumbnails crawlable and make them show the video's real content: said at Search Central Live, Google's experiments show a very high drop-out at the start of videos whose thumbnail is wrong.",
          "test": "The Rich Results Test detects the video and its clips, and the Video indexing report shows it as indexed.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "video-object-jsonld",
          "claims": [
            {
              "id": "D2-C551",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google strongly suggests describing a video's metadata with JSON-LD structured data, on top of placing the video in an HTML element on the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "intro-structured-data",
                  "title": "Introduction to structured data markup in Google Search",
                  "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C550",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google has video-specific features, such as key moments and previews, that help users interact with videos more easily.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C917",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google knows from experiments that when a video's thumbnail is wrong, the share of viewers who drop out at the start of the video is extremely high.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            }
          ],
          "topics": [
            "video",
            "structured-data-implementation"
          ],
          "docs": [
            {
              "key": "video-seo",
              "title": "Video SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/video",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "intro-structured-data",
              "title": "Introduction to structured data markup in Google Search",
              "url": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "json-ld",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-VID-04",
          "level": "SHOULD",
          "title": "List videos in a video sitemap",
          "why": "Including videos in a sitemap helps Google discover all of a site's video content. Said at Search Central Live: video sitemaps are not critical but good to have, because Google ingests them much more often than it can process HTML pages, and they tell it which URLs to check for video instead of checking every page.",
          "how": "Add video:video entries (thumbnail, title, description, and content or player location) for each watch page, in the page sitemap or a separate video sitemap.",
          "test": "The Sitemaps report reads the video sitemap, and its video count matches the Video indexing report.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C556",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Including videos in a sitemap helps Google discover all of a site's video content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-sitemaps",
                  "title": "Video sitemaps and alternatives",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/video-sitemaps",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C925",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Video sitemaps are not critical but good to have, because Google ingests video sitemaps much more often than it can process HTML pages.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C926",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A video sitemap or video feed tells Google which URLs carry videos so it can visit those URLs to double-check; without one, Google has to check every page individually.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-sitemaps",
                  "title": "Video sitemaps and alternatives",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/video-sitemaps",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "sitemaps",
            "video",
            "url-discovery"
          ],
          "docs": [
            {
              "key": "video-sitemaps",
              "title": "Video sitemaps and alternatives",
              "url": "https://developers.google.com/search/docs/crawling-indexing/sitemaps/video-sitemaps",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "sitemap-file",
              "count": 3,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-VID-05",
          "level": "MAY",
          "title": "Allow video previews with max-video-preview:-1",
          "why": "max-video-preview sets the maximum number of seconds of a video preview in Search: 0 allows only a static image and -1 means no limit. Google said it does not expect -1 to produce an hour-long preview.",
          "how": "Add max-video-preview:-1 to the robots meta tag of watch pages unless licensing requires a limit.",
          "test": "curl the watch page and check the robots meta content.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-meta-tags",
          "claims": [
            {
              "id": "D2-C090",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The max-video-preview rule sets the maximum number of seconds of a video preview in Search; 0 allows only a static image and -1 means no time limit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "robots-meta-tag-spec",
                  "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C091",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller said he thinks setting max-video-preview to -1 will not make Google show an hour-long video preview in search results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "snippet-controls",
            "video"
          ],
          "docs": [
            {
              "key": "robots-meta-tag-spec",
              "title": "Robots meta tag, data-nosnippet, and X-Robots-Tag specifications",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "video-seo",
              "title": "Video SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/video",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "allow",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-VID-06",
          "level": "SHOULD",
          "title": "Serve videos fast in a common container with standard codecs, and never block the files",
          "why": "Google processes the most popular video file types, MP4 and WebM among them, and the server streaming the video needs enough resources to support crawling. Said at Search Central Live by Gary Illyes: what matters is that the video itself loads fast, a CDN that serves it faster than the site's own server is a win, MP4 is recommended for its compatibility, and unusual codecs leave some people unable to play it. If robots.txt disallows a video file, Google does not index the video, and unlike a blocked web page it does not show the bare URL.",
          "how": "Encode in MP4 (H.264 video, AAC audio) or WebM, serve the files and thumbnails from a CDN with range requests, and keep the video, thumbnail and player URLs allowed in robots.txt for Googlebot and Googlebot-Video. Alternatively host on a video platform such as YouTube and embed it.",
          "test": "ffprobe shows a standard container and codecs; the video starts quickly on a throttled mobile connection; Google's open-source robots.txt parser, run with the Googlebot-Video token, returns allowed for the video and thumbnail URLs.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C921",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google supports the most popular video file formats on the web.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C919",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Gary Illyes called the 'fast-loading pages' factor for video SEO a misnomer: what matters is that the video itself loads fast, because people no longer have the patience to wait for videos to load.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C920",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Serving videos from a content delivery network (CDN) that loads them faster than the site's own server is a win for video SEO, Gary Illyes said.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C922",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google recommends the MP4 container for videos because of its browser and device compatibility.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C923",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Encode videos with standard codecs, because some people will not be able to play videos that use unusual ones.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C932",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "If robots.txt disallows the location of an image or video file, Google does not index that image or video.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "remove-images",
                  "title": "Remove images hosted on your site from search results",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/prevent-images-on-your-page",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C933",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Unlike a disallowed web page, whose bare URL can still appear in web results, a video blocked by robots.txt is not shown by its URL, because Google sees no good reason to show a video URL alone.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C928",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes suggested considering video hosting platforms such as YouTube or Vimeo, because they solved video search years ago.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "video-seo",
                  "title": "Video SEO best practices",
                  "url": "https://developers.google.com/search/docs/appearance/video",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "video",
            "robots-txt",
            "crawl-directives",
            "images"
          ],
          "docs": [
            {
              "key": "video-seo",
              "title": "Video SEO best practices",
              "url": "https://developers.google.com/search/docs/appearance/video",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "common-crawlers",
              "title": "List of Google's common crawlers",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 2,
              "own": true
            },
            {
              "id": "cdn",
              "count": 1,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "performance",
      "title": "Performance and server capacity",
      "intro": "Speed matters to crawling as much as to users: Google adjusts how much it crawls a host to its connect time, time to first byte and error rate, and that capacity is shared by every Google crawler. Fast rendering keeps content from timing out.",
      "requirements": [
        {
          "id": "DEV-PRF-01",
          "level": "SHOULD",
          "title": "Keep connect time and time to first byte low and stable under crawler load",
          "why": "The crawl rate limit (hostload) is a host-wide limit shared by all Google crawlers, including Search, Ads, Shopping and Images; it applies per host, so a CDN host, an app host, subdomains and the www host may each have their own. When connect time, time to first byte or the share of 429 and 5xx responses rises, Google lowers it and crawls less, while better performance increases the crawl budget. Google's crawl budget guide does not express this limit in requests per second: it counts the parallel connections Google holds open to the server and how long they last.",
          "how": "Cache rendered HTML at the edge, keep origin response times low for uncached pages, size servers for crawler bursts, give bots exactly what an anonymous first-time visitor gets (no personalisation, the default test variant), never content or URLs that no user can get, and do not route Googlebot to a slower backend.",
          "test": "Search Console Crawl stats shows a stable average response time and healthy host status; server logs compare time to first byte for verified Googlebot with users. An abrupt step down in crawling, or fewer connections opened by Googlebot, points to a lowered capacity limit rather than lower demand.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C092",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Hostload is driven by changes in connect time, changes in time to first byte, and HTTP 429 or 5xx status codes. If these increase, hostload is adjusted and crawling slows down.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C091",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Crawl rate limit, or hostload, is a host-wide metric shared across all Google crawlers.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C132",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's crawl budget guide says each crawler has its own crawl demand, but the crawl capacity limit (hostload) is shared across all crawlers, so high demand from one crawler can reduce the capacity left for others.",
              "quote": "high demand from one crawler can reduce the capacity available for others",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C096",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Crawl budget was described as the attention span Google gives a website, and better performance increases it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C066",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google Search, Ads, Shopping and Images all request through one centralised crawling infrastructure, whose primary mandate is to fetch from the internet while strictly preventing the overloading of external servers.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-infrastructure",
                  "title": "Crawling infrastructure",
                  "url": "https://developers.google.com/crawling",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C024",
              "day": 2,
              "session_id": "D2-S03",
              "session": "How is HTML interpreted",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "A Google slide titled Data from Crawling showed an example of what the crawler passes on for processing: the fetch result, the connect time and the time to first byte in milliseconds, the robots policies that apply to the fetch, and the raw HTTP response with the page's HTML.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C141",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to A/B testing says never to show one set of URLs to Googlebot and a different set to humans: that is cloaking, which is against Google's spam policies whether or not a test is running.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "website-testing",
                  "title": "Minimize A/B testing impact in Google Search",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/website-testing",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C374",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Crawl rate limit, or hostload, is a proxy for how many requests per second the connection to a site can handle before Google hits the limit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C376",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Hostload applies per host, not necessarily per site: depending on how a site is configured, its CDN, its app, its subdomains and its main www host may be different hosts.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C440",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "If a site's server cannot cope with the extra crawling that higher crawl demand brings, Google reduces its crawling of that site again.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C493",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "There is no easy way to tell whether a drop in Google's crawling comes from lower crawl demand or a lower crawl capacity limit; most of the time a capacity-limit drop is an abrupt step down.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C494",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To check whether Google lowered a site's crawl capacity limit, look at the number of connections Googlebot opens to the site: if it has dropped, the capacity limit changed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C547",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Google's crawl budget guide does not express the crawl capacity limit in requests per second: it limits the total time a server spends holding connections open for Google, counting both the number of parallel connections and their duration. That fits the panel's advice to watch how many connections Googlebot opens (D1-C494): fewer connections is the documented form of a lower capacity limit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-rate-limit",
            "crawl-pipeline",
            "crawl-demand",
            "crawl-budget",
            "indexing-pipeline",
            "spam-detection"
          ],
          "docs": [
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawling-infrastructure",
              "title": "Crawling infrastructure",
              "url": "https://developers.google.com/crawling",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "website-testing",
              "title": "Minimize A/B testing impact in Google Search",
              "url": "https://developers.google.com/search/docs/crawling-indexing/website-testing",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "crawl-capacity-limit",
              "count": 8,
              "own": true
            },
            {
              "id": "crawl-budget-metric",
              "count": 3,
              "own": true
            },
            {
              "id": "crawl-demand-metric",
              "count": 3,
              "own": false
            },
            {
              "id": "googlebot",
              "count": 3,
              "own": false
            },
            {
              "id": "cdn",
              "count": 1,
              "own": true
            },
            {
              "id": "http-429",
              "count": 1,
              "own": true
            },
            {
              "id": "http-5xx",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-PRF-02",
          "level": "SHOULD",
          "title": "Make JavaScript-generated content render quickly",
          "why": "Pages wait in a render queue and rendering does not go on forever. Said at Search Central Live: when a Gemini user asks about a specific page it is read at that moment, which takes extra time, and Google's answer is fast, efficient JavaScript rendering or server-side rendering.",
          "how": "Ship less JavaScript on content templates, avoid sequential API waterfalls before the main content, stream or server-render above-the-fold content, and lazy-load only non-essential widgets.",
          "test": "Lighthouse or PageSpeed Insights on key templates; a headless render under CPU throttling shows the main content quickly; the URL Inspection screenshot shows the full content.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C124",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's simple solution for the extra time of live page reads is to make JavaScript-generated content render quickly and efficiently, or to use server-side rendering.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "dynamic-rendering",
                  "title": "Dynamic rendering as a workaround",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C172",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's JavaScript SEO basics guide says a page may wait in the render queue for a few seconds but that it can take longer, and it gives no upper limit.",
              "quote": "The page may stay on this queue for a few seconds, but it can take longer than that.",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C120",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "When a Gemini user asks about a specific web page (for example, whether it says anything about the ruby HTML tag), the page is read at that moment rather than during crawling and may be used to ground the answer, which takes extra time.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": []
            },
            {
              "id": "D2-C125",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For pages people are likely to ask an AI assistant about (product, pricing, documentation and policy pages), server-render the main content so a live, user-triggered read does not depend on client-side JavaScript finishing quickly.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C117",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "AI Overviews and AI Mode typically do not ground their answers by reading pages live, unlike Gemini when a user asks about a specific page, Google said.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "ai-crawlers-and-agents",
            "gemini-and-search",
            "javascript-seo",
            "seo-vs-geo",
            "rendering"
          ],
          "docs": [
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "gemini",
              "count": 2,
              "own": true
            },
            {
              "id": "javascript",
              "count": 2,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-PRF-03",
          "level": "MAY",
          "title": "Load per-session-billed third-party tools only after a user interaction",
          "why": "Said at Search Central Live by a community speaker: third-party systems billed per session (chat, personalisation, testing, session replay) also run when bots render pages and can cost a high-traffic site thousands of euros a month.",
          "how": "Initialise such tools on the first user interaction (click, keypress, scroll) when they add no content that needs indexing, and compare the sessions they bill with real user sessions.",
          "test": "Vendor-billed session counts match analytics sessions, and a headless render of a page starts no vendor session before an interaction.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C163",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Third-party systems billed per session that also run when bots render a page can cost a high-traffic site thousands of euros per month, a community speaker said, adding that he sees this regularly.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C165",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Compare the session counts that per-session-billed tools (chat, personalisation, testing, session replay) charge for with real user sessions, and load such tools only after a user interaction where they add no content that needs to be indexed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "javascript-seo",
            "rendering-debugging"
          ],
          "docs": [],
          "entities": []
        },
        {
          "id": "DEV-PRF-04",
          "level": "SHOULD",
          "title": "Keep each HTML response well under 2 MB and put the main content and JSON-LD early",
          "why": "Googlebot fetches only the first 2MB of an HTML URL, HTTP headers included: bytes past that cutoff are not fetched, rendered or indexed. Google warns that bloated inline base64 images, large blocks of inline CSS or JavaScript and megabytes of menus can push a page's text or structured data past the limit, a real risk for single-page apps that inline large hydration state. Scripts, stylesheets and API responses the page loads each have their own limit.",
          "how": "Move base64 images, large inline scripts and styles and serialised application state (hydration JSON) to external files or endpoints, keep navigation markup compact, and place the meta tags, title, canonical, hreflang and essential JSON-LD high in the head, with the main content before long secondary blocks.",
          "test": "For every template, curl -s <url> | wc -c stays under about 1.5 MB, and the main heading and the JSON-LD appear within the first 2 MB of the response (curl -s <url> | head -c 2000000 | grep -c 'application/ld+json').",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C136",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Inside Googlebot post (March 2026) says Googlebot currently fetches only the first 2MB of each URL, HTTP headers included (64MB for PDFs); bytes past that cutoff are not fetched, rendered or indexed, and each resource the page loads has its own separate limit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (31 March 2026)",
              "speaker": null,
              "sources": [
                {
                  "key": "inside-googlebot-blog",
                  "title": "Inside Googlebot: demystifying crawling, fetching, and the bytes we process",
                  "url": "https://developers.google.com/search/blog/2026/03/crawler-blog-post",
                  "publisher": "Search Central blog (31 March 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C137",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Inside Googlebot post warns that bloated inline base64 images, large blocks of inline CSS or JavaScript, or megabytes of menus can push a page's text or structured data past Googlebot's 2MB cutoff, and advises moving heavy CSS and JavaScript to external files and placing meta tags, the title, the canonical and essential structured data high in the HTML.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (31 March 2026)",
              "speaker": null,
              "sources": [
                {
                  "key": "inside-googlebot-blog",
                  "title": "Inside Googlebot: demystifying crawling, fetching, and the bytes we process",
                  "url": "https://developers.google.com/search/blog/2026/03/crawler-blog-post",
                  "publisher": "Search Central blog (31 March 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "crawl-pipeline",
            "rendering"
          ],
          "docs": [
            {
              "key": "inside-googlebot-blog",
              "title": "Inside Googlebot: demystifying crawling, fetching, and the bytes we process",
              "url": "https://developers.google.com/search/blog/2026/03/crawler-blog-post",
              "publisher": "Search Central blog (31 March 2026)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "crawlers-overview",
              "title": "Overview of Google crawlers and fetchers (user agents)",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "googlebot",
              "count": 2,
              "own": true
            },
            {
              "id": "javascript",
              "count": 1,
              "own": true
            },
            {
              "id": "structured-data-concept",
              "count": 1,
              "own": true
            },
            {
              "id": "json-ld",
              "count": 0,
              "own": true
            },
            {
              "id": "main-content-concept",
              "count": 0,
              "own": true
            },
            {
              "id": "single-page-app",
              "count": 0,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "ai-features",
      "title": "AI features (AI Overviews, AI Mode, Gemini)",
      "intro": "AI Overviews and AI Mode use the same crawling and the same index as Search, and query fan-out sends generated queries to that index and gets documents back with their snippets. There is no separate AI index, markup or file to build for; the controls for AI features are covered in the indexing controls above.",
      "requirements": [
        {
          "id": "DEV-AIF-01",
          "level": "MUST",
          "title": "Keep pages indexable and snippet-eligible, the whole technical requirement for AI features",
          "why": "To appear as a supporting link in AI Overviews or AI Mode a page must be indexed and eligible to be shown with a snippet, with no additional technical requirements. AI features are built on Google's core ranking systems and its index, so what works for web results works for them.",
          "how": "Apply the rest of this kit, do not block snippets (DEV-IDX-05), and keep the Search Console generative AI setting on include unless the site is excluded on purpose (DEV-IDX-10). When a page never shows up as a source, check indexing, snippet rules and that setting first.",
          "test": "URL Inspection shows the page indexed, its robots rules contain no nosnippet, and the Generative AI performance report shows impressions.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C074",
              "day": 2,
              "session_id": "D2-S04",
              "session": "Controlling indexing",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's AI features guide says a page must be indexed and eligible to be shown in Google Search with a snippet to appear as a supporting link in AI Overviews or AI Mode, with no additional technical requirements.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C038",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "AI Mode and AI Overviews use the same crawling and the same index as Search. At serving they add grounding on the Search index and query fan-out.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C051",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Three reasons were given: generative AI features are built directly on the core ranking systems, query fan-out expands the original query to find related information, and generative AI features highlight content indexed by Google Search.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C601",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Sites need no extra work to appear in AI Overviews and AI Mode: both work on top of the existing web results, so what works for web results also works for the AI features.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C730",
              "day": 2,
              "session_id": "D2-S23",
              "session": "How does the index look like?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "There is no separate AI index to optimise for: when a page never shows up as a source in AI Overviews or AI Mode, first check that it is indexed, that no nosnippet rule blocks its snippet and that the site is not excluded in Search Console's generative AI setting, the eligibility conditions Google lists.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "seo-vs-geo",
            "query-fanout",
            "ai-links-to-web",
            "snippet-controls",
            "pipeline-overview",
            "index-structure"
          ],
          "docs": [
            {
              "key": "ai-features-guide",
              "title": "AI features and your website",
              "url": "https://developers.google.com/search/docs/appearance/ai-features",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "ai-optimization-guide",
              "title": "Optimizing your website for generative AI features on Google Search",
              "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "ai-mode",
              "count": 4,
              "own": true
            },
            {
              "id": "ai-overviews",
              "count": 4,
              "own": true
            },
            {
              "id": "query-fan-out",
              "count": 2,
              "own": false
            },
            {
              "id": "snippets",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-AIF-02",
          "level": "SHOULD",
          "title": "Spend no effort on llms.txt, AI text files or AI-specific markup for Google",
          "why": "Google's guide says new machine-readable files, AI text files or special markup are not needed to appear in Search, which ignores them, so they neither help nor harm. Structured data is not required for generative AI search either, though it remains worth using for rich results, and the same processed markup feeds classic results and AI answers. Google repeated it on serving day: AI Overviews and AI Mode are standard search features, not rich results, and need no structured data to function.",
          "how": "Do not build llms.txt or AI-only endpoints for Google; invest instead in documented structured data types (DEV-SDA-03) and crawlable, server-rendered content. If llms.txt is published for other tools, make it answer 200 (Lighthouse's optional llms.txt audit flags a server error), and do not publish markdown copies of HTML pages for agents: a community speaker warned they are duplicates, possibly even a cloaking risk. The same speaker cited a study of almost 40,000 sites in which 97% of llms.txt files got no AI agent hits in a month; Ahrefs' published study (June 2026) reports the same 97%.",
          "test": "The backlog has no tickets for llms.txt or AI-only markup aimed at Google.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C061",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide says new machine-readable files, AI text files or special markup are not needed to appear in Search, and that such files neither harm nor help visibility because Google Search ignores them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C054",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Myth: optimise for AI over readers. Google's answer: optimise for people, with no need to obsess over precise keywords or AI phrasing, no need to chop content, and no need for llms.txt.",
              "quote": "LLMS.txt isn't necessary.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C480",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to optimizing for generative AI features lists 'overfocusing on structured data' among the things site owners don't need to do: structured data is not required for generative AI search and no special schema.org markup is needed, though it remains worth using because it helps pages become eligible for rich results.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C476",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The structured data Google processes is not fed very differently to AI Overviews and AI Mode: after cleaning and quality work, the same data goes to both the classic results page and the AI features.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C479",
              "day": 2,
              "session_id": "D2-S12",
              "session": "What is Structured Data and why we need it on the internet.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "There is no separate markup for AI features: by Google's account the same processed markup feeds classic results and AI answers, and raw schema.org is generally not passed into model context, so invest in the types Google documents for its features rather than in extra markup written for AI.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C325",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "AI Mode and AI Overviews are not rich results but standard search features: they need no structured data to function and work with the normal text results from Google's index.",
              "quote": "AI Mode and AI Overviews are not rich results.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C326",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's AI features guide says there are no additional requirements, and no special schema.org structured data, needed to appear in AI Overviews or AI Mode; a page must be indexed and eligible to be shown with a snippet.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C328",
              "day": 3,
              "session_id": "D3-S10",
              "session": "How Search results are born",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Day 2 said the structured data Google processes also feeds AI Overviews and AI Mode (D2-C476), while Day 3 said these features do not need structured data to function: markup is not a condition for appearing in AI features, but data taken from it can still reach them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C271",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker said llms.txt files are not necessary, citing a third-party study from summer 2026 (heard as Ahrefs') that looked at almost 40,000 sites over one month: 97% had no AI agent hits on the file, and those that had any got about two hits a month.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C272",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A community speaker advised against publishing markdown copies of HTML pages for AI agents: the copy is a duplicate (which the speaker also called a possible source of cloaking, an uncertain word in the recordings), and the models are trained to read HTML, CSS and JavaScript.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C454",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Gary Illyes said llms.txt does not matter for Google Search right now and that he does not expect it to, while adding that he had been wrong before.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C455",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes said llms.txt matters to some people, which is why tools such as Lighthouse add checks for it, so both sides of the debate are right in their own context.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "lighthouse-llms-txt",
                  "title": "llms.txt",
                  "url": "https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt",
                  "publisher": "Chrome for Developers",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C460",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Chrome's Lighthouse documentation lists an llms.txt audit among its agentic browsing audits: it flags a server error when llms.txt is fetched and marks the audit not applicable when the file is missing, because providing the file is optional for now.",
              "quote": "",
              "quote_checked": false,
              "credit": "Chrome for Developers",
              "speaker": null,
              "sources": [
                {
                  "key": "lighthouse-llms-txt",
                  "title": "llms.txt",
                  "url": "https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt",
                  "publisher": "Chrome for Developers",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C473",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Files such as cats.txt have no importance for Google Search: if a site links to one, Googlebot will find and crawl it, but it has no other effect.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C505",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The llms.txt study cited on stage matches Ahrefs' June 2026 study of 137,210 domains: 28% (about 38,000, the 'almost 40,000' sites heard on stage) published an llms.txt file and 97% of those files received no requests at all in May 2026; the files that were fetched got about 22,000 requests across some 1,100 domains, around 20 each, not the 'two hits a month' heard on stage.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "ahrefs-llmstxt-study",
                  "title": "We Analyzed 137K Sites: 97% of llms.txt Files Never Get Read",
                  "url": "https://ahrefs.com/blog/llmstxt-study/",
                  "publisher": "Ahrefs (15 June 2026)",
                  "kind": "press",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "llms-txt",
            "structured-data",
            "seo-vs-geo",
            "ai-links-to-web",
            "helpful-content",
            "ai-crawlers-and-agents",
            "duplicate-content",
            "structured-data-implementation",
            "rich-results"
          ],
          "docs": [
            {
              "key": "ai-optimization-guide",
              "title": "Optimizing your website for generative AI features on Google Search",
              "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "ai-features-guide",
              "title": "AI features and your website",
              "url": "https://developers.google.com/search/docs/appearance/ai-features",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "lighthouse-llms-txt",
              "title": "llms.txt",
              "url": "https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt",
              "publisher": "Chrome for Developers",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "llms-txt-file",
              "count": 6,
              "own": true
            },
            {
              "id": "structured-data-concept",
              "count": 5,
              "own": true
            },
            {
              "id": "ai-mode",
              "count": 4,
              "own": true
            },
            {
              "id": "ai-overviews",
              "count": 4,
              "own": true
            },
            {
              "id": "schema-org-vocabulary",
              "count": 3,
              "own": false
            },
            {
              "id": "rich-results-feature",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-AIF-03",
          "level": "SHOULD",
          "title": "Structure content for readers instead of splitting it into small chunks for AI",
          "why": "Google's guidance says there is no need to chop content for AI systems. Chunking matters at the level of a model's context window, and Gemini's holds a whole smaller book; said at Search Central Live, once chunk size is thought of in millions of tokens, chunking has perhaps lost its meaning anyway. Separate pages for every query variation, made to manipulate rankings or AI answers, count as scaled content abuse. Fan-out queries differ from system to system and, said at Search Central Live, are not added to Search Console; Google advises knowing that fan-out happens without overfocusing on individual fan-out queries, so do not build pages for fan-out queries copied from LLM tools.",
          "how": "Keep complete pages with clear headings and full explanations, model content in the CMS by topic rather than by fragment length, and do not auto-generate thin pages per question or query variation.",
          "test": "Content-model review finds no template that splits articles into many thin URLs.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C054",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Myth: optimise for AI over readers. Google's answer: optimise for people, with no need to obsess over precise keywords or AI phrasing, no need to chop content, and no need for llms.txt.",
              "quote": "LLMS.txt isn't necessary.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C129",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide says creating separate content for every variation of how people might search, including fan-out queries, primarily to manipulate rankings or AI responses violates its scaled content abuse policy. It adds that its AI systems can understand a page's relevance even without an exact match to the query.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C332",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gemini does not need content cut into small chunks of 100 or 200 words, Gary Illyes said, since a smaller book fits in its context window.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "gemini-long-context",
                  "title": "Long context",
                  "url": "https://ai.google.dev/gemini-api/docs/long-context",
                  "publisher": "Google AI for Developers (Gemini API docs)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C825",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Gary Illyes added that, once chunk size is thought of in millions of tokens as Gemini's context window allows, chunking has perhaps lost its meaning anyway.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D2-C333",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Do not rewrite pages into short, self-contained chunks for AI systems; Google says Gemini reads context windows of millions of tokens, so structure content for readers, with clear headings and complete explanations.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C063",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google said fan-out queries are not added to Search Console, because Google considers them part of its infrastructure.",
              "quote": "Fan-out queries are not added in Search Console, because they're basically a part of our infrastructure.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": []
            },
            {
              "id": "D3-C065",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Because every system runs fan-out differently, Google advised understanding that fan-out happens but not overfocusing on individual fan-out queries or on how to rank for them.",
              "quote": "I would not overfocus on which individual fan-out queries happen and how can I rank for those",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C066",
              "day": 3,
              "session_id": "D3-S03",
              "session": "Making sense of users' queries",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Do not build pages for fan-out queries copied from Gemini or other LLM tools: they differ from system to system and Search Console does not report them. Cover a topic's real subquestions on solid pages instead.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C869",
              "day": 2,
              "session_id": "D2-S07",
              "session": "Understanding what's on a page",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Right after saying Gemini's context window holds millions of tokens, Gary Illyes put its size at perhaps 900,000 or even closer to a million, without a unit that the recordings capture.",
              "quote": "the context window is perhaps 900,000 or even closer to a million big",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "gemini-long-context",
                  "title": "Long context",
                  "url": "https://ai.google.dev/gemini-api/docs/long-context",
                  "publisher": "Google AI for Developers (Gemini API docs)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "query-fanout",
            "chunking",
            "seo-vs-geo",
            "helpful-content",
            "gemini-and-search",
            "llms-txt",
            "measurement"
          ],
          "docs": [
            {
              "key": "ai-optimization-guide",
              "title": "Optimizing your website for generative AI features on Google Search",
              "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "gemini-long-context",
              "title": "Long context",
              "url": "https://ai.google.dev/gemini-api/docs/long-context",
              "publisher": "Google AI for Developers (Gemini API docs)",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "gemini",
              "count": 5,
              "own": true
            },
            {
              "id": "query-fan-out",
              "count": 4,
              "own": true
            },
            {
              "id": "google-search-console",
              "count": 2,
              "own": true
            },
            {
              "id": "scaled-content-abuse",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-AIF-04",
          "level": "SHOULD",
          "title": "Do not block the AI agents you want as visitors",
          "why": "Said at Search Central Live: Google's duplication talk closed with the advice not to block agents, and AI agents browsing for users run into the same bot walls that sites build against scrapers and may go elsewhere, for example to buy the product from another shop.",
          "how": "Decide per agent which ones to allow, tune bot protection to challenge abusive patterns rather than every automated browser, and if a challenge is needed send it with 503 (DEV-SRV-02).",
          "test": "WAF and bot-management logs show no blocks of agents the team decided to allow.",
          "status": "event-only",
          "status_label": "Said at Search Central Live",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C397",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's duplication talk closed with the advice not to block agents, which the speaker said are sometimes really cool.",
              "quote": "Don't block agents.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C377",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "AI agents that browse the web for users run into the same bot walls that sites put up against scrapers, and may give up and go to another site, for example to buy the product elsewhere.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C378",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Check what your CDN or bot protection serves to verified Googlebot and to the AI agents you want to allow; if crawlers must get a challenge page, return it with a 503 status as Google recommends, never as a 200 page across many URLs, which Google may cluster as duplicates.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "ai-crawlers-and-agents",
            "crawl-errors"
          ],
          "docs": [],
          "entities": []
        },
        {
          "id": "DEV-AIF-05",
          "level": "MAY",
          "title": "Set robots.txt policy per AI crawler by its own token, and know that user-triggered fetchers ignore it",
          "why": "Mainstream crawlers from Google, other search engines and AI companies try to follow robots.txt, and nearly all AI crawlers use their own user agents, so a site can allow search crawling and refuse AI training per company; Google's token for that is Google-Extended (DEV-IDX-11), and said at Search Central Live, other companies have similar \"extended\" tokens, such as Apple's Applebot-Extended, which lets a site allow Applebot for search while opting out of Apple's AI use. User-triggered fetchers, which fetch a page because a user asked, and AI agents acting for a user generally ignore robots.txt.",
          "how": "Write one robots.txt group per AI crawler token you want to restrict, and keep Googlebot allowed. Avoid a default-deny file that blocks every crawler and allows only chosen ones: a Google panelist called it a bad pattern, because you do not know what you are blocking. When logs show an unknown crawler fetching a lot, look up its user agent to find the token that controls it. To restrict user-triggered fetchers or agents, use authentication or bot management, not robots.txt.",
          "test": "Google's open-source robots.txt parser returns the intended result for Googlebot, Google-Extended and each listed AI token; logs show the restricted crawlers stop after robots.txt is refreshed.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "robots-txt",
          "claims": [
            {
              "id": "D1-C428",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Mainstream crawlers from Google, other large search engines and AI companies try to follow robots.txt, so implementing robots.txt correctly is the way to stop them doing something specific on a site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-intro",
                  "title": "Introduction to robots.txt",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "crawlers-overview",
                  "title": "Overview of Google crawlers and fetchers (user agents)",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C482",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Nearly all mainstream AI crawlers and AI systems use their own user agents, so robots.txt can set a separate policy for each; at the event OpenAI was said to have three or four, Anthropic a few and Microsoft some.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C485",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "To opt out of Google's AI training, a site can use the Google-Extended token in robots.txt.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "common-crawlers",
                  "title": "List of Google's common crawlers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C487",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "A Google panelist said Apple offers a robots.txt control for Applebot similar to Google-Extended, so a site can allow Applebot for search while opting out of Apple's AI use.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C488",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "When logs show an unknown crawler fetching a lot, search for its user agent online to find the robots.txt token that controls it; the mainstream crawlers that send the most traffic can all be controlled this way.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C434",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "User-initiated fetchers, such as a translation service fetching a page a user asked to translate, are a different category from crawlers and generally do not check robots.txt, because a user asked for the fetch.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "user-triggered-fetchers",
                  "title": "List of Google user-triggered fetchers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-user-triggered-fetchers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C435",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "AI agents acting on a user's request fall into the same category as user-initiated fetchers: an agent told to look at a site reads the page without checking robots.txt.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "user-triggered-fetchers",
                  "title": "List of Google user-triggered fetchers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-user-triggered-fetchers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C273",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker pointed out that, according to Google's documentation, user-triggered fetchers, which fetch a page because a user asked for it, generally ignore robots.txt rules.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "user-triggered-fetchers",
                  "title": "List of Google user-triggered fetchers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-user-triggered-fetchers",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C424",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's search crawling works to keep content fresh and to understand which pages change frequently, whereas many AI systems crawl a site with no understanding of it and take everything.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C425",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Crawling for AI model training differs from search crawling because training mainly needs a very large number of tokens, and it matters little which pages they come from.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C524",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Other companies have similar 'extended' robots.txt tokens; Google named Apple's Applebot-Extended.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C523",
              "day": 1,
              "session_id": "D1-S07",
              "session": "How Google interprets robots.txt",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The 'first' needs care: OpenAI documented how to block its GPTBot crawler in robots.txt in August 2023, before Google announced Google-Extended on 28 September 2023. What Google-Extended added was a token that controls AI-training use of pages fetched by Google's existing crawlers, separately from Search; Apple later introduced a similar token, Applebot-Extended.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "google-extended-announcement",
                  "title": "An update on web publisher controls",
                  "url": "https://blog.google/technology/ai/an-update-on-web-publisher-controls/",
                  "publisher": "The Keyword, Google blog (28 September 2023, Danielle Romain)",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "register-gptbot-2023",
                  "title": "How to spot OpenAI's crawler bot and stop it slurping sites for training data",
                  "url": "https://www.theregister.com/2023/08/08/openai_scraping_software/",
                  "publisher": "The Register (8 August 2023)",
                  "kind": "press",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C489",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "A Google panelist called a default-deny robots.txt, which blocks every crawler and allows only chosen ones, a bad pattern because the site owner does not know what is being blocked.",
              "quote": "Personally, I think that's a bad pattern, because you don't know what you're blocking.",
              "quote_checked": true,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "ai-crawlers-and-agents",
            "robots-txt",
            "genai-optout",
            "google-extended",
            "search-agents",
            "crawl-demand"
          ],
          "docs": [
            {
              "key": "robots-spec",
              "title": "How Google interprets the robots.txt specification",
              "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "robots-intro",
              "title": "Introduction to robots.txt",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots/intro",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "common-crawlers",
              "title": "List of Google's common crawlers",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "user-triggered-fetchers",
              "title": "List of Google user-triggered fetchers",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-user-triggered-fetchers",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "robots-txt-file",
              "count": 11,
              "own": true
            },
            {
              "id": "google-extended-token",
              "count": 3,
              "own": true
            },
            {
              "id": "user-triggered-fetchers",
              "count": 1,
              "own": true
            },
            {
              "id": "allow",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-AIF-06",
          "level": "MAY",
          "title": "Try WebMCP to declare the actions a site offers to AI agents",
          "why": "A community speaker presented WebMCP, a proposed web standard in Chrome, as a way to tell AI agents which actions a site offers, such as booking an appointment, so they do not have to scrape the interface. It has declarative tools, annotations on standard HTML forms, and imperative tools defined in JavaScript; at the event it was not supported by all browsers but could be enabled for testing. It plays no documented role in Google Search.",
          "how": "Pilot it on one task flow: annotate an existing form for the declarative API or register a JavaScript tool for booking, filtering or adding to cart, through Chrome's origin trial (Chrome 149 and later) or the chrome://flags/#enable-webmcp-testing flag. Keep the normal HTML flow working for users and agents without WebMCP.",
          "test": "With the flag enabled, Chrome's tooling lists the site's tools, and the flow still completes without WebMCP.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C281",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker presented WebMCP (Web Model Context Protocol) as a way for a site to declare the actions it offers to AI agents, for example booking an appointment in a calendar, so an agent does not have to scrape the interface; the speaker called it faster, easier and cheaper.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "webmcp",
                  "title": "WebMCP",
                  "url": "https://developer.chrome.com/docs/ai/webmcp",
                  "publisher": "Chrome for Developers",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C282",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker said that at the time of the event (30 September 2026) WebMCP was not supported by all browsers but could be enabled for testing through browser flags.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "webmcp",
                  "title": "WebMCP",
                  "url": "https://developer.chrome.com/docs/ai/webmcp",
                  "publisher": "Chrome for Developers",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C283",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker said WebMCP has two kinds of tools: declarative ones, mostly HTML annotations such as the fields of a contact form, and imperative ones for other actions such as booking, filtering a catalogue, adding products to a cart, getting product specs or reordering.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Carlos Ortega",
              "sources": [
                {
                  "key": "webmcp",
                  "title": "WebMCP",
                  "url": "https://developer.chrome.com/docs/ai/webmcp",
                  "publisher": "Chrome for Developers",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C316",
              "day": 1,
              "session_id": "D1-S04",
              "session": "Lightning session A: Automation and AI",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Chrome's WebMCP documentation describes WebMCP as a proposed web standard that site owners can test through an origin trial starting in Chrome 149 or through a Chrome flag for local development.",
              "quote": "",
              "quote_checked": false,
              "credit": "Chrome for Developers",
              "speaker": null,
              "sources": [
                {
                  "key": "webmcp",
                  "title": "WebMCP",
                  "url": "https://developer.chrome.com/docs/ai/webmcp",
                  "publisher": "Chrome for Developers",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "ai-crawlers-and-agents",
            "web-standards"
          ],
          "docs": [
            {
              "key": "webmcp",
              "title": "WebMCP",
              "url": "https://developer.chrome.com/docs/ai/webmcp",
              "publisher": "Chrome for Developers",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "webmcp",
              "count": 4,
              "own": true
            },
            {
              "id": "chrome",
              "count": 1,
              "own": true
            },
            {
              "id": "javascript",
              "count": 0,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "spam-and-ai-content",
      "title": "Spam policies and AI-generated content",
      "intro": "Google's spam policies cover practices that deceive users or manipulate Search, including its generative AI responses, and several of them are built in code: history manipulation, cloaking, generated page sets and hacked pages. AI is a tool; how its output is used decides whether content is helpful or spam.",
      "requirements": [
        {
          "id": "DEV-SPM-01",
          "level": "AVOID",
          "title": "Never manipulate browser history so that Back does not return users to where they came from",
          "why": "Back button hijacking, interfering with browser navigation so users cannot use Back to return immediately to the page they came from, is an explicit violation of Google's malicious practices spam policy, enforced since 15 June 2026 with manual spam actions or automated demotions. Google added it after many complaints about landing on auto-generated pages or staying on the same site after pressing Back twice, and says the cause can be a site's included libraries or advertising platform.",
          "how": "Call history.pushState only for real in-app navigation that the user triggered (DEV-URL-03), never on page load, on scroll or to insert interstitial, recommended or exit pages, and do not intercept popstate to keep users on the site. Audit scripts from ad, engagement and recommendation vendors, and remove or disable any code, import or configuration that adds history entries.",
          "test": "An automated browser test opens each template from another page, waits and interacts, presses Back once and lands on the previous page; a code search of the built bundles finds no pushState or replaceState outside the router.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "back-button-test",
          "claims": [
            {
              "id": "D3-C207",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's quality talk listed recent updates to Google's spam policies: back button hijacking, scaled content abuse and manipulating AI responses.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "search-docs-updates",
                  "title": "Latest documentation updates",
                  "url": "https://developers.google.com/search/updates",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C208",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's quality talk said back button hijacking was added after many user complaints about pressing the back button and landing on an auto-generated page, or staying on the same site after pressing it twice.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "back-button-hijacking-blog",
                  "title": "Introducing a new spam policy for \"back button hijacking\"",
                  "url": "https://developers.google.com/search/blog/2026/04/back-button-hijacking",
                  "publisher": "Search Central blog (13 April 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C209",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google announced on 13 April 2026 that back button hijacking is an explicit violation of its malicious practices spam policy, with enforcement from 15 June 2026; pages that do it may get manual spam actions or automated demotions.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (13 April 2026), Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "back-button-hijacking-blog",
                  "title": "Introducing a new spam policy for \"back button hijacking\"",
                  "url": "https://developers.google.com/search/blog/2026/04/back-button-hijacking",
                  "publisher": "Search Central blog (13 April 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C210",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's back button hijacking announcement says some instances may come from a site's included libraries or advertising platform, and asks site owners to remove or disable any code, imports or configurations responsible.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (13 April 2026)",
              "speaker": null,
              "sources": [
                {
                  "key": "back-button-hijacking-blog",
                  "title": "Introducing a new spam policy for \"back button hijacking\"",
                  "url": "https://developers.google.com/search/blog/2026/04/back-button-hijacking",
                  "publisher": "Search Central blog (13 April 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C211",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For development teams: test that the browser back button returns users from your pages to where they came from, including search results; audit scripts that call the History API, insert interstitial or 'recommended' pages, or come from ad and engagement vendors.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "back-button-hijacking-blog",
                  "title": "Introducing a new spam policy for \"back button hijacking\"",
                  "url": "https://developers.google.com/search/blog/2026/04/back-button-hijacking",
                  "publisher": "Search Central blog (13 April 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "spam-policies"
          ],
          "docs": [
            {
              "key": "spam-policies",
              "title": "Spam policies for Google web search",
              "url": "https://developers.google.com/search/docs/essentials/spam-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "back-button-hijacking-blog",
              "title": "Introducing a new spam policy for \"back button hijacking\"",
              "url": "https://developers.google.com/search/blog/2026/04/back-button-hijacking",
              "publisher": "Search Central blog (13 April 2026)",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-SPM-02",
          "level": "AVOID",
          "title": "Do not generate large sets of low-value pages from templates, feeds or LLM output",
          "why": "Scaled content abuse, many pages generated mainly to manipulate rankings rather than help users, is among the spam policies Google recently updated, whether the pages come from generative AI, scraped feeds, stitched sources or keyword text. Said at Search Central Live: churning out pages with LLMs repeats the script-generated spam of the early 2000s, Google counts AI slop as scaled content abuse, and this type, rather than link spam, is the one worth talking about today. Google's guidance says using generative AI to produce lots of text without manual oversight represents little to no effort.",
          "how": "Put programmatic page types (location by service, product by keyword, one page per question or per fan-out query) behind a review: each page needs unique, useful main content, otherwise do not create it or keep it noindexed. Do not auto-publish LLM drafts or feed-derived pages in bulk; cap automated publishing and require an editor's approval per page.",
          "test": "A crawl of each programmatic template finds no clusters of near-identical pages; publishing logs show an editor's approval for generated pages; Search Console's Manual actions report is empty.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C207",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's quality talk listed recent updates to Google's spam policies: back button hijacking, scaled content abuse and manipulating AI responses.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "search-docs-updates",
                  "title": "Latest documentation updates",
                  "url": "https://developers.google.com/search/updates",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C284",
              "day": 3,
              "session_id": "D3-S07",
              "session": "What are quality updates",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Reviewing the spam slide, the speaker said link spam would probably be replaced with scaled content abuse as the spam type worth talking about today.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C694",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Scaled content abuse is becoming a problem again: in the early 2000s pages were churned out with Perl or PHP scripts, and now the same is done with LLMs.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C695",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The cheaper tokens become, the more AI slop is created, and Google counts AI slop as scaled content abuse.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C176",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's helpful-content guidance lists effort, originality, talent or skill and accuracy as the main-content attributes search quality raters are trained to evaluate, and says using generative AI to produce large amounts of text without manual oversight or curation represents little to no effort.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "helpful-content",
                  "title": "Creating helpful, reliable, people-first content",
                  "url": "https://developers.google.com/search/docs/fundamentals/creating-helpful-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C213",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Tactics sold as AI visibility or GEO, such as hidden text aimed at AI answers, mass-produced pages for fan-out queries or keyword-stuffed passages, are judged under the same spam policies as classic ranking manipulation.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C300",
              "day": 3,
              "session_id": "D3-S07",
              "session": "What are quality updates",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Weight spam audits toward scaled content abuse: a Googler said that type would replace link spam on the slide, so review mass-produced pages, including AI-generated ones, before older link-building patterns.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "ai-content-detection",
            "spam-policies",
            "spam-detection",
            "seo-vs-geo",
            "helpful-content",
            "search-quality-evaluation"
          ],
          "docs": [
            {
              "key": "spam-policies",
              "title": "Spam policies for Google web search",
              "url": "https://developers.google.com/search/docs/essentials/spam-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "gen-ai-content-guide",
              "title": "Google Search's guidance on using generative AI content on your website",
              "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "helpful-content",
              "title": "Creating helpful, reliable, people-first content",
              "url": "https://developers.google.com/search/docs/fundamentals/creating-helpful-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "scaled-content-abuse",
              "count": 5,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SPM-03",
          "level": "AVOID",
          "title": "Never serve Googlebot different content from users, and do not build doorway pages",
          "why": "Cloaking, presenting different content to users and to search engines to manipulate rankings and mislead users, and doorways, sites or pages created to rank for specific, similar queries that lead users to intermediate pages less useful than the final destination, are spam types in Google's spam policies and on its Day 3 spam slide.",
          "how": "Never branch on the Googlebot user agent or Google's IP ranges to change text, links or redirects. Do not generate near-identical city or keyword landing pages that funnel visitors to one destination; merge them into one useful page per real offering.",
          "test": "The HTML served to a Googlebot user agent and to a browser have the same main content, links and redirects, and URL Inspection's rendered HTML matches what users see.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C277",
              "day": 3,
              "session_id": "D3-S07",
              "session": "What are quality updates",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's slide 'Spam, spam and spam!' listed five spam types, cloaking, doorways, scraped content, link spam and hacked content, and pointed to goo.gle/spam-policy for more.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C278",
              "day": 3,
              "session_id": "D3-S07",
              "session": "What are quality updates",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's slide defined cloaking as presenting different content to users and to search engines with the intent to manipulate search rankings and mislead users.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C279",
              "day": 3,
              "session_id": "D3-S07",
              "session": "What are quality updates",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's slide defined doorways as sites or pages created to rank for specific, similar search queries that lead users to intermediate pages less useful than the final destination.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C301",
              "day": 3,
              "session_id": "D3-S07",
              "session": "What are quality updates",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For developers, Google's five listed spam types map to concrete checks: serve Googlebot the same content as users (cloaking), avoid near-identical location or keyword pages (doorways), add value to reused content (scraped content), and patch and monitor the CMS against injected pages and links (hacked content).",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "spam-policies"
          ],
          "docs": [
            {
              "key": "spam-policies",
              "title": "Spam policies for Google web search",
              "url": "https://developers.google.com/search/docs/essentials/spam-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "googlebot",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-SPM-04",
          "level": "MUST",
          "title": "Keep the CMS and plug-ins patched and watch for injected pages and links",
          "why": "Hacked content, placed on a site without permission through security vulnerabilities, is one of the spam types on Google's list; cleaning it up is hard and prevention is key. If it leads to a manual action, Google's help says most reconsideration reviews take several days or weeks; said at Search Central Live, removal takes one to two weeks on average, and for some sites the action stays because the owners never actually clean up.",
          "how": "Automate CMS, theme and plug-in updates, remove unused plug-ins and accounts, require two-factor login for editors, and alert on new URLs, outbound links or sitemap entries that no editor created. After a clean-up, file the reconsideration request only once every injected page and link is gone.",
          "test": "A weekly comparison of the sitemap and a crawl with the CMS's own page list finds no unknown URLs; Search Console's Security issues and Manual actions reports are empty.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C282",
              "day": 3,
              "session_id": "D3-S07",
              "session": "What are quality updates",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's slide defined hacked content as content placed on a site without permission through security vulnerabilities, said cleaning it up is hard and prevention is key, and linked to goo.gle/hack-tips.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "webspam-report-2020",
                  "title": "How we fought Search spam on Google in 2020",
                  "url": "https://developers.google.com/search/blog/2021/04/how-we-fought-search-spam-2020",
                  "publisher": "Search Central blog (29 April 2021)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C277",
              "day": 3,
              "session_id": "D3-S07",
              "session": "What are quality updates",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's slide 'Spam, spam and spam!' listed five spam types, cloaking, doorways, scraped content, link spam and hacked content, and pointed to goo.gle/spam-policy for more.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C659",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google estimated that removing a manual action after a reconsideration request takes 1-2 weeks on average, at least 2-3 days, and 4-6 weeks or much longer for dormant sites.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "manual-actions-report",
                  "title": "Manual actions report",
                  "url": "https://support.google.com/webmasters/answer/9044175?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C674",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Manual actions report help says most reconsideration reviews take several days or weeks, and that some, such as link-related requests, may take longer.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "manual-actions-report",
                  "title": "Manual actions report",
                  "url": "https://support.google.com/webmasters/answer/9044175?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C660",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "For some sites a manual action is almost never removed, because the owners do not make the effort to actually clean up the site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "manual-actions-report",
                  "title": "Manual actions report",
                  "url": "https://support.google.com/webmasters/answer/9044175?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "spam-policies",
            "processing-times"
          ],
          "docs": [
            {
              "key": "spam-policies",
              "title": "Spam policies for Google web search",
              "url": "https://developers.google.com/search/docs/essentials/spam-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "manual-actions-report",
              "title": "Manual actions report",
              "url": "https://support.google.com/webmasters/answer/9044175?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": []
        },
        {
          "id": "DEV-SPM-05",
          "level": "SHOULD",
          "title": "Publish AI-generated text, images and markup only after human review, and show only real authors",
          "why": "Any AI model can hallucinate. Google treats quality problems as quality issues, not as AI against human content: the tool is not the problem, but how it was used and what for. Its rater guidelines treat fake owner or creator profiles, such as made-up authors with AI-generated headshots, as deception that earns the lowest rating; raters cannot penalise a site, but their ratings become labels that improve Google's algorithms, so unchecked AI output can harm a site indirectly.",
          "how": "Build the CMS workflow so AI drafts, AI images and AI-generated markup cannot publish without a named editor's fact check; link every byline to a real author page with a real photo and verifiable profiles, and never generate author personas or headshots.",
          "test": "Publishing logs show an editor's approval for every AI-assisted item, and an audit of author pages finds no persona without a real person behind it.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C686",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Hallucinations can happen with any AI model, and with current training methods there is no way to get rid of them.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C690",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Quality raters cannot give a site a penalty or a manual action; their ratings are converted into labels that Google uses to improve its algorithms.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C691",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Publishing AI output without checking it can indirectly harm a site's standing in Search, because deceptive content rated lowest by raters feeds the labels used to improve the algorithms.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C692",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google sees fake online personas as a growing type of deception, for example a professional author bio whose headshot is an AI-generated image of a non-existent person, and pages doing this get the lowest rater rating.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C697",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's Search Quality Rater Guidelines point out that the tool used to create content is not the problem, but how it was used and what for.",
              "quote": "it's not the tool that was used that is the problem, but rather how the tool was used and what for.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C700",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's closing slide said to use AI responsibly because AI hallucinates, and, especially when creating content briefs with AI, to make sure not to add to the sea of AI slop already flooding the internet.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C710",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Search Quality Rater Guidelines (September 2025) list fake owner or content creator profiles, such as made-up author profiles with AI-generated images, as deception, and say pages using deception of any type should be rated Lowest.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
              "speaker": null,
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C190",
              "day": 3,
              "session_id": "D3-S05",
              "session": "How Google thinks about Quality",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google's quality talk said quality problems should be treated as quality issues, not as AI versus human content, because a lot of good AI-assisted or AI-written content exists.",
              "quote": "it's very important to think about these quality issues as quality issues and not AI versus human content.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-content-blog-2023",
                  "title": "Google Search's guidance about AI-generated content",
                  "url": "https://developers.google.com/search/blog/2023/02/google-search-and-ai-content",
                  "publisher": "Search Central blog (8 February 2023)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "spam-policies",
                  "title": "Spam policies for Google web search",
                  "url": "https://developers.google.com/search/docs/essentials/spam-policies",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C693",
              "day": 3,
              "session_id": "D3-S18",
              "session": "Wrapping all up: AI, Search, and making sense of everything.",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Show only real authors with real photos and verifiable profiles; never invent author personas or use AI-generated headshots, which Google's raters treat as deception.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "rater-guidelines",
                  "title": "General Guidelines",
                  "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
                  "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C937",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To the frequent question about AI-generated images on a site, Google's answer is that it is up to the site owner.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C941",
              "day": 2,
              "session_id": "D2-S13",
              "session": "Using images to your advantage and Engaging Search users with videos",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Sites that use AI-generated images or videos should make sure they work for users, check them for hallucinations and regenerate them where needed.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "gen-ai-content-guide",
                  "title": "Google Search's guidance on using generative AI content on your website",
                  "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "ai-content-detection",
            "search-quality-evaluation",
            "helpful-content",
            "images",
            "ai-in-search-systems"
          ],
          "docs": [
            {
              "key": "gen-ai-content-guide",
              "title": "Google Search's guidance on using generative AI content on your website",
              "url": "https://developers.google.com/search/docs/fundamentals/using-gen-ai-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "rater-guidelines",
              "title": "General Guidelines",
              "url": "https://static.googleusercontent.com/media/guidelines.raterhub.com/en//searchqualityevaluatorguidelines.pdf",
              "publisher": "Google Search Quality Rater Guidelines (PDF, 11 September 2025)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "spam-policies",
              "title": "Spam policies for Google web search",
              "url": "https://developers.google.com/search/docs/essentials/spam-policies",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "helpful-content",
              "title": "Creating helpful, reliable, people-first content",
              "url": "https://developers.google.com/search/docs/fundamentals/creating-helpful-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "search-quality-raters",
              "count": 3,
              "own": true
            }
          ]
        }
      ]
    },
    {
      "id": "monitoring",
      "title": "Testing and monitoring",
      "intro": "Search Console shows what Google crawled, rendered, chose as canonical and indexed. Render one URL per template in a headless browser before every release, check it in URL Inspection right after, and watch the reports that reveal crawling, rendering and index selection problems.",
      "requirements": [
        {
          "id": "DEV-MON-01",
          "level": "MUST",
          "title": "Verify every production host in Search Console before launch",
          "why": "Debugging what Google can see on a site, with URL Inspection, the Page indexing report or Crawl stats, starts with verified access to the site in Search Console.",
          "how": "Add a Domain property (DNS verification) that covers every subdomain and protocol, plus URL-prefix properties for sections or hosts that need separate access, and keep the verification record in infrastructure code so it survives DNS or CMS changes.",
          "test": "Search Console lists the Domain property as verified, and every team that ships code has access.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C306",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To use Search Console to debug what Google can see on a site and why, Erin Sparling said the first step is to get access to the site by verifying ownership (the speaker's words were authorized domains).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Erin Sparling",
              "sources": [
                {
                  "key": "verify-site-ownership",
                  "title": "Verify your site ownership",
                  "url": "https://support.google.com/webmasters/answer/9008080?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-02"
                },
                {
                  "key": "url-inspection-help",
                  "title": "URL Inspection tool",
                  "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "rendering-debugging",
            "page-indexing-report"
          ],
          "docs": [
            {
              "key": "verify-site-ownership",
              "title": "Verify your site ownership",
              "url": "https://support.google.com/webmasters/answer/9008080?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "google-search-console",
              "count": 1,
              "own": true
            },
            {
              "id": "crawl-stats",
              "count": 0,
              "own": true
            },
            {
              "id": "page-indexing",
              "count": 0,
              "own": true
            },
            {
              "id": "url-inspection",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-02",
          "level": "MUST",
          "title": "Render every template in a headless browser before release and check it in URL Inspection right after",
          "why": "The rendered HTML in Google's testing tools shows what Google can index, and the live test also shows page resources, JavaScript console messages and a screenshot. A valid live test only confirms that Google can access the page; indexing still depends on other conditions, and the live result can differ from the indexed version. URL Inspection tests only public URLs of a verified property, so it cannot test a staging host that answers 401 or 403 (DEV-CAN-07).",
          "how": "Keep a list of one representative URL per template (home, category, product, article, landing pages, each language version). Before release, render each template on staging with headless Chrome (Puppeteer or Playwright): compare the raw and rendered DOM, find the main content, prices and internal links, collect console errors, and run the structured data through the Rich Results Test's code input. Right after release, run the URL Inspection live test on one production URL per template and check the rendered HTML, resources and console messages. Request indexing for key URLs after fixing signals calculated at indexing time, such as language or robots rules.",
          "test": "The release checklist records a headless render result for each template before release and a URL Inspection live test result for each template after release.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C176",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "To check whether JavaScript content is affected, open the URL Inspection tool in Search Console or the Rich Results Test and look for that content in the rendered HTML tab.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "lazy-loading-guide",
                  "title": "Fix lazy-loaded content",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/lazy-loading",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C178",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's URL Inspection help says the tool's live test examines a URL in real time, so its results can differ from Google's indexed version of the page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "url-inspection-help",
                  "title": "URL Inspection tool",
                  "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C308",
              "day": 2,
              "session_id": "D2-S06",
              "session": "What is Google friendly JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's URL Inspection help says a valid live test only confirms that Google can access a page for indexing; the page must still meet other conditions to be indexed, such as having no manual action, not being a duplicate and being of high enough quality.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "url-inspection-help",
                  "title": "URL Inspection tool",
                  "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C215",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To find rendering issues, compare a page's raw source code with its rendered versions, including the rendered HTML that Google's testing tools show; the differences point to the problems.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Rebecca Yu",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C179",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Check rendering per template rather than per URL: inspect one URL of each page type (product, category, article) in URL Inspection and confirm that the main content, prices and internal links appear in the rendered HTML.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C158",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "When something is missing from a rendered page, check both robots.txt and the Content Security Policy: the URL Inspection live test shows the page resources, the JavaScript console output and a screenshot of the rendered page.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C677",
              "day": 2,
              "session_id": "D2-S19",
              "session": "Calculating (some) signals",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Language, country, SafeSearch and spam signals, and some freshness signals, are calculated when a page is indexed, so a fix such as correcting a page's language or removing content that triggers SafeSearch only counts once Google recrawls and reprocesses the page; request recrawling of the most important URLs after the fix.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            }
          ],
          "topics": [
            "rendering-debugging",
            "robots-txt",
            "javascript-seo",
            "indexing-pipeline",
            "indexing-signals",
            "page-indexing-report"
          ],
          "docs": [
            {
              "key": "url-inspection-help",
              "title": "URL Inspection tool",
              "url": "https://support.google.com/webmasters/answer/9012289?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "url-inspection",
              "count": 5,
              "own": true
            },
            {
              "id": "javascript",
              "count": 2,
              "own": true
            },
            {
              "id": "rendering-concept",
              "count": 2,
              "own": false
            },
            {
              "id": "http-403",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-03",
          "level": "SHOULD",
          "title": "Watch the Page indexing report and treat its not-indexed reasons as a work list",
          "why": "The Page indexing report is where index selection problems show. \"Discovered - currently not indexed\" means Google knows the URL but has not crawled it yet, and \"Crawled - currently not indexed\" means Google processed the page but did not keep it, which was described at Search Central Live as most of the time a quality issue; such pages need no resubmission. Soft 404s are also looked up in this report, while other crawl issues are debugged in the Crawl stats report (DEV-MON-04).",
          "how": "Export not-indexed URLs by reason and template regularly. For Discovered, first rule out slow responses and server errors; for Crawled, compare with indexed pages of the same type for thin, duplicate or soft-404-like content and for template differences. Do not resubmit the same URLs again and again.",
          "test": "A trend of indexed and not-indexed URLs per sitemap and template is reviewed, and spikes after releases are investigated.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C717",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Search Console's Page indexing report is the place to check for index selection issues, and its not-indexed reasons are useful when testing changes on a site.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C718",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Not-indexed reasons in the Page indexing report include pages excluded by a noindex rule and 'Alternate page with proper canonical tag'.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C707",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Page indexing report help says a 'Discovered – currently not indexed' page was found but not crawled yet, typically because Google wanted to crawl it but expected the crawl to overload the site, so it rescheduled the crawl.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C712",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's Page indexing report help says a 'Crawled – currently not indexed' page was crawled but not indexed, may or may not be indexed in the future, and does not need to be resubmitted for crawling.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C711",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "'Crawled – currently not indexed' in Search Console is an index selection decision: Google crawled and processed the page but decided not to keep it in the index.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": [
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C706",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "'Discovered – currently not indexed' in Search Console is a crawl-scheduling state: Google knows the URL exists but does not want to crawl it yet. Of the two not-indexed statuses discussed, it was called the 'kind of nastier' one.",
              "quote": "The first one is kind of nastier.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C714",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "'Crawled – currently not indexed' is most of the time a quality issue rather than a technical one: the pages are usually low quality or useless for the index, for example duplicates or soft 404s.",
              "quote": "most of the time it is actually a quality issue",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C708",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "The help page explains 'Discovered – currently not indexed' by expected server overload (capacity), while on stage it was explained as Google not wanting the URL yet (demand); the crawl budget guide covers both, so first rule out slow responses and server errors, then treat the status as a quality and demand problem.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D2-C716",
              "day": 2,
              "session_id": "D2-S20",
              "session": "Deciding what goes in the index?",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Treat 'Crawled – currently not indexed' as a quality audit list: compare those URLs with indexed pages of the same type for thin, duplicate or soft-404-like content and for template differences before looking for technical faults.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C508",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google said soft 404s, like some other problem categories, are looked up in Search Console's page indexing report, while other crawl issues are debugged in the Crawl Stats report.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "page-indexing-help",
                  "title": "Page indexing report",
                  "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "page-indexing-report",
            "index-selection",
            "crawl-budget",
            "helpful-content",
            "soft-404",
            "crawl-demand"
          ],
          "docs": [
            {
              "key": "page-indexing-help",
              "title": "Page indexing report",
              "url": "https://support.google.com/webmasters/answer/7440203?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawl-stats-help",
              "title": "Crawl Stats report",
              "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "page-indexing",
              "count": 5,
              "own": true
            },
            {
              "id": "google-search-console",
              "count": 4,
              "own": false
            },
            {
              "id": "index-selection-concept",
              "count": 2,
              "own": true
            },
            {
              "id": "soft-404-error",
              "count": 2,
              "own": true
            },
            {
              "id": "crawl-stats",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-04",
          "level": "SHOULD",
          "title": "Monitor Crawl stats and server logs for verified Googlebot traffic",
          "why": "Firewalls, DNS problems and robots.txt errors are blind spots, because Google only sees failing requests, and response times and 429 or 5xx rates drive how much Google crawls. Logs show what Googlebot actually fetches, which matters on sites with filter parameters or complicated URLs, where crawlers can easily wander off into URLs that make no sense for the site, and client-side analytics may not see Googlebot at all, because Google's renderer may skip reporting and error requests.",
          "how": "Keep access logs with status code, response time and user agent (logs alone do not show where Google's crawl limit lies, so read them with Crawl stats: total crawling, average response time, the response and file-type breakdowns and the discovery versus refresh split), verify Googlebot against Google's published crawler IP ranges or by reverse DNS to crawl-*.googlebot.com when analysing them, and alert on spikes of 5xx or 429 responses, robots.txt fetch failures and DNS errors. Review the Crawl stats host status regularly.",
          "test": "A dashboard shows verified Googlebot requests by status code and template, and the Crawl stats host status has no failures.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "verify-googlebot",
          "claims": [
            {
              "id": "D1-C069",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "DNS issues and firewalls are blind spots: Google does not know a firewall is blocking it, it only sees that requests fail.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "crawling-december-cdns",
                  "title": "Crawling December: CDNs and crawling",
                  "url": "https://developers.google.com/search/blog/2024/12/crawling-december-cdns",
                  "publisher": "Search Central blog (24 December 2024)",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C126",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google treats network timeouts, connection resets and DNS errors like 5xx server errors: crawling slows down immediately, and already indexed URLs that stay unreachable are removed from Google's index within days.",
              "quote": "Google treats network timeouts, connection reset, and DNS errors similarly to 5xx server errors.",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "dns-network-errors",
                  "title": "Debug network and DNS errors for Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C092",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Hostload is driven by changes in connect time, changes in time to first byte, and HTTP 429 or 5xx status codes. If these increase, hostload is adjusted and crawling slows down.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C078",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "For temporary blocks return 503 or 429, never a 200 page with a captcha or error message, which becomes a soft 404 and can replace real content in the index. Verify Googlebot by reverse DNS, not by user agent.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C138",
              "day": 1,
              "session_id": "D1-S06",
              "session": "How crawling errors affect Search",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's page on verifying its crawlers says Googlebot and Google's other common crawlers resolve to crawl-*.googlebot.com or geo-crawl-*.geo.googlebot.com host names, special-case crawlers to rate-limited-proxy-*.google.com and user-triggered fetchers to *.gae.googleusercontent.com or google-proxy-*.google.com, and it publishes each group's IP ranges as JSON files such as common-crawlers.json and special-crawlers.json.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google",
              "speaker": null,
              "sources": [
                {
                  "key": "verify-google-requests",
                  "title": "Verify requests from Google crawlers and fetchers",
                  "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/verify-google-requests",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C164",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google says Googlebot and its Web Rendering Service identify resources that do not contribute to essential page content, such as reporting and error requests, and may not fetch them, so client-side analytics may not give a full or accurate picture of their activity.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D1-C339",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "To debug crawl issues, Google points site owners to the Crawl Stats report in Search Console, found in the Settings page under Crawl stats.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C340",
              "day": 1,
              "session_id": "D1-S05",
              "session": "How crawling works",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Search Console's Crawl Stats report shows how much Google crawls from a site, the errors Google received, and the content types fetched by the different crawlers.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C393",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "To check whether a site has a crawl budget problem, use Search Console's crawl report (Crawl Stats), which breaks crawl requests down by response and by file type and shows crawl problems Google finds.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C394",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "The file-type breakdown of crawl requests in Search Console is useful for spotting anomalies, such as most crawling going to images on a site that has no images worth crawling.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C396",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Search Console's crawl data separates discovery (fetches of URLs Google has not seen before) from refresh (fetches of known URLs), and lets you drill down to the problematic URLs.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C442",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Log files alone cannot show crawl inefficiency because they do not reveal where Google's crawl limit for the site lies; many similar URLs being crawled may not matter if the site is nowhere near that limit.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D1-C443",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To judge crawl efficiency, check Search Console's Crawl Stats report: whether total crawling has plateaued over time, and whether the average response time shows the server is fast enough or is limiting Googlebot.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-errors",
            "crawl-budget",
            "search-console-features",
            "search-console-data",
            "crawl-rate-limit",
            "ai-crawlers-and-agents",
            "url-discovery",
            "soft-404",
            "rendering",
            "rendering-debugging"
          ],
          "docs": [
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "dns-network-errors",
              "title": "Debug network and DNS errors for Google's crawlers",
              "url": "https://developers.google.com/crawling/docs/troubleshooting/dns-network-errors",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "troubleshoot-crawling-errors",
              "title": "Troubleshoot Google Search crawling errors",
              "url": "https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "verify-google-requests",
              "title": "Verify requests from Google crawlers and fetchers",
              "url": "https://developers.google.com/crawling/docs/crawlers-fetchers/verify-google-requests",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-02"
            },
            {
              "key": "crawl-stats-help",
              "title": "Crawl Stats report",
              "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "google-search-console",
              "count": 6,
              "own": false
            },
            {
              "id": "crawl-stats",
              "count": 4,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 4,
              "own": true
            },
            {
              "id": "http-429",
              "count": 2,
              "own": true
            },
            {
              "id": "http-5xx",
              "count": 2,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-05",
          "level": "SHOULD",
          "title": "Run recurring rendering checks: raw versus rendered HTML, placeholders and console errors",
          "why": "Sites that create content by rendering need at least basic monitoring that their rendered pages come out right. Rendering failures such as timeouts, unresolved placeholders or pages that render blank because of server overload or bad scripts are intermittent, and invisible if only the raw HTML is checked.",
          "how": "Schedule a JavaScript-rendering crawl of sample URLs per template, besides spot checks in Chrome DevTools, diff raw and rendered HTML for main content, links, prices and meta tags, flag unresolved placeholders, render the same URLs more than once, and archive the HTML and resources of failing pages for analysis.",
          "test": "The monitoring job runs on schedule, alerts on differences, and reports zero placeholder hits.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C143",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Sites that create their content by rendering should have at least basic monitoring to check that the rendered pages come out right, a community speaker advised.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": [
                {
                  "key": "fix-search-javascript",
                  "title": "Fix Search-related JavaScript problems",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-02"
                }
              ]
            },
            {
              "id": "D2-C159",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "A page can render completely blank while its raw HTML looks fine, so a team checking only the raw HTML thinks all is well; causes include server misconfiguration, overload and bad scripts.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C151",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Unresolved placeholders caused by rendering timeouts are hard to catch because the problem moves around: it is not always the same page that is broken.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C153",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "To catch intermittent rendering problems, archive the full HTML and the resources of each page during a site audit and analyse them yourself, a community speaker advised.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            },
            {
              "id": "D2-C154",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Add a check for unresolved template placeholders (such as {{brand}}, undefined or null) in rendered titles, meta descriptions and visible text to recurring crawls, and render the same URLs more than once, because such failures are intermittent.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C148",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Diff the raw and the rendered HTML of each key template for prices, offer counts, links and meta tags, and treat any difference in commercial data as a bug, because bots and users may get different versions.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C860",
              "day": 2,
              "session_id": "D2-S05",
              "session": "Lightning session D: Rendering and JavaScript",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Besides using Chrome DevTools more often, a community speaker advised checking rendering at scale with a modern crawler.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Sören Bendig",
              "sources": []
            }
          ],
          "topics": [
            "rendering-debugging",
            "javascript-seo"
          ],
          "docs": [
            {
              "key": "fix-search-javascript",
              "title": "Fix Search-related JavaScript problems",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-02"
            }
          ],
          "entities": [
            {
              "id": "rendering-concept",
              "count": 4,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-06",
          "level": "SHOULD",
          "title": "Audit canonical groups with a crawler on a schedule",
          "why": "Broken canonical tags can make the wrong pages show up in search results, and a broken canonical setup does not fail visibly: pages load normally while the choice of URL passes to the search engine. Checking canonicals pair by pair misses chains, loops and leaders that nobody links to.",
          "how": "Crawl with a tool that groups URLs by canonical leader and flag chains, loops, multiple canonicals, leaders that are non-200, noindexed, blocked, redirecting or unlinked, and groups that mix languages. Compare user-declared and Google-selected canonicals in URL Inspection for samples.",
          "test": "The scheduled crawl report shows zero canonical errors, and the \"Duplicate, Google chose different canonical than user\" reason in the Page indexing report trends down.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D2-C401",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Broken canonical tags can make the wrong pages of a site show up in search results.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C404",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "A broken canonical setup does not fail visibly: pages still load normally while the choice of URL passes to the search engine's own heuristics, so canonical tags need a regular audit with a crawler and the URL Inspection tool.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "rel-canonical-mistakes-blog",
                  "title": "5 common mistakes with rel=canonical",
                  "url": "https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical",
                  "publisher": "Search Central blog (8 April 2013)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C398",
              "day": 2,
              "session_id": "D2-S08",
              "session": "Handling web duplication",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google's speaker suggested checking rel=canonical links with a crawler such as Screaming Frog to make sure they are reasonable.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C416",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "To audit canonicals at scale, resolve every crawled URL to the final URL its canonical links and redirects lead to, group URLs by that leader, and flag groups with more than one hop, a loop, several canonicals on one page, or a leader that is noindexed, blocked, non-200 or redirecting.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D2-C408",
              "day": 2,
              "session_id": "D2-S09",
              "session": "Lightning session E: Managing Duplicates and Site Moves",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "A community speaker advised auditing canonicals as whole canonical groups rather than pair by pair, paying special attention to each group's canonical leader.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Tobias Schwarz",
              "sources": []
            }
          ],
          "topics": [
            "canonical-graphs",
            "canonical-selection",
            "duplicate-content"
          ],
          "docs": [
            {
              "key": "canonicalization-troubleshooting",
              "title": "Fix canonicalization issues",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "consolidate-duplicate-urls",
              "title": "How to specify a canonical URL with rel=\"canonical\" and other methods",
              "url": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "rel-canonical",
              "count": 4,
              "own": true
            },
            {
              "id": "canonicalization",
              "count": 2,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-07",
          "level": "MAY",
          "title": "Track AI feature visibility in the Generative AI performance report",
          "why": "Google recommends the Generative AI performance report in Search Console for measuring how content performs in generative AI features on Search and Discover. It shows impressions, pages, countries, devices and dates, but no clicks or queries. The regular Performance report still counts traffic from AI Overviews and AI Mode within the Web search type, so analytics setups that split out LLM referrals do not isolate it. Since 24 September 2026 the Performance report also has a multimodal search type for searches with Google Lens, Circle to Search, uploaded images and Chrome's image search; it has no query dimension.",
          "how": "Add the report to the regular dashboard and compare countries and languages with native-language spot checks in AI Overviews and AI Mode. Add the multimodal search type to the same review and judge it by page, country and device.",
          "test": "The report is reviewed monthly alongside the Performance report.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C062",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide for generative AI features recommends the Generative AI performance report in Search Console for measuring how content performs in generative AI features on Google Search and Discover.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-optimization-guide",
                  "title": "Optimizing your website for generative AI features on Google Search",
                  "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C124",
              "day": 1,
              "session_id": "D1-S03",
              "session": "How Search works and where's AI?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's launch post for the Generative AI performance reports in Search Console (3 June 2026; rolled out to all sites worldwide by 31 August 2026) lists impressions, pages, countries, devices (Search only) and dates, and no click or query metrics.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (3 June 2026)",
              "speaker": null,
              "sources": [
                {
                  "key": "genai-perf-reports-blog",
                  "title": "Introducing Search Generative AI performance reports in Search Console",
                  "url": "https://developers.google.com/search/blog/2026/06/gen-ai-performance-reports",
                  "publisher": "Search Central blog (3 June 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C607",
              "day": 2,
              "session_id": "D2-S15",
              "session": "Focusing on Internationalisation and Localisation",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Check AI Overviews and AI Mode with native-language queries in each target market, not with translated English keywords, and compare with the country breakdown of Search Console's generative AI performance report; topics where competitors are cited and you are not point to missing or weak local content.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "genai-perf-reports-blog",
                  "title": "Introducing Search Generative AI performance reports in Search Console",
                  "url": "https://developers.google.com/search/blog/2026/06/gen-ai-performance-reports",
                  "publisher": "Search Central blog (3 June 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C438",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "The regular Search Console Performance report still shows all traffic including AI features, while the generative AI view shows only impressions from AI surfaces.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Ariel Kroszynski",
              "sources": [
                {
                  "key": "genai-perf-reports-blog",
                  "title": "Introducing Search Generative AI performance reports in Search Console",
                  "url": "https://developers.google.com/search/blog/2026/06/gen-ai-performance-reports",
                  "publisher": "Search Central blog (3 June 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C439",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Search Console's generative AI report shows impressions broken down by pages, countries and devices.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Ariel Kroszynski",
              "sources": [
                {
                  "key": "genai-perf-help",
                  "title": "Generative AI performance report (Search)",
                  "url": "https://support.google.com/webmasters/answer/16984139?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "genai-perf-reports-blog",
                  "title": "Introducing Search Generative AI performance reports in Search Console",
                  "url": "https://developers.google.com/search/blog/2026/06/gen-ai-performance-reports",
                  "publisher": "Search Central blog (3 June 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C441",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Search Console's generative AI performance reports count impressions only, with no clicks and no query dimension (Google documents the Search report for AI Overviews and AI Mode, plus a separate Discover report), so measure visits that follow AI answers with your own analytics.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C498",
              "day": 3,
              "session_id": "D3-S13",
              "session": "Lightning session L: Understanding SERPs and your users",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's AI features guide says traffic from sites appearing in AI features such as AI Overviews and AI Mode is included in the overall search traffic in Search Console and reported in the Performance report within the Web search type.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "ai-features-guide",
                  "title": "AI features and your website",
                  "url": "https://developers.google.com/search/docs/appearance/ai-features",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C458",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Multimodal searches reported in Search Console include searches with Google Lens, Circle to Search on Android, images uploaded to Google Search and Chrome's right-click search on an image.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Ariel Kroszynski",
              "sources": [
                {
                  "key": "multimodal-sc-blog",
                  "title": "Announcing web multimodal Search performance reporting in Search Console",
                  "url": "https://developers.google.com/search/blog/2026/09/web-multimodal-in-sc",
                  "publisher": "Search Central blog (24 September 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "perf-report-help",
                  "title": "Performance report (Search results): Overview and basic setup",
                  "url": "https://support.google.com/webmasters/answer/7576553?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C459",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "To see multimodal traffic in the Search Console Performance report, select the multimodal search type instead of the default text-based one.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Ariel Kroszynski",
              "sources": [
                {
                  "key": "multimodal-sc-blog",
                  "title": "Announcing web multimodal Search performance reporting in Search Console",
                  "url": "https://developers.google.com/search/blog/2026/09/web-multimodal-in-sc",
                  "publisher": "Search Central blog (24 September 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "perf-report-help",
                  "title": "Performance report (Search results): Overview and basic setup",
                  "url": "https://support.google.com/webmasters/answer/7576553?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C462",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Google's Performance report help says the queries dimension is not available for the multimodal search type, because these searches mostly use images, so judge image-led traffic by page, country and device, and make product and article images distinctive enough for Lens to match.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": []
            },
            {
              "id": "D3-C465",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's announcement of 24 September 2026 says multimodal search data appears both in the Performance report for Search results and in the generative AI performance report, can be exported, and began rolling out globally that day.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (24 September 2026)",
              "speaker": null,
              "sources": [
                {
                  "key": "multimodal-sc-blog",
                  "title": "Announcing web multimodal Search performance reporting in Search Console",
                  "url": "https://developers.google.com/search/blog/2026/09/web-multimodal-in-sc",
                  "publisher": "Search Central blog (24 September 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "measurement",
            "search-console-features",
            "images",
            "genai-optout",
            "ai-mode-usage",
            "ai-overviews-usage",
            "seo-vs-geo",
            "localisation"
          ],
          "docs": [
            {
              "key": "genai-perf-reports-blog",
              "title": "Introducing Search Generative AI performance reports in Search Console",
              "url": "https://developers.google.com/search/blog/2026/06/gen-ai-performance-reports",
              "publisher": "Search Central blog (3 June 2026)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "ai-optimization-guide",
              "title": "Optimizing your website for generative AI features on Google Search",
              "url": "https://developers.google.com/search/docs/fundamentals/ai-optimization-guide",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "genai-perf-help",
              "title": "Generative AI performance report (Search)",
              "url": "https://support.google.com/webmasters/answer/16984139?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "multimodal-sc-blog",
              "title": "Announcing web multimodal Search performance reporting in Search Console",
              "url": "https://developers.google.com/search/blog/2026/09/web-multimodal-in-sc",
              "publisher": "Search Central blog (24 September 2026)",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "perf-report-help",
              "title": "Performance report (Search results): Overview and basic setup",
              "url": "https://support.google.com/webmasters/answer/7576553?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "generative-ai-performance-report",
              "count": 7,
              "own": true
            },
            {
              "id": "google-search-console",
              "count": 7,
              "own": true
            },
            {
              "id": "performance-report",
              "count": 5,
              "own": true
            },
            {
              "id": "ai-mode",
              "count": 3,
              "own": true
            },
            {
              "id": "ai-overviews",
              "count": 3,
              "own": true
            },
            {
              "id": "google-discover",
              "count": 2,
              "own": true
            },
            {
              "id": "google-lens",
              "count": 2,
              "own": true
            },
            {
              "id": "chrome",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-08",
          "level": "SHOULD",
          "title": "Set up the Search Console bulk data export to BigQuery on large sites",
          "why": "The Search Console interface exports at most 1,000 rows, and the Search Analytics API and the Looker Studio connector return up to 50,000 rows per day per site per search type. The bulk data export to BigQuery is the most complete query dataset available. Anonymized queries are always left out of report tables and are left out whenever a filter is applied, so filtered rows do not add up to the chart totals; in the export they stay as rows with an empty query.",
          "how": "Turn on the daily bulk data export in Search Console settings to a BigQuery project the team owns, set table expiration to fit the budget, and query the searchdata_site_impression and searchdata_url_impression tables. Keep anonymized rows in totals but exclude them (is_anonymized_query, or query = '') when ranking top queries, and tell any LLM or dashboard that analyses the data to do the same.",
          "test": "New daily rows appear in the searchconsole dataset each day, and the summed clicks for a recent day are close to the Performance report's total for that day.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": "bulk-export-top-queries",
          "claims": [
            {
              "id": "D3-C471",
              "day": 3,
              "session_id": "D3-S13",
              "session": "Lightning session L: Understanding SERPs and your users",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Nik Vujic said it is super important to export all of a site's Search Console data, and his agency's workflow starts from Search Console's export to BigQuery.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Nik Vujic",
              "sources": [
                {
                  "key": "sc-bulk-export-about",
                  "title": "About bulk data export of Search Console data to BigQuery",
                  "url": "https://support.google.com/webmasters/answer/12918484?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C474",
              "day": 3,
              "session_id": "D3-S13",
              "session": "Lightning session L: Understanding SERPs and your users",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community slide said the Search Console interface export is limited to 1,000 rows.",
              "quote": "The UI export is limited to 1,000 rows.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Nik Vujic",
              "sources": [
                {
                  "key": "sc-performance-data-limits",
                  "title": "A deep dive into Search Console performance data filtering and limits",
                  "url": "https://developers.google.com/search/blog/2022/10/performance-data-deep-dive",
                  "publisher": "Search Central blog (19 October 2022)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C475",
              "day": 3,
              "session_id": "D3-S13",
              "session": "Lightning session L: Understanding SERPs and your users",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community slide said the Search Console bulk data export to BigQuery gives the most complete query dataset available, with anonymized queries excluded.",
              "quote": "The bulk export to BigQuery gives the most complete query dataset available - anonymized queries excluded.",
              "quote_checked": true,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Nik Vujic",
              "sources": [
                {
                  "key": "sc-bulk-export-about",
                  "title": "About bulk data export of Search Console data to BigQuery",
                  "url": "https://support.google.com/webmasters/answer/12918484?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "sc-bulk-export-blog",
                  "title": "Bulk data export: a new and powerful way to access your Search Console data",
                  "url": "https://developers.google.com/search/blog/2023/02/bulk-data-export",
                  "publisher": "Search Central blog (21 February 2023)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C480",
              "day": 3,
              "session_id": "D3-S13",
              "session": "Lightning session L: Understanding SERPs and your users",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "A Search Central blog post on Search Console data limits (October 2022) says the interface exports at most 1,000 rows, while the Search Analytics API and the Looker Studio connector return up to 50,000 rows per day per site per search type.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (19 October 2022)",
              "speaker": null,
              "sources": [
                {
                  "key": "sc-performance-data-limits",
                  "title": "A deep dive into Search Console performance data filtering and limits",
                  "url": "https://developers.google.com/search/blog/2022/10/performance-data-deep-dive",
                  "publisher": "Search Central blog (19 October 2022)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C481",
              "day": 3,
              "session_id": "D3-S13",
              "session": "Lightning session L: Understanding SERPs and your users",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's blog post on Search Console data limits says anonymized queries are always left out of the report tables but counted in chart totals unless you filter by query, and are left out whenever a filter is applied, so filtered rows do not add up to the chart totals.",
              "quote": "",
              "quote_checked": false,
              "credit": "Search Central blog (19 October 2022)",
              "speaker": null,
              "sources": [
                {
                  "key": "sc-performance-data-limits",
                  "title": "A deep dive into Search Console performance data filtering and limits",
                  "url": "https://developers.google.com/search/blog/2022/10/performance-data-deep-dive",
                  "publisher": "Search Central blog (19 October 2022)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C476",
              "day": 3,
              "session_id": "D3-S13",
              "session": "Lightning session L: Understanding SERPs and your users",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "In the bulk export, 'anonymized queries excluded' means the query text, not the traffic: Google's table reference and query guidelines show those rows kept with an empty query field, often as the single most common 'query'. Tell an LLM to skip empty queries when ranking top queries, but keep them in totals.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "sc-bulk-export-about",
                  "title": "About bulk data export of Search Console data to BigQuery",
                  "url": "https://support.google.com/webmasters/answer/12918484?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "sc-bulk-export-tables",
                  "title": "Table guidelines and reference",
                  "url": "https://support.google.com/webmasters/answer/12917991?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "sc-bulk-export-queries",
                  "title": "Query guidelines and sample queries",
                  "url": "https://support.google.com/webmasters/answer/12917174?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C502",
              "day": 3,
              "session_id": "D3-S13",
              "session": "Lightning session L: Understanding SERPs and your users",
              "label": "analysis",
              "label_meaning": "the author's interpretation",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Looker Studio lifts Search Console's 1,000-row interface limit but keeps the connector's cap of 50,000 rows per day per site per search type; only the bulk export to BigQuery is free of the daily row limit, so large sites that need every non-anonymized query should use it.",
              "quote": "",
              "quote_checked": false,
              "credit": "Ibrahim Anjro (author)",
              "speaker": null,
              "sources": [
                {
                  "key": "sc-performance-data-limits",
                  "title": "A deep dive into Search Console performance data filtering and limits",
                  "url": "https://developers.google.com/search/blog/2022/10/performance-data-deep-dive",
                  "publisher": "Search Central blog (19 October 2022)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "sc-bulk-export-blog",
                  "title": "Bulk data export: a new and powerful way to access your Search Console data",
                  "url": "https://developers.google.com/search/blog/2023/02/bulk-data-export",
                  "publisher": "Search Central blog (21 February 2023)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "search-console-data",
            "measurement"
          ],
          "docs": [
            {
              "key": "sc-bulk-export-about",
              "title": "About bulk data export of Search Console data to BigQuery",
              "url": "https://support.google.com/webmasters/answer/12918484?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "sc-bulk-export-tables",
              "title": "Table guidelines and reference",
              "url": "https://support.google.com/webmasters/answer/12917991?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "sc-performance-data-limits",
              "title": "A deep dive into Search Console performance data filtering and limits",
              "url": "https://developers.google.com/search/blog/2022/10/performance-data-deep-dive",
              "publisher": "Search Central blog (19 October 2022)",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "google-search-console",
              "count": 6,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-09",
          "level": "MAY",
          "title": "Add the brand's YouTube, Instagram, TikTok and X accounts to Search Console as platform properties",
          "why": "Platform properties show the traffic Google Search, Discover and Google News send to a verified Instagram, TikTok, X or YouTube account, with its top content, query groups and countries, but not how often content is seen on the platform itself. Verification runs inside Search Console through a permission pop-up from the platform, with no token, and accounts of a claimed Search profile are added automatically.",
          "how": "Add one property per account or channel, record who owns each login, re-verify when the external login expires (access pauses until then), and compare formats by URL pattern in comparison mode, for example /watch against /shorts/ on YouTube.",
          "test": "Every official account appears as a platform property with data, and the launch checklist names the owner of each login.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C443",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Platform properties let a user verify ownership of an Instagram, TikTok, X or YouTube account in Search Console and see the traffic Google sends to that account.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Ariel Kroszynski",
              "sources": [
                {
                  "key": "platform-props-help",
                  "title": "About platform properties in Search Console",
                  "url": "https://support.google.com/webmasters/answer/17148418?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "platform-props-blog",
                  "title": "See how content from social and video platforms performs on Google Search",
                  "url": "https://developers.google.com/search/blog/2026/07/search-console-social-video-platforms",
                  "publisher": "Search Central blog (7 July 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C446",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A platform property is verified entirely from within Search Console: a pop-up from the platform, for example Instagram, asks the user to grant Google permission to identify the account and its handle, and completing it proves ownership without a token.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Ariel Kroszynski",
              "sources": [
                {
                  "key": "platform-props-blog",
                  "title": "See how content from social and video platforms performs on Google Search",
                  "url": "https://developers.google.com/search/blog/2026/07/search-console-social-video-platforms",
                  "publisher": "Search Central blog (7 July 2026)",
                  "kind": "google",
                  "checked": "2026-10-03"
                },
                {
                  "key": "platform-props-help",
                  "title": "About platform properties in Search Console",
                  "url": "https://support.google.com/webmasters/answer/17148418?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C466",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's help page on platform properties says ownership is checked periodically and, if the external login expires, access pauses until the account is re-verified; each account or channel needs its own property, and data takes a few days to appear.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "platform-props-help",
                  "title": "About platform properties in Search Console",
                  "url": "https://support.google.com/webmasters/answer/17148418?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C467",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's help page says platform properties show only how content performs on Google Search, Discover and Google News, not how often it is seen on the social or video platform itself.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Console Help",
              "speaker": null,
              "sources": [
                {
                  "key": "platform-props-help",
                  "title": "About platform properties in Search Console",
                  "url": "https://support.google.com/webmasters/answer/17148418?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C468",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's social and video performance guide says that if you already claimed your Search profile, all of its verified accounts are added automatically as platform properties in Search Console.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "social-video-guide",
                  "title": "Analyze your social and video platform content performance in Search Console",
                  "url": "https://developers.google.com/search/docs/monitor-debug/analyze-social-video-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C451",
              "day": 3,
              "session_id": "D3-S12",
              "session": "Inside Search Console: What’s New & How to Use It",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "In a YouTube platform property, long-form and short-form videos can be compared in the Performance report's comparison mode by URL pattern, /watch versus /shorts/; Instagram posts (/p/) and reels can be compared the same way.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Ariel Kroszynski",
              "sources": [
                {
                  "key": "social-video-guide",
                  "title": "Analyze your social and video platform content performance in Search Console",
                  "url": "https://developers.google.com/search/docs/monitor-debug/analyze-social-video-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D2-C960",
              "day": 2,
              "session_id": "D2-S14",
              "session": "Lightning session F: Media",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "A community speaker said publishers can also verify their social accounts in Search Console, which makes it easier to track the performance of content repurposed for social platforms.",
              "quote": "",
              "quote_checked": false,
              "credit": "a community speaker at Search Central Live Deep Dive Europe 2026 (Day 2)",
              "speaker": "Patrick Domanico",
              "sources": [
                {
                  "key": "social-video-guide",
                  "title": "Analyze your social and video platform content performance in Search Console",
                  "url": "https://developers.google.com/search/docs/monitor-debug/analyze-social-video-content",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            }
          ],
          "topics": [
            "search-console-features",
            "search-profiles",
            "measurement"
          ],
          "docs": [
            {
              "key": "platform-props-help",
              "title": "About platform properties in Search Console",
              "url": "https://support.google.com/webmasters/answer/17148418?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "social-video-guide",
              "title": "Analyze your social and video platform content performance in Search Console",
              "url": "https://developers.google.com/search/docs/monitor-debug/analyze-social-video-content",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            }
          ],
          "entities": [
            {
              "id": "platform-properties",
              "count": 6,
              "own": true
            },
            {
              "id": "google-search-console",
              "count": 4,
              "own": true
            },
            {
              "id": "youtube",
              "count": 2,
              "own": true
            },
            {
              "id": "google-discover",
              "count": 1,
              "own": true
            },
            {
              "id": "search-profile",
              "count": 1,
              "own": true
            },
            {
              "id": "query-groups",
              "count": 0,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-10",
          "level": "SHOULD",
          "title": "Plan releases and fixes around Google's processing times, and judge results only after them",
          "why": "Said at Search Central Live, as estimates from Google's internal logs meant to inform rather than guarantee: robots.txt changes apply in about 24 hours, JavaScript-added content reaches indexing within hours and at worst weeks, a 404 or noindex drops a page within one to three weeks, a canonical change shows in one to three weeks, structured data updates in hours to two weeks, titles and snippets in one or two days up to several weeks, and a site move takes one to three months on average. Each step waits for the one before, so nothing changes until the page is recrawled. Google's documentation gives compatible figures, such as up to two weeks to split a duplicate cluster and a few days to a few weeks for title link changes.",
          "how": "Put the expected window into release plans and stakeholder updates, schedule robots.txt changes a day ahead, request indexing for the key changed URLs after a release, and review the effect only once the window for that kind of change has passed.",
          "test": "Each SEO-relevant ticket records its expected processing window, and the post-release review is dated after it.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D3-C613",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Google estimated that a robots.txt update is picked up in about 24 hours, with a minimum of seconds and an end point of 25 hours on the slide.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "robots-spec",
                  "title": "How Google interprets the robots.txt specification",
                  "url": "https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "submit-updated-robots-txt",
                  "title": "Update your robots.txt file",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/robots/submit-updated-robots-txt",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C627",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Content that JavaScript adds to a page is typically seen by Google's indexing system within a few hours, and at worst within weeks.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "javascript-seo-basics",
                  "title": "Understand the JavaScript SEO basics",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C639",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "After Google processes a page that now returns a 404 or a noindex, it usually removes the page from its serving index within one to three weeks, sometimes much sooner.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "http-network-errors",
                  "title": "How HTTP status codes affect Google's crawlers",
                  "url": "https://developers.google.com/crawling/docs/troubleshooting/http-status-codes",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C640",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A change of canonical URL usually takes one to three weeks to show, though it can happen in seconds because Google allocates enough resources to canonicalization.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C646",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Google usually picks up structured data updates within hours to one or two weeks, sometimes immediately.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D3-C657",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "slide",
              "label_meaning": "shown on screen",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google estimated that a title update takes as long as a snippet update: 1-2 days on average, up to several weeks to months.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": null,
              "sources": [
                {
                  "key": "title-links",
                  "title": "Influencing your title links in search results",
                  "url": "https://developers.google.com/search/docs/appearance/title-link",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C643",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "A site move can finish within a few weeks for a small site, takes one to three months on average, and in the worst case about a year.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "site-move-with-url-changes",
                  "title": "How to move a site",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D3-C665",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Google's processes depend on each other: crawling happens first, then indexing, then serving, so a change such as a new canonical cannot be processed until the page has been recrawled.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "how-search-works",
                  "title": "In-depth guide to how Google Search works",
                  "url": "https://developers.google.com/search/docs/fundamentals/how-search-works",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C669",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's guide to fixing canonicalization issues says that even after content issues are fixed, Google might hold pages in a duplicate cluster for up to two weeks, and that pages split out faster when they differ clearly and significantly.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "canonicalization-troubleshooting",
                  "title": "Fix canonicalization issues",
                  "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C675",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "docs",
              "label_meaning": "Google's documentation",
              "verification": "source",
              "verification_meaning": "is the documentation",
              "text": "Google's title link guide says Google has to recrawl and reprocess a page to notice changes to the sources of its title link, which may take a few days to a few weeks.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google Search Central",
              "speaker": null,
              "sources": [
                {
                  "key": "title-links",
                  "title": "Influencing your title links in search results",
                  "url": "https://developers.google.com/search/docs/appearance/title-link",
                  "publisher": "Google Search Central",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D3-C598",
              "day": 3,
              "session_id": "D3-S17",
              "session": "How long does it take to..?",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "n/a",
              "verification_meaning": "nothing to verify",
              "text": "Google presented its processing times for crawling, indexing and serving as an experiment: estimates from its internal logs, meant to be informative and not something to obsess about, with feedback from the audience invited.",
              "quote": "if you have an engineering mindset, then you can put a number to it.",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 3)",
              "speaker": "Gary Illyes",
              "sources": []
            }
          ],
          "topics": [
            "processing-times",
            "snippet-controls",
            "canonical-selection",
            "robots-meta-tag",
            "pipeline-overview",
            "robots-txt",
            "rendering",
            "javascript-seo",
            "site-moves",
            "structured-data"
          ],
          "docs": [
            {
              "key": "submit-updated-robots-txt",
              "title": "Update your robots.txt file",
              "url": "https://developers.google.com/search/docs/crawling-indexing/robots/submit-updated-robots-txt",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "javascript-seo-basics",
              "title": "Understand the JavaScript SEO basics",
              "url": "https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "canonicalization-troubleshooting",
              "title": "Fix canonicalization issues",
              "url": "https://developers.google.com/search/docs/crawling-indexing/canonicalization-troubleshooting",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "title-links",
              "title": "Influencing your title links in search results",
              "url": "https://developers.google.com/search/docs/appearance/title-link",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-03"
            },
            {
              "key": "site-move-with-url-changes",
              "title": "How to move a site",
              "url": "https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes",
              "publisher": "Google Search Central",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "canonicalization",
              "count": 2,
              "own": true
            },
            {
              "id": "duplicate-content-concept",
              "count": 1,
              "own": true
            },
            {
              "id": "http-404",
              "count": 1,
              "own": true
            },
            {
              "id": "noindex",
              "count": 1,
              "own": true
            },
            {
              "id": "robots-txt-file",
              "count": 1,
              "own": true
            },
            {
              "id": "site-move",
              "count": 1,
              "own": true
            },
            {
              "id": "snippets",
              "count": 1,
              "own": true
            },
            {
              "id": "structured-data-concept",
              "count": 1,
              "own": true
            }
          ]
        },
        {
          "id": "DEV-MON-11",
          "level": "SHOULD",
          "title": "Measure the time from publishing a URL to Googlebot's first crawl of it",
          "why": "Said at Search Central Live by Gary Illyes: the reliable check that new content is crawled fast enough is the time between publishing a URL and Googlebot's first fetch of it; it should stay flat or fall, and only a rising trend calls for investigation, starting with URLs Google crawls and recrawls a lot without use. How much it rises matters: for fresh news stories he called something like two hours probably not great. The Crawl stats split by purpose (discovery versus refresh) gives a rougher view; John Mueller said that if about half of a site's crawling goes to discovery, crawling of new pages is not the problem. News sites rarely need to worry about crawl budget, because Google crawls them aggressively.",
          "how": "Log each URL's publish time in the CMS, join it with the first verified Googlebot request in the access logs, and chart the median delay per section each week. When it rises, review the most-crawled URLs in the logs and block or remove useless ones (DEV-URL-08).",
          "test": "The weekly chart exists per section and alerts when the median publish-to-first-crawl delay rises for several weeks in a row.",
          "status": "documented",
          "status_label": "Documented",
          "snippet": null,
          "claims": [
            {
              "id": "D1-C467",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "To check that new content is crawled fast enough, Gary Illyes advised measuring the time between publishing a URL and Googlebot's first crawl of it: ideally it stays flat or falls, and only a rising trend calls for investigation.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D1-C468",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "When new URLs are picked up more slowly, Gary Illyes advised checking the log files for URLs that Google crawls and recrawls a lot and judging whether they are useful.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawl-budget-guide",
                  "title": "Optimize your crawl budget",
                  "url": "https://developers.google.com/crawling/docs/crawl-budget",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-04"
                },
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C492",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller said the Crawl Stats report's split of crawling by purpose, discovery versus refresh, gives a rough view of whether discovery crawling is in a reasonable range, though measuring publish-to-first-crawl time is more accurate.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C466",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "Gary Illyes said news sites rarely need to worry about crawl budget, because Google crawls them aggressively given their constant flow of new content and new URLs.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": [
                {
                  "key": "crawling-myths",
                  "title": "Myths and facts about crawling",
                  "url": "https://developers.google.com/crawling/docs/myths-about-crawling",
                  "publisher": "Google",
                  "kind": "google",
                  "checked": "2026-10-03"
                }
              ]
            },
            {
              "id": "D1-C396",
              "day": 1,
              "session_id": "D1-S10",
              "session": "How Google thinks about crawl budget",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "confirmed",
              "verification_meaning": "confirmed by Google docs",
              "text": "Search Console's crawl data separates discovery (fetches of URLs Google has not seen before) from refresh (fetches of known URLs), and lets you drill down to the problematic URLs.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": null,
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            },
            {
              "id": "D1-C543",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "undocumented",
              "verification_meaning": "not in Google docs",
              "text": "Gary Illyes said that if the time from publishing to Googlebot's first crawl starts rising, how much it rises matters: for the crawling of fresh stories, something like two hours is probably not great (a smaller example figure is unclear in the recording).",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "Gary Illyes",
              "sources": []
            },
            {
              "id": "D1-C544",
              "day": 1,
              "session_id": "D1-S12",
              "session": "Q&A",
              "label": "stage",
              "label_meaning": "said on stage",
              "verification": "consistent",
              "verification_meaning": "consistent with Google docs",
              "text": "John Mueller said that if the Crawl Stats report shows about half of a site's crawling going to discovering new pages, that is a lot of discovery crawling, which suggests that crawling of new pages is not the problem.",
              "quote": "",
              "quote_checked": false,
              "credit": "Google at Search Central Live Deep Dive Europe 2026 (Day 1)",
              "speaker": "John Mueller",
              "sources": [
                {
                  "key": "crawl-stats-help",
                  "title": "Crawl Stats report",
                  "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
                  "publisher": "Google Search Console Help",
                  "kind": "google",
                  "checked": "2026-10-04"
                }
              ]
            }
          ],
          "topics": [
            "crawl-budget",
            "processing-times",
            "search-console-features",
            "url-discovery",
            "crawl-demand",
            "search-console-data"
          ],
          "docs": [
            {
              "key": "crawl-stats-help",
              "title": "Crawl Stats report",
              "url": "https://support.google.com/webmasters/answer/9679690?hl=en",
              "publisher": "Google Search Console Help",
              "kind": "google",
              "checked": "2026-10-04"
            },
            {
              "key": "crawl-budget-guide",
              "title": "Optimize your crawl budget",
              "url": "https://developers.google.com/crawling/docs/crawl-budget",
              "publisher": "Google",
              "kind": "google",
              "checked": "2026-10-04"
            }
          ],
          "entities": [
            {
              "id": "crawl-stats",
              "count": 2,
              "own": true
            },
            {
              "id": "googlebot",
              "count": 2,
              "own": true
            },
            {
              "id": "crawl-budget-metric",
              "count": 1,
              "own": true
            }
          ]
        }
      ]
    }
  ],
  "snippets": [
    {
      "key": "verify-googlebot",
      "title": "Verify that a request really comes from Googlebot",
      "text": "Before a firewall, CDN or bot-protection rule blocks or challenges a \"Googlebot\" request, verify it: the user-agent string alone can be faked. In WAF rules, prefer matching the IP against the ranges Google publishes as common-crawlers.json and special-crawlers.json on its page on verifying its crawlers; for log analysis, a reverse DNS lookup followed by a forward lookup works too. Never allowlist a whole googleusercontent.com host: Google Cloud customer VMs resolve there too, and only *.gae.googleusercontent.com belongs to Google's user-triggered fetchers, which are not Googlebot.",
      "code": [
        {
          "lang": "bash",
          "code": "# 1. Reverse DNS: Googlebot and Google's other common crawlers resolve to crawl-*.googlebot.com\n#    or geo-crawl-*.geo.googlebot.com; special-case crawlers to rate-limited-proxy-*.google.com.\n#    A host such as 81.59.117.34.bc.googleusercontent.com is a Google Cloud customer, not Googlebot.\nhost 66.249.66.1\n# -> 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.\n\n# 2. Forward DNS: that host name must resolve back to the same IP\nhost crawl-66-249-66-1.googlebot.com\n# -> crawl-66-249-66-1.googlebot.com has address 66.249.66.1",
          "note": ""
        },
        {
          "lang": "bash",
          "code": "# Common crawlers (Googlebot and others) and special-case crawlers; refresh the lists regularly\ncurl -s https://developers.google.com/static/crawling/ipranges/common-crawlers.json\ncurl -s https://developers.google.com/static/crawling/ipranges/special-crawlers.json",
          "note": "The published IP ranges are easier to keep in sync with WAF and CDN allowlists than DNS lookups:"
        }
      ],
      "used_by": [
        "DEV-SRV-01",
        "DEV-MON-04"
      ]
    },
    {
      "key": "http-503-maintenance",
      "title": "Planned maintenance with 503 (robots.txt stays available)",
      "text": "During a short outage every page answers 503 Service Unavailable, never a 200 \"we'll be back\" page and never a 404. Keep it to a day or two, and keep serving robots.txt normally: a 5xx on robots.txt stops crawling of the whole site.",
      "code": [
        {
          "lang": "http",
          "code": "HTTP/1.1 503 Service Unavailable\nContent-Type: text/html; charset=utf-8\nRetry-After: 3600\nCache-Control: no-store",
          "note": ""
        },
        {
          "lang": "nginx",
          "code": "server {\n    listen 443 ssl;\n    server_name www.example.com;\n    ssl_certificate     /etc/ssl/www.example.com.crt;\n    ssl_certificate_key /etc/ssl/www.example.com.key;\n\n    error_page 503 /maintenance.html;\n\n    location = /maintenance.html {\n        root /var/www/static;\n        internal;\n        # add_header here replaces server-level add_header lines: repeat HSTS or CSP if you set them\n        add_header Retry-After 3600 always;\n        add_header Cache-Control \"no-store\" always;\n    }\n\n    # robots.txt keeps answering 200 during maintenance\n    location = /robots.txt {\n        root /var/www/static;\n    }\n\n    location / {\n        return 503;\n    }\n}",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-SRV-03"
      ]
    },
    {
      "key": "robots-txt",
      "title": "robots.txt with crawl controls and a rendering carve-out",
      "text": "Disallow only URLs that should never be crawled (internal search, cart and checkout actions, filter parameters), keep every script, style and API path that pages need for rendering crawlable, and list the sitemap. Google reads only `user-agent`, `allow`, `disallow` and `sitemap`; each host (www, api, cdn) needs its own file at its root. Robots.txt is public, so never list secret paths in it.",
      "code": [
        {
          "lang": "text",
          "code": "# https://www.example.com/robots.txt\nUser-agent: *\n# Internal search results and cart/checkout actions (adapt to your URL patterns)\nDisallow: /search?\nDisallow: /cart/\nDisallow: /checkout/\n# (Shops in Google Shopping: give Storebot-Google its own group that leaves cart and checkout open.\n#  A named group replaces this * group for that crawler, so repeat in it every rule that should still apply.)\n# Filter and sort parameters of faceted navigation, as the first parameter (?) or a later one (&);\n# /*?*size= would also block ?pagesize= and /*?*color= would block ?bgcolor=\nDisallow: /*?color=\nDisallow: /*&color=\nDisallow: /*?size=\nDisallow: /*&size=\nDisallow: /*?sort=\nDisallow: /*&sort=\n# API: blocked in general, but the endpoints pages render from stay crawlable\n# (the longer, more specific Allow rule wins)\nDisallow: /api/\nAllow: /api/products/\nAllow: /api/reviews/\n# Never disallow /static/, /assets/ or other JS and CSS folders\n\n# Optional: keep content out of Gemini training and grounding (no effect on Google Search)\nUser-agent: Google-Extended\nDisallow: /\n\nSitemap: https://www.example.com/sitemap.xml",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-SRV-04",
        "DEV-SRV-05",
        "DEV-URL-08",
        "DEV-REN-04",
        "DEV-IDX-11",
        "DEV-AIF-05"
      ]
    },
    {
      "key": "conditional-requests",
      "title": "ETag and 304 Not Modified for crawlers",
      "text": "Send a validator (ETag, which Google's crawling team prefers, or Last-Modified) and answer a matching conditional request with 304 and no body, so unchanged pages cost almost nothing to recrawl. Express does this for you when it sends the body, but its ETag hashes the whole response: if the HTML embeds a CSP nonce, a CSRF token or a timestamp, compute the ETag from the content data instead (for example a hash of the product record and the template version) and set it with `res.set('ETag', ...)`.",
      "code": [
        {
          "lang": "http",
          "code": "GET /chairs/oak-dining-chair HTTP/1.1\nHost: www.example.com\nIf-None-Match: \"a3f9c2e1\"\n\nHTTP/1.1 304 Not Modified\nETag: \"a3f9c2e1\"\nCache-Control: no-cache",
          "note": ""
        },
        {
          "lang": "js",
          "code": "// Express: strong ETags, and an automatic 304 when If-None-Match matches\nconst express = require('express');\nconst app = express();\napp.set('etag', 'strong');\n\napp.get('/chairs/:slug', async (req, res) => {\n  const html = await renderChairPage(req.params.slug); // your server-side renderer\n  res.set('Cache-Control', 'no-cache'); // may be stored, but must be revalidated\n  res.type('html').send(html); // res.send() compares the ETag and answers 304 when fresh\n});\n\n// Pages with a per-request nonce or CSRF token: an ETag from the data, not from the body\nconst crypto = require('crypto');\nconst TEMPLATE_VERSION = '2026-10-02';\napp.get('/products/:slug', async (req, res) => {\n  const product = await loadProduct(req.params.slug); // your data access\n  const etag = '\"' + crypto.createHash('sha256').update(JSON.stringify(product) + TEMPLATE_VERSION).digest('hex').slice(0, 16) + '\"';\n  res.set('ETag', etag);\n  res.set('Cache-Control', 'no-cache');\n  if (req.fresh) return res.status(304).end(); // If-None-Match matches the data ETag\n  res.type('html').send(renderProductPage(product, res.locals.cspNonce));\n});",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-SRV-08"
      ]
    },
    {
      "key": "robots-txt-groups",
      "title": "Complete robots.txt groups for named crawlers",
      "text": "A crawler obeys only the most specific group that names it and ignores the `*` group, so groups are not additive: a named group must repeat every shared rule that should still apply to that crawler. One group can name several crawlers, and Google combines all groups that name the same user agent into one.",
      "code": [
        {
          "lang": "text",
          "code": "# WRONG: the googlebot group replaces the * group instead of adding to it,\n# so Googlebot may crawl /goats/ and /cows/ and only /dogs/ is closed to it\nUser-agent: *\nDisallow: /goats/\nDisallow: /cows/\n\nUser-agent: googlebot\nDisallow: /dogs/",
          "note": ""
        },
        {
          "lang": "text",
          "code": "# Shared rules for every crawler without a group of its own\nUser-agent: *\nDisallow: /goats/\nDisallow: /cows/\nDisallow: /staging/\n\n# Googlebot: the shared rules again, plus its own\nUser-agent: googlebot\nDisallow: /goats/\nDisallow: /cows/\nDisallow: /dogs/\nDisallow: /staging/\nAllow: /staging/preview/\n\n# Several crawlers can share one group: stack their user-agent lines with nothing in between\nUser-agent: bingbot\nUser-agent: applebot\nDisallow: /goats/\nDisallow: /cows/\nDisallow: /staging/\n\nSitemap: https://www.example.com/sitemap.xml",
          "note": "Right: the shared rules sit in the `*` group, and the named group repeats them before adding its own. To open /staging/preview/ to Googlebot while the rest of /staging/ stays closed to it, the Googlebot group needs both the disallow and the allow; an allow in the `*` group, or a Googlebot group with only the allow, does not do it."
        }
      ],
      "used_by": [
        "DEV-SRV-10"
      ]
    },
    {
      "key": "crawlable-links",
      "title": "Crawlable links versus links Google cannot rely on",
      "text": "Google extracts links from `<a>` elements with an `href` that holds a real URL, both from the server HTML and from the rendered page. Click handlers, `javascript:` URLs, `routerLink` without `href`, `href` on other elements and `#` routes are not dependable.",
      "code": [
        {
          "lang": "html",
          "code": "<!-- Crawlable: <a> with a real relative or absolute URL -->\n<a href=\"/chairs/\">Chairs</a>\n<a href=\"https://www.example.com/chairs/oak-dining-chair\">Oak dining chair</a>\n\n<!-- Crawlable and still client-side routed: keep the href, intercept the click in JavaScript -->\n<a href=\"/chairs/\" data-link>Chairs</a>\n\n<!-- Not dependable: do not use for anything that should be discovered -->\n<a onclick=\"goTo('/chairs/')\">Chairs</a>\n<a routerLink=\"/chairs/\">Chairs</a>\n<a href=\"javascript:goTo('chairs')\">Chairs</a>\n<a href=\"#/chairs\">Chairs</a>\n<span data-href=\"/chairs/\" onclick=\"location.href=this.dataset.href\">Chairs</span>\n<button type=\"button\" onclick=\"location.href='/chairs/'\">Chairs</button>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-URL-01",
        "DEV-URL-02"
      ]
    },
    {
      "key": "spa-history-routing",
      "title": "Single-page app routing with the History API instead of #/ routes",
      "text": "Every view gets a real path in a real `<a href>`; JavaScript intercepts the click, updates the address with `pushState` and renders the view, so users skip full reloads while Google can follow the links. The server must answer a direct request for each path with the full page (ideally server-rendered) and unknown paths with 404. The not-found view is a route of its own, so a shell served with 404 renders it instead of redirecting again.",
      "code": [
        {
          "lang": "html",
          "code": "<nav>\n  <a href=\"/\" data-link>Home</a>\n  <a href=\"/chairs/\" data-link>Chairs</a>\n  <a href=\"/tables/\" data-link>Tables</a>\n</nav>\n<main id=\"app\"></main>\n\n<script>\n  const routes = {\n    '/': () => '<h1>Example Shop</h1>',\n    '/chairs/': () => '<h1>Chairs</h1>',\n    '/tables/': () => '<h1>Tables</h1>',\n    '/not-found': () => '<h1>Page not found</h1>', // the server answers this URL with 404\n  };\n\n  function renderRoute(path) {\n    const view = routes[path];\n    if (!view) {\n      // Unknown route on a 200 URL: go to the URL the server answers with 404 (once; never loop)\n      if (path !== '/not-found') window.location.replace('/not-found');\n      return;\n    }\n    document.getElementById('app').innerHTML = view();\n  }\n\n  document.addEventListener('click', (event) => {\n    const link = event.target.closest('a[data-link]');\n    if (!link || link.origin !== location.origin) return;\n    if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n    event.preventDefault();\n    history.pushState({}, '', link.pathname + link.search);\n    renderRoute(link.pathname);\n  });\n\n  window.addEventListener('popstate', () => renderRoute(location.pathname));\n  renderRoute(location.pathname);\n</script>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-URL-03"
      ]
    },
    {
      "key": "xml-sitemap",
      "title": "XML sitemap with canonical URLs and real lastmod dates",
      "text": "List only canonical, indexable URLs that answer 200 (no redirects, no noindex, no parameters you canonicalise away), with a `lastmod` that changes only for significant updates (the main content, structured data or links), never for footer, copyright or timestamp changes; Google uses `lastmod` only when it is consistently accurate. Split large sites with a sitemap index (at most 50,000 URLs or 50 MB uncompressed per file), reference it in robots.txt and submit it in Search Console.",
      "code": [
        {
          "lang": "xml",
          "code": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <sitemap>\n    <loc>https://www.example.com/sitemaps/products-1.xml</loc>\n    <lastmod>2026-09-30T06:00:00+00:00</lastmod>\n  </sitemap>\n</sitemapindex>",
          "note": ""
        },
        {
          "lang": "xml",
          "code": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>https://www.example.com/chairs/oak-dining-chair</loc>\n    <lastmod>2026-09-28T10:15:00+00:00</lastmod>\n  </url>\n  <url>\n    <loc>https://www.example.com/chairs/beech-stool</loc>\n    <lastmod>2026-09-12T08:00:00+00:00</lastmod>\n  </url>\n</urlset>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-URL-05"
      ]
    },
    {
      "key": "pagination-links",
      "title": "Paginated listing with crawlable page links",
      "text": "Each page of a series has its own URL (`?page=n`), its own self-referencing canonical and plain `<a href>` links to the next page and back to the first page; the pages may share one title and description, so a page number in the title is optional. Do not canonicalise page 2 and later to page 1, and do not put page numbers in `#` fragments; Google no longer uses `rel=next`/`rel=prev`.",
      "code": [
        {
          "lang": "html",
          "code": "<!-- https://www.example.com/chairs/?page=2 -->\n<head>\n  <title>Chairs, page 2 | Example Shop</title> <!-- the page number is optional -->\n  <link rel=\"canonical\" href=\"https://www.example.com/chairs/?page=2\">\n</head>\n<body>\n  <main>\n    <h1>Chairs</h1>\n    <ul>\n      <li><a href=\"/chairs/oak-dining-chair\">Oak dining chair</a></li>\n      <li><a href=\"/chairs/beech-stool\">Beech stool</a></li>\n    </ul>\n    <nav aria-label=\"Pagination\">\n      <a href=\"/chairs/\">1</a>\n      <a href=\"/chairs/?page=2\" aria-current=\"page\">2</a>\n      <a href=\"/chairs/?page=3\">3</a>\n      <a href=\"/chairs/?page=3\">Next page</a>\n    </nav>\n  </main>\n</body>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-URL-06"
      ]
    },
    {
      "key": "lazy-loading",
      "title": "Lazy loading that works without scrolling",
      "text": "Googlebot does not scroll; it renders with a very tall viewport. Use native `loading=\"lazy\"` for images and iframes, and load list chunks with an IntersectionObserver on a sentinel element, never with a `scroll` event listener. The plain `<a href>` links to the paginated URLs stay in the page whatever the script does, so the rendered HTML always links to the next page.",
      "code": [
        {
          "lang": "html",
          "code": "<!-- Images and iframes: native lazy loading, real src in the HTML -->\n<img src=\"/img/oak-chair-800.webp\" alt=\"Oak dining chair with a woven paper-cord seat\" width=\"800\" height=\"600\" loading=\"lazy\">\n\n<!-- Lists: page 1 of /chairs/, a sentinel for the observer, and pagination links the script never removes -->\n<ul id=\"products\">\n  <li><a href=\"/chairs/oak-dining-chair\">Oak dining chair</a></li>\n</ul>\n<div id=\"load-more-sentinel\" style=\"height: 1px\"></div>\n<nav aria-label=\"Pagination\">\n  <a href=\"/chairs/\" aria-current=\"page\">1</a>\n  <a href=\"/chairs/?page=2\">2</a>\n  <a href=\"/chairs/?page=3\">3</a>\n  <a href=\"/chairs/?page=2\">Next page</a>\n</nav>\n\n<!-- Avoid: window.addEventListener('scroll', loadMoreProducts) never runs for Googlebot -->\n\n<script>\n  const list = document.getElementById('products');\n  const sentinel = document.getElementById('load-more-sentinel');\n  let next = '/chairs/?page=2'; // written by the server: the next page's URL, empty on the last page\n\n  const observer = new IntersectionObserver(async ([entry]) => {\n    if (!entry.isIntersecting || !next) return;\n    observer.unobserve(sentinel);\n    const url = new URL(next, location.href);\n    const res = await fetch('/fragments' + url.pathname + url.search); // returns the <li> items of that page\n    if (!res.ok) { observer.disconnect(); return; } // keep the links; never insert an error page\n    list.insertAdjacentHTML('beforeend', await res.text());\n    history.replaceState({}, '', url.pathname + url.search); // the URL follows the chunk once it is in place\n    next = res.headers.get('X-Next-Page') || ''; // e.g. \"/chairs/?page=3\", absent on the last page\n    if (next) observer.observe(sentinel); else observer.disconnect();\n  });\n\n  if (next) observer.observe(sentinel);\n</script>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-URL-07",
        "DEV-REN-03"
      ]
    },
    {
      "key": "url-normalization",
      "title": "Redirect URL variants to the one URL the application expects",
      "text": "Build the expected URL from the route and the parameters the page really uses, in a fixed order, and answer any other spelling with one 301. Generate internal links with the same function so the site never links to a variant. The example is Express middleware; lowercasing the path assumes the site's routes are all lowercase.",
      "code": [
        {
          "lang": "js",
          "code": "const ORIGIN = 'https://www.example.com';\n// Parameters each route actually uses, in the order they must appear.\nconst PARAMS = { '/chairs': ['colour', 'page'], '/search': ['q'] };\n\nfunction expectedUrl(pathname, searchParams) {\n  let path = pathname.toLowerCase().replace(/\\/{2,}/g, '/');\n  if (path.length > 1 && path.endsWith('/')) path = path.slice(0, -1);\n  const kept = new URLSearchParams();\n  for (const name of PARAMS[path] || []) {\n    const value = searchParams.get(name);\n    if (value) kept.set(name, value); // unused and empty parameters are dropped\n  }\n  const query = kept.toString();      // spaces always come out as +\n  return path + (query ? '?' + query : '');\n}\n\napp.set('trust proxy', true);         // so req.protocol is right behind a CDN or load balancer\napp.use((req, res, next) => {\n  const requested = new URL(ORIGIN + req.originalUrl); // not new URL(path, base): '//x' would parse as a host\n  const expected = expectedUrl(requested.pathname, requested.searchParams);\n  const wrongOrigin = req.protocol !== 'https' || req.hostname !== 'www.example.com';\n  if (wrongOrigin || expected !== requested.pathname + requested.search) {\n    return res.redirect(301, ORIGIN + expected); // one hop, straight to the final URL\n  }\n  next();\n});",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-URL-11"
      ]
    },
    {
      "key": "semantic-page-template",
      "title": "Page template with a clearly delimited main content area",
      "text": "Everything indexing depends on (title, description, canonical, robots rules, main text, links) is in the server HTML. Header, navigation and footer are separated from one `<main>` element that holds the title, headings, opening text and media, because Google weighs words by where they appear and treats the main content as the most important part.",
      "code": [
        {
          "lang": "html",
          "code": "<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <title>Oak dining chair with woven seat | Example Shop</title>\n  <meta name=\"description\" content=\"Solid oak dining chair with a hand-woven paper-cord seat. Seat height 45 cm, delivered assembled.\">\n  <link rel=\"canonical\" href=\"https://www.example.com/chairs/oak-dining-chair\">\n  <meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large\">\n</head>\n<body>\n  <header>\n    <a href=\"/\">Example Shop</a>\n    <nav aria-label=\"Main\">\n      <a href=\"/chairs/\">Chairs</a>\n      <a href=\"/tables/\">Tables</a>\n    </nav>\n  </header>\n\n  <main>\n    <article>\n      <h1>Oak dining chair with woven seat</h1>\n      <p>A solid oak dining chair with a hand-woven paper-cord seat, made for everyday family meals.</p>\n      <figure>\n        <img src=\"/img/oak-chair-1200.webp\" alt=\"Oak dining chair with a woven paper-cord seat, seen from the front\" width=\"1200\" height=\"900\">\n        <figcaption>Natural oak finish, seat height 45 cm.</figcaption>\n      </figure>\n      <h2>Dimensions and materials</h2>\n      <p>Width 46 cm, depth 52 cm, height 80 cm. <strong>Solid European oak</strong>, paper-cord seat.</p>\n    </article>\n  </main>\n\n  <footer>\n    <nav aria-label=\"Footer\">\n      <a href=\"/delivery/\">Delivery</a>\n      <a href=\"/returns/\">Returns</a>\n      <a href=\"/contact/\">Contact</a>\n    </nav>\n  </footer>\n</body>\n</html>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-REN-01",
        "DEV-HTM-01"
      ]
    },
    {
      "key": "tabs-in-dom",
      "title": "Tabs and accordions whose content is in the DOM from the start",
      "text": "Googlebot does not click, so content fetched only when a tab is clicked never exists for it. Ship every panel in the HTML and only hide the inactive ones with the `hidden` attribute or CSS: hidden content in the DOM can be indexed, absent content cannot.",
      "code": [
        {
          "lang": "html",
          "code": "<div class=\"tabs\">\n  <div role=\"tablist\" aria-label=\"Product details\">\n    <button type=\"button\" role=\"tab\" id=\"tab-specs\" aria-controls=\"panel-specs\" aria-selected=\"true\">Specifications</button>\n    <button type=\"button\" role=\"tab\" id=\"tab-care\" aria-controls=\"panel-care\" aria-selected=\"false\">Care</button>\n  </div>\n  <section role=\"tabpanel\" id=\"panel-specs\" aria-labelledby=\"tab-specs\">\n    <p>Seat height 45 cm, solid oak frame, paper-cord seat.</p>\n  </section>\n  <section role=\"tabpanel\" id=\"panel-care\" aria-labelledby=\"tab-care\" hidden>\n    <p>Wipe with a damp cloth; re-oil the frame once a year.</p>\n  </section>\n</div>\n\n<!-- Avoid: tab.onclick = () => fetch('/api/specs') ... content that exists only after a click -->\n\n<script>\n  const tabs = document.querySelectorAll('[role=\"tab\"]');\n  tabs.forEach((tab) => {\n    tab.addEventListener('click', () => {\n      tabs.forEach((other) => {\n        const selected = other === tab;\n        other.setAttribute('aria-selected', String(selected));\n        document.getElementById(other.getAttribute('aria-controls')).hidden = !selected;\n      });\n    });\n  });\n</script>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-REN-02"
      ]
    },
    {
      "key": "feature-detection-fallback",
      "title": "Feature detection with a fallback for unsupported or permission-based APIs",
      "text": "Google's renderer does not grant permission prompts (location, payments, camera) and does not run WebGL well. Render the indexable content first and treat such features as optional enhancements behind feature detection.",
      "code": [
        {
          "lang": "html",
          "code": "<main>\n  <h1>Our stores</h1>\n  <ul id=\"stores\">\n    <li>Barcelona, Carrer Example 1</li>\n    <li>Madrid, Calle Example 2</li>\n  </ul>\n  <button type=\"button\" id=\"near-me\" hidden>Sort by distance</button>\n  <canvas class=\"hero-effect\" width=\"1200\" height=\"400\"></canvas>\n</main>\n\n<script>\n  // Location: optional, only after a user click; the full list is already in the page\n  if ('geolocation' in navigator) {\n    const button = document.getElementById('near-me');\n    button.hidden = false;\n    button.addEventListener('click', () => {\n      navigator.geolocation.getCurrentPosition(\n        (position) => sortStoresByDistance(position.coords),\n        () => {} // declined or unavailable: keep the default order\n      );\n    });\n  }\n\n  function sortStoresByDistance(coords) {\n    console.log('Sort stores near', coords.latitude, coords.longitude);\n  }\n\n  // WebGL: decoration only; without it the server-rendered text and images stay as they are\n  const canvas = document.querySelector('canvas.hero-effect');\n  const gl = canvas.getContext('webgl');\n  if (gl) {\n    gl.clearColor(0.1, 0.3, 0.5, 1.0);\n    gl.clear(gl.COLOR_BUFFER_BIT);\n  } else {\n    canvas.remove();\n  }\n</script>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-REN-08"
      ]
    },
    {
      "key": "robots-meta-tags",
      "title": "Robots meta tags for common page types",
      "text": "Put robots rules in the `<head>` of the HTML the server sends, one variant per page type below; never add, change or remove them with JavaScript. A `noindex` only works if the URL is not disallowed in robots.txt, because Google has to fetch the page to see it.",
      "code": [
        {
          "lang": "html",
          "code": "<!-- Indexable templates: allow full-length snippets and large image and video previews -->\n<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\">\n\n<!-- Keep a page out of Search (internal admin, thin or temporary pages) -->\n<meta name=\"robots\" content=\"noindex\">\n\n<!-- The same rule for Google only -->\n<meta name=\"googlebot\" content=\"noindex\">\n\n<!-- Time-limited page (event, offer, job ad): drop it from results after the end date -->\n<meta name=\"robots\" content=\"unavailable_after: 2026-12-31T23:59:59+01:00\">",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-IDX-01",
        "DEV-IDX-04",
        "DEV-IDX-08",
        "DEV-VID-05"
      ]
    },
    {
      "key": "x-robots-tag",
      "title": "X-Robots-Tag header for PDFs, images and other non-HTML files",
      "text": "Files that cannot carry a meta tag get their robots rules as an HTTP response header. The same rules as the meta tag apply (`noindex`, `nosnippet`, `max-snippet`...), and the URL must stay crawlable for Google to see the header.",
      "code": [
        {
          "lang": "http",
          "code": "HTTP/1.1 200 OK\nContent-Type: application/pdf\nX-Robots-Tag: noindex",
          "note": ""
        },
        {
          "lang": "nginx",
          "code": "# Inside the server block: office documents out of the index.\n# An add_header in a location replaces every add_header set at server level for those responses:\n# repeat your HSTS and CSP lines in each such location (or use the headers-more module).\nlocation ~* \\.(pdf|docx?|xlsx?)$ {\n    add_header X-Robots-Tag \"noindex\" always;\n    add_header Strict-Transport-Security \"max-age=31536000\" always;  # repeated from the server block\n}\n\n# Images that must not appear in Google Images (they still display on your pages)\nlocation ^~ /internal-images/ {\n    add_header X-Robots-Tag \"noindex\" always;\n    add_header Strict-Transport-Security \"max-age=31536000\" always;  # repeated from the server block\n}",
          "note": ""
        },
        {
          "lang": "apache",
          "code": "<FilesMatch \"\\.(pdf|docx?|xlsx?)$\">\n  Header set X-Robots-Tag \"noindex\"\n</FilesMatch>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-IDX-03",
        "DEV-IMG-06"
      ]
    },
    {
      "key": "data-nosnippet",
      "title": "data-nosnippet for one detail instead of the whole snippet",
      "text": "`data-nosnippet` keeps a specific passage out of search snippets (and so out of the snippet-based inputs of AI features) while the page can still rank for it. It works only on `span`, `div` and `section`, must be in the server HTML (not toggled by JavaScript) and needs valid, closed markup: an unclosed element can hide the rest of the page.",
      "code": [
        {
          "lang": "html",
          "code": "<p>\n  Call our workshop on <span data-nosnippet>+1 555-0100</span> for a repair quote.\n</p>\n\n<section data-nosnippet>\n  <h2>Member prices</h2>\n  <p>Log in to see your personal discount.</p>\n</section>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-IDX-07"
      ]
    },
    {
      "key": "redirects",
      "title": "Permanent redirects to one host, one protocol, one hop",
      "text": "Send `http://` and the other host name to the preferred HTTPS host with a single 301, and send moved pages straight to their final URL (301 or 308). Keep migration redirects in place long term; avoid chains, meta refresh and JavaScript redirects for permanent moves.",
      "code": [
        {
          "lang": "nginx",
          "code": "# http:// on both host names -> https://www. in one hop\nserver {\n    listen 80;\n    server_name example.com www.example.com;\n    return 301 https://www.example.com$request_uri;\n}\n\n# https:// on the bare domain -> https://www.\nserver {\n    listen 443 ssl;\n    server_name example.com;\n    ssl_certificate     /etc/ssl/example.com.crt;\n    ssl_certificate_key /etc/ssl/example.com.key;\n    return 301 https://www.example.com$request_uri;\n}\n\nserver {\n    listen 443 ssl;\n    http2 on;  # nginx 1.25.1+; older versions use \"listen 443 ssl http2;\"\n    server_name www.example.com;\n    ssl_certificate     /etc/ssl/www.example.com.crt;\n    ssl_certificate_key /etc/ssl/www.example.com.key;\n\n    # Moved pages: permanent and straight to the final URL\n    location = /old-chairs/ {\n        return 301 https://www.example.com/chairs/;\n    }\n    location ^~ /shop/chairs/ {\n        rewrite ^/shop/chairs/(.*)$ https://www.example.com/chairs/$1 permanent;\n    }\n\n    root /var/www/example;\n}",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-CAN-01",
        "DEV-CAN-02"
      ]
    },
    {
      "key": "canonical-link",
      "title": "One rel=canonical per page, pointing straight at the final URL",
      "text": "Exactly one absolute canonical in the server-sent `<head>`, self-referencing on the preferred URL and identical on its duplicates (tracking parameters, sort orders, print views). The target must answer 200, be indexable, not redirect and be in the same language. Non-HTML files can declare it in an HTTP `Link` header.",
      "code": [
        {
          "lang": "html",
          "code": "<!-- On https://www.example.com/chairs/oak-dining-chair\n     and on https://www.example.com/chairs/oak-dining-chair?utm_source=newsletter -->\n<head>\n  <link rel=\"canonical\" href=\"https://www.example.com/chairs/oak-dining-chair\">\n</head>",
          "note": ""
        },
        {
          "lang": "http",
          "code": "HTTP/1.1 200 OK\nContent-Type: application/pdf\nLink: <https://www.example.com/guides/chair-care.pdf>; rel=\"canonical\"",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-CAN-03"
      ]
    },
    {
      "key": "redirect-chain-robots",
      "title": "Check every hop of a redirect chain against robots.txt",
      "text": "Robots.txt is checked for every URL in a redirect chain, and crawling stops at the first blocked hop, while Search Console shows the block on the first URL. This script follows server-side redirects one hop at a time, with Googlebot's user agent and with a browser's, and tests each hop against its own host's robots.txt. It needs `pip install requests protego` (Protego is an open-source robots.txt parser with Google-style wildcard and longest-match rules; confirm a doubtful result with Google's own parser, github.com/google/robotstxt). Meta refresh and JavaScript redirects are not followed: check those with URL Inspection's live test.",
      "code": [
        {
          "lang": "python",
          "code": "# check_chain.py  -  usage: python check_chain.py https://www.example.com/page [more URLs]\nimport sys\nfrom urllib.parse import urljoin, urlsplit\n\nimport requests\nfrom protego import Protego\n\nAGENTS = {\n    \"googlebot\": \"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\",\n    \"browser\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0 Safari/537.36\",\n}\nTOKEN = \"Googlebot\"  # the robots.txt token the rules are tested for\n_robots = {}\n\n\ndef robots_for(url):\n    parts = urlsplit(url)\n    origin = f\"{parts.scheme}://{parts.netloc}\"\n    if origin not in _robots:\n        r = requests.get(origin + \"/robots.txt\", headers={\"User-Agent\": AGENTS[\"googlebot\"]}, timeout=10)\n        if r.status_code == 200:\n            text = r.text\n        elif 400 <= r.status_code < 500 and r.status_code != 429:\n            text = \"\"  # 4xx (except 429): Google crawls as if there were no robots.txt\n        else:\n            text = \"User-agent: *\\nDisallow: /\"  # 5xx or 429: Google stops crawling the host for now\n        _robots[origin] = Protego.parse(text)\n    return _robots[origin]\n\n\ndef check(url, agent, max_hops=10):\n    print(f\"[{agent}]\")\n    for hop in range(max_hops + 1):\n        allowed = robots_for(url).can_fetch(url, TOKEN)\n        print(f\"  {hop}: {'allowed' if allowed else 'BLOCKED by robots.txt'}  {url}\")\n        if not allowed:\n            print(\"     crawling stops here; Search Console reports the first URL of the chain as blocked\")\n            return\n        r = requests.get(url, headers={\"User-Agent\": AGENTS[agent]}, allow_redirects=False, timeout=10)\n        location = r.headers.get(\"Location\")\n        if r.status_code in (301, 302, 303, 307, 308) and location:\n            url = urljoin(url, location)\n        else:\n            print(f\"     final status {r.status_code}\")\n            return\n    print(f\"     more than {max_hops} redirect hops\")\n\n\nif __name__ == \"__main__\":\n    for start in sys.argv[1:]:\n        for agent in AGENTS:  # different chains for the two user agents point to cloaking\n            check(start, agent)",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-CAN-11"
      ]
    },
    {
      "key": "spa-404",
      "title": "Real 404 status codes in a single-page app",
      "text": "Fix soft 404s at the source: the server (or hosting rewrite rules) answers known paths with 200 and the app shell, and everything else with 404 and a static error page that loads no router, so it can never redirect again. Where that is impossible, use one of the two client-side fallbacks Google documents: a JavaScript redirect to a URL that returns 404, or a `noindex` added with JavaScript.",
      "code": [
        {
          "lang": "js",
          "code": "// Server (Express 4 or 5): static files first, then a final handler for every other path\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst shell = path.join(__dirname, 'dist', 'index.html');\nconst notFound = path.join(__dirname, 'dist', '404.html'); // static error page: no router script\nconst PAGES = [/^\\/$/, /^\\/chairs\\/$/, /^\\/tables\\/$/, /^\\/about\\/$/];\nconst PRODUCT = /^\\/chairs\\/([a-z0-9-]+)$/;\n\napp.use(express.static(path.join(__dirname, 'dist'), { index: false }));\n\napp.use(async (req, res) => {\n  const product = req.path.match(PRODUCT);\n  const found = PAGES.some((re) => re.test(req.path)) || (product !== null && (await productExists(product[1])));\n  if (found) res.sendFile(shell);\n  else res.status(404).sendFile(notFound); // also answers /not-found, the target of the client fallback\n});\n\nasync function productExists(slug) {\n  return ['oak-dining-chair', 'beech-stool'].includes(slug); // replace with your database or API lookup\n}\n\napp.listen(3000);",
          "note": ""
        },
        {
          "lang": "js",
          "code": "// Client fallback when the server cannot know: never leave a \"not found\" view on a 200 URL\nfetch(`/api/products/${productId}`)\n  .then((response) => response.json())\n  .then((product) => {\n    if (product.exists) {\n      showProductDetails(product);\n      return;\n    }\n    // Option 1: go to a URL whose server response is 404 (and whose page does not redirect again)\n    window.location.replace('/not-found');\n    // Option 2 (instead of option 1): keep the URL but keep the view out of the index\n    // const robots = document.createElement('meta');\n    // robots.name = 'robots';\n    // robots.content = 'noindex';\n    // document.head.appendChild(robots);\n  });",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-ERR-02"
      ]
    },
    {
      "key": "hreflang-html",
      "title": "hreflang link elements: complete, reciprocal, self-referencing",
      "text": "Every language version of a page carries the identical block in its `<head>`, including a line for itself and an `x-default` for the fallback, ideally a language selector page. URLs are fully qualified; codes are an ISO 639-1 language, an optional ISO 15924 script (zh-Hant, zh-Hans-CN) and an optional ISO 3166-1 Alpha-2 region.",
      "code": [
        {
          "lang": "html",
          "code": "<!-- The same block in the <head> of every language version listed here; the x-default target is a language selector page -->\n<link rel=\"alternate\" hreflang=\"en\" href=\"https://www.example.com/en/chairs/\">\n<link rel=\"alternate\" hreflang=\"en-GB\" href=\"https://www.example.com/en-gb/chairs/\">\n<link rel=\"alternate\" hreflang=\"de-DE\" href=\"https://www.example.com/de-de/stuehle/\">\n<link rel=\"alternate\" hreflang=\"de-AT\" href=\"https://www.example.com/de-at/stuehle/\">\n<link rel=\"alternate\" hreflang=\"de-CH\" href=\"https://www.example.com/de-ch/stuehle/\">\n<link rel=\"alternate\" hreflang=\"sv-SE\" href=\"https://www.example.com/sv-se/stolar/\">\n<link rel=\"alternate\" hreflang=\"zh-Hant\" href=\"https://www.example.com/zh-hant/chairs/\">\n<link rel=\"alternate\" hreflang=\"x-default\" href=\"https://www.example.com/chairs/choose-language/\">\n\n<!-- Wrong values seen in the wild: \"se\", \"dk\", \"cz\" (country codes, not languages: use sv, da, cs),\n     \"en-UK\" (use en-GB), \"de-SW\" (use de-CH), \"en-EU\" (no such region), \"GB\" (a region alone).\n     A script subtag is valid: \"zh-Hant\", \"zh-Hans-CN\" (language, script, region in that order) -->",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-INT-03",
        "DEV-INT-04"
      ]
    },
    {
      "key": "hreflang-sitemap",
      "title": "hreflang in an XML sitemap",
      "text": "The sitemap method is equivalent to link elements and suits large sites or templates that cannot change the `<head>`. Use it instead of, not on top of, the HTML or HTTP-header method; every `<url>` lists all versions, itself included.",
      "code": [
        {
          "lang": "xml",
          "code": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n        xmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n  <url>\n    <loc>https://www.example.com/en/chairs/</loc>\n    <xhtml:link rel=\"alternate\" hreflang=\"en\" href=\"https://www.example.com/en/chairs/\"/>\n    <xhtml:link rel=\"alternate\" hreflang=\"de-DE\" href=\"https://www.example.com/de-de/stuehle/\"/>\n    <xhtml:link rel=\"alternate\" hreflang=\"x-default\" href=\"https://www.example.com/\"/>\n  </url>\n  <url>\n    <loc>https://www.example.com/de-de/stuehle/</loc>\n    <xhtml:link rel=\"alternate\" hreflang=\"en\" href=\"https://www.example.com/en/chairs/\"/>\n    <xhtml:link rel=\"alternate\" hreflang=\"de-DE\" href=\"https://www.example.com/de-de/stuehle/\"/>\n    <xhtml:link rel=\"alternate\" hreflang=\"x-default\" href=\"https://www.example.com/\"/>\n  </url>\n</urlset>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-INT-05"
      ]
    },
    {
      "key": "product-jsonld",
      "title": "Product markup with a time-limited sale price",
      "text": "Describe only the product the page is about (not the carousel of related products) and only what the page shows. For a sale, `price` is the sale price, the regular price is a `StrikethroughPrice`, and `validFrom` with `priceValidUntil` (or `validThrough`) bound the sale in ISO 8601 with a time zone, so a sale price that lingers in cached markup is not treated as current. The template must still switch to the regular price (and drop the `StrikethroughPrice`) when the sale ends: Google warns that a listing may not display if `priceValidUntil` is in the past. Keep the dates aligned with the Merchant Center feed. Shipping and returns point by `@id` alone to the policies defined once in the organisation block.",
      "code": [
        {
          "lang": "html",
          "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"@id\": \"https://www.example.com/chairs/oak-dining-chair#product\",\n  \"name\": \"Oak dining chair with woven seat\",\n  \"description\": \"Solid oak dining chair with a hand-woven paper-cord seat.\",\n  \"image\": [\n    \"https://www.example.com/img/oak-chair-1200.webp\",\n    \"https://www.example.com/img/oak-chair-side-1200.webp\"\n  ],\n  \"sku\": \"CH-OAK-01\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"Example Shop\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"https://www.example.com/chairs/oak-dining-chair\",\n    \"price\": 149.00,\n    \"priceCurrency\": \"EUR\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"itemCondition\": \"https://schema.org/NewCondition\",\n    \"validFrom\": \"2026-11-27T00:00:00+01:00\",\n    \"priceValidUntil\": \"2026-11-30T23:59:59+01:00\",\n    \"priceSpecification\": {\n      \"@type\": \"UnitPriceSpecification\",\n      \"priceType\": \"https://schema.org/StrikethroughPrice\",\n      \"price\": 199.00,\n      \"priceCurrency\": \"EUR\"\n    },\n    \"shippingDetails\": {\n      \"@type\": \"OfferShippingDetails\",\n      \"hasShippingService\": {\n        \"@id\": \"https://www.example.com/#standard-shipping\"\n      }\n    },\n    \"hasMerchantReturnPolicy\": {\n      \"@id\": \"https://www.example.com/#returns\"\n    }\n  }\n}\n</script>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-SDA-01",
        "DEV-SDA-05",
        "DEV-SDA-08",
        "DEV-SHP-01"
      ]
    },
    {
      "key": "organization-jsonld",
      "title": "Organization-level identity, returns, shipping and loyalty markup",
      "text": "One block, usually on the homepage, identifies the business by its homepage `url` and a stable `@id`, and states the policies that apply to most products: a return policy, a shipping service and a loyalty program. Product pages only override what differs.",
      "code": [
        {
          "lang": "html",
          "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"OnlineStore\",\n  \"@id\": \"https://www.example.com/#organization\",\n  \"name\": \"Example Shop\",\n  \"url\": \"https://www.example.com/\",\n  \"logo\": \"https://www.example.com/img/logo-512.png\",\n  \"sameAs\": [\n    \"https://video.example.net/@exampleshop\",\n    \"https://social.example.org/exampleshop\"\n  ],\n  \"hasMerchantReturnPolicy\": {\n    \"@type\": \"MerchantReturnPolicy\",\n    \"@id\": \"https://www.example.com/#returns\",\n    \"applicableCountry\": [\"ES\", \"FR\"],\n    \"returnPolicyCountry\": \"ES\",\n    \"returnPolicyCategory\": \"https://schema.org/MerchantReturnFiniteReturnWindow\",\n    \"merchantReturnDays\": 30,\n    \"returnMethod\": \"https://schema.org/ReturnByMail\",\n    \"returnFees\": \"https://schema.org/FreeReturn\",\n    \"refundType\": \"https://schema.org/FullRefund\"\n  },\n  \"hasShippingService\": {\n    \"@type\": \"ShippingService\",\n    \"@id\": \"https://www.example.com/#standard-shipping\",\n    \"name\": \"Standard shipping to Spain and France\",\n    \"fulfillmentType\": \"FulfillmentTypeDelivery\",\n    \"handlingTime\": {\n      \"@type\": \"ServicePeriod\",\n      \"cutoffTime\": \"14:00:00+01:00\",\n      \"duration\": {\n        \"@type\": \"QuantitativeValue\",\n        \"minValue\": 0,\n        \"maxValue\": 1,\n        \"unitCode\": \"DAY\"\n      },\n      \"businessDays\": [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\"]\n    },\n    \"shippingConditions\": [\n      {\n        \"@type\": \"ShippingConditions\",\n        \"shippingDestination\": [\n          { \"@type\": \"DefinedRegion\", \"addressCountry\": \"ES\" },\n          { \"@type\": \"DefinedRegion\", \"addressCountry\": \"FR\" }\n        ],\n        \"orderValue\": {\n          \"@type\": \"MonetaryAmount\",\n          \"minValue\": 0,\n          \"maxValue\": 99.99,\n          \"currency\": \"EUR\"\n        },\n        \"shippingRate\": {\n          \"@type\": \"MonetaryAmount\",\n          \"value\": 4.95,\n          \"currency\": \"EUR\"\n        },\n        \"transitTime\": {\n          \"@type\": \"ServicePeriod\",\n          \"duration\": {\n            \"@type\": \"QuantitativeValue\",\n            \"minValue\": 2,\n            \"maxValue\": 4,\n            \"unitCode\": \"DAY\"\n          }\n        }\n      },\n      {\n        \"@type\": \"ShippingConditions\",\n        \"shippingDestination\": [\n          { \"@type\": \"DefinedRegion\", \"addressCountry\": \"ES\" },\n          { \"@type\": \"DefinedRegion\", \"addressCountry\": \"FR\" }\n        ],\n        \"orderValue\": {\n          \"@type\": \"MonetaryAmount\",\n          \"minValue\": 100,\n          \"currency\": \"EUR\"\n        },\n        \"shippingRate\": {\n          \"@type\": \"MonetaryAmount\",\n          \"value\": 0,\n          \"currency\": \"EUR\"\n        },\n        \"transitTime\": {\n          \"@type\": \"ServicePeriod\",\n          \"duration\": {\n            \"@type\": \"QuantitativeValue\",\n            \"minValue\": 2,\n            \"maxValue\": 4,\n            \"unitCode\": \"DAY\"\n          }\n        }\n      }\n    ]\n  },\n  \"hasMemberProgram\": {\n    \"@type\": \"MemberProgram\",\n    \"name\": \"Example Club\",\n    \"description\": \"Free membership: earn points on every order.\",\n    \"url\": \"https://www.example.com/club/\",\n    \"hasTiers\": [\n      {\n        \"@type\": \"MemberProgramTier\",\n        \"@id\": \"https://www.example.com/club/#member\",\n        \"name\": \"Member\",\n        \"hasTierBenefit\": [\"https://schema.org/TierBenefitLoyaltyPoints\"],\n        \"membershipPointsEarned\": 5\n      }\n    ]\n  }\n}\n</script>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-SDA-04",
        "DEV-SDA-09"
      ]
    },
    {
      "key": "article-jsonld",
      "title": "Article markup with images, dates and authors",
      "text": "Render one block per article on the server from the article's own fields: the headline, the visible lead image in 1x1, 4x3 and 16x9 versions, both dates with a UTC offset, and each author as a Person with a `url` to a real author page. Google does not require it for Top Stories but highly recommends it for all articles.",
      "code": [
        {
          "lang": "html",
          "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"NewsArticle\",\n  \"headline\": \"How to care for an oak dining table\",\n  \"image\": [\n    \"https://www.example.com/img/oak-care-1x1.webp\",\n    \"https://www.example.com/img/oak-care-4x3.webp\",\n    \"https://www.example.com/img/oak-care-16x9.webp\"\n  ],\n  \"datePublished\": \"2026-10-02T08:00:00+02:00\",\n  \"dateModified\": \"2026-10-02T09:20:00+02:00\",\n  \"author\": [\n    {\n      \"@type\": \"Person\",\n      \"name\": \"Jane Doe\",\n      \"url\": \"https://www.example.com/authors/jane-doe/\"\n    },\n    {\n      \"@type\": \"Person\",\n      \"name\": \"John Roe\",\n      \"url\": \"https://www.example.com/authors/john-roe/\"\n    }\n  ]\n}\n</script>",
          "note": ""
        },
        {
          "lang": "html",
          "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"NewsArticle\",\n  \"headline\": \"How to care for an oak dining table\",\n  \"datePublished\": \"2026-10-02T08:00:00+02:00\",\n  \"isAccessibleForFree\": false,\n  \"hasPart\": {\n    \"@type\": \"WebPageElement\",\n    \"isAccessibleForFree\": false,\n    \"cssSelector\": \".paywall\"\n  }\n}\n</script>",
          "note": "For a paywalled article, add `isAccessibleForFree` and a `hasPart` element whose `cssSelector` names the section behind the paywall (the class must match the page's HTML)."
        }
      ],
      "used_by": [
        "DEV-SDA-13"
      ]
    },
    {
      "key": "website-site-name",
      "title": "WebSite markup for the preferred site name",
      "text": "Put one `WebSite` block on the home page of each domain or subdomain (not a subdirectory) that should have its own site name in Google's results. `url` is the canonical home page; `alternateName` is an optional fallback such as an acronym.",
      "code": [
        {
          "lang": "html",
          "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"WebSite\",\n  \"name\": \"Example Shop\",\n  \"alternateName\": \"ExShop\",\n  \"url\": \"https://www.example.com/\"\n}\n</script>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-SDA-15"
      ]
    },
    {
      "key": "robots-txt-storebot",
      "title": "robots.txt that keeps cart and checkout open for Storebot-Google",
      "text": "A crawler follows only the most specific group that names it, so Storebot-Google, Google Shopping's crawler, uses its own group and ignores `*`. Repeat the general rules there but leave cart and checkout open, so it can verify prices, shipping and availability; every other crawler still stays out of them.",
      "code": [
        {
          "lang": "text",
          "code": "# https://www.example.com/robots.txt\nUser-agent: *\nDisallow: /search?\nDisallow: /cart/\nDisallow: /checkout/\nDisallow: /api/\nAllow: /api/products/\n\n# Google Shopping's crawler: same rules, but cart and checkout stay crawlable\nUser-agent: Storebot-Google\nDisallow: /search?\nDisallow: /api/\nAllow: /api/products/\n\nSitemap: https://www.example.com/sitemap.xml",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-SHP-02"
      ]
    },
    {
      "key": "merchant-feed-conversational",
      "title": "Merchant Center feed item with Q&A, product details and highlights",
      "text": "An XML (RSS 2.0) feed item that adds the attributes Google stresses for AI shopping experiences to the core data: `product_highlight` lines, `product_detail` specifications as section, name and value, and `question_and_answer` pairs (no prices, shipping, dates or company name in them). Keep price, availability, brand and GTIN identical to the product page's markup.",
      "code": [
        {
          "lang": "xml",
          "code": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:g=\"http://base.google.com/ns/1.0\">\n  <channel>\n    <title>Example Shop</title>\n    <link>https://www.example.com/</link>\n    <description>Example Shop product feed</description>\n    <item>\n      <g:id>KT-17-STEEL</g:id>\n      <g:title>Steel kettle 1.7 l with temperature control</g:title>\n      <g:description>Stainless steel kettle with five temperature settings and a keep-warm mode.</g:description>\n      <g:link>https://www.example.com/kettles/steel-kettle-17</g:link>\n      <g:image_link>https://www.example.com/img/steel-kettle-17-1200.jpg</g:image_link>\n      <g:price>59.00 EUR</g:price>\n      <g:availability>in_stock</g:availability>\n      <g:condition>new</g:condition>\n      <g:brand>Example Home</g:brand>\n      <g:gtin>4006381333931</g:gtin>\n      <g:product_highlight>Five temperature settings from 70 to 100 degrees Celsius</g:product_highlight>\n      <g:product_highlight>Keeps water warm for up to 30 minutes</g:product_highlight>\n      <g:product_detail>\n        <g:section_name>General</g:section_name>\n        <g:attribute_name>Capacity</g:attribute_name>\n        <g:attribute_value>1.7 l</g:attribute_value>\n      </g:product_detail>\n      <g:product_detail>\n        <g:section_name>Power</g:section_name>\n        <g:attribute_name>Wattage</g:attribute_name>\n        <g:attribute_value>2200 W</g:attribute_value>\n      </g:product_detail>\n      <g:question_and_answer>\n        <g:question>Does the kettle switch off when it boils dry?</g:question>\n        <g:answer>Yes. Boil-dry protection switches it off when there is no water in it.</g:answer>\n      </g:question_and_answer>\n      <g:question_and_answer>\n        <g:question>Can I set it to 80 degrees for green tea?</g:question>\n        <g:answer>Yes. The 80 degree setting is one of the five presets.</g:answer>\n      </g:question_and_answer>\n    </item>\n  </channel>\n</rss>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-SHP-03"
      ]
    },
    {
      "key": "responsive-image",
      "title": "Indexable, responsive image with a modern-format fallback",
      "text": "Google extracts images from `<img src>`; a `<picture>` element counts only through the `<img>` inside it, and CSS background images are not extracted. Serve AVIF or WebP through `<source>` elements, keep a widely supported file in the `img src`, describe the image in `alt` and put a caption or explanatory text next to it.",
      "code": [
        {
          "lang": "html",
          "code": "<figure>\n  <picture>\n    <source type=\"image/avif\"\n            srcset=\"/img/oak-chair-800.avif 800w, /img/oak-chair-1600.avif 1600w\"\n            sizes=\"(max-width: 800px) 100vw, 800px\">\n    <source type=\"image/webp\"\n            srcset=\"/img/oak-chair-800.webp 800w, /img/oak-chair-1600.webp 1600w\"\n            sizes=\"(max-width: 800px) 100vw, 800px\">\n    <img src=\"/img/oak-chair-800.jpg\"\n         srcset=\"/img/oak-chair-800.jpg 800w, /img/oak-chair-1600.jpg 1600w\"\n         sizes=\"(max-width: 800px) 100vw, 800px\"\n         alt=\"Oak dining chair with a woven paper-cord seat, seen from the front\"\n         width=\"800\" height=\"600\" loading=\"lazy\">\n  </picture>\n  <figcaption>The oak dining chair in a natural oak finish, seat height 45 cm.</figcaption>\n</figure>\n\n<!-- Not indexable as an image: keep CSS backgrounds for decoration only -->\n<div class=\"hero\" style=\"background-image: url('/img/oak-chair-hero.jpg')\"></div>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-IMG-01",
        "DEV-IMG-03",
        "DEV-IMG-05"
      ]
    },
    {
      "key": "image-sitemap",
      "title": "Image sitemap",
      "text": "Image sitemaps list, under each page's `<loc>`, the images that page uses, which helps Google find images that are loaded by JavaScript or are otherwise hard to discover. Only `image:image` and `image:loc` are used (caption, title, geo location and license tags are deprecated); up to 1,000 images per page.",
      "code": [
        {
          "lang": "xml",
          "code": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n        xmlns:image=\"http://www.google.com/schemas/sitemap-image/1.1\">\n  <url>\n    <loc>https://www.example.com/chairs/oak-dining-chair</loc>\n    <image:image>\n      <image:loc>https://www.example.com/img/oak-chair-1200.webp</image:loc>\n    </image:image>\n    <image:image>\n      <image:loc>https://www.example.com/img/oak-chair-side-1200.webp</image:loc>\n    </image:image>\n  </url>\n</urlset>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-IMG-04"
      ]
    },
    {
      "key": "discover-image-meta",
      "title": "Large-image preview and lead image for Discover",
      "text": "Allow large image previews and name a large, relevant lead image (at least 1,200 px wide, 16x9, not the logo and not text-heavy) in the head of every article template; the same image belongs in the Article markup's `image` list.",
      "code": [
        {
          "lang": "html",
          "code": "<head>\n  <meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large\">\n  <meta property=\"og:image\" content=\"https://www.example.com/img/oak-care-16x9.webp\">\n  <meta property=\"og:image:width\" content=\"1600\">\n  <meta property=\"og:image:height\" content=\"900\">\n  <meta property=\"og:image:alt\" content=\"Hand applying oil to an oak table top\">\n</head>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-IMG-07"
      ]
    },
    {
      "key": "video-object-jsonld",
      "title": "Video watch page: video element plus VideoObject with key moments",
      "text": "Put the video in a `<video>` (or `<iframe>`/`<embed>`/`<object>`) element that loads without a click, on a page where it is the main content, and describe it with VideoObject markup. `Clip` parts enable key moments; their `url` points to the same watch page at that second.",
      "code": [
        {
          "lang": "html",
          "code": "<video controls preload=\"metadata\" width=\"1280\" height=\"720\"\n       poster=\"https://www.example.com/video/chair-assembly-1280.jpg\">\n  <source src=\"https://www.example.com/video/chair-assembly.mp4\" type=\"video/mp4\">\n</video>\n\n<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"VideoObject\",\n  \"name\": \"How to assemble the oak dining chair\",\n  \"description\": \"Step-by-step assembly of the oak dining chair in four minutes, with the tools you need.\",\n  \"thumbnailUrl\": [\"https://www.example.com/video/chair-assembly-1280.jpg\"],\n  \"uploadDate\": \"2026-09-15T09:00:00+02:00\",\n  \"duration\": \"PT4M12S\",\n  \"contentUrl\": \"https://www.example.com/video/chair-assembly.mp4\",\n  \"embedUrl\": \"https://www.example.com/embed/chair-assembly\",\n  \"hasPart\": [\n    {\n      \"@type\": \"Clip\",\n      \"name\": \"Unpacking the parts\",\n      \"startOffset\": 0,\n      \"endOffset\": 35,\n      \"url\": \"https://www.example.com/videos/chair-assembly?t=0\"\n    },\n    {\n      \"@type\": \"Clip\",\n      \"name\": \"Attaching the legs\",\n      \"startOffset\": 35,\n      \"endOffset\": 140,\n      \"url\": \"https://www.example.com/videos/chair-assembly?t=35\"\n    },\n    {\n      \"@type\": \"Clip\",\n      \"name\": \"Fitting the seat\",\n      \"startOffset\": 140,\n      \"endOffset\": 252,\n      \"url\": \"https://www.example.com/videos/chair-assembly?t=140\"\n    }\n  ]\n}\n</script>",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-VID-01",
        "DEV-VID-03"
      ]
    },
    {
      "key": "back-button-test",
      "title": "Automated check that Back leaves the page",
      "text": "A Playwright test opens each template from another page, interacts with it the way users do (many history hijacks wait for a key press, a scroll or a timer), presses Back once and expects to be on the previous page again. Run it in CI for every template and after adding any ad, engagement or recommendation script.",
      "code": [
        {
          "lang": "js",
          "code": "// back-button.spec.js: npm i -D @playwright/test, then npx playwright test\nconst { test, expect } = require('@playwright/test');\n\nconst START = 'https://www.example.com/'; // stands in for the page the user came from, such as a search results page\nconst PAGES = [\n  'https://www.example.com/blog/oak-table-care/',\n  'https://www.example.com/chairs/oak-dining-chair',\n];\n\nfor (const url of PAGES) {\n  test(`one Back press leaves ${url}`, async ({ page }) => {\n    await page.goto(START);\n    await page.goto(url);\n    await page.keyboard.press('End'); // a real user input that also scrolls to the bottom\n    await page.waitForTimeout(5000);  // give delayed scripts time to run\n    await page.goBack();\n    await expect(page).toHaveURL(START);\n  });\n}",
          "note": ""
        },
        {
          "lang": "bash",
          "code": "grep -rnE \"history\\.(pushState|replaceState)|addEventListener\\(.popstate\" dist/",
          "note": "Then search the built bundles for history calls outside the router and review each one."
        }
      ],
      "used_by": [
        "DEV-SPM-01"
      ]
    },
    {
      "key": "bulk-export-top-queries",
      "title": "BigQuery: top queries per page from the Search Console bulk export",
      "text": "Run against the `searchdata_url_impression` table of the bulk data export (default dataset `searchconsole`; replace the project name). Anonymized queries have an empty query and `is_anonymized_query` set, so they are left out of the ranking here but should stay in totals.",
      "code": [
        {
          "lang": "sql",
          "code": "-- Top non-anonymized queries per page, web search, last 28 days\nSELECT\n  url,\n  query,\n  SUM(clicks) AS clicks,\n  SUM(impressions) AS impressions,\n  SAFE_DIVIDE(SUM(clicks), SUM(impressions)) AS ctr,\n  SAFE_DIVIDE(SUM(sum_position), SUM(impressions)) + 1 AS avg_position\nFROM `my-project.searchconsole.searchdata_url_impression`\nWHERE search_type = 'WEB'\n  AND data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 28 DAY)\n  AND NOT is_anonymized_query\nGROUP BY url, query\nORDER BY clicks DESC\nLIMIT 1000;",
          "note": ""
        }
      ],
      "used_by": [
        "DEV-MON-08"
      ]
    }
  ]
}
