Methodology
The Schema Markup Generator analyzes a webpage in stages: fetching both raw HTML and rendered DOM, classifying what the page is, extracting structured data heuristically, comparing against existing markup, and emitting validated JSON-LD.
The Pipeline
- Fetch: Raw HTML first, then rendered DOM via headless browser. Captures what crawlers see vs. what JavaScript adds.
- Classify: Detects page type (Organization, Service, Article, Product, FAQ, LocalBusiness) from HTML structure, text patterns, and existing markup.
- Extract: Heuristically pulls entities: legal name, logo URL, address, phone, social profiles, author, publish/update dates, breadcrumbs. Each field is labeled by extraction confidence.
- Diff: Parses any existing schema markup and compares against what was extracted, showing gaps and conflicts.
- Emit: Generates a complete @graph with required and recommended fields per schema.org, filling in what was found and leaving placeholders (marked TODO) for what was not.
- Validate: Validates the output against schema.org and Google's field requirements before returning it.
Scoring & Grade Bands
The report includes a 0–100 completeness score mapped to a letter grade:
| Grade | Range | Meaning |
|---|---|---|
| A | 90–100 | AI-ready — complete, structured data present |
| B | 75–89 | Mostly visible — some gaps but schema present |
| C | 60–74 | Partially visible — sparse or incomplete markup |
| D | 40–59 | Hard to cite — very incomplete |
| F | 0–39 | Effectively invisible — no or broken markup |
The Scoring Formula
The score weights three categories:- Required properties (60 points): Core fields that schema.org marks as required for each type (name, URL, logo for Organization, etc.). Missing any is a major gap.
- Recommended properties (25 points): Fields Google specifically recommends (sameAs for entity cross-linking, social profile links, contact details). Boosts quality but not critical.
- Cross-linking hygiene (15 points): Are multiple pages linked via BreadcrumbList or sameAs? Does a nested entity (author, publisher, location) link back up? Malformed @graph structure costs points here.
How Extraction Works
Extraction is heuristic-only, no LLM calls. We scan for:- Existing JSON-LD blocks (highest confidence source)
- Open Graph / Twitter meta tags
- Microdata (schema.org itemscope)
- RDFa annotations
- Text patterns: phone numbers, email formats, URLs that look like social profiles
- H1/title text as fallback for name
- Logo images from
<img alt="[company]">or standard logo path patterns
Confidence Labels
- High: Pulled directly from existing schema.org markup or explicit markup like Open Graph tags.
- Medium: Pattern-matched (e.g., a phone number found in a "Contact us" section, assumed to be the business phone).
- TODO: Could not be found or confidently inferred. You must fill this in before publishing, or omit the field.