thisisahsaniqbal/nextjs-seo-audit · Archived

schema-json-optimization

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.

First seen Jul 10, 2026

Installation

$ npx skills add thisisahsaniqbal/nextjs-seo-audit --skill schema-json-optimization

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from thisisahsaniqbal/nextjs-seo-audit.

npx skills add thisisahsaniqbal/nextjs-seo-audit

Browse all from thisisahsaniqbal/nextjs-seo-audit

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 7
License LICENSE
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0
LicenseMIT
More metadata
author
Muhammad Ahsan Iqbal (https://muhammadahsaniqbal.com)
linkedin
https://www.linkedin.com/in/ahsan-iqbal-digitalmarketingexpert/
version
1.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,723 B
  • docs SUMMARY.md 316 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

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 type Detection 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
FAQ Multiple <details>/<summary> or FAQ-patterned heading + paragraph pairs
Organization About page with company info, <meta property="og:type" content="website"> on homepage
BreadcrumbList <nav aria-label="breadcrumb">, .breadcrumb class, <ol> with breadcrumb-like links
WebSite Homepage 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:

Field Missing =
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:

Field Missing =
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:

Field Missing =
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"])