Content SEO
Structured Data
On-Page
Schema Types
Entity + Semantic
Media SEO
Ecommerce
Product Feeds
Research Tools
Quick Actions
Structured Data, Search Appearance, and Entity Signals
Structured Data Fundamentals
- Format: Use JSON-LD in
<head>or<body>— Google-recommended; Microdata and RDFa are supported but harder to maintain - Visible-content matching: Markup must reflect what users actually see on the page — structured data for invisible, hidden, or misleading content violates Google's guidelines and can trigger manual actions
- Required vs. recommended properties: Each schema type has required fields (must include for rich result eligibility) and recommended fields (improve richness and competitiveness) — check Google's documentation per type
- Testing workflow: Validate with Rich Results Test (checks eligibility + errors) and Schema Markup Validator (checks syntax completeness) before every deploy
- Monitoring: After deployment, monitor GSC Rich Results report for 2–4 weeks — new errors may surface as Google recrawls and revalidates pages
- Keep markup current: When page content changes (price, availability, author, dates), update structured data in the same deploy — stale markup triggers "mismatch" warnings
- One JSON-LD block preferred: Combine all schema for a page into a single
<script type="application/ld+json">block using@graph— multiple blocks are valid but harder to audit
Schema Type Selector
- Product pages →
Product+Offer(required: name, image, description, offers with price + availability) — see Commerce Schema card below - Editorial / blog →
ArticleorNewsArticle(required: headline, image, datePublished, author) — see Editorial Schema card below - Site-wide (once) →
Organization(name, url, logo, sameAs) +WebSite(name, url, potentialAction for search box) — place on homepage or every page - All pages with breadcrumbs →
BreadcrumbList(itemListElement with position, name, item URL) — should match visible breadcrumb trail - FAQ sections →
FAQPage(mainEntity → Question → acceptedAnswer) — only for editorially authored FAQ, not user-generated Q&A - Location pages →
LocalBusiness(name, address, telephone, geo, openingHours) — see Local and Entity Schema card below - Video pages →
VideoObject(name, description, thumbnailUrl, uploadDate, contentUrl or embedUrl) — see Media Schema card below - Review pages →
Review/AggregateRating— only when reviews are visible on-page; self-serving reviews violate guidelines
Validation Tools
On-Page Fundamentals
Essential On-Page Elements
- H1: Single, keyword-aligned, and descriptive
- H2–H6 Hierarchy: Logical structure that mirrors content organization
- Title Tag: Unique, optimized, 50-60 characters
- Meta Description: Compelling, click-through rate optimized, 150-160 characters
- URL Structure: Clean, descriptive, human-readable
- Internal Links: Contextually relevant anchor text
- Page Purpose: Clear statement in opening paragraph
- Featured snippet formatting: Question-as-heading, direct answer in 40–60 words immediately below, tables or ordered lists for comparisons and steps — the same extraction patterns apply to AI answer generation
Content Quality Standards
- Comprehensive, depth-first topic coverage
- Original insights, proprietary research, or unique data
- Outbound citations to external authoritative sources
- Source attribution for every factual claim
- Clear topical focus - no dilution or off-topic scope creep
- Content freshness maintained with defined review cadence; signal changes via accurate
lastmodin sitemaps, HTTP freshness headers (ETag,Last-Modified), and rapid URL resubmission via IndexNow when content is updated - Visible authorship or reviewer attribution where readers would reasonably expect it — bylines, review dates, and credentials for YMYL content
- Source support for factual claims that carry material risk if wrong: policies, pricing, product specs, benchmark figures, dates
- Consistent entity naming across page copy, schema markup, product feeds, and profile data — inconsistency across surfaces weakens entity disambiguation
Search Appearance Controls
- Title links: Google generates the clickable title from
<title>, H1, anchor text, and other signals — best practice: unique<title>under 60 characters that matches the page's primary topic; mismatches increase Google's likelihood of rewriting it - Meta descriptions: 150–160 characters, compelling, includes target query context — not guaranteed to display (Google may generate its own snippet from page content), but a well-written description improves CTR when used
- Snippet length directives:
max-snippet:-1(unlimited),max-snippet:0(no text snippet),max-snippet:N(N characters) — controls how much text Google can show;nosnippetremoves snippet entirely - Image preview directives:
max-image-preview:large(recommended for Discover eligibility),standard,none— controls thumbnail size in search results and Discover feed - Video preview:
max-video-preview:-1(full preview),max-video-preview:0(static image only),max-video-preview:N(N seconds) - Favicons: Must be square, at least 48×48 px (renders at 16×16), crawlable URL, not blocked by robots.txt — appears next to site name in mobile search results
- Publication dates: Signal via
datePublished/dateModifiedin Article schema, visible byline date, and<time datetime="...">element — inconsistency between schema and visible date causes confusion; use real dates, not auto-updated timestamps - Sitelinks: Earned through clear site architecture, internal linking, and unique page titles — not directly controllable via markup; nested sitelinks appear for branded queries with strong site authority
Structured Data Type Reference
Commerce Schema
- Product (required:
name,image,description,offers) — one Product per PDP; recommended:brand,sku,gtin,mpn,aggregateRating,review - Offer (required:
price,priceCurrency,availability) — recommended:url,itemCondition,priceValidUntil,seller; usehttps://schema.org/InStock,OutOfStock, etc. for availability - AggregateOffer: Use when multiple offers exist for one product —
lowPrice,highPrice,offerCount,priceCurrency - Variant modeling: Group size/color/material variants under
ProductGroupwith individualProductchildren, or list variants as separateOfferobjects on one Product — Google supports both patterns - MerchantReturnPolicy:
returnPolicyCategory(e.g.,MerchantReturnFiniteReturnWindow),merchantReturnDays,returnMethod,returnFees— can be linked from Offer viahasMerchantReturnPolicy - OfferShippingDetails:
shippingRate(value+currency),shippingDestination(addressCountry),deliveryTime(handlingTime+transitTime) — linked from Offer viashippingDetails - Identifiers: Include at least one of
gtin/gtin8/gtin13/gtin14,mpn,sku, plusbrand— GTIN is required for Shopping eligibility in most categories
Publisher and Site Schema
- Organization (required:
name,url) — recommended:logo(min 112×112 px),sameAs(array of official profile URLs for Knowledge Graph reconciliation),contactPoint; place on homepage or site-wide - WebSite (
name,url) — optional:potentialActionwithSearchActionfor sitelinks search box (eligibility is limited and Google-determined);namecontrols how site name appears in search results - BreadcrumbList:
itemListElementarray, each withposition(integer, starting at 1),name(visible label),item(URL) — must match the visible breadcrumb trail on-page; omititemon the final (current page) element - Logo requirements: Minimum 112×112 px, image file (not SVG for Google), referenced in Organization via
logoproperty; use same logo URL site-wide for consistency - sameAs for Knowledge Graph: Link Organization to Wikipedia, Wikidata, LinkedIn, Twitter/X, Facebook, Crunchbase, and other authoritative profile URLs — strengthens entity recognition and Knowledge Panel eligibility
Media Schema
- VideoObject (required:
name,description,thumbnailUrl,uploadDate) — must also includecontentUrl(direct video file) orembedUrl(player URL); place on the page where the video is prominently embedded - Clip (key moments):
name,startOffset,endOffset,url— enables chapter-style links in video search results; nest inside VideoObject - SeekToAction: Enables live seeking to any timestamp —
targetURL template with{seek_to_second_number}placeholder; use instead of Clip when content is continuous rather than chapter-based - BroadcastEvent:
isLiveBroadcast: true,startDate,endDate— enables "LIVE" badge in search results; nest inside VideoObject viapublication - ImageObject:
contentUrl,caption,creator— optional but useful for image-heavy pages;primaryImageOfPageon WebPage tells Google which image to prefer for search result thumbnails
Editorial Schema
- Article (required:
headline,image,datePublished) — recommended:dateModified,author(Person or Organization withnameandurl),publisher; use for blog posts, guides, editorial content - NewsArticle: Same properties as Article — use specifically for timely news content eligible for Top Stories and Google News surfaces; requires news publisher eligibility
- FAQPage:
mainEntity→ array ofQuestionobjects, each withname(the question) andacceptedAnswer→Answerwithtext— only for editorially authored FAQ, not forums or user-generated Q&A - QAPage: For user-generated Q&A pages (forums, Stack Overflow–style) —
mainEntity→QuestionwithanswerCount,acceptedAnswer,suggestedAnswer; distinct from FAQPage - Review / AggregateRating:
reviewRating(ratingValue,bestRating),author,itemReviewed— use outside product context (e.g., book reviews, service reviews); self-serving reviews violate guidelines - HowTo:
step(array ofHowToStepwithname,text, optionalimage),tool,supply— rich result availability has been significantly reduced; still useful for AI answer extraction
Local and Entity Schema
- LocalBusiness (required:
name,address) — recommended:telephone,geo(GeoCoordinates),openingHoursSpecification,priceRange,image; use specific subtypes when applicable (e.g.,Restaurant,Store,MedicalClinic) - PostalAddress:
streetAddress,addressLocality(city),addressRegion(state/province),postalCode,addressCountry— nest inside LocalBusiness viaaddress - GeoCoordinates:
latitude,longitude— nest inside LocalBusiness viageo; must match the actual business location - OpeningHoursSpecification:
dayOfWeek(array),opens,closes(24-hour format) — create separate entries for different day groups; usevalidFrom/validThroughfor seasonal hours - Multi-location alignment: Use one
Organizationas the parent brand, with individualLocalBusinessentities per location linked viaparentOrganization— each location gets its own page and schema - sameAs for entity reconciliation: On LocalBusiness and Organization, include
sameAsarray linking to Google Business Profile, Yelp, LinkedIn, Facebook, Wikipedia, Wikidata, and all official profile URLs — strengthens entity disambiguation
Entity & Semantic Optimization
Entity-Based SEO
- Named entities explicitly referenced (people, brands, places, dates, products)
- Entity-based keyword coverage
- Contextual entity relationships explained
- Natural language phrasing that mirrors user questions
- Semantic HTML5 sectioning elements (
<article>,<section>,<main>)
Entity Reconciliation
- sameAs links: In Organization and Person schema, include
sameAsURLs pointing to Wikipedia, Wikidata, LinkedIn, and all official social profiles to help engines reconcile the entity - Consistent entity naming: Use the identical brand name, person name, or product name across schema markup, page copy, Google Business Profile, Merchant Center feeds, and social profiles — inconsistency weakens disambiguation
- Product identifier alignment: Include GTIN, MPN, SKU, and Brand in both Product schema and Merchant Center feeds; matching identifiers let engines reconcile the same product across sources
- One Organization entity site-wide: Place a single Organization schema on the homepage or site-wide template, linked via
sameAsto all authoritative profile URLs
Semantic Keyword Coverage
- Synonyms, related terms, topic breadth, intent variants
- Topical cluster / pillar page architecture
- Conversational query intent addressed (who, what, when, why, how)
- Optimized for featured snippet extraction
Media SEO
Image SEO
- Use
<img>elements: Embed images in HTML with<img src>— CSS background images and JavaScript-only injection are not reliably indexed - Descriptive filenames: Use hyphens and keywords (
blue-running-shoe.jpg), not generic names (IMG_0042.jpg) - Alt text: Concise, accurate description of the image content — not keyword-stuffed, not empty on meaningful images
- Responsive images: Use
srcsetand<picture>to serve appropriate sizes; Google indexes the renderedsrc - Formats: WebP or AVIF preferred for performance; JPEG, PNG, GIF, BMP, SVG also supported — provide fallbacks for compatibility
- Compression: Compress without visible quality loss; prioritize LCP images for size optimization
- Crawlability: Images must not be blocked by robots.txt; use image sitemaps to aid discovery for images loaded via JavaScript or lazy-loading
- Google-recommended minimum image width for Search and Discover: 1200px, high resolution, 16:9 aspect ratio preferred
max-image-preview:largein robots meta enables enhanced image previews across Search, Discover, and AI-enriched features- Specify preferred image via
og:imagemeta tag or schema.orgprimaryImageOfPage— without explicit specification, search engines select their own crop
Video SEO
- Dedicated watch page — one prominent video per page with a unique URL; don't hide video behind tabs or accordions
- Stable URLs — keep video file URL and thumbnail URL persistent; changing them forces re-indexing
- Supported formats — MP4, WebM, Ogg, and HLS/DASH streams;
contentUrlorembedUrlmust resolve publicly - Video sitemap — provide
<video:video>with<video:title>,<video:description>,<video:thumbnail_loc>, and<video:content_loc>or<video:player_loc> - On-page transcript — publish full transcript as crawlable HTML text on the watch page for indexability and AI retrieval
- VideoObject schema — required:
name,description,thumbnailUrl,uploadDate, pluscontentUrlorembedUrl; recommended:duration,expires - Key moments (Clip) —
Clipmarkup:name,startOffset,endOffset,url(with timestamp fragment); enables jump-to links in search results - Key moments (SeekToAction) — alternative to Clip for dynamic players: define
potentialActionwithtargetURL template containing{seek_to}placeholder - Live badge — add
BroadcastEventwithisLiveBroadcast: true,startDate,endDate; use Indexing API to notify Google at go-live and wrap-up - Preview controls —
max-video-previewmeta robots directive controls snippet preview length in seconds;-1= no limit,0= still image only - Expiration and removal — set
expiresin VideoObject and sitemap for time-limited content; expired videos are dropped from Video search - Regional restrictions — use
regionsAllowedin VideoObject to specify ISO 3166-1 country codes where the video is available - GSC monitoring — check Video Indexing report for coverage issues; common errors: thumbnail can't be fetched, video URL not accessible to Googlebot
Ecommerce and Merchant SEO
Ecommerce SEO Fundamentals
- Site architecture — flat hierarchy: Home → Category → Subcategory → Product; every product reachable within 3 clicks from homepage
- Unique product URLs — each product gets one indexable URL; avoid session IDs, tracking parameters, or filter strings in canonical URLs
- Variant canonicalization — canonical all color/size variants to a single parent URL, or give each variant its own URL if content differs meaningfully
- Product + Offer schema — every PDP needs
Productwithname,image,description, and nestedOfferwithprice,priceCurrency,availability - Feed alignment — on-page title, price, availability, and identifiers must match Merchant Center feed exactly; mismatches cause disapprovals
- Product identifiers — include at least one of GTIN, MPN, or SKU + Brand in both schema and feed; GTIN preferred for Shopping eligibility
- Return and shipping markup — add
MerchantReturnPolicyandOfferShippingDetailsto schema; required for free listing rich results - Discontinued products — keep page live with "unavailable" messaging and
availability: Discontinuedin schema, or 301 to replacement product
Category Page SEO
- Unique title + H1 — each category gets a distinct
<title>and<h1>matching the category name; avoid boilerplate "Products | Brand" across all pages - Category description — place brief, unique copy above or below the product grid; avoid duplicate boilerplate across categories; helps differentiate thin listing pages
- Crawlable pagination — use
<a href>links to page 2, 3, etc.; infinite scroll and "Load More" must render paginated<a>links in HTML for crawlers - Faceted navigation controls — canonical all filtered/sorted URLs to the base category URL;
noindexorDisallowlow-value filter combinations (e.g., color+size+sort) - Internal linking — link from category pages to top products, subcategories, and related categories; link from product pages back to their parent category
- BreadcrumbList schema — implement on every category page with
itemListElementshowing full path (Home → Department → Category) - ItemList schema (optional) — mark up the product grid as
ItemListwithListItementries; not required for rich results but can aid structured understanding
Product Detail Page SEO
- Unique title + H1 — include product name, key differentiator (brand, model), and optionally category; avoid identical titles across variants
- Unique description — write original product copy; do not reuse manufacturer descriptions verbatim (duplicate content across retailers)
- Product + Offer schema — required fields:
name,image,description,offers.price,offers.priceCurrency,offers.availability; addsku,gtin,brand - Canonical to self — each PDP canonicals to its own URL, not to a category page; parameterized variants canonical to the parent product URL
- Variant handling — option A: separate URLs per variant with canonical to parent (better for unique variant content); option B: single URL with JS switcher (simpler, but variants don't rank individually)
- Images + alt text — multiple high-quality product images with descriptive alt text; use
<img>in HTML, not CSS backgrounds; include image sitemap entries - Reviews and ratings — mark up with
RevieworAggregateRatingonly if reviews are visible on the page; star ratings may appear in search results - Out-of-stock handling — keep page live (200), set
availability: OutOfStockin schema, show "currently unavailable" messaging; do not 404 temporarily out-of-stock products
Brand, Collection, and Vendor Landing Pages
- Unique brand content — each brand page needs original copy (brand story, key product lines, differentiators); a filtered product grid alone is a thin page
- Internal linking — link brand pages from product pages ("More from [Brand]"), navigation, and category pages; link from brand page to top products and categories
- Self-canonical — each brand/vendor page canonicals to itself; avoid canonicalizing to a parent category even if products overlap
- Avoid duplicate brand pages — if brand page content is identical to a filtered category view, consolidate to one URL; use
noindexon the duplicate - Entity signals — add
OrganizationorBrandschema withsameAslinking to the brand's official site and social profiles; reinforces entity recognition - Seasonal and collection pages — keep seasonal pages live year-round (update copy for off-season) or 301 to an evergreen parent; do not repeatedly create and delete seasonal URLs
Internal Site Search and Filters
- Block search URLs from index — add
<meta name="robots" content="noindex">to internal search result pages, or block the/searchpath via robots.txt - Exclude from sitemaps — never include internal search URLs (e.g.,
?q=keyword) in XML sitemaps; they waste crawl budget and create thin indexed pages - Parameter handling — normalize query parameters; canonical filtered/sorted URLs to the unfiltered base if content overlap is high; strip tracking parameters
- Zero-results pages —
noindexpages that return no results; optionally serve suggested products or categories to retain users - Mine search data — analyze internal search queries for keyword and content gap insights; high-volume searches with zero results signal missing content or product opportunities
Editorial Commerce Content
- Buying guides — link guides to relevant product and category pages; include comparison tables, pros/cons, and use-case recommendations; must add value beyond product listings
- Comparison pages — use structured tables with consistent attributes; consider
ItemListorProductschema for compared items; link each product to its PDP - Editorial signals — include visible author, publish date, and methodology; maintains E-E-A-T signals and distinguishes editorial from pure commerce pages
- Hub-to-revenue linking — internal link from editorial hubs (guides, reviews, "best of") to product and category pages, and vice versa; both directions build topical authority
- Avoid thin "best of" pages — pages that just list products without analysis, testing methodology, or original insight risk being flagged as thin or unhelpful content
- Affiliate content governance — if using affiliate links, add real editorial value; disclose affiliate relationships; do not let affiliate requirements override on-page SEO best practices
Product Feed References
See Tools & Resources: Product Feeds for comprehensive platform-specific feed documentation.
Search and Shopping Ads
On-Page and Open Standards
Research and Content Optimization Tools
Research and Optimization Platforms
- See Tools & Resources for the full list of keyword research, rank tracking, backlink analysis, content optimization, and local SEO platforms
Quick Actions
Schema Implementation
- Identify page type and intent
- Choose appropriate schema type
- Map visible content to schema properties
- Implement JSON-LD in
<head> - Test with Rich Results Test
- Validate with Schema Validator
- Monitor in GSC Rich Results report
Product Page Optimization
- Unique title and H1
- Clear product description (no duplicates)
- Product schema with all required fields
- High-quality images with alt text
- Reviews and ratings if available
- Clear pricing and availability
- Related product internal links
Featured Snippet Optimization
- Target question-based queries
- Use question as H2 or H3
- Answer directly in 40-60 words
- Use bullet lists or tables
- Provide additional context below
- Include relevant images
- Monitor GSC for snippet appearance