Saijo George

Curated by Saijo George

Read more

tuesday5 May 2020

Dynamically Add FAQ Schema to Your Content

While I still do FAQPage Schema like a caveman, JR Oakes recently shared a really clever way to dynamically add FAQPAge Schema to your pages by using specific class names for your question and answer content and a bit of Javascript. Code is also on Pastebin.

Here is the Zip file with 2 html files

  • withjs.html- which dynamically adds the FAQPage Schema to the head
  • nojs.html – the file without the script


// Define the class for your questions and answers here.
// They should be marked up in a consistent manner.
var questionClass = 'question';
var answerClass   = 'answer';

// Output schema to console. Set to `false` if adding via tag manager.
var logOutput     = false;


    // Build Data
    var questions = Array.from(document.getElementsByClassName(questionClass)).map(function(e){return e.textContent});
    var answers = Array.from(document.getElementsByClassName(answerClass)).map(function(e){return e.textContent});

    if (questions.length && answers.length){

        var data = {
          "@context": "",
          "@type": "FAQPage",
          "mainEntity": []

        buildItem = (q,a) => {

            var item = {
                "@type": "Question",
                "name": null ,
                "acceptedAnswer": {
                  "@type": "Answer",
                  "text":null }

            item['name'] = q;
            item['acceptedAnswer']['text'] = a;

            return item;
        console.assert(questions.length == answers.length, {questions: questions.length, answers: answers.length, errorMsg: "Questions and Answers are not the same lengths"});

        data['mainEntity'] =,i){return buildItem(q,answers[i])});

        var script = document.createElement('script');
        script.type = "application/ld+json";
        script.innerHTML = JSON.stringify(data);

		if (logOutput){


Tips and Tricks

I love tl;dr Marketing because I can get all the latest SEO news and trends in one spot without having to read lengthy articles. I really look forward to the daily emails to see what's new in our industry!

Vulnerability Discovered in WP Statistics <=13.1.4 1 - Social Media News

Ryan Mews SEO Manager Merkle