Systems Lab

Agent skill

schema-markup-generator

Generate structured data markup (JSON-LD) for rich results, AI search visibility, and enhanced SERP features.

slowingReaches the webActs undeclared733 words

Filed under ABM and paid.

From thatrebeccarae/claude-marketing · 42 skills · 119 · pushed 2026-05-14

What it does when it runs

Generate structured data markup (JSON-LD) for rich results, AI search visibility, and enhanced SERP features. Supports Article, FAQ, HowTo, Product, Review, LocalBusiness, Event, BreadcrumbList, Person, Organization, and more. Use when the user needs schema markup, structured data, rich snippets, JSON-LD, or wants to improve search appearance.

Read from the skill and the 3 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
  • linkedin.com
  • search.google.com
  • twitter.com
  • validator.schema.org
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shell

Ask about schema-markup-generator

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/thatrebeccarae/claude-marketing.git /tmp/claude-marketing
git -C /tmp/claude-marketing sparse-checkout set "skills/schema-markup-generator"
mkdir -p ~/.claude/skills/schema-markup-generator
cp -R "/tmp/claude-marketing/skills/schema-markup-generator/." ~/.claude/skills/schema-markup-generator/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from thatrebeccarae/claude-marketing/blob/a8a63ec1341f05ec9c1e9cb52b4edeb14e3bdcba/skills/schema-markup-generator/SKILL.md, which is licensed MIT (skill frontmatter). 733 words, 16 headings.

Schema Markup Generator

Generate JSON-LD structured data for rich results, AI citations, and enhanced search visibility.

Install

git clone https://github.com/thatrebeccarae/claude-marketing.git && cp -r claude-marketing/skills/schema-markup-generator ~/.claude/skills/

When to Use

  • Adding structured data to new or existing pages
  • Generating JSON-LD for specific schema types
  • Auditing existing schema for errors or missing fields
  • Improving AI search visibility (pairs with aeo-geo-optimizer)
  • Enabling rich results (FAQ dropdowns, star ratings, how-to steps)

Workflow

Step 1: Identify Content Type

ContentPrimary SchemaRich Result
Blog postArticleEnhanced listing with author, date
FAQ sectionFAQPageExpandable Q&A in SERPs
TutorialHowToStep-by-step with images/time
Product pageProductPrice, availability, ratings
ReviewReview + RatingStar ratings in SERPs
RecipeRecipeCooking time, ingredients, ratings
EventEventDate, location, ticket info
Local businessLocalBusinessMaps, hours, contact
Person/authorPersonKnowledge panel
BreadcrumbsBreadcrumbListBreadcrumb trail in SERPs
VideoVideoObjectVideo carousel, thumbnails
SoftwareSoftwareApplicationApp info in SERPs
CourseCourseCourse info in SERPs
DatasetDatasetDataset search results

Step 2: Generate JSON-LD

Generate a <script type="application/ld+json"> block with all required and recommended fields for the schema type. Always use JSON-LD format (not Microdata or RDFa).

Step 3: Validate

Schema Templates

Article

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Article Title (max 110 chars)",
  "description": "Brief description of the article",
  "author": {
    "@type": "Person",
    "name": "Author Name",
    "url": "https://example.com/author/name",
    "jobTitle": "Author Title",
    "sameAs": ["https://linkedin.com/in/author", "https://twitter.com/author"]
  },
  "publisher": {
    "@type": "Organization",
    "name": "Publisher Name",
    "logo": {"@type": "ImageObject", "url": "https://example.com/logo.png"}
  },
  "datePublished": "2026-03-18T00:00:00Z",
  "dateModified": "2026-03-18T00:00:00Z",
  "image": "https://example.com/article-image.jpg",
  "mainEntityOfPage": {"@type": "WebPage", "@id": "https://example.com/article-url"}
}

FAQPage

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the question?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The complete answer text. Can include <a href=url>HTML links</a>."
      }
    }
  ]
}

HowTo

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to Do Something",
  "description": "Brief description",
  "totalTime": "PT30M",
  "estimatedCost": {"@type": "MonetaryAmount", "currency": "USD", "value": "0"},
  "step": [
    {
      "@type": "HowToStep",
      "name": "Step 1 Title",
      "text": "Detailed step instructions",
      "image": "https://example.com/step1.jpg"
    }
  ]
}

Product

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Product Name",
  "description": "Product description",
  "image": "https://example.com/product.jpg",
  "brand": {"@type": "Brand", "name": "Brand Name"},
  "sku": "SKU-12345",
  "offers": {
    "@type": "Offer",
    "price": "29.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/product"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "127"
  }
}

BreadcrumbList

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com"},
    {"@type": "ListItem", "position": 2, "name": "Category", "item": "https://example.com/category"},
    {"@type": "ListItem", "position": 3, "name": "Current Page"}
  ]
}

Required vs Recommended Fields

Schema TypeRequired FieldsRecommended Fields
Articleheadline, author, datePublished, imagedateModified, publisher, description
FAQPagemainEntity (Question + Answer)
HowToname, steptotalTime, estimatedCost, image
Productname, offers (price + currency + availability)brand, sku, aggregateRating, image
LocalBusinessname, addressphone, hours, geo, image, priceRange
Eventname, startDate, locationendDate, offers, image, performer
PersonnamejobTitle, url, sameAs, image

Common Mistakes

  1. Missing required fields — always check per-type requirements
  2. Incorrect date format — use ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)
  3. Markup does not match visible content — schema must reflect what users see
  4. Using Microdata instead of JSON-LD — Google recommends JSON-LD
  5. Nesting errors — validate JSON syntax before deploying
  6. Duplicate schema — one schema block per type per page
  7. Self-referencing Organization — publisher should be the organization, not the page

Integration with Other Skills

  • aeo-geo-optimizer — Schema is a key AEO signal; implement types recommended by the AEO audit
  • technical-seo-audit — Audit identifies missing/broken schema; this skill generates the fixes
  • seo-content-writer — Content structure should align with schema structure

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what schema-markup-generator does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.