Video + Article Stack
Article pages with embedded video, FAQs, and breadcrumb context. Great for tutorials or feature content with video.
When to use this stack
- Articles that embed a primary video
- Tutorials and explainers where video and text both matter
- Pages where FAQs help with follow-up questions
What is included
Primary article entity with headline, description, dates, author.
Embedded video metadata (thumbnail, duration, upload date, content URL).
Answer follow-up questions or troubleshooting related to the video/article.
Navigation context.
Properties across the bundle
Nested properties keep their parent path, such as offers.priceCurrency. Only publish values that match visible page content.
Required properties
- author.name
- contentUrl
- datePublished
- description
- headline
- itemListElement[].name
- mainEntity[].@type=Question
- mainEntity[].acceptedAnswer.text
- name
- thumbnailUrl
- uploadDate
- url
Recommended properties
- dateModified
- duration
- embedUrl
- image
- itemListElement[].item
- mainEntityOfPage
- mainEntity[].acceptedAnswer.text
- mainEntity[].author.name
- mainEntity[].name
- publisher.logo
- publisher.name
Combined JSON-LD
Paste this as one script tag, then replace every example value with data from the live page.
[
{
"@context": "https://schema.org",
"@type": "Article",
"@id": "https://www.example.com/tutorials/video-guide#article",
"headline": "How to Build a Video Landing Page",
"description": "Step-by-step guide to embed video, add transcripts, and optimize for SEO.",
"datePublished": "2026-02-18",
"dateModified": "2026-02-18",
"url": "https://www.example.com/tutorials/video-guide",
"image": [
"https://www.example.com/images/video-guide-hero.webp"
],
"author": {
"@type": "Person",
"name": "Riley Shaw"
},
"publisher": {
"@type": "Organization",
"name": "Example Media",
"logo": {
"@type": "ImageObject",
"url": "https://www.example.com/images/logo-120x60.png"
}
}
},
{
"@context": "https://schema.org",
"@type": "VideoObject",
"@id": "https://www.example.com/tutorials/video-guide#video",
"name": "How to Build a Video Landing Page",
"description": "Embed video, add transcripts, and optimize for SEO.",
"thumbnailUrl": [
"https://www.example.com/images/video-guide-thumb.webp"
],
"uploadDate": "2026-02-18T12:00:00Z",
"duration": "PT8M21S",
"contentUrl": "https://cdn.example.com/videos/video-guide.mp4",
"embedUrl": "https://player.example.com/embed/video-guide"
},
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do I need transcripts?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Transcripts improve accessibility and can help search engines understand the video content."
}
},
{
"@type": "Question",
"name": "Can I host the video on my CDN?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Ensure the contentUrl is stable and accessible, and use embedUrl if you provide an embeddable player."
}
}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
{ "@type": "ListItem", "position": 2, "name": "Tutorials", "item": "https://www.example.com/tutorials" },
{ "@type": "ListItem", "position": 3, "name": "Video Landing Page", "item": "https://www.example.com/tutorials/video-guide" }
]
}
]Implement and verify
- 01
Start with the live page
Confirm titles, prices, availability, policies, and visible FAQ content before generating markup.
- 02
Add one JSON-LD script
Use the combined example as a template in the document head or before the closing body tag.
- 03
Complete regional details
Fill shipping destinations and timing for every region the page actually serves.
- 04
Link the return policy
Use a stable MerchantReturnPolicy URL and keep its terms synchronized with the page.
- 05
Match visible answers
Add only FAQs that users can read on the same page, with identical answers.
- 06
Validate after changes
Run Rich Results Test after implementation and whenever price, availability, or policy data changes.
Common errors and fixes
- Missing currency or availability
Use ISO currency codes and complete schema.org availability URLs in Offer data.
- Incomplete shipping details
Include shippingDestination.addressCountry and deliveryTime.transitTime with units.
- Return policy is not connected
Reference MerchantReturnPolicy from the Offer and provide a stable public policy URL.
- FAQ answers differ from the page
Keep structured FAQ answers identical to visible answers.
Stack FAQs
Can I use NewsArticle instead of Article?
Use Article for general tutorials; use NewsArticle for news/publisher content that meets news criteria.
What if I have multiple videos?
Include multiple VideoObjects if they’re primary. Keep the Article as the main entity for the page.