seo + press
This commit is contained in:
16
reports/seo-improver/2026-07-29/rankings.csv
Normal file
16
reports/seo-improver/2026-07-29/rankings.csv
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
keyword,location,device,position,previous_position,delta,ranking_url,search_volume,serp_features,status
|
||||||
|
dynamic qr code,US,desktop,38.14,,,https://www.qrmaster.net/dynamic-qr-code-generator,,,new
|
||||||
|
dynamic qr code generator,US,desktop,41.37,,,https://www.qrmaster.net/dynamic-qr-code-generator,,,new
|
||||||
|
instagram qr code generator,US,desktop,20.33,,,https://www.qrmaster.net/tools/instagram-qr-code,,,new
|
||||||
|
qr mastery,US,desktop,5.06,,,https://www.qrmaster.net/learn,,,new
|
||||||
|
vcard qr code generator,US,desktop,23.49,,,https://www.qrmaster.net/tools/vcard-qr-code,,,new
|
||||||
|
qr code tracking,US,desktop,35.42,,,https://www.qrmaster.net/qr-code-tracking,,,new
|
||||||
|
google review qr code generator,US,desktop,23.71,,,https://www.qrmaster.net/tools/google-review-qr-code,,,new
|
||||||
|
create dynamic qr code,US,desktop,36.73,,,https://www.qrmaster.net/dynamic-qr-code-generator,,,new
|
||||||
|
usdt qr code generator,US,desktop,9.79,,,https://www.qrmaster.net/tools/crypto-qr-code,,,new
|
||||||
|
dynamic qr codes,US,desktop,40.31,,,https://www.qrmaster.net/dynamic-qr-code-generator,,,new
|
||||||
|
tracking qr code,US,desktop,22.43,,,https://www.qrmaster.net/qr-code-tracking,,,new
|
||||||
|
facebook qr code generator,US,desktop,41.9,,,https://www.qrmaster.net/tools/facebook-qr-code,,,new
|
||||||
|
how to track qr code,US,desktop,42.45,,,https://www.qrmaster.net/qr-code-tracking,,,new
|
||||||
|
qr code feedback,US,desktop,53.84,,,https://www.qrmaster.net/use-cases/feedback-qr-codes,,,new
|
||||||
|
qr code generator instagram,US,desktop,19.21,,,https://www.qrmaster.net/tools/instagram-qr-code,,,new
|
||||||
|
57
reports/seo-improver/2026-07-29/report.md
Normal file
57
reports/seo-improver/2026-07-29/report.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# QRMaster SEO Improver Report – 2026-07-29
|
||||||
|
|
||||||
|
**Zeitraum:** 2026-06-30 bis 2026-07-27
|
||||||
|
**Modus:** report-only; keine Live-Dateien geändert
|
||||||
|
|
||||||
|
## Executive Summary
|
||||||
|
|
||||||
|
- Search Console lieferte 1310 Query-/Seiten-Zeilen.
|
||||||
|
- 15 priorisierte Chancen wurden identifiziert.
|
||||||
|
- Die Analyse ist ein Baseline-Lauf; es gibt noch keinen vorherigen SEO-Improver-Report zum Vergleich.
|
||||||
|
|
||||||
|
## Priorisierte Chancen
|
||||||
|
|
||||||
|
| Typ | Suchanfrage | Position | Impressions | CTR | Zielseite |
|
||||||
|
|---|---|---:|---:|---:|---|
|
||||||
|
| high-impressions-low-ctr | dynamic qr code | 38.1 | 202 | 0.00% | https://www.qrmaster.net/dynamic-qr-code-generator |
|
||||||
|
| high-impressions-low-ctr | dynamic qr code generator | 41.4 | 151 | 0.00% | https://www.qrmaster.net/dynamic-qr-code-generator |
|
||||||
|
| high-impressions-low-ctr | instagram qr code generator | 20.3 | 126 | 0.00% | https://www.qrmaster.net/tools/instagram-qr-code |
|
||||||
|
| striking-distance | qr mastery | 5.1 | 111 | 3.60% | https://www.qrmaster.net/learn |
|
||||||
|
| high-impressions-low-ctr | vcard qr code generator | 23.5 | 90 | 0.00% | https://www.qrmaster.net/tools/vcard-qr-code |
|
||||||
|
| high-impressions-low-ctr | qr code tracking | 35.4 | 81 | 0.00% | https://www.qrmaster.net/qr-code-tracking |
|
||||||
|
| high-impressions-low-ctr | google review qr code generator | 23.7 | 79 | 0.00% | https://www.qrmaster.net/tools/google-review-qr-code |
|
||||||
|
| high-impressions-low-ctr | create dynamic qr code | 36.7 | 74 | 0.00% | https://www.qrmaster.net/dynamic-qr-code-generator |
|
||||||
|
| striking-distance | usdt qr code generator | 9.8 | 72 | 2.78% | https://www.qrmaster.net/tools/crypto-qr-code |
|
||||||
|
| high-impressions-low-ctr | dynamic qr codes | 40.3 | 71 | 0.00% | https://www.qrmaster.net/dynamic-qr-code-generator |
|
||||||
|
| high-impressions-low-ctr | tracking qr code | 22.4 | 69 | 0.00% | https://www.qrmaster.net/qr-code-tracking |
|
||||||
|
| high-impressions-low-ctr | facebook qr code generator | 41.9 | 67 | 0.00% | https://www.qrmaster.net/tools/facebook-qr-code |
|
||||||
|
| high-impressions-low-ctr | how to track qr code | 42.4 | 67 | 0.00% | https://www.qrmaster.net/qr-code-tracking |
|
||||||
|
| high-impressions-low-ctr | qr code feedback | 53.8 | 63 | 0.00% | https://www.qrmaster.net/use-cases/feedback-qr-codes |
|
||||||
|
| striking-distance | qr code generator instagram | 19.2 | 62 | 0.00% | https://www.qrmaster.net/tools/instagram-qr-code |
|
||||||
|
|
||||||
|
## Empfohlene erste Maßnahmen
|
||||||
|
|
||||||
|
1. Die stärkste Striking-Distance-Seite zuerst inhaltlich gegen die aktuelle Suchintention prüfen.
|
||||||
|
2. Bei hohen Impressions und niedriger CTR Title und Meta-Description testen, ohne das Hauptkeyword zu entfernen.
|
||||||
|
3. Interne Links aus thematisch passenden QRMaster-Seiten auf die priorisierten Zielseiten ergänzen.
|
||||||
|
4. Nach der Änderung mindestens einen weiteren Search-Console-Zeitraum abwarten und den Positions-/CTR-Verlauf vergleichen.
|
||||||
|
|
||||||
|
## DataForSEO-Wettbewerbsabgleich
|
||||||
|
|
||||||
|
| Keyword | Rang | Titel | URL |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| dynamic qr code | 2 | Dynamic QR Codes - Canva Apps | https://www.canva.com/apps/AAFPSH_pOmY/dynamic-qr-codes |
|
||||||
|
| dynamic qr code | 3 | QR Code Generator / Create Free Dynamic QR Codes | https://hovercode.com/ |
|
||||||
|
| dynamic qr code | 4 | Looking for a good dynamic QR code generator that doesn' ... | https://www.reddit.com/r/graphic_design/comments/18hi74x/looking_for_a_good_dynamic_qr_code_generator_that/ |
|
||||||
|
| dynamic qr code | 6 | What is a dynamic QR code? | https://www.scantrust.com/what-is-a-dynamic-qr-code/ |
|
||||||
|
| dynamic qr code | 7 | QR.io: QR Code Generator / Create QR Codes | https://qr.io/ |
|
||||||
|
| dynamic qr code | 8 | Best dynamic QR code generator online • QRCodeKIT | https://qrcodekit.com/ |
|
||||||
|
| dynamic qr code | 9 | Turn Your URL Into A Dynamic QR Code With QR ... | https://www.qr-code-generator.com/solutions/dynamic-url-qr-code/ |
|
||||||
|
| dynamic qr code | 10 | How to Create a Dynamic QR Code / Track QR Code Scans | https://www.youtube.com/watch?v=xTdDKSie9c0 |
|
||||||
|
| dynamic qr code | 11 | Create Dynamic QR Code With Free Online Generator | https://me-qr.com/page/features/dynamic-qr-codes?srsltid=AfmBOoqMr1qvHu8z5wzjDg1U9HBE3P8LK_LFxob7b-xI7_dHYz3Jj4Km |
|
||||||
|
|
||||||
|
## Blocker und Hinweise
|
||||||
|
|
||||||
|
- Dieser Lauf hat keine Website-Dateien, GitHub-Branches oder Live-Konfigurationen verändert.
|
||||||
|
- Es wurde keine Vorher-/Nachher-Bewertung durchgeführt, weil dies der Baseline-Lauf ist.
|
||||||
|
- Keyword-Suchvolumen ist in der CSV leer, sofern es für die verwendeten DataForSEO-Aufgaben nicht zurückgegeben wurde.
|
||||||
@@ -20,6 +20,20 @@ export const metadata: Metadata = {
|
|||||||
|
|
||||||
export default function PressPage() {
|
export default function PressPage() {
|
||||||
const pressReleases = [
|
const pressReleases = [
|
||||||
|
{
|
||||||
|
id: "printed-qr-destinations-2026",
|
||||||
|
title: "QR Master Helps Businesses Update Printed QR Destinations and Track Scans",
|
||||||
|
date: "July 29, 2026",
|
||||||
|
excerpt: "QR Master explains how businesses can keep printed QR codes useful after launch by updating dynamic destinations, reviewing scan activity, and creating QR codes individually or in bulk for physical campaigns.",
|
||||||
|
bullets: [
|
||||||
|
"Update a dynamic QR destination without replacing the printed code",
|
||||||
|
"Review scan activity by time, device, and location",
|
||||||
|
"Create QR codes in bulk from Excel and CSV data",
|
||||||
|
"Start with three active dynamic QR codes and unlimited static codes"
|
||||||
|
],
|
||||||
|
link: "https://news.prfree.org/@timoknh/qr-master-helps-businesses-update-printed-qr-destinations-and-track-scans-czxf0ffn5pwj",
|
||||||
|
source: "PRFree"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "global-launch-2026",
|
id: "global-launch-2026",
|
||||||
title: "qrmaster.net Launches Free, Professional QR Code Generator for Global Users",
|
title: "qrmaster.net Launches Free, Professional QR Code Generator for Global Users",
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import { Facebook, Shield, Zap, Smartphone, ThumbsUp, Users, Download, Share2 }
|
|||||||
import { QRCodeSVG } from 'qrcode.react';
|
import { QRCodeSVG } from 'qrcode.react';
|
||||||
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
||||||
import { RelatedTools } from '@/components/marketing/RelatedTools';
|
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
|
// SEO Optimized Metadata
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
@@ -35,6 +36,48 @@ 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: 'Does it open the Facebook app?',
|
||||||
|
answer: 'Yes! On most mobile devices, standard Facebook links are automatically detected and opened in the Facebook app if it is installed.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I link to a specific post?',
|
||||||
|
answer: 'Absolutely. Just paste the direct link to the post (click the timestamp on the post to get the link).',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Does it work for Facebook Events?',
|
||||||
|
answer: 'Yes. Simply copy the full URL of your Facebook Event and paste it into the generator.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Is it free?',
|
||||||
|
answer: 'Yes, this generator is 100% free to use for personal or business purposes.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I track scans?',
|
||||||
|
answer: 'This static QR code does not include analytics. To track how many people scan your code, you should use our Dynamic QR Code service.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Will this work for Facebook Groups?',
|
||||||
|
answer: 'Yes! You can paste the link to your Facebook Group, and the QR code will direcr users to join.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'What if the user doesn\'t have the Facebook app?',
|
||||||
|
answer: 'The link will open in their mobile web browser instead, so they can still see your page and log in.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I customize the color?',
|
||||||
|
answer: 'Yes. While Facebook Blue is recommended for recognition, you can choose any color to match your brand.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Is the QR code permanent?',
|
||||||
|
answer: 'Yes. As long as your Facebook URL doesn\'t change, this QR code will work forever.',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
// JSON-LD Structured Data
|
// JSON-LD Structured Data
|
||||||
const jsonLd = {
|
const jsonLd = {
|
||||||
'@context': 'https://schema.org',
|
'@context': 'https://schema.org',
|
||||||
@@ -82,28 +125,18 @@ const jsonLd = {
|
|||||||
],
|
],
|
||||||
totalTime: 'PT30S',
|
totalTime: 'PT30S',
|
||||||
},
|
},
|
||||||
generateFaqSchema({
|
{
|
||||||
'Does it open the Facebook app?': {
|
'@type': 'FAQPage',
|
||||||
question: 'Does it open the Facebook app?',
|
'@id': 'https://www.qrmaster.net/tools/facebook-qr-code#faq',
|
||||||
answer: 'Yes! On most mobile devices, standard Facebook links are automatically detected and opened in the Facebook app if it is installed.',
|
mainEntity: faqItems.map((item) => ({
|
||||||
},
|
'@type': 'Question',
|
||||||
'Can I link to a specific post?': {
|
name: item.question,
|
||||||
question: 'Can I link to a specific post?',
|
acceptedAnswer: {
|
||||||
answer: 'Absolutely. Just paste the direct link to the post (click the timestamp on the post to get the link).',
|
'@type': 'Answer',
|
||||||
},
|
text: item.answer.replace(/<[^>]+>/g, ''),
|
||||||
'Does it work for Facebook Events?': {
|
},
|
||||||
question: 'Does it work for Facebook Events?',
|
})),
|
||||||
answer: 'Yes. Simply copy the full URL of your Facebook Event and paste it into the generator.',
|
},
|
||||||
},
|
|
||||||
'Is it free?': {
|
|
||||||
question: 'Is it free?',
|
|
||||||
answer: 'Yes, this generator is 100% free to use for personal or business purposes.',
|
|
||||||
},
|
|
||||||
'Can I track scans?': {
|
|
||||||
question: 'Can I track scans?',
|
|
||||||
answer: 'This static QR code does not include analytics. To track how many people scan your code, you should use our Dynamic QR Code service.',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -327,26 +360,13 @@ export default function FacebookQRCodePage() {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
<FaqItem
|
{faqItems.map((item) => (
|
||||||
question="Will this work for Facebook Groups?"
|
<FaqItem
|
||||||
answer="Yes! You can paste the link to your Facebook Group, and the QR code will direcr users to join."
|
key={item.question}
|
||||||
/>
|
question={item.question}
|
||||||
<FaqItem
|
answer={item.answer}
|
||||||
question="What if the user doesn't have the Facebook app?"
|
/>
|
||||||
answer="The link will open in their mobile web browser instead, so they can still see your page and log in."
|
))}
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Can I customize the color?"
|
|
||||||
answer="Yes. While Facebook Blue is recommended for recognition, you can choose any color to match your brand."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Is the QR code permanent?"
|
|
||||||
answer="Yes. As long as your Facebook URL doesn't change, this QR code will work forever."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Does it work for Facebook Events?"
|
|
||||||
answer="Yes. Simply copy the full URL of your Facebook Event and paste it into the generator."
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -367,9 +387,14 @@ function FaqItem({ question, answer }: { question: string; answer: string }) {
|
|||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
</summary>
|
</summary>
|
||||||
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm">
|
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm [&_a]:text-indigo-600 [&_a]:underline"
|
||||||
{answer}
|
dangerouslySetInnerHTML={{
|
||||||
</div>
|
__html: sanitizeHtml(answer, {
|
||||||
|
allowedTags: ['p', 'strong', 'em', 'ul', 'ol', 'li', 'a', 'br', 'code'],
|
||||||
|
allowedAttributes: { a: ['href'] },
|
||||||
|
}),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</details>
|
</details>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ import { QRCodeSVG } from 'qrcode.react';
|
|||||||
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
||||||
import { RelatedTools } from '@/components/marketing/RelatedTools';
|
import { RelatedTools } from '@/components/marketing/RelatedTools';
|
||||||
import { GrowthLinksSection } from '@/components/marketing/GrowthLinksSection';
|
import { GrowthLinksSection } from '@/components/marketing/GrowthLinksSection';
|
||||||
import { generateSoftwareAppSchema, generateFaqSchema } from '@/lib/schema-utils';
|
import sanitizeHtml from 'sanitize-html';
|
||||||
|
import { generateSoftwareAppSchema } from '@/lib/schema-utils';
|
||||||
|
|
||||||
// SEO Optimized Metadata
|
// SEO Optimized Metadata
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
@@ -40,6 +41,62 @@ export const metadata: Metadata = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Single source of truth for FAQs: rendered on the page AND emitted as FAQPage
|
||||||
|
// schema. Never add a question to one without the other — Google requires every
|
||||||
|
// marked-up Q&A to be visible to the user on the source page.
|
||||||
|
const faqItems = [
|
||||||
|
{
|
||||||
|
question: 'Is this an Instagram Nametag?',
|
||||||
|
answer:
|
||||||
|
'It works similarly. Instagram has its own internal "Nametag" / profile QR feature, but that code lives inside the app and cannot be restyled or measured. This generator creates a standard QR code you can brand with your own colors and logo, print at any size, and — on a Dynamic plan — point somewhere else later without reprinting.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Does it open the Instagram app?',
|
||||||
|
answer:
|
||||||
|
'Yes. Scanned on a mobile device with Instagram installed, the code deep-links straight to the profile in the app rather than the mobile website.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I link to a specific photo or reel?',
|
||||||
|
answer:
|
||||||
|
'Yes. Instead of your username, paste the full link to the individual post or reel and the QR code will open that exact piece of content.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I link to a Story?',
|
||||||
|
answer:
|
||||||
|
'You can, but Stories expire after 24 hours unless you save them as a Highlight. For anything printed, link to a Highlight or your main profile instead so the code does not go stale.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Does this work for private accounts?',
|
||||||
|
answer:
|
||||||
|
'Yes. The code still resolves to your profile. Visitors will see your profile page and have to send a follow request, exactly as they would from a normal link.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I customize the frame?',
|
||||||
|
answer:
|
||||||
|
'Yes. Several frame options are available, including "Follow Us" and "Scan Me" call-to-action frames, which typically lift scan rates on printed material compared to a bare code.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Does it expire?',
|
||||||
|
answer:
|
||||||
|
'No. This static code keeps working as long as your Instagram username stays the same. If you ever rebrand and change your handle, a printed static code breaks — that is the main reason to use a dynamic code instead.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Is it free?',
|
||||||
|
answer:
|
||||||
|
'Yes. Generating and downloading this Instagram QR code is completely free, with no signup and no watermark.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I track scans?',
|
||||||
|
answer:
|
||||||
|
'Not with this static code — a static QR encodes your profile URL directly, so nothing routes through a server that could count the scan. To measure scans you need a <a href="/dynamic-qr-code-generator">dynamic QR code</a>, which redirects through a short link and records every scan. See <a href="/qr-code-tracking">QR code tracking</a> for what gets captured: scan counts over time, device mix, and location context. The free plan includes 3 dynamic codes.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'What size should I print an Instagram QR code?',
|
||||||
|
answer:
|
||||||
|
'A practical rule is a 10:1 scan-distance-to-size ratio: a code scanned from 1 m away should be at least 10 cm wide. For a table tent or business card, 2–3 cm is usually enough; for a shop window or poster read from across a room, go to 15 cm or larger and keep a clear quiet zone around the code.',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
// JSON-LD Structured Data
|
// JSON-LD Structured Data
|
||||||
const jsonLd = {
|
const jsonLd = {
|
||||||
'@context': 'https://schema.org',
|
'@context': 'https://schema.org',
|
||||||
@@ -94,28 +151,20 @@ const jsonLd = {
|
|||||||
],
|
],
|
||||||
totalTime: 'PT30S',
|
totalTime: 'PT30S',
|
||||||
},
|
},
|
||||||
generateFaqSchema({
|
{
|
||||||
'Is this an Instagram Nametag?': {
|
'@type': 'FAQPage',
|
||||||
question: 'Is this an Instagram Nametag?',
|
'@id': 'https://www.qrmaster.net/tools/instagram-qr-code#faq',
|
||||||
answer: 'It works similarly! While Instagram has its own internal "Nametag" or "QR Code" feature, our generator allows you to create a standard QR code that is more customizable and can be tracked with our Dynamic plans.',
|
mainEntity: faqItems.map((item) => ({
|
||||||
},
|
'@type': 'Question',
|
||||||
'Does it open the Instagram app?': {
|
name: item.question,
|
||||||
question: 'Does it open the Instagram app?',
|
acceptedAnswer: {
|
||||||
answer: 'Yes. When scanned on a mobile device with Instagram installed, it will deep-link directly to the profile in the app.',
|
'@type': 'Answer',
|
||||||
},
|
// Strip inline markup so the schema carries the same wording
|
||||||
'Can I link to a specific photo or reel?': {
|
// the user sees, as plain text.
|
||||||
question: 'Can I link to a specific photo or reel?',
|
text: item.answer.replace(/<[^>]+>/g, ''),
|
||||||
answer: 'Yes! Instead of your username, just paste the full link to the specific post or reel.',
|
},
|
||||||
},
|
})),
|
||||||
'Is it free?': {
|
},
|
||||||
question: 'Is it free?',
|
|
||||||
answer: 'Yes, generating this QR code is 100% free.',
|
|
||||||
},
|
|
||||||
'Can I track scans?': {
|
|
||||||
question: 'Can I track scans?',
|
|
||||||
answer: 'Not with this static tool. If you need scan analytics, consider using our Dynamic QR Code solution.',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -388,26 +437,13 @@ export default function InstagramQRCodePage() {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
<FaqItem
|
{faqItems.map((item) => (
|
||||||
question="Does this work for private accounts?"
|
<FaqItem
|
||||||
answer="Yes, the link will take users to your profile. If your account is private, they will still have to request to follow you."
|
key={item.question}
|
||||||
/>
|
question={item.question}
|
||||||
<FaqItem
|
answer={item.answer}
|
||||||
question="Can I link to a Story?"
|
/>
|
||||||
answer="Yes, but Stories expire after 24 hours (unless saved as a Highlight). Linking to a Highlight or your main Profile is usually better for printed materials."
|
))}
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Can I customize the frame?"
|
|
||||||
answer="Yes, we offer several frame options like 'Follow Us' or 'Scan Me' to encourage action."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Does it expire?"
|
|
||||||
answer="No. The QR code will work as long as your Instagram username remains the same."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Can I track scans?"
|
|
||||||
answer="Not with this static tool. If you need scan analytics, consider using our Dynamic QR Code solution."
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -428,9 +464,15 @@ function FaqItem({ question, answer }: { question: string; answer: string }) {
|
|||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
</summary>
|
</summary>
|
||||||
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm">
|
<div
|
||||||
{answer}
|
className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm [&_a]:text-indigo-600 [&_a]:underline"
|
||||||
</div>
|
dangerouslySetInnerHTML={{
|
||||||
|
__html: sanitizeHtml(answer, {
|
||||||
|
allowedTags: ['p', 'strong', 'em', 'ul', 'ol', 'li', 'a', 'br', 'code'],
|
||||||
|
allowedAttributes: { a: ['href'] },
|
||||||
|
}),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</details>
|
</details>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import { Twitter, Shield, Zap, Smartphone, MessageCircle, UserPlus, Download, Sh
|
|||||||
import { QRCodeSVG } from 'qrcode.react';
|
import { QRCodeSVG } from 'qrcode.react';
|
||||||
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
||||||
import { RelatedTools } from '@/components/marketing/RelatedTools';
|
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
|
// SEO Optimized Metadata
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
@@ -35,6 +36,44 @@ 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: 'Does it work for both Twitter and X?',
|
||||||
|
answer: 'Yes, they are the same platform. The QR code links to x.com, which is the current standard, but works for twitter.com links too.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I link to a specific tweet?',
|
||||||
|
answer: 'Yes! Just paste the full URL of the tweet into the input field instead of your username.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Is it free?',
|
||||||
|
answer: 'Yes, generating this QR code is completely free and requires no signup.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I track scans?',
|
||||||
|
answer: 'This is a static QR code, so tracking is not included. Use our Dynamic QR Code generator for analytics.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'What if I change my handle?',
|
||||||
|
answer: 'If you change your handle, the link in the QR code will break. You will need to generate a new QR code.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Why create a QR code for X?',
|
||||||
|
answer: 'It\'s much faster than telling someone your handle and hoping they spell it right. A scan is instant and error-proof.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Will links to twitter.com still work?',
|
||||||
|
answer: 'Yes, twitter.com links redirect to x.com, so both work perfectly fine.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I change the destination later?',
|
||||||
|
answer: 'No, this is a static QR code. If you change your handle, you will need a new QR code. Our Dynamic QR codes allow you to edit the link anytime.',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
// JSON-LD Structured Data
|
// JSON-LD Structured Data
|
||||||
const jsonLd = {
|
const jsonLd = {
|
||||||
'@context': 'https://schema.org',
|
'@context': 'https://schema.org',
|
||||||
@@ -82,28 +121,18 @@ const jsonLd = {
|
|||||||
],
|
],
|
||||||
totalTime: 'PT30S',
|
totalTime: 'PT30S',
|
||||||
},
|
},
|
||||||
generateFaqSchema({
|
{
|
||||||
'Does it work for both Twitter and X?': {
|
'@type': 'FAQPage',
|
||||||
question: 'Does it work for both Twitter and X?',
|
'@id': 'https://www.qrmaster.net/tools/twitter-qr-code#faq',
|
||||||
answer: 'Yes, they are the same platform. The QR code links to x.com, which is the current standard, but works for twitter.com links too.',
|
mainEntity: faqItems.map((item) => ({
|
||||||
},
|
'@type': 'Question',
|
||||||
'Can I link to a specific tweet?': {
|
name: item.question,
|
||||||
question: 'Can I link to a specific tweet?',
|
acceptedAnswer: {
|
||||||
answer: 'Yes! Just paste the full URL of the tweet into the input field instead of your username.',
|
'@type': 'Answer',
|
||||||
},
|
text: item.answer.replace(/<[^>]+>/g, ''),
|
||||||
'Is it free?': {
|
},
|
||||||
question: 'Is it free?',
|
})),
|
||||||
answer: 'Yes, generating this QR code is completely free and requires no signup.',
|
},
|
||||||
},
|
|
||||||
'Can I track scans?': {
|
|
||||||
question: 'Can I track scans?',
|
|
||||||
answer: 'This is a static QR code, so tracking is not included. Use our Dynamic QR Code generator for analytics.',
|
|
||||||
},
|
|
||||||
'What if I change my handle?': {
|
|
||||||
question: 'What if I change my handle?',
|
|
||||||
answer: 'If you change your handle, the link in the QR code will break. You will need to generate a new QR code.',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -326,26 +355,13 @@ export default function TwitterQRCodePage() {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
<FaqItem
|
{faqItems.map((item) => (
|
||||||
question="Why create a QR code for X?"
|
<FaqItem
|
||||||
answer="It's much faster than telling someone your handle and hoping they spell it right. A scan is instant and error-proof."
|
key={item.question}
|
||||||
/>
|
question={item.question}
|
||||||
<FaqItem
|
answer={item.answer}
|
||||||
question="Will links to twitter.com still work?"
|
/>
|
||||||
answer="Yes, twitter.com links redirect to x.com, so both work perfectly fine."
|
))}
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Can I change the destination later?"
|
|
||||||
answer="No, this is a static QR code. If you change your handle, you will need a new QR code. Our Dynamic QR codes allow you to edit the link anytime."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Can I track scans?"
|
|
||||||
answer="This is a static QR code, so tracking is not included. Use our Dynamic QR Code generator for analytics."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="What if I change my handle?"
|
|
||||||
answer="If you change your handle, the link in the QR code will break. You will need to generate a new QR code."
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -366,9 +382,14 @@ function FaqItem({ question, answer }: { question: string; answer: string }) {
|
|||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
</summary>
|
</summary>
|
||||||
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm">
|
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm [&_a]:text-indigo-600 [&_a]:underline"
|
||||||
{answer}
|
dangerouslySetInnerHTML={{
|
||||||
</div>
|
__html: sanitizeHtml(answer, {
|
||||||
|
allowedTags: ['p', 'strong', 'em', 'ul', 'ol', 'li', 'a', 'br', 'code'],
|
||||||
|
allowedAttributes: { a: ['href'] },
|
||||||
|
}),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</details>
|
</details>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ import { QRCodeSVG } from 'qrcode.react';
|
|||||||
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
import { ToolBreadcrumb } from '@/components/seo/BreadcrumbSchema';
|
||||||
import { RelatedTools } from '@/components/marketing/RelatedTools';
|
import { RelatedTools } from '@/components/marketing/RelatedTools';
|
||||||
import { GrowthLinksSection } from '@/components/marketing/GrowthLinksSection';
|
import { GrowthLinksSection } from '@/components/marketing/GrowthLinksSection';
|
||||||
import { generateSoftwareAppSchema, generateFaqSchema } from '@/lib/schema-utils';
|
import sanitizeHtml from 'sanitize-html';
|
||||||
|
import { generateSoftwareAppSchema } from '@/lib/schema-utils';
|
||||||
|
|
||||||
// SEO Optimized Metadata
|
// SEO Optimized Metadata
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
@@ -40,6 +41,52 @@ 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: 'How does a vCard QR code work?',
|
||||||
|
answer: 'A vCard QR code contains your contact information in a standardized format (VCF). When scanned, the phone recognizes it as a contact card and prompts the user to "Save Contact" to their address book.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Is there a limit to how much info I can add?',
|
||||||
|
answer: 'Static QR codes hold data directly in the pattern. The more data you add (long addresses, bio), the denser and harder to scan the QR code becomes. We recommend sticking to essential contact info for static codes.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I update my info later?',
|
||||||
|
answer: 'No. This is a static vCard QR code. Once created, the info cannot be changed. If you move jobs or change numbers, you must print a new code. For editable cards, use our Dynamic vCard Plus.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Does it work on iPhone and Android?',
|
||||||
|
answer: 'Yes. Both iOS (Camera app) and Android (Camera or Google Lens) natively support vCard QR codes and correctly import the contact data.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Is the vCard QR code generator free?',
|
||||||
|
answer: 'Yes. Creating a static vCard QR code with this generator is completely free, with no signup, no watermark, and no expiry. The code is generated in your browser and you can download it immediately.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I test the QR code before printing?',
|
||||||
|
answer: 'Yes - and you should. Scan the generated code with your own phone camera before sending it to print. If the contact card opens with the correct name, phone, and email, the printed version will behave identically.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Can I add a profile picture?',
|
||||||
|
answer: 'Not on a static vCard QR code. Static codes store data in the pixels, so adding an image would make the code too complex to scan. For profile pictures, social links, and rich media, use our Dynamic vCard Plus solution.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'How long does the QR code last?',
|
||||||
|
answer: 'Forever. Static vCard QR codes do not expire because the data is embedded directly in the image.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'What information is required?',
|
||||||
|
answer: 'Nothing is strictly required, but we recommend at least a First Name and either a Phone Number or Email so the contact is useful.',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: 'Is my data safe?',
|
||||||
|
answer: 'Yes. This tool operates 100% in your browser. We do not store, see, or optimize your contact data. It goes directly from your input to the QR code.',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
// JSON-LD Structured Data
|
// JSON-LD Structured Data
|
||||||
const jsonLd = {
|
const jsonLd = {
|
||||||
'@context': 'https://schema.org',
|
'@context': 'https://schema.org',
|
||||||
@@ -82,32 +129,18 @@ const jsonLd = {
|
|||||||
],
|
],
|
||||||
totalTime: 'PT1M',
|
totalTime: 'PT1M',
|
||||||
},
|
},
|
||||||
generateFaqSchema({
|
{
|
||||||
'How does a vCard QR code work?': {
|
'@type': 'FAQPage',
|
||||||
question: 'How does a vCard QR code work?',
|
'@id': 'https://www.qrmaster.net/tools/vcard-qr-code#faq',
|
||||||
answer: 'A vCard QR code contains your contact information in a standardized format (VCF). When scanned, the phone recognizes it as a contact card and prompts the user to "Save Contact" to their address book.',
|
mainEntity: faqItems.map((item) => ({
|
||||||
},
|
'@type': 'Question',
|
||||||
'Is there a limit to how much info I can add?': {
|
name: item.question,
|
||||||
question: 'Is there a limit to how much info I can add?',
|
acceptedAnswer: {
|
||||||
answer: 'Static QR codes hold data directly in the pattern. The more data you add (long addresses, bio), the denser and harder to scan the QR code becomes. We recommend sticking to essential contact info for static codes.',
|
'@type': 'Answer',
|
||||||
},
|
text: item.answer.replace(/<[^>]+>/g, ''),
|
||||||
'Can I update my info later?': {
|
},
|
||||||
question: 'Can I update my info later?',
|
})),
|
||||||
answer: 'No. This is a static vCard QR code. Once created, the info cannot be changed. If you move jobs or change numbers, you must print a new code. For editable cards, use our Dynamic vCard Plus.',
|
},
|
||||||
},
|
|
||||||
'Does it work on iPhone and Android?': {
|
|
||||||
question: 'Does it work on iPhone and Android?',
|
|
||||||
answer: 'Yes. Both iOS (Camera app) and Android (Camera or Google Lens) natively support vCard QR codes and correctly import the contact data.',
|
|
||||||
},
|
|
||||||
'Is the vCard QR code generator free?': {
|
|
||||||
question: 'Is the vCard QR code generator free?',
|
|
||||||
answer: 'Yes. Creating a static vCard QR code with this generator is completely free, with no signup, no watermark, and no expiry. The code is generated in your browser and you can download it immediately.',
|
|
||||||
},
|
|
||||||
'Can I test the QR code before printing?': {
|
|
||||||
question: 'Can I test the QR code before printing?',
|
|
||||||
answer: 'Yes - and you should. Scan the generated code with your own phone camera before sending it to print. If the contact card opens with the correct name, phone, and email, the printed version will behave identically.',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -375,30 +408,13 @@ export default function VCardQRCodePage() {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
<FaqItem
|
{faqItems.map((item) => (
|
||||||
question="Can I add a profile picture?"
|
<FaqItem
|
||||||
answer="Not on a static vCard QR code. Static codes store data in the pixels, so adding an image would make the code too complex to scan. For profile pictures, social links, and rich media, use our Dynamic vCard Plus solution."
|
key={item.question}
|
||||||
/>
|
question={item.question}
|
||||||
<FaqItem
|
answer={item.answer}
|
||||||
question="How long does the QR code last?"
|
/>
|
||||||
answer="Forever. Static vCard QR codes do not expire because the data is embedded directly in the image."
|
))}
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="What information is required?"
|
|
||||||
answer="Nothing is strictly required, but we recommend at least a First Name and either a Phone Number or Email so the contact is useful."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Is my data safe?"
|
|
||||||
answer="Yes. This tool operates 100% in your browser. We do not store, see, or optimize your contact data. It goes directly from your input to the QR code."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Is the vCard QR code generator free?"
|
|
||||||
answer="Yes. Creating a static vCard QR code is completely free - no signup, no watermark, no expiry. Generate, download, and print as many as you need."
|
|
||||||
/>
|
|
||||||
<FaqItem
|
|
||||||
question="Can I test the QR code before printing?"
|
|
||||||
answer="Yes - scan the generated code with your own phone camera first. If the contact card opens with the correct details, the printed version will behave identically."
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -419,9 +435,14 @@ function FaqItem({ question, answer }: { question: string; answer: string }) {
|
|||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
</summary>
|
</summary>
|
||||||
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm">
|
<div className="text-slate-600 px-5 pb-5 pt-0 leading-relaxed text-sm [&_a]:text-indigo-600 [&_a]:underline"
|
||||||
{answer}
|
dangerouslySetInnerHTML={{
|
||||||
</div>
|
__html: sanitizeHtml(answer, {
|
||||||
|
allowedTags: ['p', 'strong', 'em', 'ul', 'ol', 'li', 'a', 'br', 'code'],
|
||||||
|
allowedAttributes: { a: ['href'] },
|
||||||
|
}),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</details>
|
</details>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user