Generate JSON-LD structured data for a FAQ page in Astro.

Use the LayoutForFaq component to generate the metadata and the JSON-LD structured data for a FAQ page in Astro.

Props

  • Name
    title
    Type
    string
    Required
    required
    Description

    The title of the page.

  • Name
    description
    Type
    string
    Required
    required
    Description

    The description of the page.

  • Name
    pageRoute
    Type
    string
    Required
    required
    Description

    The URL route for the page.

  • Name
    ogImg
    Type
    string
    Description

    The URL of the Open Graph image.

  • Name
    faqs
    Type
    Array<Object>
    Required
    required
    Description

    The list of FAQ entries.

  • Name
    faqs[].question
    Type
    string
    Required
    required
    Description

    The question being answered.

  • Name
    faqs[].answer
    Type
    string
    Required
    required
    Description

    The corresponding answer to the question.

Usage

Add the file to your project

Copy the LayoutForFaq.astro file to your project's layouts folder.

Edit the siteConfig object

Update the siteConfig object in the LayoutForFaq.astro file with your site's base URL, name and default URL of the Open Graph image.

LayoutForFaq.astro

const siteConfig: SiteConfig = {
  baseUrl: "https://novajs.dev",
  siteName: "Nova.js",
  defaultOgImg: "/og-default.png",
};

Import the LayoutForFaq component

Import the LayoutForFaq component into every article page where you want to generate metadata and the JSON-LD structured data.

src/pages/index.astro

---
import LayoutForFaq from "../layouts/LayoutForFaq.astro";
---

<LayoutForFaq
  title="Nova.js - A collection of dependency-free React hooks"
  description="Carefully developed React hooks that you can copy and paste into your project."
  pageRoute="/"
  ogImg="/og-landing.png"
  faqs={[
    {
      question: "What is Nova.js?",
      answer: "Nova.js is a collection of dependency-free React hooks.",
    },
    {
      question: "Is Nova.js free?",
      answer: "Yes, it's completely free and open-source.",
    },
  ]}
>
  <h1>Nova.js</h1>
</LayoutForFaq>