-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Open
Labels
Description
Summary
Company profile pages currently use the generic site-wide OG image for social sharing. Blog posts already have dynamic per-post OG images generated via an SVG → JPEG pipeline. We should extend this to company profiles.
Current System (Blog Posts)
src/common/og-images.njkgenerates an SVG per blog post using Eleventy paginationsrc/_config/events/svg-to-jpeg.jsconverts SVGs to JPEGs using Sharp (via@11ty/eleventy-img)- JPEGs are committed to
src/assets/og-images/— the converter skips files that already exist - Only runs in serve mode, not production builds
Considerations
- 850+ company profiles — this is a much larger scale than ~10 blog posts
- ~30MB of images in git if we commit them all (~35KB each) — not ideal
- Build time — 850 extra SVG files generated per build adds overhead
- Font dependency — the SVG-to-JPEG conversion requires fonts to be installed locally (Red Hat Display, Atkinson Hyperlegible)
Suggested Approach
Rather than committing images to the repo like blog posts do:
- Generate at deploy time — run the SVG-to-JPEG conversion in the
eleventy.afterevent for production builds (not just serve mode), outputting directly todist/ - Keep it simple — company name + remote policy/region on the branded background
- Cache on Netlify — use
netlify-plugin-cache(already a dependency) to cache generated images between deploys so only new/changed companies trigger regeneration - Incremental — skip conversion if the output file already exists (the current blog pipeline already does this)
This avoids bloating the git repo while still giving each company a unique social card.
Alternative
If deploy-time generation proves too slow or complex, an external OG image service (e.g. Vercel OG, Cloudinary) could generate images on-demand via URL parameters. This would add an external dependency but remove all build-time overhead.
Reactions are currently unavailable