feat: implement blog infrastructure, add SEO keyword planning, and create footer component

This commit is contained in:
Timo Knuth
2026-04-04 23:50:45 +02:00
parent 3143561d27
commit 8408159a96
7 changed files with 622 additions and 17 deletions

420
seo-plan-april.md Normal file
View File

@@ -0,0 +1,420 @@
# SEO Plan April 2026 — qrmaster.net
**Bewertung aktuell: 89/100 → Ziel mit Ergänzungen: 9395/100**
---
## Übersicht
Basis: Google Keyword Planner Daten (vollständig in `seo-keywords.csv`).
Drei Cluster mit stärkstem Potenzial:
- **Cluster 1 Dynamic QR**: 1k10k/mo, Mittel competition, CPCs bis €30
- **Cluster 2 Analytics/Tracking**: 1k10k/mo, +900% YoY Trend, höchste CPCs im Datensatz (€34 für "trackable qr code")
- **Cluster 3 Custom QR + vCard**: 1k10k/mo per Keyword, teils Gering competition, alle Tools bereits live
Sechs Strategien:
- **A** Interne Verlinkung fixen (6 Dateien, 0 neue Seiten)
- **B** 3 fehlende Seiten erstellen
- **C** Structured Data für `/reprint-calculator` (einzige kritische Lücke)
- **D** SERP-Differenzierung (unique angle pro Seite)
- **E** Post-Launch Measurement
- **F** Authority Support pro neue Seite
---
## Keyword-Daten nach Cluster und Seite
### Cluster 1 — Dynamic QR (`/dynamic-qr-code-generator`)
| Keyword | Vol/Mo | Wettbewerb | CPC Low | CPC High | Trend YoY |
|---------|--------|-----------|---------|---------|-----------|
| dynamic qr code generator | 1k10k | Mittel | €2,17 | €13,15 | 0% |
| create dynamic qr code | 1k10k | Mittel | €2,17 | €13,15 | 0% |
| dynamic qr generator | 1k10k | Mittel | €2,17 | €13,15 | 0% |
| generate dynamic qr codes | 1k10k | Mittel | €2,17 | €13,15 | 0% |
| dynamic qr code creator | 1k10k | Mittel | €2,17 | €13,15 | 0% |
| dynamic qr code | 1k10k | Mittel | €1,39 | €10,72 | 0% |
| static qr codes | 1k10k | Mittel | €0,84 | €3,55 | **+900%** |
| best dynamic qr code generator | 1001k | Hoch | €2,90 | €23,86 | 0% |
| unlimited dynamic qr codes | 10100 | Hoch | €5,71 | €30,70 | 0% |
| best dynamic qr code service | 10100 | Hoch | €6,22 | €29,63 | 0% |
| buy dynamic qr code | 10100 | Mittel | €5,53 | €25,95 | 0% |
**Target meta keywords:** `dynamic qr code generator, create dynamic qr code, editable qr code, dynamic qr code free, best dynamic qr code generator`
---
### Cluster 2 — Analytics/Tracking
> ⚠️ **KANNIBALISIERUNGSRISIKO** — `/qr-code-tracking` und `/qr-code-analytics` sind thematisch nah. Klare Positionierung ist Pflicht (Tabelle unten).
| Keyword | Ziel-Seite | Vol/Mo | Wettbewerb | CPC High | Trend |
|---------|-----------|--------|-----------|---------|-------|
| qr code tracking | `/qr-code-tracking` | 1k10k | Mittel | €18,53 | **+900%** |
| track qr code scans | `/qr-code-tracking` | 1001k | Mittel | €18,66 | **+900%** |
| trackable qr code | `/qr-code-tracking` | 1001k | Mittel | **€34,25** | 0% |
| qr code generator with tracking | `/qr-code-tracking` | 1001k | Mittel | €25,65 | 0% |
| qr code analytics | `/qr-code-analytics` | 1001k | Mittel | €16,39 | 0% |
| qr code generator with analytics | `/qr-code-analytics` | 1001k | Mittel | **€25,54** | -90% |
#### Positionierung zur Kannibalisierungsvermeidung
| | `/qr-code-tracking` | `/qr-code-analytics` |
|--|--------------------|--------------------|
| **Fokus** | Scan-Erfassung, Campaign-Tracking | Dashboard, Interpretation, ROI |
| **Kernbotschaft** | "Wir erfassen jeden Scan mit Kontext" | "Wir helfen dir Scans zu verstehen und zu optimieren" |
| **Keywords** | track qr code scans, trackable qr code, qr code tracking, scan by location/device | qr code analytics, qr reporting, performance insights, campaign attribution |
| **Unique Angle** | "Was du tatsächlich tracken kannst (und was nicht)" | "Welche Metriken wichtig sind und welche Vanity sind" |
→ In Content, Title, H1, FAQ und internen Anchor-Texten konsequent durchhalten.
---
### Cluster 3 — Custom QR + vCard
| Keyword | Vol/Mo | Wettbewerb | CPC High | Trend YoY |
|---------|--------|-----------|---------|-----------|
| custom qr code generator | 1k10k | **Gering** | €6,06 | 0% |
| qr code design | 1k10k | Hoch | €3,27 | **+900%** |
| qr code with logo | 1k10k | Hoch | €4,78 | 0% |
| colored qr code | 1k10k | **Gering** | €2,99 | 0% |
| vcard qr code | 1k10k | Hoch | €3,51 | 0% |
| vcard generator | 1k10k | Mittel | €3,62 | **+900%** |
| qr code for instagram | 1k10k | Mittel | €3,93 | **+900%** |
| email qr code generator | 1k10k | **Gering** | €2,34 | 0% |
| wifi qr code generator | 1k10k | Mittel | €1,54 | 0% |
---
### Neue Seiten — Keyword-Potenzial
#### B3: `/blog/static-vs-dynamic-qr-code` — NEUE PRIORITÄT 1
| Keyword | Vol/Mo | Wettbewerb | CPC High | Trend |
|---------|--------|-----------|---------|-------|
| static qr codes | 1k10k | Mittel | €3,55 | **+900%** |
| edit a qr code | 1001k | Mittel | €5,78 | 0% |
| redirect a qr code | 1001k | Mittel | €5,81 | 0% |
| can you change a qr code link | 10100 | Gering | €3,98 | 0% |
| can you change the url of a qr code | 10100 | Mittel | €6,29 | 0% |
| can i change the url of a qr code | 10100 | Mittel | €3,62 | 0% |
| dynamic qr code meaning | 10100 | Mittel | €6,17 | 0% |
Stützt direkt Dynamic QR, Reprint Calculator und Tracking. Nimmt ~15 FAQ-Long-Tail-Keywords mit einem einzigen Artikel mit. Zentrale Pflichtliteratur für das Produkt.
#### B1: `/tools/google-review-qr-code` — PRIORITÄT 2
| Keyword | Vol/Mo | Wettbewerb | CPC High | Trend |
|---------|--------|-----------|---------|-------|
| qr code for google reviews | 1k10k | Hoch | €3,18 | 0% |
| qr code generator for google reviews | 1k10k | **Gering** | — | **+900%** |
Goldene Kombination: 1k10k Volumen + Gering Wettbewerb + +900% YoY Trend. Keine vergleichbare Seite im Projekt. Tool (URL QR) ist bereits live — nur Landing Page fehlt.
#### B2: `/qr-code-print-size-guide` — PRIORITÄT 3
| Keyword | Vol/Mo | Wettbewerb | CPC High | Trend |
|---------|--------|-----------|---------|-------|
| minimum qr code size | 1k10k | **Gering** | €3,42 | 0% |
| qr code print size | 10100 | Gering | — | -90% |
---
## A: Interne Verlinkung
### Was fehlt
| Von | Linkt aktuell zu | Fehlt |
|-----|-----------------|-------|
| `/dynamic-qr-code-generator` | use-cases (4 Links) | `/qr-code-tracking`, `/qr-code-analytics`, `/reprint-calculator` |
| `/qr-code-analytics` | /signup, /use-cases, 2 use-case slugs, 1 blog | `/qr-code-tracking`, `/dynamic-qr-code-generator`, `/reprint-calculator`, `/pricing` |
| `/qr-code-tracking` | real-estate/feedback/coupon use-cases, /dynamic-qr-code-generator | `/qr-code-analytics`, `/reprint-calculator` |
| `/custom-qr-code-generator` | use-cases (4 Links), /signup, /pricing | `/dynamic-qr-code-generator`, `/tools/vcard-qr-code` |
| `/tools/vcard-qr-code` | RelatedTools component | `/custom-qr-code-generator`, `/dynamic-qr-code-generator` |
| `/reprint-calculator` | **keine** (komplett isoliert) | `/dynamic-qr-code-generator`, `/qr-code-tracking`, `/pricing` |
### Anchor-Text-System
Nicht überall "Learn more" oder "Explore" — semantisch korrekte Anchor-Texte pro Ziel:
| Ziel-Seite | Erlaubte Anchor-Texte |
|-----------|----------------------|
| `/dynamic-qr-code-generator` | "dynamic qr code generator", "create dynamic qr code", "editable qr codes" |
| `/qr-code-tracking` | "qr code tracking", "track qr code scans", "trackable qr code" |
| `/qr-code-analytics` | "qr code analytics", "qr analytics dashboard", "qr performance analytics" |
| `/reprint-calculator` | "reprint cost calculator", "calculate qr reprint savings", "qr code reprint cost" |
| `/pricing` | "view pricing", "compare plans", "plan limits" |
### Implementierung — 6 Dateien
**Datei 1: `src/app/(main)/(marketing)/dynamic-qr-code-generator/page.tsx`**
`relatedUseCaseLinks` Array (~Zeile 256) — 2 Einträge ergänzen:
```tsx
{
href: '/qr-code-tracking',
title: 'Track Every QR Code Scan',
description: 'See device, time, and location context for every scan. Understand which placements drive real activity.',
ctaLabel: 'Track your QR scans',
},
{
href: '/reprint-calculator',
title: 'QR Code Reprint Cost Calculator',
description: 'Calculate how much static QR reprints cost vs one active dynamic QR code.',
ctaLabel: 'Calculate reprint savings',
},
```
**Datei 2: `src/app/(main)/(marketing)/qr-code-analytics/page.tsx`**
`GrowthLinksSection` nach UseCasePageTemplate ergänzen (UseCasePageTemplate-Interface prüfen ob `relatedLinks` Prop existiert, sonst eigene Section):
- `/qr-code-tracking` — ctaLabel: "track qr code scans"
- `/dynamic-qr-code-generator` — ctaLabel: "create dynamic qr code"
- `/reprint-calculator` — ctaLabel: "reprint cost calculator"
- `/pricing` — ctaLabel: "compare plans"
**Datei 3: `src/app/(main)/(marketing)/qr-code-tracking/page.tsx`**
`relatedUseCaseLinks` Array (~Zeile 222) — 2 Einträge ergänzen:
```tsx
{
href: '/qr-code-analytics',
title: 'QR Code Analytics Dashboard',
description: 'Go deeper into placement-level reporting and offline campaign attribution.',
ctaLabel: 'Explore QR analytics',
},
{
href: '/reprint-calculator',
title: 'QR Code Reprint Cost Calculator',
description: 'See how much dynamic QR codes save vs reprinting static codes each campaign.',
ctaLabel: 'Calculate reprint savings',
},
```
**Datei 4: `src/app/(main)/(marketing)/custom-qr-code-generator/page.tsx`**
`relatedUseCaseLinks` Array (~Zeile 300) — 2 Einträge ergänzen:
```tsx
{
href: '/dynamic-qr-code-generator',
title: 'Dynamic QR Code Generator',
description: 'Add tracking and updatable destinations to your branded QR codes.',
ctaLabel: 'Create dynamic QR',
},
{
href: '/tools/vcard-qr-code',
title: 'vCard QR Code Generator',
description: 'Turn your brand identity into a scannable digital business card.',
ctaLabel: 'Create vCard QR',
},
```
**Datei 5: `src/app/(main)/(marketing)/tools/vcard-qr-code/page.tsx`**
`RelatedTools` component — Interface prüfen, folgende Tools ergänzen:
- `/custom-qr-code-generator` — "Custom QR with logo and brand colors"
- `/dynamic-qr-code-generator` — "Dynamic QR with tracking"
**Datei 6: `src/app/(main)/(marketing)/reprint-calculator/page.tsx`**
`GrowthLinksSection` nach den Value Props hinzufügen:
- `/dynamic-qr-code-generator` — ctaLabel: "Create dynamic QR code"
- `/qr-code-tracking` — ctaLabel: "Track your QR scans"
- `/pricing` — ctaLabel: "Compare plans"
Außerdem Reprint Calculator als Conversion Bridge ausbauen (Strategie D):
- Ergebnis-CTA nach Berechnung: "Switch to dynamic QR" → `/signup`
- Sharable result state via URL params
- Optional: "Email me my savings" für Lead-Capture
---
## B: Neue Seiten
### B3 (Prio 1): `/blog/static-vs-dynamic-qr-code`
**Keywords:** `static qr codes` (1k10k, +900%) + ~15 Long-Tail "can you change a qr code link" Keywords (je 10100/mo)
**Unique Angle:** Einziger Artikel der echte Reprint-Kosten mit konkreten Zahlen zeigt (z.B. "500 Flyer × 3 Reprints = €X") — direkt verlinkt auf `/reprint-calculator`. Andere Seiten haben nur Erklärungen, keine Zahlen.
**Datei:** Blog-Eintrag im bestehenden Blog-System unter `/blog/static-vs-dynamic-qr-code`
**Pflicht-Sektionen:**
- H1: "Static vs Dynamic QR Code: What's the Difference and Which Do You Need?"
- Quick Summary oben (≤3 Sätze, AI-zitierbar)
- Vergleichstabelle (57 Features inkl. Kosten)
- Wann Static nutzen / Wann Dynamic nutzen
- Echte Reprint-Kosten-Beispiele → Link auf `/reprint-calculator`
- FAQ (min. 7 Items für alle "can you change / edit / redirect a qr code" Queries)
- GrowthLinksSection → `/dynamic-qr-code-generator`, `/reprint-calculator`, `/qr-code-tracking`
**Schema:** Article + FAQPage + BreadcrumbList
---
### B1 (Prio 2): `/tools/google-review-qr-code`
**Keywords:** `qr code generator for google reviews` (1k10k, **Gering**, **+900%**) + `qr code for google reviews` (1k10k, Hoch)
**Unique Angle:** "How to find your Google Review link" mit konkretem Step-by-Step Screenshot-Flow. Das hat kaum eine andere QR-Tool-Seite.
**Dateien:**
- `src/app/(main)/(marketing)/tools/google-review-qr-code/page.tsx`
- `src/app/(main)/(marketing)/tools/google-review-qr-code/GoogleReviewGenerator.tsx`
**Muster:** `/tools/url-qr-code/page.tsx` (inline JSON-LD Pattern)
**Pflicht-Sektionen:**
- H1: "Google Review QR Code Generator — Free"
- AnswerFirstBlock (Was es ist, Wann nutzen, 3 Schritte)
- Schritt-für-Schritt Anleitung: Eigenen Google Review Link finden (Google Maps → Teilen → Link kopieren)
- Use Cases: Restaurant, Hotel, Klinik, Einzelhandel
- FAQ (min. 5 Items)
- GrowthLinksSection → `/qr-code-for/restaurants`, `/qr-code-for/hotels`, `/dynamic-qr-code-generator`, `/qr-code-tracking`
**Schema:** SoftwareApplication + HowTo + FAQPage + BreadcrumbList
**Local Business Cluster-Verbindung (Strategie F):**
- Von dieser Seite linken: `/qr-code-for/restaurants`, `/qr-code-for/hotels`, `/qr-code-for/clinics`
- Diese Seiten zurück linken: "Manage your Google reviews with a QR code"
---
### B2 (Prio 3): `/qr-code-print-size-guide`
**Keywords:** `minimum qr code size` (1k10k, **Gering**), `qr code print size` (10100, Gering)
**Unique Angle:** "Recommended size by scan distance" Tabelle — Visitenkarte (5cm, Abstand 15cm) vs. Poster (10cm, Abstand 1m) vs. Billboard (20cm+, Abstand 5m+). Konkrete Information die nirgends gut dokumentiert ist.
**Datei:** `src/app/(main)/(marketing)/qr-code-print-size-guide/page.tsx`
**Format: Utility Content Hybrid** (kein reiner Guide):
- Schnell-Antwort-Tabelle: Größe nach Oberfläche + Scan-Abstand
- Visuelle Größentabelle (CSS/SVG)
- DPI-Anforderungen für Print
- Downloadable Cheat Sheet (PDF oder druckbare Tabelle) als Share-Hook
- FAQ (min. 5 Items)
- GrowthLinksSection → `/reprint-calculator`, `/dynamic-qr-code-generator`, `/custom-qr-code-generator`
**Schema:** Article + FAQPage + BreadcrumbList
---
## C: Structured Data
### Einzige kritische Lücke: `/reprint-calculator/page.tsx`
Alle anderen Commercial Pages nutzen `SeoJsonLd` oder `UseCasePageTemplate` (rendert Schemas intern). Der Reprint Calculator hat **null Structured Data**.
**Hinzufügen zu `src/app/(main)/(marketing)/reprint-calculator/page.tsx`:**
```tsx
import SeoJsonLd from '@/components/SeoJsonLd';
import Breadcrumbs, { BreadcrumbItem } from '@/components/Breadcrumbs';
import { breadcrumbSchema } from '@/lib/schema';
import { GrowthLinksSection } from '@/components/marketing/GrowthLinksSection';
const softwareSchema = {
'@context': 'https://schema.org',
'@type': 'WebApplication',
'@id': 'https://www.qrmaster.net/reprint-calculator#app',
name: 'QR Code Reprint Cost Calculator',
applicationCategory: 'BusinessApplication',
operatingSystem: 'Web Browser',
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
description: 'Calculate the cost of reprinting static QR codes vs switching to dynamic QR codes that never need reprinting.',
};
const howToSchema = {
'@context': 'https://schema.org',
'@type': 'HowTo',
name: 'How to calculate QR code reprint costs',
step: [
{ '@type': 'HowToStep', position: 1, name: 'Enter print run size', text: 'Enter how many QR codes you print per campaign.' },
{ '@type': 'HowToStep', position: 2, name: 'Enter reprint cost', text: 'Enter your cost per reprint campaign.' },
{ '@type': 'HowToStep', position: 3, name: 'See annual savings', text: 'The calculator shows how much dynamic QR codes save annually.' },
],
};
const breadcrumbs = [
{ name: 'Home', url: '/' },
{ name: 'Reprint Calculator', url: '/reprint-calculator' },
];
// Ganz oben im JSX return:
<SeoJsonLd data={[softwareSchema, howToSchema, breadcrumbSchema(breadcrumbs)]} />
```
---
## D: SERP-Differenzierung
Für jede Kernseite festlegen: Was hat diese Seite, das andere nicht haben?
| Seite | Unique Differentiator |
|-------|----------------------|
| `/dynamic-qr-code-generator` | Static vs Dynamic Vergleichstabelle + Reprint-Kosten-Verbindung |
| `/qr-code-tracking` | "What you can and cannot actually track" — ehrliche Grenzen statt Marketing-Sprache |
| `/qr-code-analytics` | "Which metrics matter and which are vanity" — konkrete Entscheidungshilfe |
| `/reprint-calculator` | Sharable result URL + Email-my-savings Lead-Capture |
| `/tools/google-review-qr-code` | Screenshot-Flow "How to find your Google Review link" |
| `/qr-code-print-size-guide` | "Recommended size by scan distance" Tabelle |
| `/blog/static-vs-dynamic-qr-code` | Echte Reprint-Kosten mit konkreten Zahlen |
---
## E: Post-Launch Measurement
| Zeitpunkt | Metrik | Tool |
|-----------|--------|------|
| +7 Tage | Seite indexiert? | Google Search Console |
| +14 Tage | Impressions, avg. Position | Google Search Console |
| +30 Tage | Clicks, CTR, Position-Entwicklung | Google Search Console |
| Laufend | Klicks auf /signup + /pricing | PostHog (im Stack) |
| Laufend | Rich Result Appearance | Google Rich Results Test |
| +90 Tage | Externe Mentions / Citations | manuell oder Ahrefs |
---
## F: Authority Support pro neue Seite
| Seite | Distribution-Modul |
|-------|-------------------|
| `/blog/static-vs-dynamic-qr-code` | Reddit Post in r/smallbusiness ("When should you NOT use static QR codes?") + 23 ältere Blogposts intern verlinken |
| `/tools/google-review-qr-code` | LinkedIn/X Post für Restaurant/Retail-Zielgruppe + Outreach an 3 lokale Marketing-Blogs |
| `/qr-code-print-size-guide` | "Downloadable QR Size Cheat Sheet" als Share-Hook + Roundup-Pitch an "Best QR resources" Listen |
---
## Prioritätsreihenfolge
| Prio | Strategie | Aufgabe | Datei(en) | Top-Keyword | Effort |
|------|-----------|---------|-----------|------------|--------|
| 1 | C | Reprint Calculator: Schema + GrowthLinks | `reprint-calculator/page.tsx` | — | 30 Min |
| 2 | A | Dynamic QR → Tracking + Reprint (+ Anchor-Texte) | `dynamic-qr-code-generator/page.tsx` | 1k10k | 20 Min |
| 3 | A | Tracking → Analytics + Reprint | `qr-code-tracking/page.tsx` | 1k10k +900% | 20 Min |
| 4 | A | Analytics → Tracking + Dynamic + Reprint | `qr-code-analytics/page.tsx` | €34 CPC | 20 Min |
| 5 | A | Custom QR + vCard cross-links | 2 Dateien | 1k10k Gering | 20 Min |
| 6 | B3 | Static vs Dynamic Blog Post | Blog-Eintrag | 1k10k +900% | 2 Std |
| 7 | B1 | Google Review QR Tool Page | 2 neue Dateien | 1k10k Gering +900% | 4 Std |
| 8 | B2 | Print Size Guide | 1 neue Datei | 1k10k Gering | 3 Std |
**Gesamtaufwand Prio 15:** ~2 Stunden (schnelle Wins, bestehende Seiten)
**Gesamtaufwand Prio 68:** ~9 Stunden (neue Seiten)
---
## Verification-Checkliste
### A — Interne Verlinkung
- [ ] Alle 6 Dateien geändert und neue `<a href=...>` Tags im Browser sichtbar
- [ ] Cluster-Pfad walkthrough: dynamic-qr → tracking → analytics → reprint-calculator → pricing
### B — Neue Seiten
- [ ] `npm run dev` — alle 3 neuen Routen erreichbar
- [ ] Page Source: `<script type="application/ld+json">` vorhanden
- [ ] Google Rich Results Test pro Seite bestanden
### C — Structured Data Reprint Calculator
- [ ] `/reprint-calculator` im Rich Results Test: WebApplication + HowTo ohne Fehler
### D — Differenzierung
- [ ] Jede neue Seite hat ihren Unique Differentiator aus Tabelle D implementiert
### E — Measurement
- [ ] Google Search Console: Alle neuen Seiten nach 7 Tagen indexiert
- [ ] PostHog: Conversion-Events auf /signup und /pricing nach 30 Tagen auswertbar