seo + press V2
This commit is contained in:
@@ -5,7 +5,8 @@ import { Video, Shield, Zap, Smartphone, Users, Download, Share2 } from 'lucide-
|
||||
import { QRCodeSVG } from 'qrcode.react';
|
||||
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
||||
import { RelatedTools } from '@/components/marketing/RelatedTools';
|
||||
import { generateSoftwareAppSchema, generateFaqSchema } from '@/lib/schema-utils';
|
||||
import sanitizeHtml from 'sanitize-html';
|
||||
import { generateSoftwareAppSchema } from '@/lib/schema-utils';
|
||||
|
||||
// SEO Optimized Metadata
|
||||
export const metadata: Metadata = {
|
||||
@@ -35,6 +36,32 @@ export const metadata: Metadata = {
|
||||
},
|
||||
};
|
||||
|
||||
// Single source of truth for FAQs: rendered on the page AND emitted as
|
||||
// FAQPage schema. Google requires every marked-up Q&A to be visible to the
|
||||
// user on the source page, so never add one without the other.
|
||||
const faqItems = [
|
||||
{
|
||||
question: 'What happens when someone scans the QR code?',
|
||||
answer: 'The Zoom app opens directly with your meeting ID and passcode pre-filled. They just tap "Join" to enter the meeting.',
|
||||
},
|
||||
{
|
||||
question: 'Does it work for recurring meetings?',
|
||||
answer: 'Yes! If your recurring meeting uses a fixed Personal Meeting ID (PMI), the QR code will work for all sessions.',
|
||||
},
|
||||
{
|
||||
question: 'What if the meeting ID changes?',
|
||||
answer: 'Static QR codes cannot be updated. You\\\'ll need to generate a new code. For changeable meetings, consider our Dynamic QR Codes.',
|
||||
},
|
||||
{
|
||||
question: 'Does it work on all devices?',
|
||||
answer: 'Yes. The QR code works on iOS, Android, and can also open Zoom on desktop computers if the Zoom app is installed.',
|
||||
},
|
||||
{
|
||||
question: 'Does it work without the Zoom app installed?',
|
||||
answer: 'If \'Open Zoom app directly\' is unchecked, the QR links to join.zoom.us which works in any browser.',
|
||||
},
|
||||
];
|
||||
|
||||
// JSON-LD Structured Data
|
||||
const jsonLd = {
|
||||
'@context': 'https://schema.org',
|
||||
@@ -77,24 +104,18 @@ const jsonLd = {
|
||||
],
|
||||
totalTime: 'PT30S',
|
||||
},
|
||||
generateFaqSchema({
|
||||
'What happens when someone scans the QR code?': {
|
||||
question: 'What happens when someone scans the QR code?',
|
||||
answer: 'The Zoom app opens directly with your meeting ID and passcode pre-filled. They just tap "Join" to enter the meeting.',
|
||||
},
|
||||
'Does it work for recurring meetings?': {
|
||||
question: 'Does it work for recurring meetings?',
|
||||
answer: 'Yes! If your recurring meeting uses a fixed Personal Meeting ID (PMI), the QR code will work for all sessions.',
|
||||
},
|
||||
'What if the meeting ID changes?': {
|
||||
question: 'What if the meeting ID changes?',
|
||||
answer: 'Static QR codes cannot be updated. You\'ll need to generate a new code. For changeable meetings, consider our Dynamic QR Codes.',
|
||||
},
|
||||
'Does it work on all devices?': {
|
||||
question: 'Does it work on all devices?',
|
||||
answer: 'Yes. The QR code works on iOS, Android, and can also open Zoom on desktop computers if the Zoom app is installed.',
|
||||
},
|
||||
}),
|
||||
{
|
||||
'@type': 'FAQPage',
|
||||
'@id': 'https://www.qrmaster.net/tools/zoom-qr-code#faq',
|
||||
mainEntity: faqItems.map((item) => ({
|
||||
'@type': 'Question',
|
||||
name: item.question,
|
||||
acceptedAnswer: {
|
||||
'@type': 'Answer',
|
||||
text: item.answer.replace(/<[^>]+>/g, ''),
|
||||
},
|
||||
})),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -264,22 +285,13 @@ export default function ZoomQRCodePage() {
|
||||
</p>
|
||||
|
||||
<div className="space-y-4">
|
||||
<FaqItem
|
||||
question="What happens when someone scans the QR code?"
|
||||
answer="The Zoom app opens directly with your meeting ID and passcode pre-filled. They just tap 'Join' to enter the meeting."
|
||||
/>
|
||||
<FaqItem
|
||||
question="Does it work for recurring meetings?"
|
||||
answer="Yes! If your recurring meeting uses a fixed Personal Meeting ID (PMI), the QR code will work for all sessions."
|
||||
/>
|
||||
<FaqItem
|
||||
question="What if the meeting ID changes?"
|
||||
answer="Static QR codes cannot be updated. You'll need to generate a new code. For changeable meetings, consider our Dynamic QR Codes."
|
||||
/>
|
||||
<FaqItem
|
||||
question="Does it work without the Zoom app installed?"
|
||||
answer="If 'Open Zoom app directly' is unchecked, the QR links to join.zoom.us which works in any browser."
|
||||
/>
|
||||
{faqItems.map((item) => (
|
||||
<FaqItem
|
||||
key={item.question}
|
||||
question={item.question}
|
||||
answer={item.answer}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -300,9 +312,14 @@ function FaqItem({ question, answer }: { question: string; answer: string }) {
|
||||
</svg>
|
||||
</span>
|
||||
</summary>
|
||||
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm">
|
||||
{answer}
|
||||
</div>
|
||||
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm [&_a]:text-indigo-600 [&_a]:underline"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: sanitizeHtml(answer, {
|
||||
allowedTags: ['p', 'strong', 'em', 'ul', 'ol', 'li', 'a', 'br', 'code'],
|
||||
allowedAttributes: { a: ['href'] },
|
||||
}),
|
||||
}}
|
||||
/>
|
||||
</details>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user