Public page SEO and production analytics (#125)
## Summary - Closes the public-page gaps from #124: each route gets its own title, description, canonical, heading, links, and JSON-LD, and unknown URLs have a real 404 document. - Adds HeyCatch and the Google tag (`G-V12DLRLPWR`) only on the production site and the iOS and Android apps. Tianji still loads on beta. - Needs the server-infra change that stops serving the app shell for missing paths. ## Test plan - [ ] Build production and confirm `/` and `/pricing/` HTML include a unique title, description, canonical, one h1, social tags, related links, and Organization JSON-LD. - [ ] Confirm a nonsense path is served as `404.html` once the nginx change is deployed. - [ ] Confirm beta and local web do not load HeyCatch or gtag, and that a production or native build does. - [ ] Open the live site after deploy and click around, then mark HeyCatch installed in its dashboard. Reviewed-on: #125
This commit was merged in pull request #125.
This commit is contained in:
1 parent
8b58192026
commit
7a8f413483
45 files changed
+1880
-174
No files matched your search
@@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>The page is not found — Hesychia</title>
|
||||
<meta name="description" content="The page is not found. This address is not a Hesychia page. Open the home page to read what the product does, what it costs, and how to start an account." />
|
||||
<meta property="og:title" content="The page is not found — Hesychia" />
|
||||
<meta property="og:description" content="The page is not found. This address is not a Hesychia page. Open the home page to read what the product does, what it costs, and how to start an account." />
|
||||
<meta property="og:url" content="https://hesychia.ai/404.html" />
|
||||
<meta property="og:image" content="https://hesychia.ai/og-image.png" />
|
||||
<meta property="og:image:width" content="1200" />
|
||||
<meta property="og:image:height" content="630" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="The page is not found — Hesychia" />
|
||||
<meta name="twitter:description" content="The page is not found. This address is not a Hesychia page. Open the home page to read what the product does, what it costs, and how to start an account." />
|
||||
<meta name="twitter:image" content="https://hesychia.ai/og-image.png" />
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@graph": [
|
||||
{
|
||||
"@type": "WebPage",
|
||||
"headline": "The page is not found — Hesychia",
|
||||
"url": "https://hesychia.ai/404.html",
|
||||
"mainEntityOfPage": "https://hesychia.ai/404.html"
|
||||
},
|
||||
{
|
||||
"@type": "Organization",
|
||||
"name": "Hesychia",
|
||||
"url": "https://hesychia.ai",
|
||||
"logo": "https://hesychia.ai/apple-touch-icon.png",
|
||||
"parentOrganization": {
|
||||
"@type": "Organization",
|
||||
"name": "AI ML Operations, LLC",
|
||||
"url": "https://www.aimloperations.com"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Not Found</h1>
|
||||
<p>The page is not found, and this address is not a Hesychia page.</p>
|
||||
<p>Open the home page to read what the product does, what it costs, and how to start an account.</p>
|
||||
<nav aria-label="Related pages"><a href="/">What Hesychia is</a><a href="/pricing/">Hesychia pricing — $10/month, no ads</a><a href="/privacy/">What Hesychia stores and does not sell</a><a href="/changelog/">Dated Hesychia product updates</a></nav>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user