og:image pipeline — SHIPPED 2026-05-18 (was: parked sketch)
DARE.CO.UK · PARKED SKETCH · 2026-05-31
Mirrored from ~/.claude/.../memory/project_og_image_pipeline_parked.md. This is a design sketch parked for future build — read for context, not as a current deliverable.
2026-05-18 sketch THEN BUILT same day. Superseded by
project_og_image_standard_shipped.md— see that memory for the live state. This file kept as the audit/design record for retroactive traceability.
STATUS: SHIPPED 2026-05-18. See
project_og_image_standard_shipped.mdfor live surfaces, the script, and the per-renderer meta block. Original audit content below — useful for the design-rationale record.
Dan, 2026-05-18: “v2 seems like the right pipeline for us going forward, sketch/audit it first. It’s a beautiful thing we are building, adding a single line of code, resulting in high-touch experiences.”
Five-attribute definition
| Attribute | Definition |
|---|---|
| Purpose | Every gated portfolio surface gets a social-card preview without exposing private content |
| Goal | One line of HTML per renderer → high-touch share experience; preview reflects ACTUAL page content, refreshes on each deploy |
| Approach | Headless-Chrome capture (existing thumbnailer.py) authenticated via CDN, security layer, and DNS provider sitting in front of dare.co.uk.">CF Access service token → upload to stable R2 key via existing grab pipeline → each renderer emits <meta property="og:image"> to that URL |
| Editorial voice | N/A (infrastructure layer) |
| Prompt needed | “What does this surface look like right now?” — answered by the most-recent capture |
The single-line promise
Every renderer adds exactly ONE LINE to its <head>: