npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@catherineriver/sanity-plugin-generate-ogimage

v1.0.6

Published

This is a Sanity Studio v3 plugin.

Downloads

152

Readme

Sanity Plugin: Generate OG Image

This is a Sanity Studio v3 plugin for generating OG images.

Based on sanity-plugin-asset-source-ogimage for Sanity Studio v2

This Sanity plugin provides a tool to generate Open Graph (OG) images for your Sanity documents. It's designed to be flexible, allowing you to define custom layouts for the generated images.

Features

  • Custom Layouts: Craft your own layouts for the images.
  • Live Preview: Witness changes in real-time as you tweak the layout and content.
  • Download & Generate: Create the image and either download it instantly or integrate it within your Sanity documents.

Installation

🚨 You need @sanity 3.5.0 or greater and react 18.0.0 or greater

npm install @catherineriver/sanity-plugin-generate-ogimage

Basic Usage

As a studio tool

Use it in sanity.config.ts (or .js):

import {defineConfig} from 'sanity'
import {generateOGImage} from 'sanity-plugin-generate-ogimage'

export default defineConfig({
  //...
  plugins: [generateOGImage()],
})

As custom source in image field

Use it as source on a single type

{
    name: 'ogImage',
    title: 'OG image',
    type: 'image',
    options: {
      sources: [
        {
          name: 'sharing-image',
          title: 'Generate Image',
          component: (props) => (
            <MediaEditor {...props} darkMode={true} layouts={[OgImageEditorLayout]} />
          ),
        },
      ],
  }
}

Advanced Usage with Custom Layouts

You can define custom layouts for your generated images. A layout is essentially a React component that receives certain props and renders the desired output.

Here's a basic structure of a layout:

import React from "react";
import { LayoutData } from "sanity-plugin-generate-ogimage/types";

const MyCustomLayout: React.FC<LayoutData> = ({ title, subtitle, logo }) => {
  // Your rendering logic here
};

export default MyCustomLayout;

To use your custom layouts, modify your sanity.config.ts (or .js) as follows:

import {defineConfig} from 'sanity'
import {generateOGImage} from 'sanity-plugin-generate-ogimage'
import MyCustomLayout from './path-to-your-layout'

export default defineConfig({
  // ... other config
  plugins: [generateOGImage({layouts: [MyCustomLayout]})],
})

Components

Here's a brief overview of the main components in the repository:

  • Editor: The main editor component where users can select a layout, modify content, and generate the image.
  • Image: A utility component to display Sanity images.
  • LayoutsPicker: Allows users to pick from multiple available layouts.
  • EditorField: Represents individual fields in the editor, like text inputs, switches, etc.
  • useEditorLogic: A custom hook that encapsulates the logic for generating and downloading the image.
  • imageBuilder: A utility to build image URLs using Sanity's image URL builder.

License

MIT © Katerina Baliasnikova

Develop & test

This plugin uses @sanity/plugin-kit with default configuration for build & watch scripts.

See Testing a plugin in Sanity Studio on how to run this plugin with hotreload in the studio.