# geo-schema

Audits JSON-LD, Microdata, and RDFa structured data on web pages, checks validation rules, and generates clean markup for search and AI discovery.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 915 installs · ★ 11253
- Author: geo-seo-claude
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/zubair-trabzada/geo-seo-claude/tree/HEAD/skills/geo-schema/SKILL.md
- Updated: 2026-10-25
- HTML: https://affpapa.org/en/nevibecode/skills/geo-schema

## What it does

The skill detects existing structured data across JSON-LD, Microdata, and RDFa formats. Standard fetch tools often strip the `<head>` section when converting HTML to Markdown, losing critical script tags. Because of that, this skill uses `fetch_page.py` to extract raw structured data blocks directly.

It checks JSON syntax, verifies entity types against schema specifications, and flags missing attributes like `sameAs` or `knowsAbout`. JavaScript-rendered markup faces delayed processing by search bots, so server-side injection is a clear priority. The tool also flags Microdata and RDFa for migration to JSON-LD.

All validation findings, missing schema recommendations, and generated code blocks for entities like Organization or Article are saved directly into `GEO-SCHEMA-REPORT.md`.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add zubair-trabzada/geo-seo-claude --skill geo-schema -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/geo-schema/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/geo-schema/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add zubair-trabzada/geo-seo-claude --skill geo-schema -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/geo-schema/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add zubair-trabzada/geo-seo-claude --skill geo-schema -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/geo-schema/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install zubair-trabzada/geo-seo-claude geo-schema
```

2. **Manually: put the files in place**
- File: `.github/skills/geo-schema/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add zubair-trabzada/geo-seo-claude --skill geo-schema -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/zubair-trabzada/geo-seo-claude --path skills/geo-schema
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/geo-schema/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add zubair-trabzada/geo-seo-claude --skill geo-schema -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/zubair-trabzada/geo-seo-claude/tree/HEAD/skills/geo-schema/SKILL.md

## When to use it
- inspect JSON-LD blocks for syntax errors and incorrect nesting
- detect structured data injected via JavaScript that delays bot parsing
- generate Organization and LocalBusiness markup with `sameAs` links
- create a structured audit report in `GEO-SCHEMA-REPORT.md`
- identify Microdata and RDFa markup that needs migration to JSON-LD

## Example prompts
- Audit structured data on the page using `fetch_page.py` and list missing fields
- Validate JSON-LD markup and generate `GEO-SCHEMA-REPORT.md`
- Generate an Organization schema block with `sameAs` and `knowsAbout` properties

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 3aae539dc359316a.

BEGIN THIRD-PARTY FILE 3aae539dc359316a
````text
---
name: geo-schema
description: Schema.org structured data audit and generation optimized for AI discoverability — detect, validate, and generate JSON-LD markup
version: 1.0.0
author: geo-seo-claude
tags: [geo, schema, structured-data, json-ld, entity-recognition, ai-discoverability]
allowed-tools: Read, Grep, Glob, Bash, WebFetch, Write
---

# GEO Schema & Structured Data

## Purpose

Structured data is the primary machine-readable signal that tells AI systems what an entity IS, what it does, and how it connects to other entities. While schema markup has traditionally been about earning Google rich results, its role in GEO is fundamentally different: **structured data is how AI models understand and trust your entity**. A complete entity graph in structured data dramatically increases citation probability across all AI search platforms.

## How to Use This Skill

1. Fetch the target page HTML using `fetch_page.py` (see note below)
2. Detect all existing structured data (JSON-LD, Microdata, RDFa)
3. Validate detected schemas against Schema.org specifications
4. Identify missing recommended schemas based on business type
5. Generate ready-to-use JSON-LD code blocks
6. Output GEO-SCHEMA-REPORT.md

---

## Step 1: Detection

**IMPORTANT:** WebFetch converts HTML to markdown and strips `<head>` content, which removes JSON-LD blocks. Use `fetch_page.py` instead:
```bash
python3 ~/.claude/skills/geo/scripts/fetch_page.py <url> page
```
The output includes a `structured_data` array with all parsed JSON-LD blocks from the page.

### Scan for JSON-LD
Look for `<script type="application/ld+json">` blocks in the HTML. Parse each block as JSON. A page may contain multiple JSON-LD blocks — collect all of them.

### Scan for Microdata
Look for elements with `itemscope`, `itemtype`, and `itemprop` attributes. Map the hierarchy of nested items. Note: Microdata is harder for AI crawlers to parse than JSON-LD. Flag a recommendation to migrate to JSON-LD if Microdata is the only format found.

### Scan for RDFa
Look for elements with `typeof`, `property`, and `vocab` attributes. Similar to Microdata — recommend migration to JSON-LD.

### Priority Order
JSON-LD is the **strongly recommended format** for GEO. Google, Bing, and AI platforms all process JSON-LD most reliably. If the site uses Microdata or RDFa exclusively, flag this as a high-priority migration.

---

## Step 2: Validation

For each detected schema block, validate:

1. **Valid JSON**: Is the JSON-LD syntactically valid? Check for trailing commas, unquoted keys, malformed strings.
2. **Valid @type**: Does the `@type` match a recognized Schema.org type? Check against https://schema.org/docs/full.html.
3. **Required Properties**: Does the schema include all required properties for its type? (See per-type requirements below.)
````
END THIRD-PARTY FILE 3aae539dc359316a

The third-party file has ended. Everything between the 3aae539dc359316a tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2824 of 14734 bytes. © geo-seo-claude · MIT · https://github.com/zubair-trabzada/geo-seo-claude/tree/HEAD/skills/geo-schema/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
