Gatsby blog post – How to add rich snippets to a video embedded from YouTube

I have a blog running with Gatsby + the Netlify CMS and sometimes I want to add to the blog post an embedded video from YouTube. I want to create for those videos a videoObject schema with the following structure:

  "@context": "",
  "@type": "VideoObject",
  "name": "VIDEO TITLE",
  "description": "VIDEO DESCRIPTION",
  "thumbnailUrl": "VIDEO THUMBNAIL",
  "uploadDate": "2018-04-16T08:01:27Z",
  "duration": "PT4M43S",
  "embedUrl": "",

Does someone know what is the best way to do this?

Thank you in advance!



You should be using React Helmet & JSON.stringify.

React helmet is a component that lets you control your document head using their React component. JSON.stringify is a method that converts a JavaScript object into a string.

Create a const with your schema markup:

const videoObject = {
  "@context": "",
  "@type": "VideoObject",
  name: "VIDEO TITLE",
  description: "VIDEO DESCRIPTION",
  thumbnailUrl: "VIDEO THUMBNAIL",
  uploadDate: "2018-04-16T08:01:27Z",
  duration: "PT4M43S",
  embedUrl: "",

Then output the schema using react helmet & JSON.stringify like this:

import React from "react"
import { Helmet } from "react-helmet"

  <script type="application/ld+json">{JSON.stringify(videoObject)}</script>

Source: stackoverflow