agentsclimarketplace

Schema json optimization

Skill thisisAhsanIqbal/nextjs-seo-audit/skills/schema-json-optimization

AI Agent Skills for SEO auditing , 11 SKILL.md files that teach Cursor, Claude Code, Copilot & more to perform comprehensive SEO audits. Zero dependencies.

Install
npx -y skills add thisisAhsanIqbal/nextjs-seo-audit --skill schema-json-optimization

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Validates existing JSON-LD structured data and suggests relevant schemas based on auto-detected page type. Does NOT enforce all schema types — only checks what is applicable to the current page context. Use when auditing or generating structured data for search engine rich results.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.6 KB, as published. Nobody here has run it

Schema JSON Optimization

Validate existing JSON-LD and suggest only relevant schemas based on the detected page type.

Important: Do NOT blindly check for all schema types. First detect what kind of page this is, then only validate/suggest schemas that are applicable.

Step 1: Find and validate existing JSON-LD

Look for all <script type="application/ld+json"> elements:

  • None found → ⚠️ WARN "No JSON-LD schema markup found"
  • Found → ✅ PASS "Found N JSON-LD block(s)" → validate each:

Validation rules

  • Invalid JSON → ❌ FAIL "Could not parse JSON-LD"
  • Missing @context → ❌ FAIL
  • Missing @type → ❌ FAIL
  • Valid → ✅ PASS and check type-specific required fields (see Step 3)

Step 2: Auto-detect page type

Scan the HTML for signals to determine what type of page this is. A page may match zero, one, or multiple types:

Page typeDetection signals
Article / Blog<meta property="article:published_time">, <article> tag, blog-like URL patterns (/blog/, /post/, /news/)
LocalBusiness<address> tag, <a href="tel:...">, [itemprop="telephone"], [itemprop="address"], contact page patterns
Product<meta property="og:type" content="product">, price elements ([itemprop="price"]), add-to-cart buttons
FAQMultiple <details>/<summary> or FAQ-patterned heading + paragraph pairs
OrganizationAbout page with company info, <meta property="og:type" content="website"> on homepage
BreadcrumbList<nav aria-label="breadcrumb">, .breadcrumb class, <ol> with breadcrumb-like links
WebSiteHomepage with site-wide search form

If no type is detected → only validate existing schemas, do not suggest new ones.

Step 3: Validate and suggest ONLY for detected types

Only if Article/Blog detected:

Check existing Article schema for:

FieldMissing =
headline⚠️ WARN
datePublished⚠️ WARN
author⚠️ WARN
image⚠️ WARN
description⚠️ WARN

If no Article schema exists, suggest generating one:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "[from og:title, <title>, or <h1>]",
  "datePublished": "[from article:published_time or <time datetime>]",
  "author": { "@type": "Person", "name": "[from meta author]" },
  "image": "[from og:image or first article img]",
  "description": "[from meta description]",
  "url": "[from canonical or og:url]"
}

Only if LocalBusiness detected:

Check for:

FieldMissing =
name❌ FAIL
address⚠️ WARN
telephone⚠️ WARN

If no LocalBusiness schema exists, suggest generating one:

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "[from og:site_name or <title>]",
  "address": "[from <address> or itemprop=address]",
  "telephone": "[from itemprop=telephone or tel: link]",
  "url": "[from canonical or og:url]",
  "image": "[from og:image]"
}

Only if Product detected:

Check for:

FieldMissing =
name❌ FAIL
offers (with price and priceCurrency)⚠️ WARN
image⚠️ WARN
description⚠️ WARN

Only if FAQ detected:

Suggest FAQPage schema with Question/Answer pairs extracted from the page.

Only if BreadcrumbList detected:

Suggest BreadcrumbList schema from the breadcrumb navigation structure.

Key principle

DO: "This page looks like a blog post → checking for Article schema"
DON'T: "Missing LocalBusiness schema" on a blog post page

The goal is relevance, not completeness. Only flag missing schemas that would actually benefit the detected page type.

Edge cases

  • A page may have multiple valid types (e.g. a product page with FAQ section → suggest both Product and FAQPage)
  • A page may have existing schemas that are valid but don't match the detected type — that's fine, still validate them
  • If detection is ambiguous, report what was detected and let the user decide
  • Schema @type can be an array (e.g. ["Article", "NewsArticle"])

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.