Skip to content
This repository was archived by the owner on Sep 28, 2026. It is now read-only.
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
8 changes: 4 additions & 4 deletions public/agents.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Seven specialists, one human signature. Each does a single job on your actual pages and numbers; nothing reaches you until a person has read and signed it.">
<title>TinyStudio — The Desk</title>
<link rel="canonical" href="https://tinystudio.io/agents.html">
<link rel="canonical" href="https://tinystudio.io/agents">
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<meta property="og:title" content="TinyStudio — The Desk">
<meta property="og:description" content="Seven specialists, one human signature. Each does a single job on your actual pages and numbers; nothing reaches you until a person has read and signed it.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://tinystudio.io/agents.html">
<meta property="og:url" content="https://tinystudio.io/agents">
<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 Expand Up @@ -41,8 +41,8 @@
},
{
"@type": "WebPage",
"@id": "https://tinystudio.io/agents.html#webpage",
"url": "https://tinystudio.io/agents.html",
"@id": "https://tinystudio.io/agents#webpage",
"url": "https://tinystudio.io/agents",
"name": "TinyStudio — The Desk",
"description": "Seven specialists, one human signature. Each does a single job on your actual pages and numbers; nothing reaches you until a person has read and signed it.",
"inLanguage": "en",
Expand Down
8 changes: 4 additions & 4 deletions public/pricing.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="One price, plainly stated: the appraisal is free, the desk is $2,500 a month on a three-month minimum, and the delivery guarantee is written out in full.">
<title>Pricing &amp; terms — The Tiny Studio</title>
<link rel="canonical" href="https://tinystudio.io/pricing.html">
<link rel="canonical" href="https://tinystudio.io/pricing">
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<meta property="og:title" content="TinyStudio — Pricing &amp; terms">
<meta property="og:description" content="One price, plainly stated: the appraisal is free, the desk is $2,500 a month on a three-month minimum, and the delivery guarantee is written out in full.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://tinystudio.io/pricing.html">
<meta property="og:url" content="https://tinystudio.io/pricing">
<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 Expand Up @@ -41,8 +41,8 @@
},
{
"@type": "WebPage",
"@id": "https://tinystudio.io/pricing.html#webpage",
"url": "https://tinystudio.io/pricing.html",
"@id": "https://tinystudio.io/pricing#webpage",
"url": "https://tinystudio.io/pricing",
"name": "TinyStudio — Pricing & terms",
"description": "One price, plainly stated: the appraisal is free, the desk is $2,500 a month on a three-month minimum, and the delivery guarantee is written out in full.",
"inLanguage": "en",
Expand Down
8 changes: 4 additions & 4 deletions public/specimen.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="The appraisal, with the client's name removed: a real audit of a clinic homepage, four findings with evidence and fixes, read and signed by Nish.">
<title>TinyStudio — The Website Appraisal — specimen</title>
<link rel="canonical" href="https://tinystudio.io/specimen.html">
<link rel="canonical" href="https://tinystudio.io/specimen">
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<meta property="og:title" content="TinyStudio — The Website Appraisal, specimen">
<meta property="og:description" content="The appraisal, with the client's name removed: a real audit of a clinic homepage, four findings with evidence and fixes, read and signed by Nish.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://tinystudio.io/specimen.html">
<meta property="og:url" content="https://tinystudio.io/specimen">
<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 Expand Up @@ -41,8 +41,8 @@
},
{
"@type": "WebPage",
"@id": "https://tinystudio.io/specimen.html#webpage",
"url": "https://tinystudio.io/specimen.html",
"@id": "https://tinystudio.io/specimen#webpage",
"url": "https://tinystudio.io/specimen",
"name": "TinyStudio — The Website Appraisal, specimen",
"description": "The appraisal, with the client's name removed: a real audit of a clinic homepage, four findings with evidence and fixes, read and signed by Nish.",
"inLanguage": "en",
Expand Down
23 changes: 12 additions & 11 deletions scripts/check-site.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1183,9 +1183,9 @@ if (!worker.includes('"/apple-touch-icon.png"')) {
const socialSharePages = [
["homepage", siteHome, "https://tinystudio.io/"],
["audit page", siteAudit, "https://tinystudio.io/audit.html"],
["desk page", read("public/agents.html"), "https://tinystudio.io/agents.html"],
["pricing page", read("public/pricing.html"), "https://tinystudio.io/pricing.html"],
["specimen page", read("public/specimen.html"), "https://tinystudio.io/specimen.html"]
["desk page", read("public/agents.html"), "https://tinystudio.io/agents"],
["pricing page", read("public/pricing.html"), "https://tinystudio.io/pricing"],
["specimen page", read("public/specimen.html"), "https://tinystudio.io/specimen"]
];
const SOCIAL_IMAGE_URL = "https://tinystudio.io/og-image.png";

Expand Down Expand Up @@ -1257,9 +1257,9 @@ for (const [pageName, pageHtml, pageUrl] of socialSharePages) {
const structuredDataPages = [
["homepage", siteHome, "https://tinystudio.io/"],
["audit page", siteAudit, "https://tinystudio.io/audit.html"],
["desk page", read("public/agents.html"), "https://tinystudio.io/agents.html"],
["pricing page", read("public/pricing.html"), "https://tinystudio.io/pricing.html"],
["specimen page", read("public/specimen.html"), "https://tinystudio.io/specimen.html"]
["desk page", read("public/agents.html"), "https://tinystudio.io/agents"],
["pricing page", read("public/pricing.html"), "https://tinystudio.io/pricing"],
["specimen page", read("public/specimen.html"), "https://tinystudio.io/specimen"]
];

const ORGANIZATION_ID = "https://tinystudio.io/#organization";
Expand Down Expand Up @@ -1447,14 +1447,15 @@ for (const [pageName, pageHtml] of internalLinkPages) {
// keeps exactly one <link rel="canonical"> — parsed across the whole document,
// ignoring commented-out markup and accepting single or double quotes — that
// link sits inside the head and points at the absolute https://tinystudio.io
// address the page is served under (the .html form; the worker also serves
// extensionless twins).
// address of the page. The deployed worker 307-redirects every .html form to
// its clean extensionless twin, so a canonical must name the address that
// serves 200, never the redirecting form.
const canonicalPages = [
["homepage", siteHome, "https://tinystudio.io/"],
["audit page", siteAudit, "https://tinystudio.io/audit.html"],
["desk page", read("public/agents.html"), "https://tinystudio.io/agents.html"],
["pricing page", read("public/pricing.html"), "https://tinystudio.io/pricing.html"],
["specimen page", read("public/specimen.html"), "https://tinystudio.io/specimen.html"]
["desk page", read("public/agents.html"), "https://tinystudio.io/agents"],
["pricing page", read("public/pricing.html"), "https://tinystudio.io/pricing"],
["specimen page", read("public/specimen.html"), "https://tinystudio.io/specimen"]
];

const canonicalLinkPattern = /<link\b[^>]*\brel\s*=\s*["']canonical["'][^>]*>/gi;
Expand Down
Loading