From 304a7d6edf8da7692d1e08e4d0f38eaad36da172 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 28 Jul 2026 22:34:05 +0000 Subject: [PATCH 1/2] Make the portfolio photos findable in Google Images Two gaps kept the photos out of search results. Most of the portfolio was invisible to crawlers. Gallery photos only enter the DOM when the lightbox builds it from the JSON in + + + diff --git a/src/pages/sitemap.xml.ts b/src/pages/sitemap.xml.ts index 2757e7e..b26774e 100644 --- a/src/pages/sitemap.xml.ts +++ b/src/pages/sitemap.xml.ts @@ -35,6 +35,7 @@ function collectImages(node: unknown, out: string[] = []): string[] { const PAGES = [ { path: '', singleton: 'home', changefreq: 'monthly', priority: '1.0' }, { path: 'work', singleton: 'work', changefreq: 'monthly', priority: '0.8', extra: 'galleries' }, + { path: 'archives', singleton: 'archives', changefreq: 'monthly', priority: '0.9' }, { path: 'ideas', singleton: 'ideas', changefreq: 'monthly', priority: '0.8' }, { path: 'speak', singleton: 'speak', changefreq: 'monthly', priority: '0.8' }, { path: 'about', singleton: 'about', changefreq: 'monthly', priority: '0.7' }, diff --git a/src/pages/work.astro b/src/pages/work.astro index 0e98448..c56ce3d 100644 --- a/src/pages/work.astro +++ b/src/pages/work.astro @@ -95,21 +95,15 @@ const jsonLd = {
- +
-

{work.archive.eyebrow}

-

{work.archive.heading}

-

{work.archive.intro}

+

The Archives

+

A decade of execution.

+

Celebrity, editorial, commercial, red carpet. The point of view above is earned, and the archive is the work it is built on.

+

Open the archives

-
- {work.archive.items.map((it) => ( -
{it.capTitle}{it.capSub}
- ))} -
-

{work.archive.footnote}

-
diff --git a/tools/optimize_images.py b/tools/optimize_images.py index d85f7ae..a9406d7 100644 --- a/tools/optimize_images.py +++ b/tools/optimize_images.py @@ -38,11 +38,16 @@ def referenced_photos(): - """Every assets/img/*.jpg path the CMS content points at.""" + """Every assets/img/**.jpg path the CMS content points at. + + Paths may sit in a subfolder (assets/img/gallery/...), which is why the + pattern allows a slash: the Archives page renders the gallery photos + directly, so they need variants like every other shipped photo. + """ srcs = set() for f in glob.glob(os.path.join(CONTENT, "*.yaml")): text = open(f, encoding="utf-8").read() - for m in re.findall(r"assets/img/([a-z0-9-]+\.jpg)", text): + for m in re.findall(r"assets/img/([a-z0-9/-]+\.jpg)", text): srcs.add(m) return sorted(srcs) @@ -59,7 +64,7 @@ def encode(name, report=False): orig = os.path.join(ORIG, name) if not os.path.exists(orig): - os.makedirs(ORIG, exist_ok=True) + os.makedirs(os.path.dirname(orig), exist_ok=True) shutil.copy2(live, orig) src = Image.open(orig).convert("RGB")