
Schema Markup
Drop validated JSON-LD into pages so Google rich results and answer engines can parse your articles, how-tos, and product entities correctly.
Overview
Schema Markup is an agent skill most often used in Launch (also Grow content pages) that supplies tested JSON-LD templates for common schema.org types.
Install
npx skills add https://github.com/alirezarezvani/claude-skills --skill schema-markupWhat is this skill?
- Copy-paste JSON-LD patterns for common schema.org types including BlogPosting and HowTo
- Placeholder conventions (ALL_CAPS) so agents replace domains, slugs, and media dimensions safely
- HowTo blocks with totalTime, tools, and image URLs aligned to rich-result expectations
- Explicit pre-deploy testing at Google’s rich-results validator
- Article patterns with author, publisher logo, and mainEntityOfPage wiring
Adoption & trust: 521 installs on skills.sh; 17.5k GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are shipping content pages but lack correct, field-complete JSON-LD, so rich results and structured understanding in search stay unreliable.
Who is it for?
Solo builders publishing blogs, how-to guides, or marketing sites who want schema without reading the full schema.org spec.
Skip if: Teams that already generate schema from a CMS or framework plugin with automated tests—skip duplicating that pipeline.
When should I use this skill?
You need implementation-ready JSON-LD for common page types and plan to test at rich-results.google.com before deploy.
What do I get? / Deliverables
Each target page gets paste-ready JSON-LD with placeholders resolved and a validation pass at Google’s rich-results tester before go-live.
- Page-specific JSON-LD blocks with placeholders replaced
- Pre-deploy rich-results validation checklist outcome
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Structured data is the canonical launch/SEO shelf because it ships with pages you want indexed and surfaced in search—not a one-off build chore. SEO subphase covers on-page technical SEO artifacts like schema.org markup tested in Search Console rich-result tools.
Where it fits
Wire BlogPosting JSON-LD into a new changelog post before submitting the URL to Search Console.
Refresh HowTo schema on tutorial pages when you expand steps or change estimated totalTime.
Embed JSON-LD in static or SPA head blocks while building the marketing site shell.
How it compares
Use structured copy-paste patterns instead of asking the model to invent JSON-LD from scratch each time.
Common Questions / FAQ
Who is schema-markup for?
Indie founders and solo developers shipping content or marketing sites who need valid JSON-LD without deep SEO engineering.
When should I use schema-markup?
At launch when adding SEO to new URLs, when rewriting blog or HowTo pages in Grow, and whenever you refresh metadata before a distribution push.
Is schema-markup safe to install?
It is documentation-style patterns only; review the Security Audits panel on this Prism page before adding any third-party skill repo to your agent.
SKILL.md
READMESKILL.md - Schema Markup
# Implementation Patterns Copy-paste JSON-LD patterns for every common schema type. Replace ALL_CAPS placeholders with real values. Test at rich-results.google.com before deploying. --- ## Article (Blog Post) ```json { "@context": "https://schema.org", "@type": "BlogPosting", "headline": "ARTICLE_TITLE_MAX_110_CHARS", "description": "ARTICLE_DESCRIPTION_150_TO_300_CHARS", "image": { "@type": "ImageObject", "url": "https://YOURDOMAIN.COM/images/ARTICLE_IMAGE.jpg", "width": 1200, "height": 630 }, "author": { "@type": "Person", "name": "AUTHOR_FULL_NAME", "url": "https://YOURDOMAIN.COM/author/AUTHOR_SLUG", "sameAs": "https://www.linkedin.com/in/AUTHOR_LINKEDIN" }, "publisher": { "@type": "Organization", "name": "PUBLICATION_OR_COMPANY_NAME", "logo": { "@type": "ImageObject", "url": "https://YOURDOMAIN.COM/images/logo.png", "width": 250, "height": 60 } }, "datePublished": "YYYY-MM-DD", "dateModified": "YYYY-MM-DD", "url": "https://YOURDOMAIN.COM/blog/ARTICLE_SLUG", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://YOURDOMAIN.COM/blog/ARTICLE_SLUG" } } ``` --- ## HowTo Guide ```json { "@context": "https://schema.org", "@type": "HowTo", "name": "How to TASK_NAME", "description": "BRIEF_DESCRIPTION_OF_WHAT_IS_ACCOMPLISHED", "image": "https://YOURDOMAIN.COM/images/HOWTO_IMAGE.jpg", "totalTime": "PT30M", "tool": [ { "@type": "HowToTool", "name": "TOOL_NAME_1" }, { "@type": "HowToTool", "name": "TOOL_NAME_2" } ], "supply": [ { "@type": "HowToSupply", "name": "SUPPLY_NAME_1" } ], "step": [ { "@type": "HowToStep", "position": 1, "name": "STEP_1_TITLE", "text": "STEP_1_FULL_INSTRUCTIONS", "image": "https://YOURDOMAIN.COM/images/step-1.jpg" }, { "@type": "HowToStep", "position": 2, "name": "STEP_2_TITLE", "text": "STEP_2_FULL_INSTRUCTIONS", "image": "https://YOURDOMAIN.COM/images/step-2.jpg" }, { "@type": "HowToStep", "position": 3, "name": "STEP_3_TITLE", "text": "STEP_3_FULL_INSTRUCTIONS" } ] } ``` **Note:** `totalTime` uses ISO 8601 duration. `PT30M` = 30 minutes. `PT1H30M` = 1 hour 30 minutes. --- ## FAQPage ```json { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "FIRST_QUESTION_TEXT?", "acceptedAnswer": { "@type": "Answer", "text": "FIRST_ANSWER_TEXT. Keep answers complete but concise — this appears directly in search results." } }, { "@type": "Question", "name": "SECOND_QUESTION_TEXT?", "acceptedAnswer": { "@type": "Answer", "text": "SECOND_ANSWER_TEXT." } }, { "@type": "Question", "name": "THIRD_QUESTION_TEXT?", "acceptedAnswer": { "@type": "Answer", "text": "THIRD_ANSWER_TEXT." } } ] } ``` **Note:** Add as many Question/Answer pairs as the page has. Google typically shows 3-5 in results. --- ## Product with Offers and Ratings ```json { "@context": "https://schema.org", "@type": "Product", "name": "PRODUCT_NAME", "description": "PRODUCT_DESCRIPTION", "image": [ "https://YOURDOMAIN.COM/images/product-front.jpg", "https://YOURDOMAIN.COM/images/product-side.jpg" ], "sku": "PRODUCT_SKU", "brand": { "@type": "Brand", "name": "BRAND_NAME" }, "offers": { "@type": "Offer", "url": "https://YOURDOMAIN.COM/products/PRODUCT_SLUG", "priceCurrency": "USD", "price": 49.99, "priceValidUntil": "YYYY-MM-DD", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition", "seller": { "@type": "Organization", "name": "YOUR_STORE_NAME" } }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4