feat(art): replace all 72 posts' artwork with the v2 pipeline
Deploy / build (push) Successful in 17s

Every post now carries one unique local-ComfyUI/Ideogram 4 base frame, composited
into EN + ZH share cards, a banner and list thumbs.

- the shipped prompts_catalog held only 21 distinct metaphors for 72 posts (16
  shared one visual), so all 72 were rewritten as unique object+state metaphors
  and 10 frames re-rolled after OCR found pseudo-text rendered at legible size
- render_from_art.mjs emits JPEG by default (558 KB PNG -> 84 KB mozjpeg q85);
  the ZH 1200x630 card did not exist before this batch
- 288 frontmatter fields migrated; the 144 v1 PNGs are gone
- PostList's thumb helper keys off the base slug (a ZH card is zh-<slug>.jpg while
  the thumb is <slug>-800.webp, which 404'd the whole ZH listing)
- [...slug].astro's <picture> regex accepts .jpg
- the repo now carries the art inputs (metaphors.json, captions/<slug>.json,
  refreshed prompts_catalog.json) so a frame is reproducible from git alone
This commit is contained in:
hoelee committed 2026-10-19 04:18:59 +08:00
1 parent 72a9a2af6f
commit 327d516ed9
802 files changed
+1289 -519

No files matched your search

+2 -2
View File
@@ -109,10 +109,10 @@ const jsonLd = {
{post.data.banner && (
<figure class="article-banner">
{/* WebP for the page (42% of the PNG bytes); the PNG stays for og:image
{/* WebP for the page (42% of the PNG bytes); the JPEG/PNG stays for og:image
because social scrapers do not reliably render WebP share cards. */}
<picture>
<source srcset={post.data.banner.replace(/\.png$/, '.webp')} type="image/webp" />
<source srcset={post.data.banner.replace(/\.(png|jpe?g)$/, '.webp')} type="image/webp" />
<img src={post.data.banner} alt="" loading="lazy" decoding="async" width="1600" height="900" />
</picture>
</figure>