nestdotland / og

πŸ“Έ Open Graph Image Generator

Home Page:https://og.nest.land

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nest OG Image Generator

Service that dynamically generates Open Graph images for Nest that looks something like

✨ How To Use

Use the generated image URL in the <head> of your HTML document as the og:image meta property

<meta
  property="og:image"
  content="https://og.nest.land/api/image?layoutName=Pattern&Text=Hello+World"
/>

Whenever this image is requested (e.g. in link previews) the image will be generated on demand.

🧐 How It Works

Images are generated through the /api/image route. When you hit this route the following happens

  • Query params are parsed
  • Layout is looked up in list of layouts using the layoutName query param
  • layout.getCSS called with all query params
  • layout.Component is rendered with all query params as config prop
  • HTML page built, rendered with Puppeteer, and screenshot
  • Screenshot returned with a long cache max age

Layouts

This service can generate images using multiple layouts. A layout is defined as a

  • Collection of properties that are user configurable. The UI for these properties is auto genearted
  • Function that takes in layout config and returns CSS needed to render
  • A React component that takes in layout config as a prop

πŸš€ Development

To start hacking, do the following:

  1. Fork this repo and clone it
  2. Run yarn or npm install to install all dependencies
  3. Run locally with yarn dev and visit localhost:3000

Now you're ready to start local development!

The frontend is a NextJS site and the image generation happens in an API route.

# Start local development server
yarn dev

# Build for production
yarn build

# Start in production
yarn start

πŸ™Œ Acknowledgement

Credit where credit is due. This started as a forked repo from Railway's OG image generator

License

This project is distributed under The MIT Licese

About

πŸ“Έ Open Graph Image Generator

https://og.nest.land

License:MIT License


Languages

Language:TypeScript 98.0%Language:CSS 1.3%Language:JavaScript 0.7%