What the page is
- A ChatGPT conversation page (SSR React app) with the full app shell, sidebar, composer, and account/session bootstraps embedded in the HTML.
SEO & localization
- Standard meta (title/description/OG/Twitter) + huge
hreflang
set for many locales. - Canonical set to the conversation URL; robots set to
index, follow
.
Assets & performance
- Heavy modulepreload and CSS preloads from
cdn.oaistatic.com
. - Theme bootstrapping (dark/light based on system) and a small inline polyfill for
animation-timeline
.
App structure (high level)
- Sidebar: “New chat”, search, Library, history list, model switcher, Share button, conversation options.
- Composer: text area, plus-menu, dictate/voice buttons, attachment entry points.
- Header bar: model selector (shows “ChatGPT”), Share, overflow menu.
- Accessibility bits (
skip to content
, live regions) and a Cloudflare challenge shim at the end.
Internationalization bits
- Dozens of
link rel="alternate" hrefLang="…"
rows → the same conversation localized per language/region.
Feature flags & model catalog (from embedded bootstrap JSON)
- The config blob enumerates model categories the UI can surface, including:
- GPT-5 variants: Auto, Instant, Thinking, Mini, Pro
- GPT-4o (legacy bucket)
- Deep Research and Agent modes
- Toggles for tools/features such as browsing/search tool, code interpreter/canvas, image gen, voice, shareable links, etc.
(They’re feature flags—what you personally see live can depend on your account and tenant.)
Account/bootstrap payload
- Embedded SSR data includes session + plan feature gates to hydrate the client without extra round-trips.
- (The blob also contains personal/account fields; since this is sensitive, I’m not echoing them back here.)
What I can do with it
- Pull out all
hreflang
alternates or all modulepreload entries into a clean list/CSV. - Map the model picker options into a tidy comparison table (label, slug, token limits, tools).
- Audit SEO/meta or performance hints (Preload/Preconnect correctness).
- Extract the UI navigation schema (sidebar items, header actions) for documentation.
Tell me which slice you want extracted (e.g., hreflang matrix, model catalog, or preload inventory), and I’ll format it exactly how you need—CSV, JSON, or a compact table.