Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions public/agent-desk.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
content="The self-serve Agent Desk is retired and is not the current offer. TinyStudio's current offer is the free leak audit of high-ticket service homepages."
/>
<meta property="og:type" content="website" />
<meta property="og:url" content="https://tinystudio.io/" />
<link rel="canonical" href="https://tinystudio.io/" />
<meta property="og:url" content="https://tinystudio.io/agent-desk.html" />
<link rel="canonical" href="https://tinystudio.io/agent-desk.html" />
Comment on lines +18 to +19

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Canonicalize to the non-redirecting Agent Desk URL

In production, the static-assets layer 307-redirects .html page URLs to their extensionless twins, as documented by the existing canonical contract in scripts/check-site.mjs:1569-1572. Consequently, both new tags identify a redirect rather than the 200-serving /agent-desk URL, and the new checker also locks in that conflicting signal. Use https://tinystudio.io/agent-desk for the canonical and og:url instead.

Useful? React with 👍 / 👎.

<meta property="og:image" content="https://tinystudio.io/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
Expand Down
16 changes: 16 additions & 0 deletions scripts/check-site.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1131,6 +1131,22 @@ const retiredDeskDescription =
if (!/\bretired\b/i.test(retiredDeskDescription)) {
failures.push("Retired Agent Desk description must frame the surface as retired.");
}
// The legacy page must not claim the apex root as its canonical or og:url: the
// homepage is a live page that owns the root, and a noindex page canonicalizing
// to a live page tells Google the legacy page is a duplicate of the homepage —
// handing the retired title/snippet back to tinystudio.io (the very
// consolidation the de-indexing pass exists to stop). The canonical and og:url
// must instead name the page's own served address, https://tinystudio.io/agent-desk.html.
const retiredDeskCanonical =
retiredDesk.match(/<link\b[^>]*\brel\s*=\s*["']canonical["'][^>]*>/i)?.[0] ?? "";
if (!/href\s*=\s*["']https:\/\/tinystudio\.io\/agent-desk\.html["']/i.test(retiredDeskCanonical)) {
failures.push("Retired Agent Desk canonical must name its own served address https://tinystudio.io/agent-desk.html, never the apex root (a noindex page canonicalizing to a live page re-consolidates the retired title onto the homepage).");
}
const retiredDeskOgUrl =
retiredDesk.match(/<meta\b[^>]*\bproperty="og:url"[^>]*>/i)?.[0] ?? "";
if (!/content\s*=\s*["']https:\/\/tinystudio\.io\/agent-desk\.html["']/i.test(retiredDeskOgUrl)) {
failures.push("Retired Agent Desk og:url must name its own served address https://tinystudio.io/agent-desk.html, never the apex root (it would claim the live homepage as this page).");
}

// ---- Meta descriptions (dogfood) -------------------------------------------
// The leak audit this site sells flags a homepage whose served HTML carries no
Expand Down
Loading