Files
hoelee-blog/scripts/og-gen/metaphors.json
T
hoelee 327d516ed9
Deploy / build (push) Successful in 17s
feat(art): replace all 72 posts' artwork with the v2 pipeline
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
2026-10-19 04:18:59 +08:00

75 lines
15 KiB
JSON

{
"adding-a-domain-to-someone-elses-mail-server": "A set of four brass routing vanes mounted along a dark obsidian mail chute, three of them steering translucent envelopes cleanly away, while the fourth channel is physically sealed by a solid black baffle plate",
"adding-english-mode-to-a-chinese-only-web-app": "A monolithic dark application cube whose sealed front face carries two sliding glass plaques bearing different scripts, the second plaque being lifted into position by a precision gantry clamp at the doorway",
"ai-furniture-compositing-with-flux-kontext": "A matte dark lounge chair module seated into a cut-away room diorama cube, its original studio backdrop peeling away as a curled translucent film sheet",
"authentik-css-greater-than-bug": "A single oversized angular chevron wedge jammed into a hairline seam of a frosted glass control panel, splitting the panel's edge glow into misaligned fragments",
"authentik-forward-auth-gate-wasnt-live": "Two gate arches standing in series, the inner arch sealed by a tight blue light curtain while the outer arch hangs fully open with a stream of light passing straight through it",
"authentik-major-upgrade-gotchas": "A stack of obsidian anniversary plinths where the topmost slab has just been swapped in, its mounting pegs misaligned so three small crystal key tags tumble out of their sockets",
"automating-cyberpanel-without-the-ui": "A slim robotic probe arm reaching behind the polished facade of a dark server control panel, plugging into exposed circuit contacts concealed behind the front glass",
"best-ai-video-generators-2026": "A rack of five glowing film reels of differing sizes, one heavy obsidian reel grounded on a heatsink pedestal while the others float as translucent holograms trailed by thin price-tag slivers",
"calibrating-intel-quick-sync-hevc-quality": "A 3D topographic luminous video waveform mountain dropping off a 90-degree vertical cliff edge marked at 28, flanked by two perfectly identical overlapping optical calibration prisms",
"chainlink-vrf-v2-lottery-contract": "A transparent mechanical drum sealed inside a hexagonal glass case, its tumbling sphere fed by a chain of interlocked machined links, a notarized proof disc hovering just outside the case",
"docker-reported-exit-0-the-oom-killer-disagreed": "A translucent glass server cube displaying a deceptive green heartbeat light while a razor-sharp crimson beam slices horizontally through its bottom core, scattering fractured memory crystals",
"does-hevc-actually-shrink-your-files": "Three matched glass vials of compressed film ribbon standing on a dark calibration scale, two visibly shorter than their source capsule while the third swells larger than the capsule it was poured from",
"embedding-fonts-so-a-pdf-looks-the-same-everywhere": "A sealed obsidian press frame holding one smooth unmarked crystal sheet, lit identically through three differently angled viewing ports",
"every-player-stuttered-the-file-was-fine": "A perfectly aligned dark film canister whose internal sprocket teeth sit one notch out of phase, casting a doubled ghost frame onto a translucent projection screen",
"five-step-ai-roadmap-what-i-actually-run": "A five-tier architectural staircase in dark graphite, the middle tiers brightly illuminated with active hardware racks while the speculative top tiers remain skeletal wireframes",
"fully-on-chain-svg-nfts": "A crystalline art plaque sealed completely inside a transparent contract block, its imagery carved directly into the block's inner facets rather than mounted on any external frame",
"hardening-a-tor-onion-service": "A matte black multi-shell relay tower of stacked concentric domes, each layer locked by a brass ring, with a single narrow sealed ingress slit glowing soft violet",
"hello-world": "A minimal dark workbench holding one glowing filament cursor hovering above a blank obsidian slate, first light spilling from a small pulsing indicator at its corner",
"how-i-built-the-digikedai-telegram-bot": "A folded paper-plane shaped obsidian drone docked at a glowing storefront kiosk module, tethered by a luminous thread to a private gateway pylon behind it",
"how-i-host-this-blog": "An assembly line of three interlocking obsidian machine modules — a document press, a stamping arm and a delivery chute — feeding a sealed glass site cube at the end of the rail",
"how-i-made-my-own-songs-with-suno-ai": "A shard of amber-lit vinyl suspended inside a dark circular resonator hall, seven smaller song discs orbiting it in a single ring",
"how-i-vetted-20-vps-providers-with-parallel-subagents": "Twenty identical dark server tiles fanned out along a scoring rail, a mechanical grading carriage sweeping across them and stamping pass or fail notches into each tile face",
"how-to-verify-a-hosting-provider-before-you-buy": "A polished glass loupe hovering over a rack of miniature server towers, revealing a hairline crack hidden inside one tower's casing",
"i-let-an-agent-manage-my-shopee-vouchers": "An intricate rotating glass agent decision loop where a stray orange pulse vector veers off the blueprint track and materializes a glowing geometric voucher card in mid-air",
"it-reported-success-nothing-had-changed": "A rotating brass checkmark stamp pressed onto an empty obsidian pipe segment that carries no flow, with the pipe's mouth visibly dry behind the impression",
"jpa-version-field-lost-update": "Two opposing piston arms pressing on the same crystal data block, one arm halted by a mechanical version latch snapping shut with a red-lit click",
"loop-engineering-without-a-coding-agent": "Eleven concentric circular obsidian gear loops rotating in mechanical harmony, eight solid pure crystal clockwork rings alongside three subtle neural pulse rings, operating autonomously",
"migrating-codeigniter-iis-to-openlitespeed": "A functional app engine block being lifted off a heavy bolted window-frame chassis and reseated onto a taller lightweight finned frame, two loose dark bolts falling behind it",
"my-backup-was-using-someone-elses-api-quota": "A massive high-throughput data conduit bottlenecked at a narrow glowing amber hourglass valve, releasing only single sparse droplets into a dark repository vault below",
"n8n-v1-to-v2-upgrade-gotchas": "A rail of plain obsidian cube nodes rolling forward while seven of their connector pins hang loose and sparking beneath the track",
"nocodb-sso-is-a-licensed-feature": "A recessed keyhole plate on an otherwise sealed obsidian cabinet, faint cyan glow leaking from the plate's seam while the keyhole itself is blocked by a solid brass plug",
"one-hostname-public-tracker-sso-dashboard": "A single dark gateway arch splitting into two passages, a wide open slit of light on one side and a latched vault door with a rotating seal on the other",
"one-prometheus-for-unraid-synology-and-a-vps": "A single radiant central telemetry beacon sending precision laser monitoring vectors to three distinct hexagonal platform nodes, illuminating transparent storage volumes with holographic metrics",
"passbolt-hang-three-failure-modes": "A brass padlock seal hovering over an obsidian vault door whose three latching bolts are stuck mid-turn, a stalled orange glow pulsing in the keyway",
"patching-workbench-26-for-mariadb": "A precision instrument module whose connector plate has been re-pinned by three hand-cut copper jumpers bridging over its original sealed socket",
"putting-a-front-door-on-an-app-you-cant-modify": "A new bilingual stone lintel and portal erected in front of a sealed monolithic app block, three thin luminous cables threading through a drilled seam into its interior",
"read-only-nocodb-dashboard-for-a-remote-database": "A glass observation window mounted over a distant obsidian data silo, the viewing frame open while every latch on the data hatch itself stays closed",
"reading-a-containers-own-api-docs": "A scanning beam unfolding a lathe-cut obsidian shell to expose its printed inner circuit schematics, four small inspection tools laid out on the dark bench beside it",
"replacing-rdpguard-with-ipban": "An old shield plate lifted out of a dark doorway as a tighter woven black mesh gate is lowered into the same frame, grey marker pins fenced off outside it",
"running-production-infrastructure-solo": "Three interconnected matte-black server monoliths in isometric perspective surrounded by a dense floating matrix of micro-scale glowing glass container cubes with emerald heartbeat lights, routed by blue optical fiber conduits into one master control node",
"running-tts-as-a-service-with-token-sidecars": "A central obsidian voice resonance horn flanked by two small paired fuel canisters that replenish its expiring energy keys through thin silver tubes",
"scraping-bot-walled-marketplace-warm-browser-session": "A dexterous glass gripper carrying a warm amber-lit browser window pane through a walled dark tunnel gate, holding the pane at a preserved angle",
"self-healing-digital-goods-entitlements": "A multi-stage floating acrylic workflow pathway with five interlocking diamond gates, automatically bridging broken link fragments with glowing golden solder",
"self-hosted-speech-to-text-api": "A floating obsidian microphone capsule inside a soundproof dark chamber, its waveform converted into clean engraved grooves on a crystal tablet beside it",
"self-hosting-mem0-memory-stack": "A stack of three interlocking transparent memory capsules above a glowing vector-index lattice core, each capsule holding suspended point-cloud nodes",
"shipping-an-ai-photo-editor-as-a-wordpress-plugin": "A brushed dark modular cartridge docked into a slot on a wall of stacked obsidian building blocks, a neat pile of thin shims beside it with one cracked shim glowing red",
"smartctl-exit-code-32-skips-the-disks-that-matter": "A row of dark platter cartridges on an inspection rail where a sorting gate waves the most worn cartridge straight past into an unchecked waste channel",
"space-reclamation-wasnt-stuck-it-was-waiting": "A massive filesystem disk cylinder slowly draining fragmented blue blocks into an obsidian reclamation pit, guided by a precision holographic timer dial counting down",
"stop-writing-agent-prompts-for-deterministic-work": "An oversized ornate mechanical gear train fused to a tiny simple toggle switch, a strand of glowing ribbon tangled uselessly around the gear teeth",
"syncing-a-self-improving-ai-agent-across-machines": "Two obsidian agent cores on separate pedestals sharing one translucent memory ribbon strung between them, mirrored facets echoing each other",
"synology-api-401-with-the-correct-password": "A brass key entered perfectly into a dark lock plate that still glows red, two different fault traces visible behind a diagnostic glass side panel",
"synology-spreadsheet-api-is-a-container": "A grid of obsidian spreadsheet cells housed inside a sealed service container box, four small barricade plates standing around its access hatches",
"that-dying-ssd-was-just-a-bad-sata-cable": "An unbranded solid-state drive slab lying clean and healthy on an inspection cradle beside a single frayed ribbon cable whose exposed conductor is the only damaged element in the frame",
"the-cause-was-trim-not-the-ssds": "Two identical crystal data platters both striped by the same glowing zero-band across their surface, a hidden firmware splinter visible in the shared substrate between them",
"the-nocodb-attachment-that-wouldnt-update": "Two nearly identical obsidian tiles slotted into the same dark rail, the older tile stubbornly holding its groove while a translucent duplicate hovers beside it",
"the-upstream-was-deleted-then-came-back-rewritten": "An empty hollow container shell sitting on a dark shelf beside a freshly rebuilt shell of a brighter alloy, the new one still gleaming and unweathered",
"two-ways-a-javascript-file-stops-working-and-looks-fine": "A luminous display panel that looks perfectly alive while two of its internal conduits are severed beneath the unbroken glass face",
"unraid-stop-array-hangs-on-swapfile": "A heavy obsidian disk array carriage halted on its rails, an eight-segment anchor block clamping one wheel to the floor frame",
"upgrading-codeigniter-46-to-47": "An obsidian upgrade manifold whose eight sealed ports run cold and silent while two open ports vent hot red vapour",
"using-chinese-llm-apis-from-malaysia": "A sealed gateway pylon with a currency-shaped token slot and a verification bell, feeding a distant dark lattice of model cores through a long cable run",
"verifying-a-pdf-report-page-by-page": "Nineteen identically cut crystal page plates fanned in a stack on a dark calibration table while a precision measuring caliper checks each plate's edge alignment",
"vetting-an-open-source-dependency-before-you-bet-on-it": "A dark dependency crate opened on a market bench, six inspection checkpoints laid out beside it and one hollow false-bottomed compartment exposed",
"when-smart-says-healthy-but-your-raid-is-corrupting-data": "Two clean-looking mirrored disk platters certified with green tags while a fine hairline of corrupted static seeps from the seam between them",
"why-500000-lines-of-commit-churn-only-left-230000-in-production": "A wide extrusion nozzle laying down an enormous glowing filament coil while a narrow precision sieve beneath it lets only a smaller refined strand fall into a production crate",
"why-chrome-forgets-its-tabs-in-a-container": "A dark browser window frame whose restored tab plates are scattered outside its own container wall, a small keeper bracket bridging the seam",
"why-i-still-bought-a-local-gpu": "A dense obsidian accelerator block seated in its own heatsink cradle on a workbench, radiating private warm light while cloud-tethered terminals hang faintly in the dark background",
"why-my-on-chain-nft-art-changed-on-windows": "An identical carved art plaque duplicated on two colour-matched plinths, one copy shifted by an extra invisible notch at every edge",
"why-telegram-bot-notifications-die": "A folded paper-plane drone stopped at a narrow dark archway, its front slot jammed with a crumpled translucent strip and a red glow bleeding out",
"why-your-cdp-clicks-silently-fail": "A high-precision robotic cursor pointer clicking onto a translucent glass button that has already shifted away on an invisible kinetic wave, triggering no resonance",
"why-your-grafana-dashboard-shows-no-data": "A wide wall of forty-one dark telemetry panels all reading blank, one small self-referential filter disc visibly stuck against its own inlet",
"why-your-headless-browser-cant-scrape-everything": "Two market booths side by side, one sealed shut behind a wall of blank grey panels while the other stays open with warm goods faintly visible inside",
"your-disk-full-alert-is-lying": "A tall nearly empty barrel of enormous capacity with a tiny amber fill line at its base, while a percentage gauge above it strains against its stop"
}