Social cards
Generate og:image preview cards for link shares with the epresso_social plugin.
epresso_social draws the preview image link shares show (Open Graph
og:image, Twitter/X summary_large_image): a 1200×630 PNG per section, per
page or per collection. The docs theme enables it. Any site can enable it too:
tomlplugins = ["epresso_social"][site]url = "https://example.com/" # cards are linked by absolute URL
It needs Pillow: pip install 'epresso[images]'. Without Pillow the build warns
once and pages keep their existing image.
Which pages share a card
toml[plugin.epresso_social]cards = "sections" # default
cards |
Cards drawn | Title on the card |
|---|---|---|
sections |
one per top-level URL segment (/guides/…) |
the section's landing page title, else the folder name |
all |
one per page | the page title and description |
collection |
one per content collection | the collection name, or [plugin.epresso_social.titles] |
The homepage, and pages outside any section or collection, get the site card
(site name and description). A page that sets its own og:image keeps it. With
[plugin.epresso_docs] base = "/docs/", sections are counted under the base.
toml[plugin.epresso_social.titles] # collection modedocs = "Documentation"
Look
toml[plugin.epresso_social]background = "#0f1117"color = "#e8ecf1"accent = "#3ecf8e" # site name and the bottom barlogo = "public/logo.png" # PNG; an SVG logo is skipped (the site name shows)background_image = "card.png" # PNG drawn under the textfont = "fonts/Inter.ttf" # default: Space Grotesk + IBM Plex Sans
The layout is fixed: logo and site name at the top, the title (up to three lines; it shrinks to fit), the description (two lines), and an accent bar.
Builds and caching
Cards are written to dist/social/ and cached in .cache/social/, so a rebuild
only draws cards whose text or options changed. epresso dev points pages at the
cards but doesn't draw them; set dev = true to draw them there too.
Was this page helpful?