Skip to content
cccskills
FreePublished on GitHub

blog-schema

Generate complete JSON-LD schema markup for blog posts including BlogPosting, Person, Organization, BreadcrumbList, FAQPage, and ImageObject. Validates against Google requirements and warns about deprecated types. Use when user says "schema", "blog schema", "json-ld", "structured data", "schema markup", "generate schema".

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md8.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Blog Schema: JSON-LD Structured Data Generation

Generates complete, validated JSON-LD schema markup for blog posts using the @graph pattern. Combines multiple schema types into a single script tag with stable @id references for entity linking.

Workflow

Step 1: Read Content

Read the blog post and extract all schema-relevant data:

  • Title (headline)
  • Author (name, job title, social links, credentials)
  • Dates (datePublished, dateModified / lastUpdated)
  • Description (meta description)
  • FAQ section (question and answer pairs)
  • Images (cover image URL, dimensions, alt text; inline images)
  • Organization info (site name, URL, logo)
  • Word count (approximate from content length)
  • Tags/categories (for BreadcrumbList category)
  • Slug (from filename or frontmatter)

Step 2: Generate BlogPosting Schema

Complete BlogPosting with all required and recommended properties:

{
  "@type": "BlogPosting",
  "@id": "{siteUrl}/blog/{slug}#article",
  "headline": "Post title (max 110 chars)",
  "description": "Meta description (150-160 chars)",
  "datePublished": "YYYY-MM-DD",
  "dateModified": "YYYY-MM-DD",
  "author": { "@id": "{siteUrl}/author/{author-slug}#person" },
  "publisher": { "@id": "{siteUrl}#organization" },
  "image": { "@id": "{siteUrl}/blog/{slug}#primaryimage" },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "{siteUrl}/blog/{slug}"
  },
  "wordCount": 2400,
  "articleBody": "First 200 characters of content as excerpt..."
}

Required properties: @type, headline, datePublished, author, publisher, image. Recommended properties: description, dateModified, mainEntityOfPage, wordCount, articleBody (excerpt).

Step 3: Generate Person Schema

Author schema with stable @id for cross-referencing:

{
  "@type": "Person",
  "@id": "{siteUrl}/author/{author-slug}#person",
  "name": "Author Name",
  "jobTitle": "Role or Title",
  "url": "{siteUrl}/author/{author-slug}",
  "sameAs": [
    "https://twitter.com/handle",
    "https://linkedin.com/in/handle",
    "https://github.com/handle"
  ]
}

Optional properties (include when available):

  • alumniOf - Educational institution (Organization type)
  • worksFor - Employer (reference to Organization @id if same entity)

Step 4: Generate Organization Schema

Blog's parent organization entity:

{
  "@type": "Organization",
  "@id": "{siteUrl}#organization",
  "name": "Organization Name",
  "url": "{siteUrl}",
  "logo": {
    "@type": "ImageObject",
    "url": "{siteUrl}/logo.png",
    "width": 600,
    "height": 60
  },
  "sameAs": [
    "https://twitter.com/org",
    "https://linkedin.com/company/org",
    "https://github.com/org"
  ]
}

Logo requirements: must be a valid image URL. Google recommends logos be 112x112px minimum, 600px wide maximum. Rectangular logos preferred for BlogPosting publishers.

Step 5: Generate BreadcrumbList

Navigation breadcrumb schema showing content hierarchy:

{
  "@type": "BreadcrumbList",
  "@id": "{siteUrl}/blog/{slug}#breadcrumb",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "{siteUrl}"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Category Name",
      "item": "{siteUrl}/blog/category/{category-slug}"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Post Title",
      "item": "{siteUrl}/blog/{slug}"
    }
  ]
}

If no category is available, use "Blog" as the second breadcrumb item with {siteUrl}/blog as the URL.

Step 6: Generate FAQPage Schema

Extract Q&A pairs from the blog post's FAQ section:

{
  "@type": "FAQPage",
  "@id": "{siteUrl}/blog/{slug}#faq",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the question?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The complete answer text (40-60 words with statistic)."
      }
    }
  ]
}

Important note: Google restricted FAQ rich results to government and health sites since August 2023. However, FAQ schema markup still provides value because:

  • AI systems (ChatGPT, Perplexity, Gemini) extract FAQ data for citations
  • It structures content for future rich result eligibility changes
  • It improves content organization signals

Step 7: Generate VideoObject (if videos present)

For each YouTube video embedded in the post, generate a VideoObject schema:

{
  "@type": "VideoObject",
  "@id": "{siteUrl}/blog/{slug}#video-{index}",
  "name": "Video title",
  "description": "Video description excerpt (first 200 chars)",
  "thumbnailUrl": "https://img.youtube.com/vi/{videoId}/hqdefault.jpg",
  "uploadDate": "{ISO 8601 date}",
  "contentUrl": "https://www.youtube.com/watch?v={videoId}",
  "embedUrl": "https://www.youtube.com/embed/{videoId}",
  "duration": "PT{M}M{S}S",
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": { "@type": "WatchAction" },
    "userInteractionCount": {viewCount}
  }
}

Add each VideoObject to the @graph array. Use #video-1, #video-2 etc. for the @id fragment. Extract video metadata from the embed's noscript fallback or from YouTube Data API if available via blog-google.

Step 7.5: Generate ImageObject

Cover image schema for the post's primary image:

{
  "@type": "ImageObject",
  "@id": "{siteUrl}/blog/{slug}#primaryimage",
  "url": "https://cdn.pixabay.com/photo/.../image.jpg",
  "width": 1200,
  "height": 630,
  "caption": "Descriptive caption matching alt text"
}

Image requirements:

  • URL must be crawlable and publicly accessible
  • Width and height should reflect actual image dimensions
  • Caption should match or closely align with the image alt text
  • Preferred dimensions: 1200x630 (OG-compatible) or 1920x1080

Step 8: Validate & Warn

Check for deprecated schema types and apply validation rules:

NEVER use these deprecated types:

  • HowTo - Deprecated September 2023 (Google no longer shows rich results)
  • SpecialAnnouncement - Deprecated July 2025
  • Practice Problem - Deprecated (education markup)
  • Dataset - Deprecated for general use
  • Sitelinks Search Box - Deprecated
  • Q&A - Deprecated January 2026 (distinct from FAQPage)

Validation checks:

  1. All @id references resolve to entities within the @graph
  2. dateModified is equal to or after datePublished
  3. headline does not exceed 110 characters
  4. description is between 50-160 characters
  5. All URLs are absolute (not relative)
  6. Image dimensions are positive integers
  7. BreadcrumbList positions are sequential starting from 1
  8. FAQPage has at least 2 questions

AI citation optimization note: Pages using 3 or more schema types have approximately 13% higher AI citation likelihood. This skill generates up to 7 types (BlogPosting, Person, Organization, BreadcrumbList, FAQPage, ImageObject, VideoObject) to maximize both search engine understanding and AI extraction.

Step 9: Output

Combine all schemas into a single <script> tag using the @graph pattern:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "BlogPosting", ... },
    { "@type": "Person", ... },
    { "@type": "Organization", ... },
    { "@type": "BreadcrumbList", ... },
    { "@type": "FAQPage", ... },
    { "@type": "VideoObject", ... },
    { "@type": "ImageObject", ... }
  ]
}
</script>

@graph pattern benefits:

  • Single script tag instead of multiple - cleaner HTML
  • Entity linking via stable @id references (e.g., author references Person by @id)
  • Google and AI systems parse @graph arrays correctly
  • Easier to maintain and update as a single block

Output options:

  • Embedded HTML - Ready to paste into <head> or before </body>
  • Standalone JSON - For CMS schema fields or API injection
  • MDX component - If the project uses MDX, wrap in a component

Save the generated schema to the blog post file or to a separate schema file as the user prefers.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Design rigorous A/B tests with hypotheses, variants, metrics, and sample size calculations.

The English summary is being prepared. Showing the original description.

Infrasity-Labs/dev-gtm-claude-skills142Updated Jun 29, 2026

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program," or "experiment playbook." Use this whenever someone is comparing two approaches and wants to measure which performs better, or when they want to build a systematic experimentation practice. For tracking implementation, see analytics. For page-level conversion optimization, see cro.

The English summary is being prepared. Showing the original description.

Infrasity-Labs/dev-gtm-claude-skills142Updated Jun 29, 2026

Format CVs for academic positions with publications, grants, and teaching

The English summary is being prepared. Showing the original description.

Infrasity-Labs/dev-gtm-claude-skills142Updated Jun 29, 2026

Conduct a comprehensive accessibility audit against WCAG guidelines with severity ratings and remediation steps.

The English summary is being prepared. Showing the original description.

Infrasity-Labs/dev-gtm-claude-skills142Updated Jun 29, 2026

Create accessibility testing plans covering assistive technologies and WCAG criteria.

The English summary is being prepared. Showing the original description.

Infrasity-Labs/dev-gtm-claude-skills142Updated Jun 29, 2026

When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform. Also use when the user mentions 'ad copy variations,' 'ad creative,' 'generate headlines,' 'RSA headlines,' 'bulk ad copy,' 'ad iterations,' 'creative testing,' 'ad performance optimization,' 'write me some ads,' 'Facebook ad copy,' 'Google ad headlines,' 'LinkedIn ad text,' or 'I need more ad variations.' Use this whenever someone needs to produce ad copy at scale or iterate on existing ads. For campaign strategy and targeting, see ads. For landing page copy, see copywriting.

The English summary is being prepared. Showing the original description.

Infrasity-Labs/dev-gtm-claude-skills142Updated Jun 29, 2026

See all skills by Infrasity-Labs

Report a problem with this skill