指南
schema.org types worth marking up (and which to skip)
Article, Product, Breadcrumb, Organization and FAQ earn their keep. HowTo and self-serving Review markup mostly do not. Here is what to ship.
更新于 2026年2月10日 · 约 3 分钟
Structured data has a poor effort-to-payoff ratio if you copy whatever a plugin outputs by default. A handful of schema.org types still drive rich results and knowledge-panel data. Others were retired, and a few are only eligible for a narrow set of sites. Shipping the wrong ones adds markup to maintain and, if it misrepresents the page, invites a manual action.
The short version: mark up the entity the page is actually about, add breadcrumbs and your organization, and skip anything you cannot back with visible content.
Types worth shipping
| Type | Put it on | What it can earn | Priority |
|---|---|---|---|
| Organization | Homepage (site-wide) | Knowledge panel, logo, social profiles | High |
| BreadcrumbList | Any page with a path | Breadcrumb trail under the SERP title | High |
| Article / BlogPosting | Articles and news | Article rich results, Top Stories eligibility | High |
| Product | Product detail pages | Price, availability, rating in results | High (ecommerce) |
| LocalBusiness | Location and contact pages | Local pack signals, opening hours | High (local) |
| FAQPage | Pages with real Q&A | Structured data consumers | Medium |
| Event | Individual event pages | Event listings | Medium (real events only) |
| HowTo | Step-by-step pages | Retired as a Google rich result | Low |
| Review (standalone) | — | Self-serving reviews are ineligible | Low |
Organization
One block, on the homepage, describing the company:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Inc.",
"url": "https://example.com/",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://www.linkedin.com/company/example",
"https://github.com/example"
]
}
logo should point at a stable URL and be at least around 112×112 pixels, since it can appear next to your site name in results.
BreadcrumbList
The most reliable type for ordinary pages — it mirrors navigation you already have:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Guides", "item": "https://example.com/guide" },
{ "@type": "ListItem", "position": 3, "name": "OG image sizes" }
]
}
The final crumb usually omits item, since it is the current page. Keep position starting at 1 and counting up without gaps.
Article / BlogPosting
For editorial pages, the fields that matter are dates, author and image:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "OG image sizes for every platform",
"image": ["https://example.com/og/cover.png"],
"datePublished": "2026-01-14T09:00:00+00:00",
"dateModified": "2026-02-01T10:30:00+00:00",
"author": { "@type": "Person", "name": "Jane Doe", "url": "https://example.com/about" },
"publisher": {
"@type": "Organization",
"name": "Example Inc.",
"logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" }
},
"mainEntityOfPage": "https://example.com/guide/og-image-sizes"
}
headline should match the visible heading, and image should be a real asset, not a placeholder path.
Product
The fields that go missing most often are inside offers:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trail Runner 3",
"sku": "TR3-BLK-42",
"brand": { "@type": "Brand", "name": "Example" },
"image": ["https://example.com/p/tr3.png"],
"offers": {
"@type": "Offer",
"url": "https://example.com/p/trail-runner-3",
"priceCurrency": "USD",
"price": "129.00",
"availability": "https://schema.org/InStock"
}
}
Do not add an aggregateRating unless the ratings are real and visible on the page.
FAQPage
Still cheap to add, and still valid:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is the best OG image size?",
"acceptedAnswer": { "@type": "Answer", "text": "1200×630 pixels at a 1.91:1 ratio." }
}
]
}
Assume it appears in the SERP for a minority of sites and treat the value as machine-readable clarity for everything else that consumes your page.
Common mistakes
Markup that contradicts the page. A price, rating, author or stock status that differs from what a visitor sees is the fastest route to a manual action.
Marking up content that is not visible. Questions, reviews or offers that exist only in the JSON are a violation, not a shortcut.
Duplicating a type. Two conflicting Organization blocks, or two Article blocks with different dates, make the parser guess. Keep one of each.
Hard-coded staging URLs. Environment-specific domains in url and item cause validation errors as soon as the block is copied between environments.
Injecting it only after render. If a tag manager adds the script and a crawler does not execute JavaScript, the structured data is invisible. Server-rendered JSON-LD is the safe default.
Where this tool fits
The JSON-LD generator builds these blocks from a form and checks required fields as you type, so you ship something you can still read and maintain. Validate the output, then paste it into the page.
Frequently asked questions
▸ Which JSON-LD type should I start with?
BreadcrumbList and Organization. Breadcrumbs apply to every page with a path and are the most consistent win; Organization is one block on the homepage that feeds knowledge-panel data. Add Article or Product next depending on your content.
▸ Does FAQ markup still work?
It is still valid schema and is read by assistants, aggregators and other consumers, but Google narrowed where it shows FAQ rich results. Treat it as a clarity win rather than a guaranteed SERP feature, and only mark up questions visible on the page.
▸ Should I mark up reviews I collected myself?
No. Reviews a site collects about its own products are self-serving and are ineligible for rich results. Marking them up anyway can trigger a structured-data manual action.
▸ Can I put multiple JSON-LD blocks on one page?
Yes. Multiple script blocks are valid, and each type can live in its own block. What you should avoid is two conflicting blocks of the same type, such as two Organization objects with different names.
▸ Where should the JSON-LD go in the HTML?
Anywhere in the document, though placing it in the head or near the top of the body is easiest to inspect. What matters is that crawlers can read it without executing JavaScript, so a plain server-rendered script block is safest.