What Schema Should I Use on My Blog Posts? | Vibe Code Your Leads

What schema should I use on my blog posts?

Direct Answer

Use BlogPosting schema. A subtype of Article that signals a specific, dated piece of writing by a named author. For maximum AI authority, stack it with Author (Person) and FAQPage schema in a single @graph block. This three-schema combination tells AI: this is attributed content, structured for question-and-answer extraction.[1]

Cindy Anne Molchany

Cindy Anne Molchany

Founder, Perfect Little Business™ · Creator, Authority Directory Method™

Best Move

Use the three-schema stack on every blog post: BlogPosting + Person (Author) + FAQPage, all inside a single @graph block in your page's head element.

Why It Works

Each schema type in the stack adds a different classification signal. Together they tell AI: this is content (BlogPosting), by a verified person (Person), structured for direct answer extraction (FAQPage).

Next Step

Build the three-schema @graph block as a template. Copy it to every new post and update the page-specific values: headline, url, datePublished, and FAQ content.

Schema for blog posts. What matters

Why BlogPosting and not generic Article schema for blog posts?

Schema.org's Article type is the parent category for written content. BlogPosting is a subtype. It inherits all Article properties but adds the implicit signal that this is a personal, blog-style expert post. The distinction matters because specificity in schema type gives AI a more precise classification than a broad parent type.

Think of it like a product database: if you're selling an espresso machine, you wouldn't classify it only as "Appliance" when "CoffeeMaker" and "EspressoMachine" are available. The more specific type gives AI a clearer understanding of what the page is. And that understanding affects how it categorizes and surfaces the content.[1]

For authority directory nodes. Posts that answer specific queries, are authored by a named expert, and are published on a specific date. BlogPosting is the precise classification. It signals the content is a personal, dated, personally voiced post rather than an editorial or institutional article.

What does the complete three-schema stack look like?

The recommended schema stack for blog posts uses the @graph pattern to nest three schema types in a single JSON-LD block. Here's the full template:

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "BlogPosting",
      "headline": "Your exact H1 here",
      "description": "1-2 sentence summary matching your meta description",
      "url": "https://yourdomain.com/your-post-url",
      "datePublished": "2026-03-18",
      "dateModified": "2026-03-18",
      "author": {
        "@type": "Person",
        "name": "Your Name",
        "url": "https://yoursite.com",
        "jobTitle": "Your Title",
        "sameAs": [
          "https://linkedin.com/in/yourprofile",
          "https://instagram.com/yourhandle"
        ]
      },
      "publisher": {
        "@type": "Organization",
        "name": "Your Business Name",
        "url": "https://yoursite.com"
      }
    },
    {
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "FAQ question 1?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Complete answer text..."
          }
        },
        {
          "@type": "Question",
          "name": "FAQ question 2?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Complete answer text..."
          }
        }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://yourdomain.com"},
        {"@type": "ListItem", "position": 2, "name": "Section Name", "item": "https://yourdomain.com/section/"},
        {"@type": "ListItem", "position": 3, "name": "Post Title", "item": "https://yourdomain.com/post-url"}
      ]
    }
  ]
}

This block goes inside a <script type="application/ld+json"> tag in your <head>. It must be in the static HTML. Never injected by JavaScript.[2]

What properties are most critical in the BlogPosting block?

Not all properties carry equal weight. Here's a priority-ordered breakdown for blog posts:

Tier 1. Required for valid schema:

  • headline. Must match your H1 exactly, not a shortened version
  • author. The Person or Organization that wrote the post
  • datePublished. Publication date in YYYY-MM-DD format

Tier 2. Strongly recommended by Google:

  • description. Summary text; can match your meta description
  • url. The canonical URL of this post
  • dateModified. Signals freshness; update this when you revise the post
  • publisher. The organization responsible for the content
  • image. An ImageObject with URL, width, and height

Tier 3. Additive for authority signals:

  • wordCount. An integer; signals content depth
  • keywords. Comma-separated topic keywords
  • mainEntityOfPage. Confirms this is the primary content of the URL

The author object deserves special care. A string value ("author": "Cindy Molchany") is far weaker than a full Person object with a URL, jobTitle, and sameAs links to verified profiles. The richer the author object, the stronger the E-E-A-T signal AI engines extract from the page.[3]

How does FAQPage schema interact with BlogPosting schema on the same page?

FAQPage schema and BlogPosting schema serve different but complementary purposes. BlogPosting classifies the content type. FAQPage structures specific Q&A pairs for direct extraction.

When stacked together in a @graph block, they create a compound signal: this is content (BlogPosting) that also contains specific question-and-answer pairs that AI can extract and cite directly (FAQPage). The combination gives AI two ways to use your content: as a general expert source and as a repository of specific, extractable answers.

The FAQ questions in your schema should match the questions visible in your page's FAQ section. Not be hidden schema questions that don't appear in the HTML. Schema mismatches between the visible page and the schema data create validation errors and reduce trust signals.[4]

For authority directory nodes with 4–6 FAQ items, include all of them in the FAQPage schema. Each question's text answer in the schema should be the complete, self-contained answer. Not a truncated version. AI extracts from the schema, so the schema needs to be complete.

How do I make sure my blog post schema is correct before publishing?

Run two validation checks before the post goes live. Not after.

Step 1: Validate the JSON-LD syntax. Copy your @graph block and paste it into the Schema.org Validator at validator.schema.org. This checks that your JSON is valid and that all properties are recognized by Schema.org's vocabulary. Fix any errors before moving to step 2.

Step 2: Validate with Google's Rich Results Test. Go to search.google.com/test/rich-results and paste your page URL (or the HTML source). This shows you exactly which schema types Google detected, which properties were parsed, and which have errors or warnings.

Common errors to watch for:

  • Missing required fields. Headline and author are most commonly missed
  • Author as string instead of Person object. Loses E-E-A-T signal value
  • Schema in a JS-injected block. Invisible to AI crawlers; must be in static HTML
  • FAQ schema questions not matching visible page content. Creates validation warnings
The VCYL Perspective

Every post on this site follows the same schema template: BlogPosting + Person author + FAQPage + BreadcrumbList, all in one @graph block. It never varies. Not because I'm rigid about process, but because consistency in schema architecture is a signal in itself. It tells AI that this is a systematically structured site, not a collection of ad-hoc posts.

The FAQPage layer is the part most experts skip. And it's the one that makes your content most directly useful to AI recommendation systems. FAQ schema turns your Q&A sections into machine-readable, extractable answers. When someone asks ChatGPT a question you've answered, your FAQ schema gives AI the exact text it needs to cite you. Without it, AI has to parse unstructured body copy to find the answer. And it may not bother.

The Authority Directory Method treats the three-schema stack as infrastructure. You build it once as a template. You apply it to every node. The five minutes per post it takes to fill in the page-specific values is among the highest-ROI activities in the entire build process.

More on schema for blog posts

Is BlogPosting schema required for blog posts to rank?

Schema markup is not an official ranking factor for traditional SEO. However, for AI recommendation visibility, correct schema classification is effectively required. It's the machine-readable signal that tells AI engines what type of content your page is. Blog posts without BlogPosting schema are unclassified to AI crawlers, which reduces how efficiently those pages get indexed and recommended.

Should I use the same schema on every blog post?

Yes. For authority directory nodes, use the same BlogPosting + Author + FAQPage @graph stack on every post. Consistency in schema architecture signals a structured, systematic site to AI engines. The only variation should be the page-specific values: headline, description, url, datePublished, and FAQ content. The structure stays identical.

What is the @graph pattern and why should I use it for blog posts?

The @graph pattern is a way to include multiple schema types in a single JSON-LD block. Instead of writing separate script tags for BlogPosting, FAQPage, and BreadcrumbList, you nest them all inside a single @graph array. This is cleaner, reduces the risk of conflicts, and is the recommended approach in Google's structured data documentation. It allows AI engines to read the complete page context in one pass.

What happens if I use Article schema instead of BlogPosting for a blog post?

Using Article instead of BlogPosting isn't wrong. It won't break your schema or cause errors. But BlogPosting is more specific, and specificity is an asset in schema markup. BlogPosting signals a personal, dated, personally voiced post. Article is a broader category that covers editorial content of all kinds. For authority directories where every post is authored by a specific expert and published on a specific date, BlogPosting is the more precise and appropriate type.

Do I need schema on every single blog post, or just the important ones?

Every post. For an authority directory to send a consistent, high-density signal to AI engines, every node needs its full schema stack. Selective schema creates an inconsistent pattern. Some posts are classified, others are not. Which reduces the overall coherence of your site's structured data. The schema stack is a template; it takes less than two minutes to apply to each new post once the template is built.

Related pages

Cindy Anne Molchany

Cindy Anne Molchany

Cindy is the founder of Perfect Little Business™ and creator of the Authority Directory Method™. She helps entrepreneurs (coaches, consultants, and service providers) build AI-discoverable authority systems that generate qualified leads without chasing. This site is built using the exact method it teaches.

vibecodeyourleads.com

See What AI Sees When It Looks at Your Website

Take the free AI Visibility Scan to discover your schema gaps and positioning opportunities, or explore the complete build system.

Take the Free AI Visibility Scan Learn About the Build System