SEO Audit · Live Public Site
artbook.com
A technical SEO read of the current public site — the legacy Yahoo/Turbify store, not the in-progress Shopify build. Findings are template-level, so they hold across the catalog.
The read
Good content-level SEO on a platform that is holding it back.
Unique titles, real per-book descriptions, clean permanent URLs and full indexation are all in place. What's missing is structural: the site isn't mobile-configured, carries no structured data, has no canonical tags, and barely links between its own pages. The Shopify rebuild resolves most of it — the real risk is losing what already ranks at cutover.
What's costing rankings
Ordered by impactNot mobile-configured — no viewport, no responsive CSS
CriticalNo <meta name="viewport"> on any template, and the stylesheet has zero @media queries — there is no responsive layout at all. The site instead does legacy dynamic serving (Vary: User-Agent): a phone gets a separate, thinner mobile page — but that template also lacks a viewport tag, so mobile browsers render it zoomed-out. Google has indexed mobile-first since 2019; this suppresses the majority of searches, which happen on phones.
Evidence — no viewport on 4 sampled templates; 0 media queries in the 23 KB stylesheet; Vary: User-Agent header · Semrush's crawl did not flag this — it's a Semrush miss
Shopify build · automaticThe responsive Broadcast theme renders fluidly on every device, with a proper viewport and real media queries out of the box. Resolved at the platform level.
No structured data
HighZero JSON-LD. Product pages carry only partial schema.org microdata (name, author, date) — no price, availability, rating, or breadcrumb markup. That forfeits rich results — price, in-stock, breadcrumbs in the SERP — across a 15,500-title catalog where they'd earn real click-through. This is the shift the client's own team flagged: Google now leans on structured data, and off-brand retailers that have it are outranking artbook.com on its own titles.
Evidence — 0 ld+json blocks; microdata present but incomplete
Shopify build · we build itWe add Book + Product + Offer + BreadcrumbList JSON-LD to the theme templates and Organization schema site-wide, validated in Google's Rich Results Test. Net-new — built deliberately, not automatic, and the single biggest lever on the retailers-outranking-us problem.
Missing canonical tags site-wide
HighNo rel="canonical" on any page. A book reachable through several category paths competes against itself; Google then picks the canonical for you — diluting link equity and risking the wrong URL ranking.
Evidence — no canonical on home, product, or category
Shopify build · automaticShopify outputs a correct canonical tag on every product, collection and page automatically, collapsing duplicate category paths to one authoritative URL.
Broken character encoding in SERP text
HighPages are served as legacy ISO-8859-1, and it's failing: the homepage meta description renders "Walther K�nig". An art-book catalog is full of European names — König, Düsseldorf, é — that mis-render inside the titles and snippets Google shows, cutting trust and click-through.
Evidence — charset=iso-8859-1; mojibake visible in live meta description
Shopify build · automaticShopify serves UTF-8 everywhere, so König, Düsseldorf and é render correctly in titles and snippets across the catalog.
Pages barely link to each other
HighIn the Semrush sample, 85 of 100 pages had only one internal link pointing to them. Product pages are near-islands — that starves them of the internal link equity that tells Google which titles matter, and makes deep pages slow to crawl and re-crawl. It's the one high-impact issue the crawl caught that a template read alone would miss.
Evidence — Semrush: "Pages with only one internal link" on 85 of 100 sampled pages
Shopify build · we build itThe new collection architecture plus related-title cross-links give every product several internal links — a content-structure job we build into the catalog, not a switch the platform flips on its own.
Analytics has been offline since 2023
MediumThe tag is Universal Analytics (UA-73369234-1), which stopped collecting data in July 2023. Two years with no organic measurement — and no baseline to protect when the site moves to Shopify. Not a ranking factor, but it means every claim here is un-instrumented.
Evidence — UA property, no GA4 tag present
Shopify build · we set it upGA4 and Search Console go in at launch, so organic performance is measured from day one and we have a baseline to protect.
Meta descriptions run long
LowThe homepage description is ~600 characters against the ~155 Google shows — the tail is wasted. A legacy keywords meta tag is also present; harmless, but ignored by every search engine since ~2009.
Evidence — homepage description length; keywords meta present
Shopify build · we set it upTheme templates generate right-length titles and meta descriptions from patterns we set, and the obsolete keywords tag is dropped.
Incomplete Open Graph
LowOnly og:image is set — no og:title, og:type, og:url, or og:description. Links shared to social, Slack, or iMessage render a bare preview instead of a titled card.
Evidence — single OG tag on product template
Shopify build · automaticThe theme emits full Open Graph — title, type, url, description and image — so links shared to social, Slack or iMessage render as proper titled cards.
Robots.txt & sitemap hygiene
LowThe XML sitemap is valid and carries lastmod — good. But robots.txt lists it as a relative path (Sitemap: /sitemap.xml) where the protocol requires an absolute URL, so stricter crawlers may skip it — and Semrush independently flags 4 incorrect URLs inside the sitemap (non-canonical or redirecting entries that shouldn't be listed).
Evidence — robots.txt relative Sitemap directive (Semrush: "invalid robots.txt format") · Semrush: 4 "incorrect pages found in sitemap.xml" — corroborated
Shopify build · automaticShopify auto-generates a clean sitemap.xml, referenced by an absolute URL in robots.txt and listing only canonical pages.
Also flagged — Semrush 100-page sample crawl
Lower-priority items the crawl surfaced across the sample, worth clearing in the rebuild but not ranking-critical: multiple H1 tags on ~20 pages (the homepage carries two — a clean single H1 only holds on product and category pages); unminified JS/CSS (96 pages) and low text-to-HTML ratio / thin content (32–49 pages), both performance/content signals; no HSTS (2); 3 over-length titles; and a missing llms.txt (a new AI-crawler convention, optional). The crawl also independently confirmed the robots.txt issue above.
Already working — don't lose it
What's solid today
All http / non-www variants 301 to https://www.artbook.com in a single hop — clean host canonicalization.
Unique, descriptive <title> per book — e.g. "Imi Knoebel: Works 1966–2006 — ARTBOOK | D.A.P."
Unique per-product meta descriptions written from real editorial copy, not boilerplate.
One clear H1 on product and category pages (the homepage is the exception — see findings).
Every product image has alt text.
Indexable (INDEX, FOLLOW) and indexed — blog, collections and products all appear in Google.
XML sitemap with lastmod; Search Console and Ahrefs verification already live.
Stable ISBN-based product URLs — permanent, clean identifiers to redirect from.
Where the rebuild changes the math
The platform clears most of this — two things still need doing by hand.
A responsive Broadcast theme, canonical tags, UTF-8 encoding, GA4 and Open Graph resolve findings 1, 3, 4, 6 and 8 as part of the build. These two are the ones that lose traffic if they're missed at cutover:
Build a complete 301 redirect map
Every URL changes. /9783866780897.html → /products/{handle}, and /catalog--….html → /collections/{handle}. Without a 301 for all ~66,600 URLs, years of accrued rankings and backlinks land on 404s the day the domain flips. The ISBN in each old URL is the join key to the new catalog.
Rebuild structured data properly
Add Book / Product + Offer + BreadcrumbList JSON-LD in the new theme. The current site never had it, so this isn't parity — it's new rich-result eligibility (price, availability, breadcrumbs) across the whole catalog from launch.
And a third that the platform won't solve on its own: internal linking (finding 5). Shopify gives the theme, but the near-island product pages get fixed by the new collection architecture and deliberate cross-links between related titles — a content-structure job, not a switch to flip.