mirror of
https://github.com/gbessoni/seobuild-onpage.git
synced 2026-06-23 11:58:37 +02:00
GEO framework that writes pages ranking on Google AND getting cited by LLMs. 500-token chunk architecture, Reddit Test quality gates, verification tags, Not For You blocks, information gain enforcement. Data layer: DataForSEO, GSC, Ahrefs MCP, SEMRush MCP. 21 files, all tests passing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
142 lines
2.8 KiB
Markdown
142 lines
2.8 KiB
Markdown
# Schema Markup Patterns
|
|
|
|
JSON-LD schema markup templates for each page type. The skill generates
|
|
these at the end of each page as a code block.
|
|
|
|
## FAQPage (use on any page with an FAQ section)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "FAQPage",
|
|
"mainEntity": [
|
|
{
|
|
"@type": "Question",
|
|
"name": "Question text here?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Answer text here."
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## LocalBusiness (service + location pages)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "LocalBusiness",
|
|
"name": "Business Name",
|
|
"description": "What the business does",
|
|
"url": "https://example.com",
|
|
"address": {
|
|
"@type": "PostalAddress",
|
|
"streetAddress": "123 Main St",
|
|
"addressLocality": "City",
|
|
"addressRegion": "ST",
|
|
"postalCode": "12345",
|
|
"addressCountry": "US"
|
|
},
|
|
"geo": {
|
|
"@type": "GeoCoordinates",
|
|
"latitude": 40.7128,
|
|
"longitude": -74.0060
|
|
},
|
|
"priceRange": "$$"
|
|
}
|
|
```
|
|
|
|
## HowTo (guide/tutorial pages)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "HowTo",
|
|
"name": "How to [action]",
|
|
"description": "Brief description",
|
|
"step": [
|
|
{
|
|
"@type": "HowToStep",
|
|
"name": "Step title",
|
|
"text": "Step description"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Product (product/feature pages)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Product",
|
|
"name": "Product Name",
|
|
"description": "Product description",
|
|
"brand": {
|
|
"@type": "Brand",
|
|
"name": "Brand Name"
|
|
},
|
|
"offers": {
|
|
"@type": "AggregateOffer",
|
|
"lowPrice": "9.99",
|
|
"highPrice": "99.99",
|
|
"priceCurrency": "USD"
|
|
}
|
|
}
|
|
```
|
|
|
|
## BreadcrumbList (all pages, especially location hierarchies)
|
|
|
|
```json
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "BreadcrumbList",
|
|
"itemListElement": [
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 1,
|
|
"name": "Home",
|
|
"item": "https://example.com/"
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 2,
|
|
"name": "Category",
|
|
"item": "https://example.com/category/"
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 3,
|
|
"name": "Current Page"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Combination Patterns
|
|
|
|
Most pages should combine multiple schemas. Common combos:
|
|
|
|
- **Service page:** LocalBusiness + FAQPage + BreadcrumbList
|
|
- **Comparison page:** FAQPage + BreadcrumbList
|
|
- **How-to page:** HowTo + FAQPage + BreadcrumbList
|
|
- **Location page:** LocalBusiness + FAQPage + BreadcrumbList
|
|
- **Product page:** Product + FAQPage + BreadcrumbList
|
|
|
|
When combining, wrap in an array:
|
|
|
|
```json
|
|
[
|
|
{ "@context": "https://schema.org", "@type": "FAQPage", ... },
|
|
{ "@context": "https://schema.org", "@type": "BreadcrumbList", ... }
|
|
]
|
|
```
|
|
|
|
## Validation
|
|
|
|
Always validate generated schema at:
|
|
- https://search.google.com/test/rich-results
|
|
- https://validator.schema.org/
|