# SEO-Umsetzungsplan qrmaster.net Erstellt: 2026-08-04 · Datenbasis: GSC-Export 2026-08-03 (letzte 3 Monate) Zugeschnitten auf **wenige Stunden pro Woche** — jeder Schritt ist einzeln abschließbar. Ausgangslage: ~34.000 Impressionen, ~150 Klicks außerhalb der Homepage. Kein Sichtbarkeits-, sondern ein Positions- und Konsolidierungsproblem. --- ## REVISION 2026-08-04 — nach Code- und Live-Prüfung Beim Umsetzen von Phase 1 hat sich die Ausgangslage als anders herausgestellt als aus den reinen GSC-Daten ableitbar. Drei Befunde, die den Plan verändern. ### Befund 1: Kaputter Title (behoben) `/blog/qr-code-tracking-guide-2025` hatte rohes HTML im `title`-Feld: ``` title: 'QR Code Tracking: Complete Guide 2026' ``` Live ausgeliefert wurde daraus im ``-Tag, in der H1, in `og:title` und `twitter:title`: ``` <a href="/qr-code-tracking" class="text-blue-600 underline font-semibold">QR Code Tracking</a>: Complete Guide 2026 | QR Master ``` **Das erklärt Position 79,4 vollständig.** Kein Content-, kein Kannibalisierungsproblem — ein unbrauchbares Snippet. Einzelvorkommen, alle anderen Titles sind sauber. Behoben in `src/lib/blog-data.ts:1160`. ### Befund 2: Konsolidierungsrunde lief bereits (Commit 671c1a1 / 2026-07-10) Live und funktionierend: | Quelle | Ziel | |---|---| | `/blog/qr-code-analytics` | `/qr-code-analytics` | | `/blog/qr-code-restaurant-menu` | `/restaurants` | | `/guide/tracking-analytics` | `/learn/tracking` | | `/guide/qr-code-best-practices` | `/learn/basics` | | `/guide/bulk-qr-code-generation` | `/learn/developer` | Die GSC-Positionen dieser URLs sind damit **historisch** — die Redirects waren nur die letzten ~3,5 Wochen des Auswertungsfensters aktiv. Die Phase-1.1-Tabelle weiter unten ist insoweit überholt. **Konsequenz:** Nicht `/blog/qr-code-tracking-guide-2025` zum Ziel machen, wie ursprünglich geplant. Die bestehende Architektur ist `/learn/[pillar]` als Hub. Dieser Struktur folgen, keine dritte parallel aufmachen. ### Befund 3: Der Learn-Hub hält die Kannibalisierung am Leben `/learn/tracking` listet und verlinkt **alle fünf** konkurrierenden Tracking-Artikel gleichzeitig — inklusive `/blog/qr-code-analytics`, das eine 301-Quelle ist. Der Hub ist damit nicht die Lösung, sondern der Motor: Er hält jeden Artikel im Index und intern verlinkt, statt Signale zu bündeln. Zusätzlich behoben: - **Footer** verlinkte sitewide auf `/guide/tracking-analytics` und `/guide/qr-code-best-practices` — beides 301-Quellen. Jede Seite der Site leitete Linkkraft durch eine Weiterleitung. → jetzt `/learn/tracking` und `/learn/basics` (`src/components/ui/Footer.tsx:88-89`) - **IndexNow** meldete aktiv die drei `/guide/*`-URLs an Suchmaschinen, also Redirect-Quellen. → jetzt die `/learn/*`-Pillars (`src/lib/indexnow.ts:125-130`) ### Offen aus dieser Runde - [ ] `/learn/tracking` entrümpeln: nur noch auf die eine überlebende Tracking-Seite verlinken, nicht auf alle fünf - [ ] `/blog/trackable-qr-codes` (204 Impr., Pos. 81,5) ist **nicht** weitergeleitet und lebt weiter → 301 auf den Guide - [ ] `src/app/(main)/guide/*/page.tsx` existieren noch als Komponenten mit Self-Canonical, obwohl der Redirect greift → Dead Code entfernen - [ ] Drei FAQ-Antworten in `industry-pages.ts` (Zeilen 102, 375, 735) und `growth-pages.ts:473` verlinken auf `/blog/qr-code-restaurant-menu` → auf `/restaurants` umhängen **Erst diese Punkte, dann Phase 2.** Die Reihenfolge im Plan bleibt sonst gültig. --- ## Wichtige Korrektur vorab: Intent-Check vor Snippet-Rewrites Ich hatte empfohlen, die `/qr-code-for/`-Seiten mit Position < 20 und 0 % CTR per Title-Rewrite zu fixen. Beim Prüfen der Seiten stimmt das **nur zum Teil**. Die Meta-Titles sind bereits gut geschrieben: > `barbershops` → „QR Codes for Barbershops: Bookings & Reviews" > `cinemas` → „QR Codes for Cinemas: Tickets & Loyalty" Das Problem liegt woanders. Beispiel `/qr-code-for/barbershops` (327 Impr., Position 9,8, 4 Klicks) — die tatsächlichen Suchanfragen: | Query | Impr. | Pos. | |---|---|---| | short code for barbershops | 16 | 21,8 | | qr barber | 13 | 8,9 | | short code for barber shops | 6 | 16,3 | | barber+scan | 5 | 9,6 | | barcode grooming | 4 | 11,0 | | short code for barber shop | 4 | 26,0 | Das Muster `short code for X` zieht sich durch: `short code for barbers`, `for yoga studios`, `for cinemas`, `for bars`, `for nail bars`, `for theaters`, `for barbershop` — zusammen rund 60 Impressionen. Wer „short code for barbershops" sucht, will mit hoher Wahrscheinlichkeit einen **SMS-Short-Code**, keinen QR-Code. Diese Impressionen sind mit keinem Title der Welt klickbar. **Konsequenz für den Plan:** Vor jedem Rewrite die Queries der Einzelseite prüfen. Nur Seiten anfassen, deren Top-Queries echte QR-Intention haben. Das kostet pro Seite zwei Minuten und verhindert, dass Phase 2 zu Beschäftigungstherapie wird. --- ## Phase 0 — Messpunkt setzen (30 Min, einmalig) Ohne Baseline lässt sich später nicht sagen, ob etwas gewirkt hat. - [ ] GSC-Export von heute unter `/seo-baseline/2026-08-03/` im Repo ablegen - [ ] Vier Zahlen notieren: Gesamtklicks, Gesamtimpressionen, Ø-Position, Anzahl Keywords auf Position < 10 - [ ] Kalendereintrag: gleicher Export am **2026-11-03** (Google braucht 6–10 Wochen, vorher ist jede Bewertung Rauschen) **Erfolgskriterium:** Datei liegt im Repo. --- ## Phase 1 — Kannibalisierung auflösen (Wochen 1–2) Höchster Hebel im ganzen Plan, weil kein neuer Content nötig ist. Fünf Seiten konkurrieren um das Tracking-Thema, keine rankt. ### 1.1 Tracking-Cluster zusammenlegen (~2 Std.) | URL | Impr. | Pos. | Aktion | |---|---|---|---| | `/qr-code-tracking` | 2.148 | 48,4 | **bleibt** — Money-Page | | `/blog/qr-code-tracking-guide-2025` | 67 | 79,4 | **bleibt** — wird der eine Ratgeber | | `/blog/trackable-qr-codes` | 204 | 81,5 | 301 → Guide | | `/blog/qr-code-analytics` | 93 | 85,1 | 301 → Guide | | `/guide/tracking-analytics` | 1 | 91,0 | 301 → Guide | - [ ] Die besten Absätze aus den drei Seiten in den Guide übernehmen, bevor umgeleitet wird - [ ] Redirects in `next.config.mjs` eintragen - [ ] Guide umbenennen: `qr-code-tracking-guide-2025` → Jahreszahl raus oder auf 2026 (Slug-Änderung nur mit Redirect) - [ ] Eigenes H2 für `how to track qr code scans from a print campaign` — steht bereits auf **Position 9,9** bei 43 Impressionen - [ ] Wechselseitige Verlinkung Guide ↔ `/qr-code-tracking` **Erfolgskriterium:** Eine URL pro Suchintention. `/qr-code-tracking` unter Position 30 bis November. ### 1.2 Static-vs-Dynamic-Duplikate mergen (~1 Std.) `/blog/static-vs-dynamic-qr-code` (Pos. 3, 1 Impr.) und `/blog/dynamic-vs-static-qr-codes` (Pos. 5, 1 Impr.) sind faktisch dieselbe Seite. Beide ranken top und bekommen zusammen 2 Impressionen — klassisches Zeichen dafür, dass Google beide kennt und keiner traut. - [ ] Inhalte in **eine** URL zusammenführen, die andere per 301 darauf - [ ] Zusammen mit `/blog/convert-static-to-dynamic-qr-code` (Pos. 3,5) und `/guide/dynamic-qr-code-best-practices` (Pos. 50) prominent von `/dynamic-qr-code-generator` verlinken **Warum das zählt:** `/dynamic-qr-code-generator` hat mit 4.147 Impressionen das größte Volumen der Site — bei Position 45,5 und 0,02 % CTR. ### 1.3 Instagram entzerren (~30 Min) `/tools/instagram-qr-code` (794 Impr., Pos. 33,7) vs. `/blog/instagram-qr-code-generator` (11 Impr., Pos. 73,4). - [ ] Blogpost auf How-to-Intent umschreiben („So erstellst du…") oder konsolidieren, damit er nicht mehr um dasselbe Keyword kämpft --- ## Phase 2 — Snippets mit Intent-Check (Woche 3, ~2 Std.) Nur Seiten mit Position < 20, CTR < 3 % **und** passender Query-Intention. **Kandidaten mit belegbar richtiger Intention:** - [ ] `/blog/microsoft-teams-qr-code` — 287 Impr., **Position 14,4, 0 Klicks**. Queries sind sauber: `microsoft teams qr code generator` (Pos. 9,6), `teams qr code generator` (Pos. 6,6), `qr code for teams meeting` (Pos. 11). Klarster Einzelfall der Site. - [ ] `/tools/teams-qr-code` — 489 Impr., Pos. 13,6, CTR 2,45 % - [ ] `/tools/call-qr-code-generator` — 119 Impr., Pos. 18,9, 0 Klicks - [ ] `/learn` — 486 Impr., Pos. 13,3, CTR 1,65 % **Erst nach Query-Prüfung anfassen:** `/qr-code-for/cinemas` (168 Impr., Pos. 16), `/qr-code-for/airports` (162, Pos. 10,6), `/qr-code-for/yoga-studios`, `/qr-code-for/art-galleries`, `/qr-code-for/catering`, `/qr-code-for/car-dealerships`. Prüfweg: GSC → Seiten → URL wählen → Tab „Suchanfragen". Enthalten die Top-3-Queries `short code`, `barcode` oder Branchenbegriffe ohne QR-Bezug, ist die Seite kein Snippet-Fall. Titles und Descriptions liegen zentral in `src/lib/industry-pages.ts` (Felder `metaTitle`, `metaDescription`) — kein Anfassen einzelner Routen nötig. **Erfolgskriterium:** Teams-Post von 0 auf messbare Klicks. Alles andere ist Bonus. --- ## Phase 3 — Aufräumen (Woche 4, ~1 Std.) Nicht die 53 Branchenseiten löschen — die ranken mit Ø Position 20,4 am besten von allen Content-Typen. Tot ist etwas anderes: | Bereich | Seiten | Impr. | Klicks | Ø Pos. | Vorschlag | |---|---|---|---|---|---| | `/de/*` | 13 | 194 | 0 | 31,0 | Entscheiden: ausbauen oder deindexieren | | `/guide/*` | 2 | 15 | 0 | 70,6 | In `/blog/` überführen (siehe 1.1) | | `/compare/*` | 1 | 31 | 0 | 50,6 | Prüfen, ob es die Route noch braucht | | `/qr-code-erstellen` | 1 | 264 | 2 | 72,5 | Deutsche Seite ohne DE-Strategie — bündeln mit `/de/*` | Die DE-Frage ist eine Entscheidung, keine Aufgabe: 13 Seiten mit 0 Klicks binden Crawl-Budget. Entweder eine echte deutsche Sektion mit hreflang, oder weg. --- ## Phase 4 — Neue Posts, einer pro Woche (ab Woche 5) Reihenfolge nach Impressionen ohne passende Seite. Jeweils ein Post, dann weiter. | Woche | Post | Nachfrage | Zielseite, die profitiert | |---|---|---|---| | 5 | Google Review QR Code erstellen (inkl. Place-ID) | 1.331 Impr. | `/tools/google-review-qr-code` (1.752 Impr., Pos. 37,8) | | 6 | QR Codes aus Excel & Google Sheets | 402 Impr., **konvertiert bereits** | `/bulk-qr-code-generator` | | 7 | Location-QR: Maps, GPS, geo:-URI auf iOS vs. Android | 923 Impr. | `/tools/geolocation-qr-code` (Pos. 62,8) | | 8 | Custom QR mit Logo ohne Scanbarkeitsverlust | 465 Impr. | `/custom-qr-code-generator` | | 9 | QR-Coupons: Einlösung tracken, Missbrauch verhindern | 495 Impr. | `/use-cases/coupon-qr-codes` | | 10 | Beaconstac vs Popl vs Blinq vs QR Master | ~350 Impr., hohe Kaufintention | `/alternatives/*` | | 11 | Kundenfeedback per QR sammeln | 349 Impr. | `/use-cases/feedback-qr-codes` | Jeder Post: Verlinkung zur Money-Page rein **und** raus, Aufnahme in `public/llms.txt`, Eintrag im Sitemap-Lauf. **Woche 6 zuerst ziehen, falls Zeit knapp wird** — `bulk qr code generator in google sheets` und `bulk qr code generator from excel` haben als einzige Nicht-Brand-Keywords bereits Klicks geliefert. Bewiesene Konversion schlägt großes Volumen. --- ## Phase 5 — Daten-Asset (ab Woche 12, größerer Block) Aggregierte, anonymisierte Scan-Daten aus QRMaster als Studie: Scan-Zeitpunkte über den Tag, Device-Splits, wie oft dynamische Codes nach dem Druck tatsächlich geändert werden, Abbruchraten. **Realitätscheck vorab:** `/blog/qr-code-scan-statistics-2026` existiert bereits — Position 38,7, **3 Impressionen**. Ein Daten-Asset rankt nicht, weil es eines ist. Ohne Verteilung passiert nichts. - [ ] Bestehende Statistik-Seite als Basis nehmen statt neu anzulegen - [ ] Echte Zahlen aus der DB, Methodik sichtbar dokumentieren, Stichprobengröße nennen - [ ] Eigene Grafiken statt Fremdquellen - [ ] Erst danach: aktiv verteilen (Reddit, Branchennewsletter, HARO-artige Anfragen) Der Wert liegt im Zitiertwerden durch LLMs und in Backlinks, nicht im direkten Ranking. Entsprechend bewerten. --- ## Was dieser Plan bewusst nicht enthält **Crypto-Cluster** (765 Impr.) — rankt vergleichsweise gut (`usdt qr code generator` Pos. 13, 2 Klicks), monetarisiert aber schwach. **Internationale Streuung** — `system qr dla hoteli` (PL), `qr kütüphane` (TR), `куар мастер` (RU). Ohne lokalisierte Seiten nicht adressierbar, siehe DE-Entscheidung in Phase 3. **E-E-A-T-Maßnahmen** — `/authors/timo` existiert bereits (Position 6,4) und hat für sich genommen nichts bewegt. Kein weiterer Aufwand nötig. **Alles, was „schnell rankt"** — Phase 1 ist der schnellste Effekt im Plan, und auch der braucht 6–10 Wochen bis zur Messbarkeit. --- ## Nächster Schritt Phase 1.1 (Tracking-Konsolidierung). Zwei Stunden, kein neuer Text, betrifft 2.371 Impressionen.