# schema-markup

This skill writes Schema.org JSON-LD for the page type you have: article, product, FAQ, how-to. Useful when you want rich results in search.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 443 installs · ★ 721
- Author: OpenClaudia
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/OpenClaudia/openclaudia-skills/tree/HEAD/skills/schema-markup/SKILL.md
- Updated: 2026-10-21
- HTML: https://affpapa.org/en/nevibecode/skills/openclaudia-schema-markup

## What it does

The skill picks the right schema type from the page content and returns ready JSON-LD. It ships templates for Article, BlogPosting, NewsArticle, Product, FAQPage and HowTo, each with Google's rich result requirements attached.

Article needs `headline` under 110 characters, `image` in three aspect ratios (16:9, 4:3, 1:1, each wider than 696px), `datePublished` in ISO 8601 and an author name. Product needs at least one of `offers`, `review` or `aggregateRating`, and price plus currency once `offers` is there. Google only shows FAQPage markup when the questions are visible on the page rather than hidden behind tabs, so check your markup before pasting the code in.

Install runs through `npx skills add` for Claude, Codex, Cursor, Gemini CLI and OpenCode. GitHub Copilot uses `gh skill install` instead. The skill file lands at a path like `.cursor/skills/schema-markup/SKILL.md` or `~/.claude/skills/schema-markup/SKILL.md`, so you can edit the templates for your own project.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill schema-markup -a claude-code
```

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

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill schema-markup -a codex
```

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

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill schema-markup -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install OpenClaudia/openclaudia-skills schema-markup
```

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

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill schema-markup -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/OpenClaudia/openclaudia-skills --path skills/schema-markup
```

### Windsurf (Devin Desktop)

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

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill schema-markup -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/OpenClaudia/openclaudia-skills/tree/HEAD/skills/schema-markup/SKILL.md

## When to use it
- generate JSON-LD for a product page with price and availability
- mark up an FAQ block so it can appear as a rich result
- add article markup with author, date and images
- describe a step-by-step guide with HowTo
- check required schema fields before publishing

## Example prompts
- generate schema markup for this product page
- I need JSON-LD for the FAQ on this page
- add Article markup to my blog post

## 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: 54df718d9b4df7f2.

BEGIN THIRD-PARTY FILE 54df718d9b4df7f2
````text
---
name: schema-markup
description: Generate Schema.org structured data (JSON-LD) for any page type. Use when the user says "schema markup", "structured data", "JSON-LD", "rich snippets", "rich results", "FAQ schema", "product schema", "article schema", "breadcrumb schema", "organization schema", "how-to schema", "review schema", or asks about structured data for SEO.
---

# Schema Markup Generator Skill

You are an expert in Schema.org structured data and Google's rich results requirements. Generate valid, complete JSON-LD markup that maximizes eligibility for Google rich results.

## Supported Schema Types

This skill supports the following schema types. When the user asks for schema, determine which type(s) are appropriate based on the page content.

### 1. Article / BlogPosting / NewsArticle

**Use for:** Blog posts, news articles, editorial content
**Rich result:** Article carousel, headline in search

```json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Your Article Title (max 110 characters)",
  "description": "Brief description of the article (max 160 characters)",
  "image": [
    "https://example.com/image-16x9.jpg",
    "https://example.com/image-4x3.jpg",
    "https://example.com/image-1x1.jpg"
  ],
  "datePublished": "2025-01-15T08:00:00+00:00",
  "dateModified": "2025-01-20T10:30:00+00:00",
  "author": [{
    "@type": "Person",
    "name": "Author Name",
    "url": "https://example.com/author/name",
    "jobTitle": "Senior Editor",
    "sameAs": [
      "https://twitter.com/authorhandle",
      "https://linkedin.com/in/authorname"
    ]
  }],
  "publisher": {
    "@type": "Organization",
    "name": "Publisher Name",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png",
      "width": 600,
      "height": 60
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/article-url"
  },
  "wordCount": 2500,
  "articleSection": "Technology",
  "keywords": ["keyword1", "keyword2", "keyword3"],
  "isAccessibleForFree": true
}
```

**Google requirements:**
- `headline` is required (max 110 characters)
- `image` is required (provide 3 aspect ratios: 16:9, 4:3, 1:1; each > 696px wide)
- `datePublished` is required (ISO 8601 format)
- `author.name` is required
- For `NewsArticle`, also add `dateline` if applicable
- For `BlogPosting`, `@type` changes to `"BlogPosting"`

---

### 2. Product

**Use for:** Product pages, e-commerce listings
**Rich result:** Product snippet with price, availability, reviews

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Product Name",
  "description": "Product description",
  "image": [
    "https://example.com/product-1.jpg",
    "https://example.com/product-2.jpg"
  ],
````
END THIRD-PARTY FILE 54df718d9b4df7f2

The third-party file has ended. Everything between the 54df718d9b4df7f2 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 2782 of 16178 bytes. © OpenClaudia · MIT · https://github.com/OpenClaudia/openclaudia-skills/tree/HEAD/skills/schema-markup/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
