No description
Find a file
saberzero1 d81079740c
refactor: rename LocalQuartzPluginData to SocialImageFileData and export it
The type was a deliberate narrowing of QuartzPluginData that documents
which fields the og-image emitter populates before invoking a user's
imageStructure callback (including the plugin-synthesised 'text'
field). The old name implied accidental duplication, inviting
'helpful' future refactors that would inline it into QuartzPluginData
and silently widen the public API.

Rename to SocialImageFileData, export it from the package entry, and
add a docstring explaining why it must stay narrow. The type was
already visible in the generated .d.ts through ImageOptions, so making
the export explicit matches what consumers already see in their IDE.

Also adds a test suite (og-image previously had no tests):
- SocialImageFileData contract tests locking in the documented shape
- imageStructure callback signature compatibility
- defaultImage called with populated / minimal / readingTimeText
  override payloads returns a valid preact VNode
2026-04-16 15:45:18 +02:00
.github/workflows ci: add dist externals verification step 2026-03-17 19:41:47 +01:00
dist refactor: rename LocalQuartzPluginData to SocialImageFileData and export it 2026-04-16 15:45:18 +02:00
src refactor: rename LocalQuartzPluginData to SocialImageFileData and export it 2026-04-16 15:45:18 +02:00
test refactor: rename LocalQuartzPluginData to SocialImageFileData and export it 2026-04-16 15:45:18 +02:00
types chore: centralize type declarations and standardize tooling config 2026-03-16 18:55:26 +01:00
.eslintrc.json chore: centralize type declarations and standardize tooling config 2026-03-16 18:55:26 +01:00
.gitignore chore: commit dist/ and remove prepare script 2026-03-14 22:00:34 +01:00
.prettierignore chore: centralize type declarations and standardize tooling config 2026-03-16 18:55:26 +01:00
.prettierrc Initial commit 2026-02-13 23:35:47 +01:00
CHANGELOG.md Initial commit 2026-02-13 23:35:47 +01:00
LICENSE Initial commit 2026-02-13 23:35:47 +01:00
package-lock.json deps: update @quartz-community/types and @quartz-community/utils 2026-04-16 13:28:52 +02:00
package.json feat: add requiresInstall flag for native dependency auto-install 2026-03-17 19:43:13 +01:00
README.md docs: update README for v5 unified config system 2026-02-25 16:07:11 +01:00
tsconfig.json Implement og-image emitter plugin 2026-02-13 23:53:16 +01:00
tsup.config.ts fix: bundle @quartz-community/utils to avoid runtime subpath resolution failures 2026-04-04 11:36:31 +02:00
vitest.config.ts fix: add passWithNoTests to vitest config 2026-03-09 03:21:30 +01:00

@quartz-community/og-image

Generates Open Graph social preview images for each page using Satori and Sharp.

Installation

npx quartz plugin add github:quartz-community/og-image

Usage

plugins:
  - source: github:quartz-community/og-image
    enabled: true

For advanced use cases, you can override in TypeScript:

import * as ExternalPlugin from "./.quartz/plugins";

ExternalPlugin.CustomOgImages({
  colorScheme: "lightMode",
  width: 1200,
  height: 630,
});

Configuration

Option Type Default Description
colorScheme "lightMode" | "darkMode" "lightMode" The color scheme to use for the generated images.
width number 1200 The width of the generated images.
height number 630 The height of the generated images.
excludeRoot boolean false Whether to exclude the root page from image generation.
defaultTitle string "Untitled" The default title to use if a page has no title.
defaultDescription string "No description provided" The default description to use if a page has no description.
readingTimeText (minutes: number) => string undefined A function to format the reading time text.
imageStructure function undefined A function to define the structure of the generated image.

Documentation

See the Quartz documentation for more information.

License

MIT