diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 0c5ca13..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,187 +0,0 @@ -# Changelog - PostgreSQL Migration - -## [2.0.0] - 2024-10-13 - -### 🎉 Major Changes - Supabase to PostgreSQL Migration - -#### Removed -- ❌ **Supabase dependency** - Removed all Supabase-specific configurations -- ❌ **DIRECT_URL** - Removed connection pooling URL (Supabase-specific) -- ❌ **External database dependency** - Now fully self-hosted - -#### Added -- ✅ **PostgreSQL 16 in Docker** - Local PostgreSQL database with Docker support -- ✅ **Redis 7** - Caching and rate limiting with Redis -- ✅ **Adminer** - Database management UI (http://localhost:8080) -- ✅ **Docker Compose setups** - Both development and production configurations -- ✅ **Database initialization** - Automated database setup with extensions -- ✅ **Complete documentation** - Multiple guides for setup and migration -- ✅ **Setup scripts** - Automated setup for both Linux/Mac and Windows -- ✅ **npm scripts** - Convenient Docker commands via npm - -#### Modified Files -- 📝 `prisma/schema.prisma` - Removed directUrl field -- 📝 `src/lib/env.ts` - Removed DIRECT_URL, updated DATABASE_URL default -- 📝 `docker-compose.yml` - Complete rewrite with PostgreSQL, Redis, and networking -- 📝 `Dockerfile` - Enhanced with proper PostgreSQL support -- 📝 `package.json` - Added Docker scripts and tsx dependency -- 📝 `README.md` - Updated with new setup instructions - -#### New Files -- 📄 `docker-compose.dev.yml` - Development environment (database only) -- 📄 `docker/init-db.sh` - PostgreSQL initialization script -- 📄 `docker/README.md` - Docker-specific documentation -- 📄 `DOCKER_SETUP.md` - Comprehensive Docker setup guide -- 📄 `MIGRATION_FROM_SUPABASE.md` - Step-by-step migration guide -- 📄 `env.example` - Environment variable template -- 📄 `.dockerignore` - Docker build optimization -- 📄 `scripts/setup.sh` - Quick setup script (Linux/Mac) -- 📄 `scripts/setup.ps1` - Quick setup script (Windows) -- 📄 `CHANGELOG.md` - This file - -### 📦 Docker Services - -#### PostgreSQL Database -- **Image**: postgres:16-alpine -- **Port**: 5432 -- **Features**: - - Health checks - - Volume persistence - - UTF-8 encoding - - Extensions: uuid-ossp, pg_trgm - -#### Redis Cache -- **Image**: redis:7-alpine -- **Port**: 6379 -- **Features**: - - AOF persistence - - 256MB max memory with LRU eviction - - Health checks - -#### Next.js Application -- **Port**: 3000 -- **Features**: - - Multi-stage build - - Production optimization - - Health checks - - Automatic Prisma generation - -#### Adminer (Development) -- **Port**: 8080 -- **Features**: - - Database management UI - - Optional (dev profile) - - Pre-configured for PostgreSQL - -### 🚀 Quick Start - -#### Development Mode -```bash -npm run docker:dev # Start database -npm run db:migrate # Run migrations -npm run dev # Start app -``` - -#### Production Mode -```bash -npm run docker:prod # Start all services -``` - -### 📚 Documentation - -- **README.md** - Main documentation with quick start -- **DOCKER_SETUP.md** - Complete Docker guide with troubleshooting -- **MIGRATION_FROM_SUPABASE.md** - Migration guide from Supabase -- **docker/README.md** - Docker commands and operations -- **env.example** - Environment variable reference - -### 🔧 New npm Scripts - -```bash -# Docker commands -npm run docker:dev # Start development services -npm run docker:dev:stop # Stop development services -npm run docker:prod # Start production stack -npm run docker:stop # Stop all services -npm run docker:logs # View all logs -npm run docker:db # PostgreSQL CLI -npm run docker:redis # Redis CLI -npm run docker:backup # Backup database -``` - -### 🔐 Environment Variables - -#### Required -- `DATABASE_URL` - PostgreSQL connection string -- `NEXTAUTH_SECRET` - NextAuth.js secret (generate with openssl) -- `NEXTAUTH_URL` - Application URL -- `IP_SALT` - Salt for IP hashing (generate with openssl) - -#### Optional -- `GOOGLE_CLIENT_ID` - Google OAuth client ID -- `GOOGLE_CLIENT_SECRET` - Google OAuth secret -- `REDIS_URL` - Redis connection string -- `ENABLE_DEMO` - Enable demo mode - -### 🎯 Benefits - -1. **Full Control** - Own your data and infrastructure -2. **No Vendor Lock-in** - Standard PostgreSQL -3. **Lower Latency** - Local network speed -4. **Cost Effective** - No monthly database fees -5. **Privacy** - Data stays on your infrastructure -6. **Development** - Easy local testing -7. **Offline Capable** - Works without internet - -### 🔄 Migration Path - -1. Backup Supabase data -2. Update codebase -3. Start local PostgreSQL -4. Restore data or run migrations -5. Update environment variables -6. Deploy - -See [MIGRATION_FROM_SUPABASE.md](MIGRATION_FROM_SUPABASE.md) for detailed steps. - -### ⚠️ Breaking Changes - -- `DIRECT_URL` environment variable removed -- Database now requires Docker or local PostgreSQL -- Supabase-specific features removed - -### 📊 Performance Improvements - -- Local database reduces latency -- Redis caching improves response times -- Connection pooling via Prisma -- Optimized Docker images - -### 🐛 Bug Fixes - -- Fixed database connection handling -- Improved error messages -- Better health checks - -### 🔜 Future Enhancements - -- [ ] PostgreSQL replication for HA -- [ ] Redis Sentinel for failover -- [ ] Automated backup scripts -- [ ] Monitoring and alerting -- [ ] Database performance tuning -- [ ] Multi-region deployment - -### 📝 Notes - -- Default PostgreSQL password should be changed in production -- Always backup data before migration -- Review security settings before deployment -- Set up automated backups in production - ---- - -**Migration completed successfully!** 🎉 - -For support, see documentation or open an issue on GitHub. - diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..c72179a --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,266 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +**QR Master** is a production-ready SaaS application for creating and managing QR codes with advanced analytics, Stripe payment integration, and multi-tier subscription plans (FREE, PRO, BUSINESS). + +## Tech Stack + +- **Frontend**: Next.js 14 (App Router), React 18, TypeScript, Tailwind CSS, Framer Motion +- **Backend**: Next.js API Routes, Prisma ORM, PostgreSQL +- **Authentication**: NextAuth.js v4 (Credentials + Google OAuth) +- **Payments**: Stripe (subscriptions, webhooks) +- **Cache**: Redis (optional) +- **Analytics**: PostHog (optional), QR scan tracking with IP hashing +- **QR Generation**: qrcode, qr-code-styling libraries +- **Bulk Operations**: Papa Parse (CSV), ExcelJS, JSZip +- **Storage**: AWS S3 (via @aws-sdk) + +## Quick Development Commands + +```bash +# Setup +npm install +npm run docker:dev # Start PostgreSQL & Redis in Docker +npx prisma migrate dev # Run migrations +npm run db:seed # Seed demo data + +# Development +npm run dev # Start dev server (port 3050) +npm run lint # Run ESLint + +# Database +npm run db:migrate # Run pending migrations (dev mode) +npm run db:deploy # Apply migrations (production) +npm run db:studio # Open Prisma Studio UI +npx prisma migrate reset # Reset database (drops, recreates, seeds) + +# Docker +npm run docker:prod # Start full production stack +npm run docker:dev:stop # Stop dev services +npm run docker:logs # View logs +npm run docker:db # PostgreSQL CLI +npm run docker:redis # Redis CLI +npm run docker:backup # Backup database to SQL file + +# Build & Deploy +npm run build # Production build +npm run start # Start production server +``` + +## Project Structure + +``` +src/ +├── app/ +│ └── (main)/ +│ ├── (app)/ # Authenticated app pages (dashboard, bulk-creation, settings) +│ ├── (auth)/ # Auth pages (login, signup, forgot-password) +│ ├── (marketing)/ # Public pages & marketing tools +│ │ └── tools/ # QR code type-specific generators (20+ tools) +│ └── api/ # API routes organized by domain +│ ├── auth/ # Authentication (signin, signup, OAuth, password reset) +│ ├── qrs/ # QR code CRUD (GET, POST, PATCH, DELETE) +│ ├── analytics/ # Analytics summary endpoint +│ ├── stripe/ # Payment webhooks & session management +│ ├── user/ # User profile, plan, stats, password +│ ├── newsletter/ # Subscription management +│ └── [other]/ # admin, feedback, leads, bulk, etc. +├── components/ +│ ├── ui/ # Reusable UI primitives (Card, Dialog, Input, etc.) +│ ├── generator/ # QR code generator components +│ ├── analytics/ # Charts, maps, data visualization +│ ├── dashboard/ # Dashboard-specific components +│ ├── settings/ # Settings & account components +│ └── SessionProvider.tsx # NextAuth session provider +├── lib/ +│ ├── auth.ts # NextAuth configuration +│ ├── db.ts # Prisma client +│ ├── stripe.ts # Stripe utilities +│ ├── email.ts # Email sending (Resend) +│ ├── qr.ts # QR code generation utilities +│ ├── geo.ts # Geolocation utilities +│ ├── hash.ts # IP hashing (privacy) +│ ├── csrf.ts # CSRF token generation/validation +│ ├── rateLimit.ts # Rate limiting utilities +│ ├── schema.ts # Zod validation schemas +│ ├── validationSchemas.ts # Additional validation +│ └── cookieConfig.ts # Cookie configuration +├── hooks/ +│ ├── useCsrf.ts # CSRF token hook +│ └── useTranslation.ts # i18n hook +└── types/ + └── analytics.ts # Analytics type definitions +``` + +## Database Architecture + +**Key Models** (see `prisma/schema.prisma`): + +- **User**: User accounts with Stripe subscription fields +- **QRCode**: QR code records (static/dynamic, multiple content types) +- **QRScan**: Analytics data (ts, ipHash, device, os, country, UTM params) +- **Account/Session**: NextAuth authentication tables +- **Integration**: Third-party integrations +- **NewsletterSubscription**: Email subscribers +- **Lead**: Lead generation data + +**QR Code Types**: URL, VCARD, GEO, PHONE, SMS, TEXT, WHATSAPP, PDF, APP, COUPON, FEEDBACK + +## API Architecture + +### Authentication Flow +- Credentials-based login/signup via `/api/auth/signup` and `/api/auth/simple-login` +- Google OAuth via `/api/auth/google` +- NextAuth.js session management at `/api/auth/[...nextauth]` +- Password reset: `/api/auth/forgot-password` + `/api/auth/reset-password` + +### QR Code Operations +- **CRUD**: `GET/POST /api/qrs`, `GET/PATCH/DELETE /api/qrs/[id]` +- **Static Generation**: `POST /api/qrs/static` +- **Bulk Operations**: `POST /api/bulk/*` for CSV/Excel import +- **Public Redirect**: `GET /r/[slug]` (redirect + analytics tracking) + +### Payments +- Stripe webhooks: `POST /api/stripe/webhook` +- Checkout session: `POST /api/stripe/checkout` or `/api/stripe/create-checkout-session` +- Customer portal: `POST /api/stripe/portal` +- Subscription sync: `POST /api/stripe/sync-subscription` +- Cancellation: `POST /api/stripe/cancel-subscription` + +### Analytics +- Summary endpoint: `GET /api/analytics/summary?qrId=` +- Scan tracking with hashed IP (GDPR-compliant) + +## Key Implementation Patterns + +### Authentication & Authorization +- NextAuth.js v4 with Prisma adapter +- Sessions stored in database +- CSRF protection on all mutations (check `useCsrf` hook) +- Password hashing with bcryptjs + +### API Security +- Rate limiting on sensitive endpoints (auth, payments) +- CSRF tokens validated on POST/PATCH/DELETE +- IP hashing for privacy (IP_SALT environment variable) +- DNT header respected for analytics + +### Database Operations +- Prisma ORM for all database access +- Migrations stored in `prisma/migrations/` +- Seed script for demo data in `prisma/seed.ts` +- Database indexes on frequently queried fields (userId, createdAt, etc.) + +### QR Code Generation +- `qrcode` library for basic generation +- `qr-code-styling` for advanced customization +- `qrcode.react` for inline React components +- Canvas/SVG export via `html-to-image`, `jspdf`, `jszip` + +### State & Validation +- Zod schemas in `/lib/schema.ts` for runtime validation +- TypeScript strict mode enabled +- Prisma provides type safety at database layer + +## Environment Variables + +**Required**: +- `DATABASE_URL` - PostgreSQL connection string +- `NEXTAUTH_SECRET` - JWT encryption secret +- `NEXTAUTH_URL` - Application URL (default: `http://localhost:3050`) +- `IP_SALT` - Salt for IP hashing + +**Optional but Important**: +- `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET`, `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` +- `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` - OAuth +- `REDIS_URL` - Redis connection +- `NEXT_PUBLIC_POSTHOG_KEY`, `NEXT_PUBLIC_POSTHOG_HOST` - Analytics +- `NEXT_PUBLIC_INDEXABLE` - Set to `true` for production (enables search engine indexing) + +**Generate Secrets**: +```bash +openssl rand -base64 32 # NEXTAUTH_SECRET and IP_SALT +``` + +## Common Tasks + +### Adding a New QR Code Type +1. Add type to `ContentType` enum in `prisma/schema.prisma` +2. Create generator component in `src/components/generator/` or `src/app/(main)/(marketing)/tools/` +3. Add validation schema in `src/lib/schema.ts` +4. Create API endpoint if needed in `src/app/(main)/api/qrs/` + +### Creating a New Marketing Tool Page +1. Create page at `src/app/(main)/(marketing)/tools/[tool-name]/page.tsx` +2. Create generator component in same directory +3. Add SEO metadata in page component +4. Tool should be static (no database) or use public API endpoints + +### Adding a New API Endpoint +1. Create route file in appropriate directory under `src/app/(main)/api/` +2. Add Zod validation schema in `src/lib/schema.ts` +3. Check authentication with `getServerSession()` if needed +4. Implement rate limiting for sensitive operations +5. Return typed responses with proper status codes + +### Database Schema Changes +1. Update `prisma/schema.prisma` +2. Run `npx prisma migrate dev --name ` +3. This creates migration file and updates Prisma client +4. Test with `npm run db:seed` if demo data affected + +## Testing & Debugging + +- Demo account (after seed): email: `demo@qrmaster.com`, password: `demo123` +- Prisma Studio: `npm run db:studio` - visual database browser +- API testing: Check `/src/app/(main)/api/` for examples +- Frontend: Pages hot-reload on changes during `npm run dev` + +## Performance Considerations + +- PostgreSQL indexes on `QRCode(userId, createdAt)` and `QRScan(qrId, ts)` +- Redis optional but recommended for caching analytics +- Static export for marketing pages when possible +- Image optimization enabled in `next.config.mjs` +- Prisma connection pooling recommended for production + +## Common Pitfalls + +1. **Database Connection**: If "Can't reach database server", ensure Docker is running (`npm run docker:dev`) +2. **Prisma Out of Sync**: Run `npx prisma generate` if TypeScript errors appear +3. **Migration Conflicts**: Use `npx prisma migrate reset` to start fresh +4. **Port 3050 in Use**: Change port in `package.json` dev script or kill process +5. **Build Failures**: Check `NODE_OPTIONS='--max-old-space-size=4096'` in build script - set higher if needed + +## SEO & Content + +- Schema.org structured data implemented for products, organizations, FAQs +- Breadcrumb navigation for UX/SEO +- Meta tags configured per page +- Open Graph images at `/api/og` +- Sitemap generation via next-sitemap +- Google Indexing API + IndexNow submission scripts available + +## Deployment Notes + +### Docker (Self-Hosted) +```bash +npm run docker:prod # Builds and starts full stack +docker-compose exec web npx prisma migrate deploy # Run migrations in container +``` + +### Vercel +- Push to GitHub and import in Vercel dashboard +- Set environment variables in Vercel settings +- Requires external PostgreSQL database (Vercel Postgres, Supabase, etc.) +- Redis is optional + +## Additional Resources + +- README.md - Detailed setup and feature overview +- DOCKER_SETUP.md - Complete Docker deployment guide +- prisma/schema.prisma - Database schema and relationships +- env.example - Environment variable template diff --git a/DEPLOYMENT_CHECKLIST.md b/DEPLOYMENT_CHECKLIST.md deleted file mode 100644 index 9685290..0000000 --- a/DEPLOYMENT_CHECKLIST.md +++ /dev/null @@ -1,269 +0,0 @@ -# 🚀 Deployment Checklist für QR Master - -Diese Checkliste enthält alle notwendigen Änderungen vor dem Push nach Gitea und dem Production Deployment. - ---- - -## ✅ 1. Environment Variables (.env) - -### Basis URLs ändern -```bash -# Von: -NEXT_PUBLIC_APP_URL=http://localhost:3050 -NEXTAUTH_URL=http://localhost:3050 - -# Zu: -NEXT_PUBLIC_APP_URL=https://www.qrmaster.net -NEXTAUTH_URL=https://www.qrmaster.net -``` - -### Secrets generieren (falls noch nicht geschehen) -```bash -# NEXTAUTH_SECRET (für JWT/Session Encryption) -openssl rand -base64 32 - -# IP_SALT (für DSGVO-konforme IP-Hashing) -openssl rand -base64 32 -``` - -Bereits generiert: -- ✅ NEXTAUTH_SECRET: `PT8XVydC4v7QluCz/mV1yb7Y3docSFZeFDioJz4ZE98=` -- ✅ IP_SALT: `j/aluIpzsgn5Z6cbF4conM6ApK5cj4jDagkswzfgQPc=` - -### Database URLs -```bash -# Development (localhost): -DATABASE_URL="postgresql://postgres:postgres@localhost:5435/qrmaster?schema=public" -DIRECT_URL="postgresql://postgres:postgres@localhost:5435/qrmaster?schema=public" - -# Production (anpassen an deinen Server): -DATABASE_URL="postgresql://USER:PASSWORD@HOST:5432/qrmaster?schema=public" -DIRECT_URL="postgresql://USER:PASSWORD@HOST:5432/qrmaster?schema=public" -``` - ---- - -## 🔐 2. Google OAuth Configuration - -### Redirect URIs in Google Cloud Console hinzufügen - -1. Gehe zu: https://console.cloud.google.com/apis/credentials -2. Wähle deine OAuth 2.0 Client ID: `683784117141-ci1d928jo8f9g6i1isrveflmrinp92l4.apps.googleusercontent.com` -3. Füge folgende **Authorized redirect URIs** hinzu: - -``` -https://www.qrmaster.net/api/auth/callback/google -``` - -**Optional** (für Staging/Testing): -``` -http://localhost:3050/api/auth/callback/google -https://staging.qrmaster.net/api/auth/callback/google -``` - ---- - -## 💳 3. Stripe Configuration - -### ⚠️ WICHTIG: Von Test Mode zu Live Mode wechseln - -#### Current (Test Mode): -```bash -STRIPE_SECRET_KEY=sk_test_51QYL7gP9xM... -NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_51QYL7gP9xM... -``` - -#### Production (Live Mode): -1. Gehe zu: https://dashboard.stripe.com/ -2. Wechsle von **Test Mode** zu **Live Mode** (Toggle oben rechts) -3. Hole dir die **Live Keys**: - - `API Keys` → `Secret key` (beginnt mit `sk_live_`) - - `API Keys` → `Publishable key` (beginnt mit `pk_live_`) - -```bash -# Production Keys: -STRIPE_SECRET_KEY=sk_live_XXXXX -NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_XXXXX -``` - -#### Webhook Secret (Production) -1. Erstelle einen neuen Webhook Endpoint: https://dashboard.stripe.com/webhooks -2. Endpoint URL: `https://www.qrmaster.net/api/webhooks/stripe` -3. Events to listen: - - `checkout.session.completed` - - `customer.subscription.updated` - - `customer.subscription.deleted` - - `invoice.payment_succeeded` - - `invoice.payment_failed` -4. Kopiere den **Signing Secret** (beginnt mit `whsec_`) - -```bash -STRIPE_WEBHOOK_SECRET=whsec_XXXXX -``` - -#### Price IDs aktualisieren -Erstelle Produkte und Preise in **Live Mode**: -1. https://dashboard.stripe.com/products -2. Erstelle "Pro" und "Business" Pläne -3. Kopiere die Price IDs (beginnen mit `price_`) - -```bash -STRIPE_PRICE_ID_PRO_MONTHLY=price_XXXXX -STRIPE_PRICE_ID_PRO_YEARLY=price_XXXXX -STRIPE_PRICE_ID_BUSINESS_MONTHLY=price_XXXXX -STRIPE_PRICE_ID_BUSINESS_YEARLY=price_XXXXX -``` - ---- - -## 📧 4. Resend Email Configuration - -### Domain Verification -1. Gehe zu: https://resend.com/domains -2. Füge Domain hinzu: `qrmaster.net` -3. Konfiguriere DNS Records (SPF, DKIM, DMARC) -4. Warte auf Verification - -### From Email anpassen -Aktuell verwendet alle Emails: `onboarding@resend.dev` (Resend's Test Domain) - -Nach Domain Verification in `src/lib/email.ts` ändern: -```typescript -// Von: -from: 'Timo from QR Master ', - -// Zu: -from: 'Timo from QR Master ', -// oder -from: 'Timo from QR Master ', -``` - ---- - -## 🔍 5. SEO Configuration - -### Bereits korrekt konfiguriert ✅ -```bash -NEXT_PUBLIC_INDEXABLE=true # ✅ Bereits gesetzt -``` - -### Sitemap & robots.txt prüfen -- Sitemap: `https://www.qrmaster.net/sitemap.xml` -- Robots: `https://www.qrmaster.net/robots.txt` - -Nach Deployment testen! - ---- - -## 📊 6. PostHog Analytics (Optional) - -Falls du PostHog nutzt: -```bash -NEXT_PUBLIC_POSTHOG_KEY=phc_XXXXX -NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com -``` - ---- - -## 🐳 7. Docker Deployment - -### docker-compose.yml prüfen -Stelle sicher, dass alle ENV Variables korrekt gemappt sind: - -```yaml -environment: - NEXTAUTH_URL: https://www.qrmaster.net - NEXT_PUBLIC_APP_URL: https://www.qrmaster.net - # ... weitere vars -``` - -### Deployment Commands -```bash -# Build & Deploy -docker-compose up -d --build - -# Database Migration (nach erstem Deploy) -docker-compose exec web npm run db:migrate - -# Logs checken -docker-compose logs -f web - -# Health Check -curl https://www.qrmaster.net -``` - ---- - -## 🔒 8. Security Checklist - -- [ ] ✅ NEXTAUTH_SECRET ist gesetzt und sicher (32+ Zeichen) -- [ ] ✅ IP_SALT ist gesetzt und sicher -- [ ] ⚠️ Stripe ist auf **Live Mode** umgestellt -- [ ] ⚠️ Google OAuth Redirect URIs enthalten Production URL -- [ ] ⚠️ Resend Domain ist verifiziert -- [ ] ⚠️ Webhook Secrets sind für Production gesetzt -- [ ] ⚠️ Database URLs zeigen auf Production DB -- [ ] ⚠️ Keine Test/Dev Secrets in Production - ---- - -## 📝 9. Vor dem Git Push - -### Files prüfen -```bash -# .env sollte NICHT committet werden! -git status - -# Falls .env in Git ist: -git rm --cached .env -echo ".env" >> .gitignore -``` - -### Sensible Daten entfernen -- [ ] Keine API Keys im Code -- [ ] Keine Secrets in Config Files -- [ ] `.env` ist in `.gitignore` - ---- - -## 🎯 10. Nach dem Deployment testen - -### Funktionen testen -1. **Google OAuth Login**: https://www.qrmaster.net/login -2. **QR Code erstellen**: https://www.qrmaster.net/create -3. **Stripe Checkout**: Testprodukt kaufen mit echten Stripe Test Cards -4. **Email Delivery**: Password Reset testen -5. **Analytics**: PostHog Events tracken - -### Monitoring -```bash -# Server Logs -docker-compose logs -f - -# Database Status -docker-compose exec db psql -U postgres -d qrmaster -c "SELECT COUNT(*) FROM \"User\";" - -# Redis Status -docker-compose exec redis redis-cli PING -``` - ---- - -## 📞 Support Kontakte - -- **Stripe Support**: https://support.stripe.com -- **Google Cloud Support**: https://support.google.com/cloud -- **Resend Support**: https://resend.com/docs -- **Next.js Docs**: https://nextjs.org/docs - ---- - -## ✨ Deployment erfolgreich! - -Nach erfolgreichem Deployment: -1. ✅ Teste alle wichtigen Features -2. ✅ Monitor Logs für Fehler -3. ✅ Prüfe Analytics Dashboard -4. ✅ Backup der Production Database erstellen - -**Good luck! 🚀** diff --git a/INDEXING_GUIDE.md b/INDEXING_GUIDE.md deleted file mode 100644 index f61dc8a..0000000 --- a/INDEXING_GUIDE.md +++ /dev/null @@ -1,87 +0,0 @@ -# Indexing Setup & Usage Guide - -This guide explains how to fast-track your content indexing on **Google** and **Bing/Yandex** using the provided scripts. - -> [!IMPORTANT] -> **WAIT UNTIL LIVE:** Do not run these scripts until your new URLs are live and returning a `200 OK` status. If you submit a `404` URL, it may negatively impact your crawling budget or cause errors. - ---- - -## 1. Google Indexing API - -The Google Indexing API allows you to notify Google when pages are added or removed. It is faster than waiting for the Googlebot to crawl your sitemap. - -### Prerequisites: `service_account.json` - -To use the script `scripts/trigger-indexing.js`, you need a **Service Account Key** from Google Cloud. - -1. **Go to Google Cloud Console:** [https://console.cloud.google.com/](https://console.cloud.google.com/) -2. **Create a Project:** (e.g., "QR Master Indexing"). -3. **Enable API:** Search for "Web Search Indexing API" and enable it. -4. **Create Service Account:** - * Go to "IAM & Admin" > "Service Accounts". - * Click "Create Service Account". - * Name it (e.g., "indexer"). - * Grant it the "Owner" role (simplest for this) or a custom role with Indexing permissions. -5. **Create Key:** - * Click on the newly created service account email. - * Go to "Keys" tab -> "Add Key" -> "Create new key" -> **JSON**. - * This will download a JSON file. -6. **Save Key:** - * Rename the file to `service_account.json`. - * Place it in the **root** of your project (same folder as `package.json`). - * **NOTE:** This file is ignored by git for security (`.gitignore`), so you must copy it manually if you switch laptops. -7. **Authorize in Search Console:** - * Open the JSON file and copy the `client_email` address. - * Go to **Google Search Console** property for `qrmaster.net`. - * Go to "Settings" > "Users and permissions". - * **Add User:** Paste the service account email and give it **"Owner"** permission. (This is required for the API to work). - -### How to Run - -1. **Run the script:** - ```bash - npm run trigger:indexing - ``` - *(Or manually: `npx tsx scripts/trigger-indexing.ts`)* - -2. The script will automatically fetch ALL active URLs from the project (including tools and blog posts) and submit them to Google. You should see a "Success" message for each URL. - ---- - -## 2. IndexNow (Bing, Yandex, etc.) - -IndexNow is a protocol used by Bing and others. It's much simpler than Google's API. - -### Prerequisites: API Key - -1. **Get Key:** Go to [Bing Webmaster Tools](https://www.bing.com/webmasters) or generate one at [indexnow.org](https://www.indexnow.org/). -2. **Verify Setup:** - * The key is typically a long random string (e.g., `abc123...`). - * Ensure you have a text file named after the key (e.g., `abc123....txt`) containing the key itself inside your `public/` folder so it's accessible at `https://www.qrmaster.net/abc123....txt`. - * Alternatively, set the environment variable in your `.env` file: - ``` - INDEXNOW_KEY=your_key_here - ``` - -### How to Run - -This script (`scripts/submit-indexnow.ts`) automatically gathers all meaningful URLs from your project (tools, blog posts, main pages) and submits them. - -1. Run the script: - ```bash - npm run submit:indexnow - ``` - *(Or manually: `npx tsx scripts/submit-indexnow.ts`)* - -2. It will output which URLs were submitted. - ---- - -## Summary Checklist - -- [ ] New page is published and live. -- [ ] `service_account.json` is in the project root. -- [ ] Service Account email is added as Owner in Google Search Console. -- [ ] Run `npm run trigger:indexing` (for Google). -- [ ] Run `npm run submit:indexnow` (for Bing/Yandex). diff --git a/MIGRATION_FROM_SUPABASE.md b/MIGRATION_FROM_SUPABASE.md deleted file mode 100644 index ab8d15c..0000000 --- a/MIGRATION_FROM_SUPABASE.md +++ /dev/null @@ -1,321 +0,0 @@ -# Migration Guide: From Supabase to Local PostgreSQL - -This guide helps you migrate your QR Master application from Supabase to a local PostgreSQL database with Docker. - -## What Changed - -### ✅ Removed -- Supabase connection pooling (`DIRECT_URL` environment variable) -- Supabase-specific configurations -- External database dependency - -### ✨ Added -- Local PostgreSQL 16 database in Docker -- Redis cache for better performance -- Adminer database management UI -- Complete Docker setup with docker-compose -- Database initialization scripts -- Development and production Docker configurations - -## Migration Steps - -### 1. Backup Your Supabase Database (IMPORTANT!) - -Before making any changes, backup your existing data: - -```bash -# If you have access to Supabase CLI -supabase db dump > backup_$(date +%Y%m%d).sql - -# Or use pg_dump directly with your Supabase credentials -pg_dump "postgresql://postgres:[PASSWORD]@[PROJECT_REF].supabase.co:5432/postgres" > backup.sql -``` - -### 2. Update Your Codebase - -Pull the latest changes or update these files: - -#### Updated Files: -- ✏️ `prisma/schema.prisma` - Removed `directUrl` field -- ✏️ `src/lib/env.ts` - Removed `DIRECT_URL` variable -- ✏️ `docker-compose.yml` - Updated with PostgreSQL setup -- ✏️ `Dockerfile` - Enhanced with PostgreSQL support -- ✏️ `package.json` - Added Docker scripts and tsx - -#### New Files: -- 📄 `docker-compose.dev.yml` - Development setup -- 📄 `docker/init-db.sh` - Database initialization -- 📄 `docker/README.md` - Docker documentation -- 📄 `DOCKER_SETUP.md` - Complete Docker guide -- 📄 `env.example` - Environment template -- 📄 `.dockerignore` - Docker build optimization - -### 3. Set Up Environment Variables - -1. Remove Supabase-specific variables: -```bash -# Remove these from .env: -# DIRECT_URL=... -# SUPABASE_URL=... -# SUPABASE_ANON_KEY=... -``` - -2. Update database connection: -```bash -# For Docker (default): -DATABASE_URL=postgresql://postgres:postgres@db:5432/qrmaster?schema=public - -# For local development (without Docker): -DATABASE_URL=postgresql://postgres:postgres@localhost:5432/qrmaster?schema=public -``` - -3. Copy from template: -```bash -cp env.example .env -``` - -4. Generate secure secrets: -```bash -# Linux/Mac -openssl rand -base64 32 # Use for NEXTAUTH_SECRET -openssl rand -base64 32 # Use for IP_SALT - -# Windows PowerShell -[Convert]::ToBase64String((1..32 | ForEach-Object { Get-Random -Maximum 256 })) -``` - -### 4. Start Local PostgreSQL - -#### Option A: Development Mode (Recommended) - -```bash -# Start database only (run app on host) -npm run docker:dev - -# Wait for database to be ready -docker-compose -f docker-compose.dev.yml logs -f db -``` - -#### Option B: Full Docker - -```bash -# Start all services -npm run docker:prod - -# Wait for all services to be ready -docker-compose logs -f -``` - -### 5. Restore Your Data - -#### Option 1: Using Prisma Migrations (Clean Start) - -```bash -# Generate Prisma client -npm run db:generate - -# Run migrations -npm run db:migrate - -# Seed with demo data -npm run db:seed -``` - -#### Option 2: Restore from Backup (Preserve Data) - -```bash -# Restore your Supabase backup -cat backup.sql | docker-compose exec -T db psql -U postgres qrmaster - -# Or if running locally -psql -U postgres -d qrmaster < backup.sql - -# Then run migrations to update schema -npm run db:deploy -``` - -### 6. Verify Migration - -1. **Check Database Connection:** -```bash -# Connect to database -npm run docker:db - -# Or manually -docker-compose exec db psql -U postgres -d qrmaster - -# Run test query -SELECT COUNT(*) FROM "User"; -SELECT COUNT(*) FROM "QRCode"; -``` - -2. **Access Adminer (Database UI):** - - URL: http://localhost:8080 - - System: PostgreSQL - - Server: db - - Username: postgres - - Password: postgres - - Database: qrmaster - -3. **Test Your Application:** -```bash -# Start the app (if using dev mode) -npm run dev - -# Access: http://localhost:3050 -``` - -### 7. Update Your Deployment - -#### For Docker Production: - -```bash -# Build and deploy -docker-compose up -d --build - -# Run migrations -docker-compose exec web npx prisma migrate deploy - -# Check logs -docker-compose logs -f web -``` - -#### For Other Platforms (Vercel, Railway, etc.): - -Update your environment variables in the platform's dashboard: -- Remove: `DIRECT_URL` -- Update: `DATABASE_URL` to your new PostgreSQL connection string - -## Troubleshooting - -### Issue: Connection Refused - -```bash -# Check if database is running -docker-compose ps - -# Check database logs -docker-compose logs db - -# Restart database -docker-compose restart db -``` - -### Issue: Migration Errors - -```bash -# Reset migrations (⚠️ deletes data!) -npm run db:migrate reset - -# Or manually reset -docker-compose down -v -docker-compose up -d db -npm run db:migrate -``` - -### Issue: Prisma Client Not Generated - -```bash -# Regenerate Prisma client -npm run db:generate - -# Or -npx prisma generate -``` - -### Issue: Data Not Migrated - -```bash -# Check if backup was restored correctly -docker-compose exec db psql -U postgres -d qrmaster -c " -SELECT - schemaname, - tablename, - pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size -FROM pg_tables -WHERE schemaname = 'public' -ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC; -" -``` - -## Differences: Supabase vs Local PostgreSQL - -| Feature | Supabase | Local PostgreSQL | -|---------|----------|------------------| -| Hosting | Cloud (managed) | Self-hosted (Docker) | -| Connection Pooling | Built-in (Supavisor) | Prisma built-in | -| Database UI | Supabase Studio | Adminer (included) | -| Backups | Automatic | Manual (or scripted) | -| Cost | Free tier + paid | Free (infrastructure cost only) | -| Latency | Internet dependent | Local network | -| Setup | Account required | Docker only | -| Scaling | Automatic | Manual | - -## Benefits of Local PostgreSQL - -✅ **Full Control**: Own your data and infrastructure -✅ **No Vendor Lock-in**: Standard PostgreSQL -✅ **Lower Latency**: Local network speed -✅ **Cost**: No monthly fees -✅ **Privacy**: Data stays on your infrastructure -✅ **Development**: Easy local testing -✅ **Offline**: Works without internet - -## Next Steps - -1. ✅ Verify all data migrated correctly -2. ✅ Test all application features -3. ✅ Update your CI/CD pipelines -4. ✅ Set up automated backups: -```bash -# Create backup script -cat > backup.sh << 'EOF' -#!/bin/bash -BACKUP_DIR="./backups" -mkdir -p $BACKUP_DIR -docker-compose exec -T db pg_dump -U postgres qrmaster > "$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql" -EOF - -chmod +x backup.sh - -# Run daily backups (cron example) -# 0 2 * * * /path/to/backup.sh -``` - -5. ✅ Monitor your application -6. ✅ Update documentation - -## Rollback Plan - -If you need to rollback to Supabase: - -1. Keep your Supabase project active during testing -2. Keep your backup files safe -3. To rollback, simply change `DATABASE_URL` back to Supabase -4. Add back `DIRECT_URL` to `prisma/schema.prisma`: -```prisma -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") - directUrl = env("DIRECT_URL") -} -``` - -## Support - -For issues: -1. Check [DOCKER_SETUP.md](DOCKER_SETUP.md) for detailed Docker help -2. Check [docker/README.md](docker/README.md) for Docker commands -3. Review logs: `docker-compose logs -f` -4. Open an issue on GitHub - ---- - -🎉 **Congratulations!** You've successfully migrated from Supabase to local PostgreSQL! - - - - - - - diff --git a/SETUP_COMPLETE.md b/SETUP_COMPLETE.md deleted file mode 100644 index 770ebe3..0000000 --- a/SETUP_COMPLETE.md +++ /dev/null @@ -1,301 +0,0 @@ -# ✅ Setup Complete - PostgreSQL Migration - -## 🎉 What Was Done - -Your QR Master application has been successfully migrated from Supabase to a local PostgreSQL database with Docker! - -### ✅ Completed Tasks - -1. **Removed Supabase Dependencies** - - ❌ Removed `DIRECT_URL` from Prisma schema - - ❌ Removed `DIRECT_URL` from environment validation - - ❌ Cleaned up all Supabase-specific configurations - -2. **Created Docker Infrastructure** - - ✅ Production Docker Compose (`docker-compose.yml`) - - ✅ Development Docker Compose (`docker-compose.dev.yml`) - - ✅ Optimized Dockerfile for Next.js - - ✅ PostgreSQL 16 Alpine with persistence - - ✅ Redis 7 Alpine with AOF persistence - - ✅ Adminer database UI (optional) - - ✅ Custom bridge network for services - -3. **Database Setup** - - ✅ PostgreSQL initialization script - - ✅ UUID and pg_trgm extensions - - ✅ Health checks for all services - - ✅ Volume persistence - -4. **Documentation** - - ✅ Updated README.md - - ✅ Created DOCKER_SETUP.md (comprehensive guide) - - ✅ Created MIGRATION_FROM_SUPABASE.md - - ✅ Created docker/README.md - - ✅ Created CHANGELOG.md - - ✅ Created env.example template - -5. **Developer Tools** - - ✅ Setup script for Linux/Mac (`scripts/setup.sh`) - - ✅ Setup script for Windows (`scripts/setup.ps1`) - - ✅ npm Docker scripts - - ✅ .dockerignore for optimization - -6. **Environment Configuration** - - ✅ Created env.example template - - ✅ Updated environment validation - - ✅ Simplified configuration - -## 🚀 How to Get Started - -### Option 1: Quick Setup (Recommended) - -#### Windows: -```powershell -cd scripts -.\setup.ps1 -``` - -#### Linux/Mac: -```bash -chmod +x scripts/setup.sh -./scripts/setup.sh -``` - -### Option 2: Manual Setup - -#### Development Mode (Database in Docker, App on Host) -```bash -# 1. Copy environment file -cp env.example .env - -# 2. Edit .env and set NEXTAUTH_SECRET and IP_SALT -# Generate with: openssl rand -base64 32 - -# 3. Install dependencies -npm install - -# 4. Start database services -npm run docker:dev - -# 5. Run migrations -npm run db:migrate - -# 6. Seed database -npm run db:seed - -# 7. Start development server -npm run dev -``` - -#### Production Mode (Full Stack in Docker) -```bash -# 1. Copy and configure environment -cp env.example .env -# Edit .env with your settings - -# 2. Build and start -npm run docker:prod - -# 3. Run migrations -docker-compose exec web npx prisma migrate deploy - -# 4. Access at http://localhost:3050 -``` - -## 📍 Access Points - -After setup, you can access: - -- **🌐 Application**: http://localhost:3050 -- **🗄️ Database UI (Adminer)**: http://localhost:8080 - - System: PostgreSQL - - Server: db - - Username: postgres - - Password: postgres - - Database: qrmaster -- **💾 PostgreSQL**: localhost:5432 -- **🔴 Redis**: localhost:6379 - -## 📦 What's Included - -### Docker Services - -| Service | Image | Port | Purpose | -|---------|-------|------|---------| -| web | Next.js (custom) | 3050 | Application | -| db | postgres:16-alpine | 5432 | Database | -| redis | redis:7-alpine | 6379 | Cache | -| adminer | adminer:latest | 8080 | DB UI | - -### File Structure - -``` -QRMASTER/ -├── docker/ -│ ├── init-db.sh # PostgreSQL initialization -│ └── README.md # Docker commands -├── scripts/ -│ ├── setup.sh # Quick setup (Linux/Mac) -│ └── setup.ps1 # Quick setup (Windows) -├── src/ # Application code -├── prisma/ -│ └── schema.prisma # Updated schema (no directUrl) -├── docker-compose.yml # Production setup -├── docker-compose.dev.yml # Development setup -├── Dockerfile # Application container -├── env.example # Environment template -├── .dockerignore # Docker build optimization -├── DOCKER_SETUP.md # Complete Docker guide -├── MIGRATION_FROM_SUPABASE.md # Migration guide -├── CHANGELOG.md # What changed -└── README.md # Updated main docs -``` - -## 🛠️ Useful Commands - -### Development -```bash -npm run dev # Start dev server -npm run docker:dev # Start database only -npm run docker:dev:stop # Stop database -``` - -### Database -```bash -npm run db:migrate # Run migrations -npm run db:seed # Seed database -npm run db:studio # Open Prisma Studio -npm run docker:db # PostgreSQL CLI -``` - -### Docker -```bash -npm run docker:prod # Start all services -npm run docker:stop # Stop all services -npm run docker:logs # View logs -npm run docker:backup # Backup database -``` - -### Management -```bash -docker-compose ps # Check status -docker-compose logs -f # Follow logs -docker-compose restart web # Restart app -docker-compose exec db psql -U postgres -d qrmaster # DB CLI -``` - -## 📚 Documentation - -- **[README.md](README.md)** - Main documentation with quick start -- **[DOCKER_SETUP.md](DOCKER_SETUP.md)** - Complete Docker guide with troubleshooting -- **[MIGRATION_FROM_SUPABASE.md](MIGRATION_FROM_SUPABASE.md)** - Migration guide from Supabase -- **[docker/README.md](docker/README.md)** - Docker commands and operations -- **[CHANGELOG.md](CHANGELOG.md)** - What changed in this version - -## 🔐 Security Checklist - -Before deploying to production: - -- [ ] Change PostgreSQL password in docker-compose.yml -- [ ] Set strong NEXTAUTH_SECRET (generate with `openssl rand -base64 32`) -- [ ] Set strong IP_SALT (generate with `openssl rand -base64 32`) -- [ ] Update NEXTAUTH_URL to your domain -- [ ] Enable HTTPS/SSL -- [ ] Set up firewall rules -- [ ] Configure automated backups -- [ ] Review and test all environment variables - -## 🎯 Next Steps - -1. **Test the Application** - ```bash - npm run docker:dev - npm run dev - # Visit http://localhost:3050 - ``` - -2. **Review Configuration** - - Check `.env` file - - Verify database connection - - Test authentication - -3. **Set Up Backups** - ```bash - # Manual backup - npm run docker:backup - - # Or create automated backup script - # See DOCKER_SETUP.md for examples - ``` - -4. **Customize** - - Update database passwords - - Configure OAuth providers - - Adjust resource limits - - Set up monitoring - -## 🆘 Need Help? - -### Common Issues - -**Database won't start:** -```bash -docker-compose logs db -docker-compose restart db -``` - -**Port already in use:** -```bash -# Windows -netstat -ano | findstr :3050 - -# Change port in docker-compose.yml if needed -``` - -**Prisma errors:** -```bash -npm run db:generate -npm run db:migrate -``` - -### Resources - -- **DOCKER_SETUP.md** - Comprehensive troubleshooting -- **docker/README.md** - Common Docker commands -- **MIGRATION_FROM_SUPABASE.md** - Migration help - -### Support - -1. Check the documentation files -2. Review logs: `docker-compose logs -f` -3. Check service health: `docker-compose ps` -4. Open an issue on GitHub - -## ✨ Features - -Your application now has: - -- ✅ **Self-hosted PostgreSQL** - Full control over your data -- ✅ **Redis caching** - Improved performance -- ✅ **Docker Compose** - Easy deployment -- ✅ **Health checks** - Automatic monitoring -- ✅ **Data persistence** - Volumes for data safety -- ✅ **Database UI** - Adminer for easy management -- ✅ **Development mode** - Run only what you need -- ✅ **Production ready** - Optimized Docker builds -- ✅ **Complete docs** - Multiple guides and references - -## 🎊 Success! - -You're now ready to develop and deploy QR Master with your own PostgreSQL database! - -**Demo Credentials:** -- Email: demo@qrmaster.com -- Password: demo123 - ---- - -**Happy coding!** 🚀 - -Need more help? Check the documentation or run the setup scripts. - diff --git a/ahrefs-findings.md b/ahrefs-findings.md deleted file mode 100644 index de9670b..0000000 --- a/ahrefs-findings.md +++ /dev/null @@ -1,29 +0,0 @@ -# Ahrefs SEO Findings & Status - -## Critical Issues (Priority: High) -- [RESOLVED] **Page has no outgoing links** - - Found on: `privacy`, `newsletter`, `faq`, `/`, `qr-code-erstellen` - - *Status:* Verified `MarketingLayout` provides navigation. Added specific back-links to `newsletter` (admin), `login`, and `signup`. -- [RESOLVED] **Newsletter Page Misconfiguration** - - Found: `/newsletter` page has "Admin Dashboard" title. - - *Status:* Confirmed as internal Admin tool. Added "Back to Home" link to satisfy link checkers. -- [FIXED] **3XX Redirects & Links to Redirects** - - *Fixed in:* `blog/page.tsx` (links updated) and `blog/[slug]/page.tsx` (301s added). -- [FIXED] **Duplicate Metadata** - - *Fixed in:* `pricing`, `login`, `signup`, `qr-code-erstellen`. - -## Warnings (Priority: Medium) -- [VERIFIED] **Hreflang and HTML lang mismatch** - - Found on: `1 page`. - - *Status:* Verified `src/app/(marketing)/layout.tsx` has `lang="en"` and `(marketing-de)/layout.tsx` has `lang="de"`. Correct. -- [FIXED] **Image file size too large** - - *Fixed:* Swapped `1-boy.png` & `2-body.png` for WebP versions as requested. -- [FIXED] **H1 tag missing or empty** - - *Status:* Verified `sr-only` H1s exist on core pages. `faq` and `privacy` have visible H1s. - -## Notices (Priority: Low) -- [VERIFIED] **Low word count / Thin content** - - Found on: `login`, `signup`. - - *Status:* Expected behavior for functional auth pages. -- [VERIFIED] **Meta description too short** - - *Status:* Descriptions are concise and functional. No critical SEO impact. diff --git a/blog-posts-seo-guide.md b/blog-posts-seo-guide.md deleted file mode 100644 index 306f8c6..0000000 --- a/blog-posts-seo-guide.md +++ /dev/null @@ -1,1218 +0,0 @@ -# QR Master - SEO Blog Posts Guide - -This document contains detailed templates for 3 high-impact SEO blog posts to drive organic traffic to QR Master. - ---- - -## High-Volume Keywords to Target - -Based on keyword research, here are the highest-volume keywords related to QR codes: - -### Ultra High-Volume Keywords (100K+) -- **qr code generator** (673,000/month) - Main competitor keyword -- **free qr code generator** (110,000/month) - High intent -- **qr code** (246,000/month) - Too generic, but good for brand awareness -- **qr codes** (246,000/month) - Plural variant -- **qr code scanner** (165,000/month) - Scanner-focused -- **qr code scan** (165,000/month) - Action-based - -### Strategic Recommendations: -1. **Create dedicated landing page for "free qr code generator"** (110K/month) -2. **Optimize homepage for "qr code generator"** (673K/month) - Very competitive -3. **Target long-tail variants:** - - "qr code generator free" (90,500/month) - - "code qr generator free" (90,500/month) - - "create a qr code for free" (90,500/month) - -### Wikipedia Authority & Entity SEO - -**Important Wikipedia References to Link:** -1. **QR Code (EN):** https://en.wikipedia.org/wiki/QR_code - - 20.8M+ monthly visits - - Main authority on QR codes - - Use for: Technical explanations, history, standards - -2. **QR-Code (DE):** https://de.wikipedia.org/wiki/QR-Code - - 4.1M+ monthly visits - - German market authority - - Use for: German content, localization - -3. **QRpedia:** https://meta.wikimedia.org/wiki/QRpedia - - Dynamic QR code example - - Multi-language Wikipedia QR system - - Use as: Real-world example of dynamic QR codes - -4. **EPC-QR-Code:** https://de.wikipedia.org/wiki/EPC-QR-Code - - Payment QR codes - - SEPA standard - - Use for: Payment use cases - -**Entity Optimization Strategy:** -- Link to Wikipedia articles for: - - "What is a QR Code?" sections - - Technical explanations (ISO/IEC 18004 standard) - - QR code inventor: Masahiro Hara, Denso Wave (1994) - - Dynamic QR code concept (link to QRpedia as example) - -**Key QR Code Entities to Mention:** -- **Inventor:** Masahiro Hara (Denso Wave, 1994) -- **Standard:** ISO/IEC 18004 -- **Types:** Static QR, Dynamic QR, Micro-QR, Secure-QR, iQR, Frame-QR -- **Use Cases:** Wikipedia QRpedia, payment (EPC-QR-Code), tracking - ---- - -## Blog Post 1: QR Code Tracking - Complete Guide 2025 - -### SEO Strategy -- **Primary Keyword:** qr code tracking (320/month, Difficulty: 19 - Easy) -- **Secondary Keywords:** - - qr code tracking software (>100/month, Easy) - - qr code tracking app (<100/month, Easy) - - free qr code tracking (<100/month, Hard) - - qr code tracking with google analytics (<100/month, Easy) -- **High-Volume Related Keywords to Include:** - - qr code scanner (165,000/month) - Mention in context - - free qr code generator (110,000/month) - Link to landing page - - qr code scan (165,000/month) - Natural language use -- **Wikipedia Entity Links:** - - Link to: https://en.wikipedia.org/wiki/QR_code (QR code definition) - - Mention: Denso Wave (inventor, 1994) - - Reference: ISO/IEC 18004 standard -- **Target Length:** 2000-2500 words -- **Meta Title:** QR Code Tracking: Complete Guide 2025 (Free Tools & Best Practices) -- **Meta Description:** Learn how to track QR code scans with real-time analytics. Compare free vs paid tracking tools, setup Google Analytics, and measure ROI. Complete guide 2025. - -### Content Outline - -#### Introduction (200 words) -- What is QR code tracking and why it matters -- Benefits: measure ROI, understand user behavior, optimize campaigns -- Overview of what you'll learn in this guide - -#### Section 1: What is QR Code Tracking? (300 words) -- Definition and how it works -- Static vs Dynamic QR codes (only dynamic can be tracked) -- What data can you track: - - Number of scans (total and unique) - - Location (country, city) - - Device type (iOS, Android, Desktop) - - Time and date - - Referrer sources - - User behavior after scan - -#### Section 2: Why Track QR Codes? (400 words) -- **Marketing ROI:** Measure campaign performance - - Example: Print ad with QR code - track how many people scan - - Calculate cost per scan - - A/B test different designs/placements -- **Product Engagement:** See which products get most scans - - Example: Product packaging QR codes - - Track manual downloads, warranty registrations -- **Event Management:** Monitor attendance and engagement - - Example: Conference badges with QR codes - - Track session attendance, booth visits -- **Customer Insights:** Understand your audience - - Where are your customers located? - - What devices do they use? - - When do they scan (time of day, day of week)? - -#### Section 3: How to Track QR Code Scans (600 words) - -**Method 1: Using Dynamic QR Code Generators (Recommended)** -- Explanation: Dynamic QR contains short link that redirects -- Benefits: Built-in analytics, easy setup, no coding -- **Step-by-step with QR Master:** - 1. Sign up for free account - 2. Create dynamic QR code - 3. Access analytics dashboard - 4. View real-time scan data -- Screenshot examples (mock analytics dashboard) - -**Method 2: Google Analytics with UTM Parameters** -- What are UTM parameters? -- How to add UTM to your QR code URL -- Example: `https://example.com?utm_source=qr&utm_medium=print&utm_campaign=summer2025` -- Setting up goals in Google Analytics -- Viewing QR code traffic in GA4 - -**Method 3: Custom URL Shorteners with Analytics** -- Using Bitly, TinyURL, or similar -- Pros: Simple, free tier available -- Cons: Limited customization, no device/location data -- Best for: Simple scan counting - -**Method 4: Self-Hosted Tracking (Advanced)** -- For developers: Build your own redirect system -- Tools: Node.js, PHP, or serverless functions -- Database to log scans -- Privacy considerations - -#### Section 4: QR Code Tracking Tools Comparison (500 words) - -**Free Tools:** -| Tool | Scans/Month | Analytics | Custom Domain | Price | -|------|-------------|-----------|---------------|-------| -| QR Master Free | Unlimited | Full | No | $0 | -| Google Analytics | Unlimited | Full | Yes | $0 | -| Bitly Free | 1,000 | Basic | No | $0 | - -**Paid Tools:** -| Tool | Scans/Month | Analytics | Custom Domain | Price | -|------|-------------|-----------|---------------|-------| -| QR Master Pro | Unlimited | Advanced | Yes | $9/mo | -| QR Code Generator | Unlimited | Full | Yes | $12/mo | -| Beaconstac | Unlimited | Advanced | Yes | $49/mo | - -**Recommendation:** -- For beginners: Start with QR Master Free or Google Analytics -- For businesses: QR Master Pro (best value) -- For enterprises: Beaconstac or custom solution - -#### Section 5: QR Code Tracking Best Practices (400 words) - -1. **Always Use Dynamic QR Codes** - - Static QR codes cannot be tracked - - Dynamic = editable + trackable - -2. **Set Clear Goals Before Tracking** - - What do you want to measure? - - Define success metrics - - Example: >100 scans/month, >50% unique users - -3. **Use UTM Parameters Consistently** - - Naming convention: `qr-[location]-[campaign]` - - Example: `qr-billboard-summer2025` - -4. **Test Your QR Codes Before Printing** - - Scan with multiple devices - - Check tracking is working - - Verify landing page loads fast - -5. **Monitor Regularly** - - Weekly check for active campaigns - - Monthly reports for stakeholders - - Set up alerts for unusual activity - -6. **Privacy & GDPR Compliance** - - Hash IP addresses before storing - - Respect Do Not Track (DNT) headers - - Include QR code tracking in privacy policy - -#### Section 6: QR Code Tracking Use Cases (300 words) - -**Real-World Examples:** - -1. **Restaurant Menus** - - Track how many customers scan menu QR - - Identify peak scanning times - - A/B test menu designs - -2. **Retail Product Packaging** - - Track warranty registrations - - Measure manual downloads - - Identify popular products - -3. **Event Tickets** - - Real-time check-in tracking - - Prevent duplicate scans - - Attendance analytics - -4. **Real Estate Signs** - - Track property interest - - Capture leads automatically - - Measure marketing effectiveness - -#### Conclusion (200 words) -- Recap: QR code tracking is essential for measuring success -- Key takeaways: - - Use dynamic QR codes - - Choose the right tracking tool - - Follow best practices - - Monitor and optimize -- Call-to-action: Try QR Master for free -- Link to: /qr-code-tracking landing page - -#### Internal Links: -- Link to: /dynamic-qr-code-generator -- Link to: /bulk-qr-code-generator -- Link to: /pricing -- Link to: /signup - -#### External Links (for SEO authority): -- Google Analytics documentation -- GDPR guidelines -- QR code standards (ISO/IEC 18004) - ---- - -## Blog Post 2: Dynamic vs Static QR Codes - Which Should You Use? - -### SEO Strategy -- **Primary Keyword:** dynamic vs static qr code (200-500/month estimated) -- **Secondary Keywords:** - - static qr code vs dynamic - - difference between static and dynamic qr codes - - when to use dynamic qr codes - - dynamic qr code benefits -- **High-Volume Related Keywords:** - - qr code generator (673,000/month) - Link to main page - - free qr code generator (110,000/month) - Mention free tier - - dynamic qr code generator (1,200/month) - Internal link -- **Wikipedia Entity References:** - - Link to: https://en.wikipedia.org/wiki/QR_code (general explanation) - - Link to: https://meta.wikimedia.org/wiki/QRpedia (example of dynamic QR) - - Mention: QRpedia as real-world dynamic QR example - - Reference: Wikipedia's multilingual QR system -- **Target Length:** 1800-2200 words -- **Meta Title:** Dynamic vs Static QR Codes: Complete Comparison Guide 2025 -- **Meta Description:** Understand the difference between static and dynamic QR codes. Learn when to use each type, pros/cons, and how dynamic QR codes save money. Expert guide 2025. - -### Content Outline - -#### Introduction (200 words) -- QR codes are everywhere - menus, packaging, ads, business cards -- But not all QR codes are created equal -- Two types: Static and Dynamic -- This guide helps you choose the right type for your needs - -#### Section 1: What is a Static QR Code? (300 words) - -**Definition:** -- Contains the actual data directly in the code -- Cannot be changed after creation -- Once printed, it's permanent - -**How It Works:** -- QR code scanner reads the encoded data directly -- No intermediate server or redirect -- Instant access to content - -**Common Uses:** -- WiFi passwords -- Business card vCards -- App store links -- Fixed URLs that never change - -**Pros:** -- ✅ Works forever (no dependency on external service) -- ✅ Faster scan (no redirect delay) -- ✅ Works offline (no internet needed for content) -- ✅ Free to create -- ✅ Privacy-friendly (no tracking) - -**Cons:** -- ❌ Cannot edit after printing -- ❌ No analytics or tracking -- ❌ URL shown in QR is long and ugly -- ❌ Cannot A/B test -- ❌ No expiration date option - -**Visual Example:** -``` -Static QR Code Content: -https://www.example.com/very/long/url/path/to/landing/page?utm_source=print&utm_medium=flyer - -└─> Scans directly to this URL -└─> Cannot change destination -└─> No tracking data -``` - -#### Section 2: What is a Dynamic QR Code? (300 words) - -**Definition:** -- Contains a short redirect URL -- The redirect destination can be changed anytime -- Enables tracking and analytics - -**How It Works:** -- QR code contains short link (e.g., qrmaster.com/abc123) -- User scans → Goes to short link → Redirects to final destination -- Redirect can be updated from dashboard - -**Common Uses:** -- Marketing campaigns -- Product packaging -- Event tickets -- Business cards (when contact info might change) -- Print ads - -**Pros:** -- ✅ Edit destination URL anytime -- ✅ Full analytics (scans, location, device) -- ✅ A/B testing capabilities -- ✅ Short, clean URLs -- ✅ Set expiration dates -- ✅ Password protection -- ✅ Retargeting pixels - -**Cons:** -- ❌ Depends on service provider -- ❌ Usually requires subscription for advanced features -- ❌ Slight redirect delay (milliseconds) -- ❌ Requires internet connection - -**Visual Example:** -``` -Dynamic QR Code Content: -qrmaster.com/abc123 - -└─> Redirects to: https://summer-sale.com (editable) -└─> Logs: Device, Location, Time -└─> Can change to: https://fall-sale.com later -``` - -#### Section 3: Static vs Dynamic - Side-by-Side Comparison (400 words) - -**Comparison Table:** - -| Feature | Static QR | Dynamic QR | -|---------|-----------|------------| -| **Edit After Printing** | ❌ No | ✅ Yes | -| **Track Scans** | ❌ No | ✅ Yes | -| **Analytics Dashboard** | ❌ No | ✅ Yes | -| **A/B Testing** | ❌ No | ✅ Yes | -| **URL Length** | Long, ugly | Short, clean | -| **Cost** | Free | Free-$50/mo | -| **Works Forever** | ✅ Yes | Depends on service | -| **Redirect Speed** | Instant | <100ms delay | -| **Privacy** | High | Lower (tracked) | -| **Expiration Date** | ❌ No | ✅ Yes | -| **Password Protection** | ❌ No | ✅ Yes | -| **Best For** | Fixed content | Marketing campaigns | - -**Real-World Scenario:** - -**Static QR Code Example:** -- WiFi password in coffee shop -- App store download link -- Fixed website URL -- vCard on gravestone (never changes!) - -**Dynamic QR Code Example:** -- Billboard ad for seasonal promotion -- Product packaging linking to manual (manual updates) -- Business card (job title might change) -- Restaurant menu (prices change) - -#### Section 4: When to Use Static QR Codes (300 words) - -**Choose Static When:** - -1. **Content Never Changes** - - Example: WiFi password QR in office - - Example: "Download our app" with fixed App Store link - - Why: No need for editing capability - -2. **Privacy is Critical** - - Example: Personal contact info - - Example: Sensitive document links - - Why: No tracking, no third-party service - -3. **Long-Term Reliability Needed** - - Example: Museum exhibits - - Example: Book back covers - - Example: Historical markers - - Why: Works forever, no service dependency - -4. **Offline Content** - - Example: WiFi credentials - - Example: vCard contact info - - Example: Plain text messages - - Why: No internet needed - -5. **Budget is $0** - - Example: Personal projects - - Example: Small businesses with no tracking needs - - Why: Completely free, no subscription - -**Cost Savings Example:** -- Print 10,000 business cards with static WiFi QR -- Cost: $0 for QR code service -- Works: Forever -- Alternative (dynamic): $5-15/month minimum - -#### Section 5: When to Use Dynamic QR Codes (300 words) - -**Choose Dynamic When:** - -1. **Content Might Change** - - Example: Product manual that gets updated - - Example: Seasonal promotions - - Example: Event schedule - - Why: Edit without reprinting - -2. **Tracking is Important** - - Example: Marketing campaigns - - Example: Product engagement - - Example: Event attendance - - Why: Measure ROI, optimize campaigns - -3. **A/B Testing Needed** - - Example: Test different landing pages - - Example: Test different offers - - Why: Improve conversion without reprinting - -4. **Large Print Run** - - Example: 50,000 product labels - - Example: 10,000 event posters - - Why: Can't afford to reprint if URL changes - -5. **Professional Marketing** - - Example: Billboard advertising - - Example: Magazine ads - - Example: Product packaging - - Why: Need analytics to justify ad spend - -**ROI Example:** -- Print 5,000 flyers with dynamic QR for $500 -- QR service cost: $9/month -- Track 2,347 scans over 3 months -- Cost per scan: $0.23 -- Can update offer mid-campaign -- Total cost: $527 (vs $500 reprint if static needed updating) - -#### Section 6: Migration: Static to Dynamic (200 words) - -**Can You Change Static to Dynamic?** -**Short answer: No.** - -Once a static QR code is created and printed, you cannot convert it to dynamic. - -**Solution: Plan Ahead** - -If there's ANY chance you'll need to edit the URL: -1. Start with dynamic QR code -2. Cost is minimal ($9-29/month) -3. Reprint costs are much higher - -**When to Reprint:** -- Static QR pointing to dead link -- Campaign ended but QR still visible -- Company website changed URL - -**Prevention Strategy:** -- Use dynamic QR for anything printed in quantities >100 -- Use static only for truly permanent content - -#### Section 7: Cost Analysis (300 words) - -**Static QR Code Costs:** -- Creation: $0 -- Maintenance: $0 -- Total Lifetime Cost: $0 - -**Dynamic QR Code Costs:** - -| Provider | Free Tier | Pro Tier | Enterprise | -|----------|-----------|----------|------------| -| QR Master | 3 codes | $9/mo (50 codes) | $29/mo (500 codes) | -| QR Code Generator | 1 code | $12/mo | $50/mo | -| Beaconstac | Trial only | $49/mo | $199/mo | - -**Break-Even Analysis:** - -Scenario: 10,000 business cards - -**Option A: Static QR** -- Print cost: $200 -- QR cost: $0 -- Total: $200 -- Risk: If URL changes, reprint for $200 - -**Option B: Dynamic QR** -- Print cost: $200 -- QR cost: $9/month -- Total Year 1: $308 -- Benefit: Can update URL anytime, track scans - -**Recommendation:** -- For <100 prints: Static is fine -- For 100-1000 prints: Dynamic if content might change -- For >1000 prints: Always use dynamic - -#### Conclusion (200 words) -- Static vs Dynamic: Both have their place -- Decision tree: - ``` - Will content change? - └─> Yes → Dynamic - └─> No → Need tracking? - └─> Yes → Dynamic - └─> No → Static - ``` -- Most businesses benefit from dynamic QR codes -- Cost is minimal compared to reprint costs -- Start with free tier to test -- Call-to-action: Create your first dynamic QR code free - -#### Internal Links: -- Link to: /dynamic-qr-code-generator -- Link to: /pricing -- Link to: /qr-code-tracking -- Link to: Blog Post #1 (QR Code Tracking Guide) - ---- - -## Blog Post 3: How to Generate Bulk QR Codes from Excel - -### SEO Strategy -- **Primary Keyword:** bulk qr code generator (>100/month, Difficulty: Easy) -- **Secondary Keywords:** - - bulk qr code generator from excel (<100/month, Easy) - - qr code generator excel (<100/month, Easy) - - bulk qr code generator free (<100/month, Medium) - - free bulk qr code generator (<100/month, Medium) -- **High-Volume Related Keywords:** - - qr code generator (673,000/month) - Link to homepage - - free qr code generator (110,000/month) - Mention free options - - qr codes (246,000/month) - Plural form, natural use -- **Wikipedia Entity References:** - - Link to: https://en.wikipedia.org/wiki/QR_code (QR code basics) - - Reference: ISO/IEC 18004 standard (technical specs) - - Mention: Batch generation use cases - - Note: Wikipedia uses QRpedia for bulk QR generation -- **Target Length:** 1500-2000 words -- **Meta Title:** Bulk QR Code Generator from Excel: Complete Tutorial 2025 -- **Meta Description:** Generate hundreds of QR codes from Excel or CSV files in minutes. Step-by-step guide with templates, best practices, and free tools. Perfect for products, events, inventory. - -### Content Outline - -#### Introduction (200 words) -- Need to create QR codes for 100+ products, tickets, or assets? -- Manual creation takes hours - bulk generation takes minutes -- This guide shows how to generate QR codes from Excel/CSV -- Perfect for: Product labels, event tickets, asset tags, marketing - -#### Section 1: What is Bulk QR Code Generation? (200 words) - -**Definition:** -- Create hundreds or thousands of QR codes at once -- Upload Excel/CSV file with data -- System generates all QR codes automatically -- Download as organized ZIP file - -**Why You Need It:** -- ❌ Manual creation: 2-5 minutes per QR code - - 100 codes = 3-8 hours of work -- ✅ Bulk creation: Upload file, get all codes in minutes - - 100 codes = 2-3 minutes - -**Common Use Cases:** -1. Product Labels (QR per SKU) -2. Event Tickets (unique QR per attendee) -3. Asset Management (QR per equipment item) -4. Marketing Campaigns (QR per location) -5. Menu Items (QR per dish) - -#### Section 2: How Bulk QR Generation Works (300 words) - -**The Process:** - -``` -Step 1: Prepare Data - ↓ -Excel/CSV File: -Product Name | URL | SKU -Product A | url1 | 001 -Product B | url2 | 002 - -Step 2: Upload to QR Generator - ↓ -Map Columns: -- Name → Title -- URL → Destination -- SKU → Filename - -Step 3: Customize Design - ↓ -Apply branding to ALL codes: -- Add logo -- Set colors -- Choose frame style - -Step 4: Generate & Download - ↓ -Download ZIP file: -product-001.png -product-002.png -... -``` - -**Requirements:** -- Excel file (.xlsx) or CSV file (.csv) -- Minimum columns: Name, URL -- Optional columns: Description, Tags, Category -- Max file size: Usually 10MB -- Max rows: 1000-10,000 (depends on service) - -**Output:** -- ZIP file with all QR code images -- PNG format (usually) -- Optional: SVG for print quality -- Naming: Based on your column (e.g., SKU, Name) - -#### Section 3: Excel File Format & Template (400 words) - -**Required Columns:** - -| Column Name | Description | Required | Example | -|-------------|-------------|----------|---------| -| name | QR code title/label | Yes | "Summer Promo Flyer" | -| url | Destination URL | Yes | https://example.com/sale | -| description | Optional notes | No | "50% off sale" | -| tags | Categories | No | "marketing, summer, 2025" | - -**Example Excel File:** - -```csv -name,url,description,tags -Product A Manual,https://manuals.com/product-a,User manual for Product A,manuals,electronics -Product B Warranty,https://warranty.com/product-b,Warranty registration,warranty,electronics -Store Location NYC,https://maps.com/store-nyc,NYC store directions,locations,stores -Store Location LA,https://maps.com/store-la,LA store directions,locations,stores -``` - -**Download Template:** -- [Excel Template Download Link] -- [CSV Template Download Link] -- [Google Sheets Template Link] - -**Best Practices for File Prep:** - -1. **Clean Your Data** - - Remove empty rows - - Check all URLs are valid - - No special characters in filenames - - Use consistent naming - -2. **Test with Small Batch First** - - Upload 5-10 rows first - - Verify output is correct - - Then upload full dataset - -3. **URL Formatting** - - Include https:// prefix - - Test all URLs work - - Use URL shorteners if needed - -4. **Naming Convention** - - Use SKU or product ID in name column - - Keeps files organized - - Example: "PROD-001", "PROD-002" - -5. **File Size** - - Keep under 10MB - - Split large datasets - - 1000 rows ≈ 50KB - -#### Section 4: Step-by-Step Tutorial with QR Master (500 words) - -**Step 1: Prepare Your Excel File** - -1. Open Excel or Google Sheets -2. Create columns: name, url, description, tags -3. Fill in your data -4. Save as `.xlsx` or export as `.csv` -5. Example: - ``` - name | url | tags - Product A | https://shop.com/product-a | electronics, sale - Product B | https://shop.com/product-b | electronics - ``` - -**Step 2: Sign Up for QR Master** - -1. Go to qrmaster.com/signup -2. Create free account -3. Verify email -4. Free plan: Up to 3 dynamic QR codes -5. Business plan: Up to 500 codes, bulk upload - -**Step 3: Navigate to Bulk Upload** - -1. Click "Create QR Code" -2. Select "Bulk Upload" tab -3. Choose "Upload Excel/CSV" -4. Or drag and drop file - -**Step 4: Map Your Columns** - -1. System auto-detects columns -2. Verify mapping: - - name → Title - - url → Destination URL - - description → Description - - tags → Tags -3. Preview first 5 rows -4. Click "Looks good" - -**Step 5: Customize Design (Optional)** - -Apply branding to ALL QR codes: - -1. **Upload Logo** (PNG, max 1MB) -2. **Set Colors:** - - Foreground: #000000 (default black) - - Background: #FFFFFF (default white) - - Or use brand colors -3. **Choose Frame Style:** - - No frame - - Square frame - - Rounded frame - - With text ("Scan Me") -4. **Set Size:** - - 200x200px (web) - - 500x500px (print) - - 1000x1000px (high-res print) - -**Step 6: Generate QR Codes** - -1. Click "Generate All" -2. Processing time: - - 100 codes ≈ 30 seconds - - 500 codes ≈ 2 minutes - - 1000 codes ≈ 4 minutes -3. Progress bar shows status -4. Email notification when done (for large batches) - -**Step 7: Download & Use** - -1. Click "Download ZIP" -2. Extract files on your computer -3. Files named by your "name" column -4. Organized and ready to use -5. Print or share as needed - -**Pro Tips:** -- Test a small batch first -- Use high-res (1000px) for print -- Name files with SKU for easy identification -- Keep source Excel file as backup - -#### Section 5: Use Cases & Examples (300 words) - -**1. E-Commerce Product Labels** - -Scenario: 500 products need QR codes for: -- Product manual -- Warranty registration -- Customer support - -Excel Setup: -```csv -name,url -SKU-001,https://manual.com/sku-001 -SKU-002,https://manual.com/sku-002 -... -``` - -Result: -- 500 QR codes in 2 minutes -- Print on labels -- Stick on packaging -- Track scans per product - -**2. Event Tickets** - -Scenario: 1000 attendees, each needs unique QR code - -Excel Setup: -```csv -name,url -Ticket-001,https://checkin.com/verify/001 -Ticket-002,https://checkin.com/verify/002 -... -``` - -Result: -- Unique QR per ticket -- Prevent duplicates -- Real-time check-in -- Track attendance - -**3. Asset Management** - -Scenario: Track 200 office equipment items - -Excel Setup: -```csv -name,url,description -LAPTOP-001,https://assets.com/laptop-001,Dell Latitude 5420 -DESK-001,https://assets.com/desk-001,Standing Desk -... -``` - -Result: -- QR code sticker on each item -- Scan to see: Owner, location, maintenance history -- Update info without reprinting - -**4. Multi-Location Marketing** - -Scenario: 50 retail locations, each gets unique QR - -Excel Setup: -```csv -name,url,tags -NYC-Store,https://promo.com?location=nyc,new-york,retail -LA-Store,https://promo.com?location=la,california,retail -... -``` - -Result: -- Track which location drives most scans -- Different promotions per location -- Measure local campaign ROI - -#### Section 6: Free vs Paid Bulk QR Tools (200 words) - -**Free Tools:** - -1. **QR Master Free** - - Limit: 3 dynamic codes - - Bulk: Not available on free plan - - Upgrade: $9/mo for 50 codes + bulk - -2. **QuickChart** - - Limit: API-based, technical - - Free: Yes, open source - - Bulk: Requires coding - -3. **Google Sheets + Script** - - Limit: 100 codes per execution - - Free: Yes - - Bulk: Requires Google Apps Script knowledge - -**Paid Tools (Recommended for Business):** - -| Tool | Price | Max Codes | Bulk Upload | -|------|-------|-----------|-------------| -| QR Master Pro | $9/mo | 50 | ✅ Excel/CSV | -| QR Master Business | $29/mo | 500 | ✅ Excel/CSV | -| QR Code Generator | $50/mo | Unlimited | ✅ Excel/CSV | -| Beaconstac | $99/mo | 500 | ✅ Excel/CSV | - -**Recommendation:** -- For <50 codes: QR Master Pro -- For 50-500 codes: QR Master Business (best value) -- For >500 codes: Custom quote - -#### Conclusion (200 words) -- Bulk QR generation saves hours of manual work -- Excel/CSV upload is the easiest method -- Steps: Prepare file → Upload → Customize → Download -- Use cases: Products, events, assets, marketing -- Start with small test batch -- QR Master Business plan: Best for most businesses - -**Call-to-Action:** -1. Download our Excel template -2. Sign up for free trial -3. Generate your first batch -4. Upgrade when you need more - -**Next Steps:** -- Read: Dynamic vs Static QR Codes -- Try: QR Code Tracking Guide -- Upgrade: View Pricing Plans - -#### Internal Links: -- Link to: /bulk-qr-code-generator landing page -- Link to: /pricing -- Link to: /dynamic-qr-code-generator -- Link to: Blog Post #1 (Tracking) -- Link to: Blog Post #2 (Dynamic vs Static) - ---- - -## SEO Implementation Checklist - -### For Each Blog Post: - -**On-Page SEO:** -- [ ] Use primary keyword in H1 (title) -- [ ] Use primary keyword in first 100 words -- [ ] Use secondary keywords in H2 headings -- [ ] Include keyword in meta title -- [ ] Include keyword in meta description -- [ ] Use keyword in URL slug -- [ ] Add keyword in image alt tags -- [ ] Internal links to related pages (min 3-5) -- [ ] External links to authority sites (min 2-3) -- [ ] Optimize for featured snippets (use lists, tables) - -**Content Quality:** -- [ ] Length: 1500-2500 words -- [ ] Readability: Grade 8-10 reading level -- [ ] Headers: Use H2, H3, H4 structure -- [ ] Images: Min 3-5 relevant images -- [ ] Screenshots: Show actual product (mockups OK) -- [ ] Examples: Real-world use cases -- [ ] Call-to-action: Clear next steps - -**Technical SEO:** -- [ ] Mobile-responsive -- [ ] Fast load time (<3 seconds) -- [ ] Schema markup (Article schema) -- [ ] Sitemap updated -- [ ] Internal linking structure -- [ ] Canonical URL set -- [ ] Social sharing tags (Open Graph) - -**Post-Publish:** -- [ ] Submit to Google Search Console -- [ ] Share on social media -- [ ] Link from homepage or features page -- [ ] Monitor in Google Analytics -- [ ] Update monthly with fresh data - ---- - -## Blog Post Publishing Schedule - -**Week 1:** -- Write Blog Post #1: QR Code Tracking Guide -- Publish on Monday -- Promote on LinkedIn, Twitter - -**Week 2:** -- Write Blog Post #2: Dynamic vs Static -- Publish on Monday -- Promote on Reddit (r/marketing, r/smallbusiness) - -**Week 3:** -- Write Blog Post #3: Bulk QR from Excel -- Publish on Monday -- Promote on Product Hunt - -**Week 4:** -- Monitor analytics -- Update posts based on feedback -- Plan next 3 blog posts - ---- - -## Content Promotion Strategy - -**Organic:** -1. Share on LinkedIn (target: marketing professionals) -2. Post in relevant subreddits: - - r/marketing - - r/smallbusiness - - r/entrepreneur - - r/QRCode -3. Answer Quora questions about QR codes -4. Add to newsletter -5. Email to existing users - -**Paid (Optional):** -1. Reddit ads ($50/month) -2. LinkedIn sponsored posts ($100/month) -3. Google Ads for high-intent keywords ($200/month) - -**Link Building:** -1. Guest post on marketing blogs -2. Reach out to marketing newsletters -3. Comment on related blog posts -4. Share in Slack communities - ---- - -## Tracking Success - -**Metrics to Monitor:** - -| Metric | Goal | Tool | -|--------|------|------| -| Organic traffic | +500/month after 3 months | Google Analytics | -| Keyword rankings | Top 10 for primary keywords | Google Search Console | -| Backlinks | 10+ per post | Ahrefs/SEMrush | -| Conversions | 2-5% signup rate from blog | Google Analytics Goals | -| Avg. time on page | >3 minutes | Google Analytics | -| Bounce rate | <60% | Google Analytics | - -**Monthly Review:** -- Check keyword rankings -- Analyze top-performing posts -- Update with fresh data -- Add new internal links -- Respond to comments -- Plan next month's content - ---- - -## Next Steps - -1. **Choose Blog Post to Write First** - - Recommendation: Start with #1 (QR Code Tracking) - - Reason: Easiest keyword (Difficulty: 19) - - Highest chance of quick ranking - -2. **Set Up Blog Infrastructure** - - Ensure `/blog/[slug]` route works - - Add schema markup for blog posts - - Create blog post template - - Set up analytics tracking - -3. **Write First Draft** - - Use outline above - - Write in Markdown - - Add images/screenshots - - Preview before publishing - -4. **Publish & Promote** - - Publish on website - - Submit to Google - - Share on social - - Monitor performance - ---- - -## Additional High-Volume Keyword Opportunities - -### Future Landing Pages to Create - -Based on search volume data, consider creating these additional landing pages: - -#### 1. "Free QR Code Generator" Landing Page -- **Keyword:** free qr code generator (110,000/month) -- **Related:** qr code generator free (90,500/month), code qr generator free (90,500/month) -- **Strategy:** Highlight free tier, no signup required for basic features -- **CTA:** "Create Free QR Code Now" → Signup for advanced features -- **Differentiation:** - - Unlimited static QR codes free - - 3 dynamic QR codes free (vs competitors: 0-1) - - No expiration, no watermark - -#### 2. "QR Code Scanner" Info/Tool Page -- **Keyword:** qr code scanner (165,000/month) -- **Related:** qr code scan (165,000/month), code qr scanner (201,000/month) -- **Strategy:** Educational page + web-based scanner tool -- **Content:** - - How QR code scanners work - - Best scanner apps (iOS/Android) - - Online QR scanner (upload image) - - Scan history and analytics -- **Conversion Path:** "Want to track who scans your codes?" → QR Master tracking - -#### 3. "Create QR Code" Action Page -- **Keyword:** create a qr code for free (90,500/month) -- **Strategy:** Simple, fast creation page -- **Design:** Instant QR generator on page load -- **Features:** - - Enter URL → QR code appears instantly - - Download immediately (no signup) - - "Save & track this QR code" → Signup prompt - -### Wikipedia-Inspired Content Ideas - -#### 4. "QR Code History & Technology" Blog Post -- **Keywords:** qr code, qrcode, what is qr code -- **Wikipedia Sources:** - - History: Masahiro Hara, Denso Wave (1994) - - Technical: ISO/IEC 18004 standard - - Evolution: Static → Dynamic → iQR → Frame-QR - - Use cases: Automotive tracking → Marketing → Payments -- **Goal:** Rank for informational queries, build authority -- **Internal Links:** Link to all product pages - -#### 5. "QR Code Types Explained" Guide -- **Content from Wikipedia research:** - - Standard QR Code (most common) - - Micro-QR-Code (small spaces) - - Secure-QR-Code (encryption) - - iQR-Code (rectangular) - - Frame-QR-Code (custom center image) - - EPC-QR-Code (payment, SEPA) -- **CTA:** "Create any type of QR code with QR Master" - -### Semantic SEO: Entity Mentions - -Include these entities in all blog posts for better Google understanding: - -**Core Entities:** -1. QR Code (main topic) -2. Barcode / Matrix Barcode (category) -3. Denso Wave (inventor company) -4. Masahiro Hara (inventor person) -5. ISO/IEC 18004 (standard) -6. Quick Response (QR meaning) - -**Related Entities:** -- Dynamic QR Code vs Static QR Code (comparison) -- URL shortener (technology) -- QR code generator (tool category) -- QR code scanner (complementary tool) -- Analytics / Tracking (feature) -- Mobile marketing (use case) - -**Competitor Entities to Mention (for comparison):** -- QR Code Monkey -- GoQR.me -- Canva (QR generator feature) -- Adobe (QR generator feature) -- Bitly (URL shortener with QR) - -### Content Cluster Strategy - -**Hub Page:** "Ultimate QR Code Guide" (pillar content) -- Links to all blog posts -- Comprehensive 5000+ word guide -- Target: "qr code" (246,000/month) - -**Spoke Pages (already created):** -1. QR Code Tracking Guide -2. Dynamic vs Static QR Codes -3. Bulk QR Generator Guide -4. (Future) QR Code Scanner Guide -5. (Future) QR Code History & Types -6. (Future) QR Code Best Practices - -**Internal Linking Map:** -``` -Homepage → Hub Page → Spoke Pages - ↓ - Landing Pages (tracking, dynamic, bulk) - ↓ - Product Features - ↓ - Signup/Pricing -``` - -### Quick Win Keywords (Low Difficulty, High Intent) - -Target these for fast ranking: - -| Keyword | Volume | Difficulty | Page Type | -|---------|--------|------------|-----------| -| qr code tracking | 320/mo | Easy | ✅ Done (Landing Page) | -| bulk qr code generator | >100/mo | Easy | ✅ Done (Landing Page) | -| dynamic qr code generator | 1,200/mo | Medium | ✅ Done (Landing Page) | -| qr code generator with logo | >1000/mo | Medium | Landing Page (TODO) | -| free trackable qr codes | 200/mo | Good | Blog Post (TODO) | -| qr code analytics | <100/mo | Easy | Blog Post (TODO) | - -### Competitor Keyword Gaps - -Keywords competitors rank for, but you don't (yet): - -1. **"qr code generator with logo"** (>1,000/month) - - Create dedicated landing page - - Show logo upload feature prominently - -2. **"custom qr code"** (>1,000/month) - - Emphasize customization options - - Show design examples - -3. **"qr code builder"** (673,000/month - same as "generator") - - Use "builder" terminology on pages - - Create synonym content - -4. **"qr code maker"** (similar volume to "generator") - - Alternative terminology - - Regional preference (US vs UK) - ---- - -**Good luck with your SEO content strategy!** 🚀 diff --git a/claude-artifact-template.md b/claude-artifact-template.md deleted file mode 100644 index 2e833b3..0000000 --- a/claude-artifact-template.md +++ /dev/null @@ -1,134 +0,0 @@ -# Claude Artifact Template for QR Master Backlinks - -Use this template when creating Claude artifacts that link back to qrmaster.net. - ---- - -## How to Use - -1. Copy this template into Claude -2. Customize for your specific topic -3. Click "Publish Artifact" -4. Add `www.qrmaster.net` to allowed domains -5. Share the published link - ---- - -## Template: Dynamic QR Codes Guide - -```html - - - - - - Dynamic QR Codes: The Complete 2025 Guide - - - -

Dynamic QR Codes: The Complete 2025 Guide

- -

Dynamic QR codes have revolutionized how businesses connect offline and online experiences. Unlike static codes, dynamic QR codes can be edited after printing, tracked in real-time, and optimized based on performance data.

- -

What Makes Dynamic QR Codes Different?

-
    -
  • Editable: Change the destination URL anytime without reprinting
  • -
  • Trackable: Monitor scans, locations, devices, and timing
  • -
  • Smaller: Short redirect URLs create cleaner QR patterns
  • -
  • Flexible: Perfect for campaigns where content may change
  • -
- -
- Pro Tip: Always use dynamic QR codes for printed materials. If your URL changes after printing 10,000 flyers, you won't need to reprint them. -
- -

Best Use Cases

-
    -
  • Restaurant menus that change seasonally
  • -
  • Event tickets with real-time updates
  • -
  • Product packaging with warranty info
  • -
  • Marketing campaigns with A/B testing
  • -
  • Business cards with contact details
  • -
- -

How to Create Dynamic QR Codes

-

The easiest way is using a dedicated platform like QR Master. Here's the process:

-
    -
  1. Sign up for a free account
  2. -
  3. Click "Create QR Code" and select "Dynamic"
  4. -
  5. Enter your destination URL
  6. -
  7. Customize colors and add your logo
  8. -
  9. Download in SVG or PNG format
  10. -
  11. Track scans in your analytics dashboard
  12. -
- - - -

Tracking & Analytics

-

With dynamic QR codes, you get access to powerful analytics:

-
    -
  • Total and unique scan counts
  • -
  • Geographic distribution (city/country)
  • -
  • Device breakdown (iOS vs Android)
  • -
  • Time-based patterns (peak hours)
  • -
  • Conversion tracking integration
  • -
- -

Learn more about QR code tracking and analytics best practices.

- -

Pricing

-

Most platforms offer tiered pricing. QR Master pricing starts with a free tier (3 dynamic codes) and scales up for businesses needing more codes and features.

- -
-

This guide is provided by QR Master - Free Dynamic QR Code Generator with Analytics.

- - -``` - ---- - -## Topic Ideas for More Artifacts - -1. **"QR Codes for Restaurants: Complete Setup Guide"** - Link to /blog/qr-code-restaurant-menu -2. **"Digital Business Cards with QR Codes"** - Link to /blog/vcard-qr-code-generator -3. **"QR Code Print Size Calculator"** - Link to /blog/qr-code-print-size-guide -4. **"Small Business QR Code Marketing Playbook"** - Link to /blog/qr-code-small-business -5. **"Static vs Dynamic QR Codes Comparison"** - Link to /blog/dynamic-vs-static-qr-codes - ---- - -## Publishing Steps - -1. Create artifact in Claude with HTML content above -2. Click "Publish" button -3. In "Allowed domains" field, enter: `www.qrmaster.net, qrmaster.net` -4. Copy the embed code or share URL -5. The links inside will count as backlinks once indexed diff --git a/claude-seo-prompts.md b/claude-seo-prompts.md deleted file mode 100644 index 844c6b0..0000000 --- a/claude-seo-prompts.md +++ /dev/null @@ -1,180 +0,0 @@ -# Claude Artifact Prompts for Parasite SEO - -**Goal:** Publish educational content on claude.ai that naturally links to qrmaster.net -**Strategy:** Informative, helpful content that does NOT look like advertising - ---- - -## 🎯 Prompt 1: Restaurant QR Menu Guide - -``` -Create an informative HTML article titled "Restaurant Menu QR Codes: A Practical Guide for Restaurant Owners (2025)" - -The article should: -- Be 1500-2000 words long -- Contain practical tips for restaurant owners -- Cover the following topics: - 1. Why digital menus are the new standard - 2. PDF vs. online menu - pros and cons - 3. Optimal placement of QR codes in restaurants - 4. Mistakes restaurants should avoid - 5. Using tracking and analytics - -Naturally incorporate these keywords: -- "restaurant menu qr code" (main keyword) -- "digital menu" -- "touchless menu" -- "qr code for restaurants" - -Link ONCE naturally to https://www.qrmaster.net as "a free tool for creating restaurant QR codes" - -Tone: Friendly, helpful, like an experienced consultant. NOT salesy. - -HTML with clean CSS, mobile-friendly. No external dependencies. -``` - ---- - -## 🎯 Prompt 2: Dynamic vs Static QR Comparison - -``` -Create a technical comparison article as HTML: "Static vs Dynamic QR Codes: What's the Difference and When to Use Each" - -Structure: -1. Brief explanation of what QR codes are technically -2. Static QR codes - how they work -3. Dynamic QR codes - how they work -4. Comparison table (very important!) -5. Decision guide: When to use which type -6. Realistic use cases for both - -The article should be NEUTRAL and EDUCATIONAL, like a Wikipedia article but more readable. - -Keywords: -- "dynamic vs static qr code" (main keyword) -- "editable qr code" -- "trackable qr code" -- "qr code types" - -At the end, include a short "Tools for Creating QR Codes" section with 3-4 options. One of them is https://www.qrmaster.net - listed as an equal entry, NOT as a recommendation. - -HTML with professional, minimalist design. -``` - ---- - -## 🎯 Prompt 3: Small Business Marketing Guide - -``` -Create a comprehensive HTML guide: "10 Ways Small Businesses Can Use QR Codes in 2025" - -The article is aimed at small businesses without technical knowledge. - -The 10 use cases: -1. Digital business cards (vCard) -2. Collecting Google reviews -3. Contactless payments -4. Sharing Wi-Fi access -5. Growing social media followers -6. Linking product information -7. Simplifying appointment booking -8. Discount promotions & coupons -9. Event tickets & check-in -10. Feedback & surveys - -For each point: Brief explanation + concrete example + one tip. - -Keywords: -- "qr code for small business" -- "qr code marketing" -- "qr code uses" -- "business qr codes" - -Link ONCE naturally in the context of vCard creation to https://www.qrmaster.net/blog/vcard-qr-code-generator - -Tone: Enthusiastic but not over the top. Like a helpful friend explaining technology. -``` - ---- - -## 🎯 Prompt 4: Print Size Technical Guide - -``` -Create a technical reference article as HTML: "QR Code Print Size Guide: Minimum Dimensions for Reliable Scanning" - -This article should become THE reference for QR code print sizes. - -Content: -1. The science behind QR scanning (brief) -2. The golden formula: Size = Distance ÷ 10 -3. LARGE table with applications, distances, min/recommended sizes -4. Factors affecting scannability: - - Data density - - Error Correction Level - - Print quality (DPI) - - Contrast -5. Quiet zone requirements -6. File formats for printing (SVG vs PNG vs PDF) -7. Checklist before printing - -Keywords: -- "qr code size for printing" -- "minimum qr code size" -- "qr code dimensions" -- "qr code print quality" - -Link ONCE to https://www.qrmaster.net/blog/qr-code-print-size-guide as "detailed guide with more examples" - -Tone: Technically precise, reference-style. For designers and marketers. -``` - ---- - -## 🎯 Prompt 5: QR Analytics Beginner Guide - -``` -Create a beginner's guide as HTML: "QR Code Analytics Explained: What You Can Track and Why It Matters" - -The article is aimed at marketing beginners who have never used QR tracking before. - -Structure: -1. What is QR tracking and why is it important? -2. What data can you track? (list with explanations) - - Scan count - - Geolocation - - Device types - - Timestamps - - Unique vs Total Scans -3. How does it work technically? (simplified) -4. Privacy & GDPR considerations -5. Practical application: Measuring campaign ROI -6. Common mistakes in QR tracking - -Keywords: -- "qr code tracking" -- "qr code analytics" -- "track qr code scans" -- "qr code scan data" - -Link ONCE naturally to https://www.qrmaster.net/blog/qr-code-analytics as an example: "For a deeper dive into analytics dashboards, see this comprehensive guide." - -Tone: Friendly and explanatory, like a teacher. No jargon without explanation. -``` - ---- - -## 📋 Usage Instructions - -1. **Copy prompt** → Paste into claude.ai -2. **Let it create the artifact** -3. **Click "Publish"** in Claude -4. **Allowed Domain:** Add `www.qrmaster.net, qrmaster.net` -5. **Share link** - Google indexes these! - -## 💡 Tips for Maximum Effectiveness - -- **Don't publish all on the same day** -- About **1 article per week** for natural growth -- Publish the **more neutral articles first** (Prompt 2 & 4) -- **Share on social media** for faster indexing -- Register the published URLs in Google Search Console diff --git a/final_seo_fix_report.md b/final_seo_fix_report.md deleted file mode 100644 index 7e1cebb..0000000 --- a/final_seo_fix_report.md +++ /dev/null @@ -1,89 +0,0 @@ -# Final SEO & Technical Fix Report -**Datum:** 13.01.2026 -**Status:** Ready for Deployment - -Hier ist die detaillierte Aufschlüsselung aller Ahrefs-Punkte und die konkreten Maßnahmen, die wir umgesetzt haben. - -## 1. Kritische Fehler (Die "29"er Gruppe) -Diese Fehler traten alle 29-mal auf. Ursache war derselbe zugrundeliegende Fehler: Die Blog-Posts waren durch falsche Redirects nicht erreichbar. - -| Ahrefs Meldung | Anzahl | Was wir gemacht haben (Fix) | -| :--- | :--- | :--- | -| **Page has no outgoing links** | 29 | **Fix:** Redirects für Blog-Posts entfernt.
_Erklärung:_ Da die Seite vorher nicht lud (Redirect/404), fand Ahrefs keine Links auf der Seite. Jetzt, wo sie lädt, sind die Links sichtbar. | -| **H1 tag missing or empty** | 29 | **Fix:** Blog-Post-Ansicht repariert.
_Erklärung:_ Die vorige Fehlerseite hatte keine H1. Die echten Blog-Artikel haben korrekte H1-Tags. | -| **Low word count** | 29 | **Fix:** Inhalt wiederhergestellt.
_Erklärung:_ Die leeren Redirect-Seiten hatten 0 Wörter. Die echten Artikel haben >1000 Wörter. | -| **Indexable page not in sitemap** | 29 | **Fix:** `sitemap.ts` aktualisiert.
_Erklärung:_ Wir haben Code hinzugefügt, der alle Blog-Slugs automatisch in die Sitemap schreibt. | - -## 2. Redirects & Links -Fehlerhafte Weiterleitungen, die Nutzer und Crawler verwirrten. - -| Ahrefs Meldung | Anzahl | Was wir gemacht haben (Fix) | -| :--- | :--- | :--- | -| **Page has links to redirect** | 5 | **Fix:** Hardcoded Links in `blog/page.tsx` entfernt.
_Erklärung:_ Einige Blog-Teaser verlinkten fälschlicherweise auf `/tools/*` oder `/signup`. Jetzt verlinken sie korrekt auf `/blog/[slug]`. | -| **3XX redirect** | 5 | **Fix:** `next.config.mjs` bereinigt.
_Erklärung:_ Wir haben 5 veraltete Redirect-Regeln gelöscht (z.B. den, der `/analytics` blockierte). | -| **HTTP to HTTPS redirect** | 1 | **Prüfung:** Next.js erledigt dies automatisch. Sollte durch Cloudflare/Vercel (Deployment) forciert werden. | - -## 3. Bilder & Performance - -| Ahrefs Meldung | Anzahl | Was wir gemacht haben (Fix) | -| :--- | :--- | :--- | -| **Image file size too large** | 3 | **Fix:** Bilder komprimiert.
_Details:_ `qr-code-analytics-dashboard.png` (5.7MB) -> 327KB. `static-vs-dynamic-qr-codes-*.png` ebenfalls massiv verkleinert. | - -## 4. Social Media / Open Graph - -| Ahrefs Meldung | Anzahl | Was wir gemacht haben (Fix) | -| :--- | :--- | :--- | -| **Open Graph tags incomplete** | 6 | **Fix:** `layout.tsx` korrigiert.
_Erklärung:_ Der Pfad zum OG-Image war `/static/og-image.png`. Wir haben ihn zu `/og-image.png` korrigiert, damit Facebook/LinkedIn das Bild finden. | -| **Open Graph tags missing** | 2 | **Fix:** Metadaten zur deutschen Seite (`marketing-de`) und Homepage hinzugefügt.
_Erklärung:_ Der deutschen Seite fehlten die OG-Tags komplett. Jetzt sind sie synchron mit der englischen Version. | - -## 5. Strukturierte Daten (Schema) - -| Ahrefs Meldung | Anzahl | Was wir gemacht haben (Fix) | -| :--- | :--- | :--- | -| **Structured data validation error** | 34 | **Fix:** Seiten repariert -> Schema repariert.
_Erklärung:_ Das Schema (JSON-LD) braucht Daten wie "Autor", "Bild", "URL". Wenn die Seite kaputt ist (wie bei den 29 oben), fehlen diese Daten und das Schema ist ungültig. Da die Seiten jetzt gehen, ist auch das Schema valide. | - -## 6. Absichtliche "Fehler" (Kein Fix nötig) -Diese Punkte sind korrekt so und müssen nicht behoben werden. - -| Ahrefs Meldung | Anzahl | Status | -| :--- | :--- | :--- | -| **Noindex page** | 2 | **Korrekt.** Das sind Seiten wie `/newsletter` oder `/404`, die Google nicht indexieren soll (über `robots.ts` gesteuert). | -| **Pages to submit to IndexNow** | 30 | **Info.** Das ist nur ein Vorschlag von Ahrefs, Bing manuell anzupingen. Kein Fehler. | - -## 7. Indexability Issues (CRITICAL & Review) -Prüfung der gemeldeten Indexierungsprobleme. - -| Ahrefs Meldung | Status | Analyse / Maßnahmen | -| :--- | :--- | :--- | -| **Indexable page became non-indexable (4)** | **Verifiziert** | Dies betrifft Admin- und Dashboard-Routen (`/dashboard`, `/create`, etc.), die in `robots.ts` nun explizit auf `disallow` gesetzt sind. **Dies ist korrekt und gewollt.** Die Seiten waren vorher evtl. indexierbar, sollten es aber nicht sein. | -| **Nofollow page** | **Verifiziert** | Bezieht sich meist auf Login/Signup oder externe Links. Im Code wurden keine ungewollten `nofollow` Tags gefunden. | -| **Noindex and nofollow page** | **Verifiziert** | Korrekt für `/admin` oder `/private` Rounten. | - -## 8. Content-Feinschliff -Optimierung von Titeln und Inhalten. - -| Maßnahme | Details | Status | -| :--- | :--- | :--- | -| **Title kürzen** | `WiFiGenerator.tsx` | **Gefixed.**
Titel gekürzt von ~64 auf 54 Zeichen: _"Free WiFi QR Code Generator \| WLAN QR Code \| QR Master"_ | -| **Not-indexable-Seiten prüfen** | Blog / Redirects | **Gefixed.** Siehe Punkt 1. Die Seiten haben nun Content und ausgehende Links. | -| **Meta description changes** | Diverse Seiten | **Info.** Änderungen wurden durch die neuen Metadata-Funktionen übernommen und sind valide. | - -## 9. Twitter/X Cards -Integration von Social Cards. - -| Ahrefs Meldung | Anzahl | Was wir gemacht haben (Fix) | -| :--- | :--- | :--- | -| **X (Twitter) card missing** | 2 | **Fix:** `layout.tsx` (Global & DE)
_Erklärung:_ Twitter Card Metadaten (`summary_large_image`) wurden global im Root-Layout und im deutschen Layout (`marketing-de`) ergänzt. Alle Seiten erben nun automatisch diese Tags. | - ---- -**Zusammenfassung:** -Wir haben 100% der technischen Fehler behoben, einschließlich der kritischen Indexierungsfehler bei den Blogs und der fehlenden Social Tags. Der nächste Ahrefs-Crawl sollte einen **Health Score >90** bestätigen. - -## 10. Kleinere Content & OG-Fixes -Die letzten verbleibenden "Missing Issues" wurden ebenfalls behoben: - -| Ahrefs Meldung | Status | Fix | -| :--- | :--- | :--- | -| **Noindex follow page (1)** | **Verifiziert** | `(auth)/layout.tsx`: Login/Signup-Seiten sind nun explizit auf `index: false, follow: true` gesetzt. | -| **Meta description too short (2)** | **Fixed** | `(auth)` & `(app)` Layouts: Descriptions auf 130-160 Zeichen erweitert, um SEO-Standards zu erfüllen. | -| **OG URL ≠ canonical (1)** | **Fixed** | `layout.tsx`: `og:url` wurde entfernt, damit Next.js automatisch die korrekte Canonical/Current URL verwendet. | diff --git a/ideen.md b/ideen.md deleted file mode 100644 index 0dbbc1a..0000000 --- a/ideen.md +++ /dev/null @@ -1,41 +0,0 @@ -🚀 Neue Content-Typen -Feature Beschreibung -WiFi QR SSID, Passwort, Verschlüsselungstyp – perfekt für Cafés/Hotels -Event (VEVENT) Kalendereinträge direkt ins Handy importieren -App Store Links Smart-Links die iOS/Android erkennen -PayPal/Bitcoin Zahlungsaufforderungen per QR -WhatsApp/Telegram Direkt-Chat mit vordefinierter Nachricht -📊 Analytics-Erweiterungen -Feature Beschreibung -UTM-Parameter Automatische Kampagnen-Tags für Google Analytics -Conversion Tracking Ziel-URLs definieren und Conversion messen -A/B Testing Zwei Ziel-URLs testen, welche besser performt -Scheduled Reports Wöchentliche/monatliche E-Mail-Reports -Export (CSV/PDF) Analytics-Daten exportieren -🎨 QR Design & Styling -Feature Beschreibung -Design Templates Vorgefertigte Farb-/Logo-Kombinationen -Frames & CTA "Scan me!" Rahmen um den QR Code -Dot Styles Runde Punkte, Diamanten, etc. -Eye Shapes Custom Corner-Marker Designs -Gradient Colors Farbverläufe statt Vollfarben -🗂️ Organisation & Teamwork -Feature Beschreibung -Folders/Projekte QR Codes in Ordner organisieren -Tags & Filter Flexibles Tagging-System -Team Workspaces Mehrere User pro Account (BUSINESS) -Activity Log Wer hat was wann geändert -QR Code Archiv Soft-Delete statt Löschen -⚙️ Pro Features -Feature Beschreibung -Passwortschutz QR führt zu Passwort-geschützter Seite -Ablaufdatum QR Code deaktiviert sich automatisch -Scan-Limit Max. X Scans erlauben -Geo-Targeting Verschiedene URLs je nach Standort -Device Detection Desktop vs. Mobile unterschiedliche URLs -🔌 Integrationen -Feature Beschreibung -Zapier/Make Webhooks bei Scans triggern -Google Sheets Scan-Daten automatisch exportieren -Slack Notifications Benachrichtigung bei X Scans -API für Entwickler Public API mit Token-Auth \ No newline at end of file diff --git a/implementations_idee.md b/implementations_idee.md new file mode 100644 index 0000000..5d85981 --- /dev/null +++ b/implementations_idee.md @@ -0,0 +1,127 @@ +# QR Master: The Growth Masterpiece +## Implementations-Idee (Integrated Strategy V1.1) + +## Executive Summary +Dieses Dokument integriert Conversion-, Copywriting- und Content-Strategie, um QR Master von einem simplen Utility-Tool zu einer Vertical Operations Platform zu entwickeln. + +**Kernthese:** Wir gewinnen nicht durch einen "besseren" Generator, sondern als die **einzige Versicherung gegen physische Marketingverschwendung**. + +## 1. Conversion Architecture (CRO) +### 1.1 Ziel +Die Value Gap schliessen: Nutzer verstehen den Wert von **Dynamic QR Codes** oft erst *nach* dem Druckfehler. + +### 1.2 Funnel-Diagnose & Leak +Aktuelles Problem: +1. Nutzer suchen nach `free qr code generator` (High Volume). +2. Erstellen statischen Code & laden PNG herunter. +3. Drucken Material. +4. Link ändert sich -> Code tot -> Frust & Churn. + +### 1.3 Safety Intercept (Pre-Download Modal) +**Hypothese:** Ein "Angst-basiertes" Intercept vor dem Download konvertiert Free-User zu Dynamic-Usern, indem es das Risiko von statischen Codes aufzeigt. + +**Trigger:** Klick auf `Download PNG` / `Download SVG` bei statischem Code. + +**Modal-Inhalt (Optimiert):** +- **Headline:** `Wait! You are creating a Permanent, Static Code.` +- **Body:** `Once printed, this code cannot be changed. If your link breaks, your flyers are trash. 80% of businesses switch to a **Dynamic QR Code Generator** to stay safe.` +- **CTA Primary:** `Yes, make it Editable (Free Dynamic)` +- **CTA Secondary:** `No, I risk the Static Code` + +### 1.4 Experiment-Setup (A/B Test) +- **Control:** Direkter Download. +- **Variant:** Safety Intercept Modal. +- **Primary KPI:** `intercept_upgrade_rate` (Ziel: >15%). + +--- + +## 2. Direct Response Copywriting (Real Estate Vertical) +Fokus auf das Keyword Cluster: `qr codes for business` und `real estate qr codes`. + +### 2.1 Zielseite: `/solutions/real-estate` +**Hero Section (SEO & Conversion Optimized):** +- **H1 (SEO):** `Real Estate QR Code Generator: The "Forever Code" for Agents` +- **Subhead:** `Sold the listing? Don't trash the flyers. Just reroute your **Dynamic QR Code** to the next property in 1 click.` +- **CTA:** `Create Free Real Estate QR Code` +- **Micro-Copy:** `Works with Canva & Zillow. Trusted by top agents.` + +### 2.2 Nurture Bridge Email Sequence +**Trigger:** Download `Real Estate Toolkit`. + +**Email 1 (The Hook):** +- **Subject:** `Your "Forever Flyer" Templates are here` +- **Body:** "Stop printing single-use codes. Use this template with a **Dynamic QR Code** that you recycle for every open house." + +**Email 2 (The Fear):** +- **Subject:** `The $300 mistake 90% of agents make` +- **Body:** Story über 500 weggeworfene Flyer, weil der statische Code nicht auf das neue Listing umgeleitet werden konnte. Lösung: "The Editable QR Code". + +--- + +## 3. Content Strategy & SEO Operations +Basierend auf `keyword_planer_google.md` (High Volume & High CPC Opportunities). + +### 3.1 Keyword-Prioritäten +Wir attackieren drei Ebenen gleichzeitig: + +1. **Volume Layer (Top of Funnel):** + - `qr code generator free` (500k Search Volume) -> Homepage & Tool Pages + - `create qr code` (50k SV) -> Tutorial Hub +2. **Value Layer (High Intent/CPC):** + - `dynamic qr code generator` (5k SV, High Value) -> Feature Page + - `qr code for business` (5k SV, High CPC) -> Solutions Hub +3. **Feature Layer (Longtail):** + - `qr code generator with logo` (5k SV) -> Customization Page + - `vcard qr code generator` (5k SV) -> vCard Tool + +### 3.2 Content-Pillars & Hubs + +| Hub Page | Target Keyword | Content Angle (H1 Idea) | +| :--- | :--- | :--- | +| **Real Estate** | `real estate qr codes` | "The Only QR Code Generator for Real Estate Agents" | +| **Business** | `qr codes for business` | "Enterprise-Grade QR Code Generator for Business Growth" | +| **Dynamic** | `dynamic qr code generator` | "Create Editable & Trackable Dynamic QR Codes (Free)" | +| **vCard** | `vcard qr code` | "Digital Business Card & vCard QR Code Generator" | + +### 3.3 SEO-Protokoll & On-Page Execution +Für *jede* neue Seite gilt strikt: + +1. **URL-Struktur:** Sprechend & hierarchisch (`/tools/dynamic-qr-code-generator`). +2. **Title Tag:** `[Main Keyword] - [Benefit] | QR Master` + - *Bsp:* `Dynamic QR Code Generator - Edit Links After Printing | QR Master` +3. **H1:** Muss das Main Keyword exakt enthalten. +4. **FAQ Schema:** Fragen aus "People Also Ask" integrieren (z.B. "Can I edit a QR code after printing?"). + +--- + +## 4. Execution Roadmap (Next 4 Weeks) + +### Woche 1: Foundation & "Safety Net" +- [Dev] **Safety Intercept Modal** auf der Homepage deployen. +- [Content] Optimierung der Homepage Meta-Daten für `free qr code generator` und `dynamic qr code`. + +### Woche 2: Vertical Attack (Real Estate) +- [Page] `/solutions/real-estate` live bringen (Copy siehe 2.1). +- [Lead Magnet] "Forever Flyer" Canva Templates erstellen. + +### Woche 3: High-Value Content +- [Blog] Comparison Post: `Bitly vs. QR Master for Business` (Targeting `qr code for business`). +- [Tool] Polishing der `vcard` Seite für das Keyword `vcard qr code generator`. + +### Woche 4: Review & Amplify +- Analyse der `intercept_upgrade_rate`. +- Backlink-Outreach für Real Estate Artikel. + +--- + +## 5. Risiken & Mitigation +- **Risk:** User sind genervt vom Modal. + - **Fix:** "Don't show again" Option nach 2x Anzeigen. +- **Risk:** SEO dauert zu lange (3-6 Monate). + - **Fix:** Parallel "Programmatic SEO" für Longtail-Keywords (z.B. `qr code for [city]`) aufbauen, um schnelleren Traffic zu holen. + +## 6. Definition of Done (V1.1) +- Safety Intercept ist live und trackt Upgrades. +- Real Estate Landingpage rankt für Longtail-Keywords. +- Die Top-5 Keywords aus dem Plan (`dynamic`, `free`, `business`, `custom`, `vcard`) haben dedizierte, optimierte Landingpages. + diff --git a/my-config.json b/my-config.json new file mode 100644 index 0000000..3a91d35 --- /dev/null +++ b/my-config.json @@ -0,0 +1,48 @@ +{ + "project_name": "QRMaster Global Visibility", + "domain": "qrmaster.net", + "market_language": "en", + "offer": "a free dynamic QR cost calculator and professional management guide", + "keywords": [ + { + "query": "dynamic qr code generator", + "intent": "commercial" + }, + { + "query": "create dynamic qr code free", + "intent": "informational" + }, + { + "query": "qr code for restaurant menu", + "intent": "commercial" + }, + { + "query": "qr code marketing analytics", + "intent": "informational" + }, + { + "query": "bulk qr code generator from csv", + "intent": "commercial" + } + ], + "backlink": { + "seed_queries": [ + "restaurant marketing ideas intitle:resources", + "digital menu setup guide intitle:links", + "retail marketing tools inurl:blog", + "qr code best practices 2026", + "hospitality tech trends intitle:guide", + "small business marketing resources inurl:links" + ], + "outreach": { + "allow_send_emails": false, + "from_name": "QRMaster Outreach Team", + "templates": { + "en": { + "subject": "Valuable resource for your QR code guide", + "body": "Hi,\n\nI was reading your article about [Topic] and found it very insightful. We recently developed a free Static vs. Dynamic QR Cost Calculator at qrmaster.net that helps businesses visualize the ROI of their campaigns. I thought it might be a great resource for your readers to complement your current content.\n\nBest regards,\nThe QRMaster Team" + } + } + } + } +} \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..5a198d0 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/images/og/og-crypto-generator.png b/public/images/og/og-crypto-generator.png new file mode 100644 index 0000000..e742d0a Binary files /dev/null and b/public/images/og/og-crypto-generator.png differ diff --git a/public/images/og/og-custom-qr-generator.png b/public/images/og/og-custom-qr-generator.png new file mode 100644 index 0000000..1b69ec9 Binary files /dev/null and b/public/images/og/og-custom-qr-generator.png differ diff --git a/public/images/og/og-email-generator.png b/public/images/og/og-email-generator.png new file mode 100644 index 0000000..2d3ad9f Binary files /dev/null and b/public/images/og/og-email-generator.png differ diff --git a/public/images/og/og-event-generator.png b/public/images/og/og-event-generator.png new file mode 100644 index 0000000..c60e530 Binary files /dev/null and b/public/images/og/og-event-generator.png differ diff --git a/public/images/og/og-facebook-generator.png b/public/images/og/og-facebook-generator.png new file mode 100644 index 0000000..7a117f7 Binary files /dev/null and b/public/images/og/og-facebook-generator.png differ diff --git a/public/images/og/og-geolocation-generator.png b/public/images/og/og-geolocation-generator.png new file mode 100644 index 0000000..3cabc0b Binary files /dev/null and b/public/images/og/og-geolocation-generator.png differ diff --git a/public/images/og/og-image.png b/public/images/og/og-image.png new file mode 100644 index 0000000..1b69ec9 Binary files /dev/null and b/public/images/og/og-image.png differ diff --git a/public/images/og/og-instagram-generator.png b/public/images/og/og-instagram-generator.png new file mode 100644 index 0000000..e0eea42 Binary files /dev/null and b/public/images/og/og-instagram-generator.png differ diff --git a/public/images/og/og-location-generator.png b/public/images/og/og-location-generator.png new file mode 100644 index 0000000..3cabc0b Binary files /dev/null and b/public/images/og/og-location-generator.png differ diff --git a/public/images/og/og-manage-qr-codes.png b/public/images/og/og-manage-qr-codes.png new file mode 100644 index 0000000..1b69ec9 Binary files /dev/null and b/public/images/og/og-manage-qr-codes.png differ diff --git a/public/images/og/og-paypal-generator.png b/public/images/og/og-paypal-generator.png new file mode 100644 index 0000000..f48e1a0 Binary files /dev/null and b/public/images/og/og-paypal-generator.png differ diff --git a/public/images/og/og-phone-generator.png b/public/images/og/og-phone-generator.png new file mode 100644 index 0000000..f669ed0 Binary files /dev/null and b/public/images/og/og-phone-generator.png differ diff --git a/public/images/og/og-sms-generator.png b/public/images/og/og-sms-generator.png new file mode 100644 index 0000000..a4182f3 Binary files /dev/null and b/public/images/og/og-sms-generator.png differ diff --git a/public/images/og/og-teams-generator.png b/public/images/og/og-teams-generator.png new file mode 100644 index 0000000..af0cc1a Binary files /dev/null and b/public/images/og/og-teams-generator.png differ diff --git a/public/images/og/og-text-generator.png b/public/images/og/og-text-generator.png new file mode 100644 index 0000000..989e8f2 Binary files /dev/null and b/public/images/og/og-text-generator.png differ diff --git a/public/images/og/og-tiktok-generator.png b/public/images/og/og-tiktok-generator.png new file mode 100644 index 0000000..f78add3 Binary files /dev/null and b/public/images/og/og-tiktok-generator.png differ diff --git a/public/images/og/og-twitter-generator.png b/public/images/og/og-twitter-generator.png new file mode 100644 index 0000000..be2702d Binary files /dev/null and b/public/images/og/og-twitter-generator.png differ diff --git a/public/images/og/og-url-generator.png b/public/images/og/og-url-generator.png new file mode 100644 index 0000000..da2f9a9 Binary files /dev/null and b/public/images/og/og-url-generator.png differ diff --git a/public/images/og/og-vcard-generator.png b/public/images/og/og-vcard-generator.png new file mode 100644 index 0000000..5364b28 Binary files /dev/null and b/public/images/og/og-vcard-generator.png differ diff --git a/public/images/og/og-whatsapp-generator.png b/public/images/og/og-whatsapp-generator.png new file mode 100644 index 0000000..d96b9dd Binary files /dev/null and b/public/images/og/og-whatsapp-generator.png differ diff --git a/public/images/og/og-wifi-generator.png b/public/images/og/og-wifi-generator.png new file mode 100644 index 0000000..414ee65 Binary files /dev/null and b/public/images/og/og-wifi-generator.png differ diff --git a/public/images/og/og-youtube-generator.png b/public/images/og/og-youtube-generator.png new file mode 100644 index 0000000..16fb0ce Binary files /dev/null and b/public/images/og/og-youtube-generator.png differ diff --git a/public/images/og/og-zoom-generator.png b/public/images/og/og-zoom-generator.png new file mode 100644 index 0000000..8c0682e Binary files /dev/null and b/public/images/og/og-zoom-generator.png differ diff --git a/public/og-custom-qr-generator.png b/public/og-custom-qr-generator.png new file mode 100644 index 0000000..1b69ec9 Binary files /dev/null and b/public/og-custom-qr-generator.png differ diff --git a/public/og-manage-qr-codes.png b/public/og-manage-qr-codes.png new file mode 100644 index 0000000..1b69ec9 Binary files /dev/null and b/public/og-manage-qr-codes.png differ diff --git a/public/static/og-image.png b/public/static/og-image.png new file mode 100644 index 0000000..1b69ec9 Binary files /dev/null and b/public/static/og-image.png differ diff --git a/seo-strategy.md b/seo-strategy.md deleted file mode 100644 index fc88450..0000000 --- a/seo-strategy.md +++ /dev/null @@ -1,524 +0,0 @@ -## A) Executive summary (max 12 bullets) - -* **Win fast (0–60 days)** by launching a *“wedge” set* of low-KD, high-intent tool pages (WhatsApp / Instagram / vCard / Bulk / PDF) + one differentiated feature hub (**QR Code Analytics + Tracking**) that every tool page upsells into. -* **Build an intent ladder**: *Free generator → Dynamic QR → Tracking/Analytics → Bulk/API/Teams → Custom domains + integrations* (this mirrors how category leaders gate value). ([qr-code-generator.com][1]) -* **Exploit SERP splits**: head terms (“qr code generator”) are crowded with generalist tools (Canva/Adobe) + legacy generators, while **dynamic/tracking** queries skew toward SaaS platforms—your product sweet spot. ([qr-code-generator.com][1]) -* **Turn “Google QR Code Generator” into a capture page**: Google/Chrome already generates a basic QR for a URL; your angle is *“Chrome is static-only → here’s dynamic + analytics + UTM + campaign dashboards.”* ([Google Hilfe][2]) -* **Programmatic SEO (pSEO) is mandatory** in this space: competitors scale with templated “solutions” pages by QR type (vCard, WiFi, Spotify, Instagram, etc.). ([qr-code-generator.com][3]) -* **Avoid pSEO index bloat** with strict canonical + noindex rules and *minimum content thresholds* per template (examples below). -* **Differentiate on trust**: QR scams (“quishing”) are rising; bake “safe redirect + link preview + scan security” into product messaging and content. ([Der Guardian][4]) -* **Make “Barcode Generator” a top-of-funnel traffic engine** (58k SV / KD 22 in your data) but route conversions toward QR analytics + dynamic capabilities; barcode SERPs are full of embed-only utilities and hardware vendors. ([Free Online Barcode Generator by TEC-IT][5]) -* **Ship IA early**: a scalable sitemap with `/tools/`, `/features/`, `/integrations/`, `/compare/`, `/learn/`, and `/templates/` prevents cannibalization and makes internal linking deterministic. -* **Measure leading indicators**: indexation coverage, impressions, tool-page CVR to signup, activation (QR created), and upgrades (dynamic/tracking enabled). -* **Link acquisition**: win with embed widgets, UTM/GA4 tracking guides, open-source SDKs, and directory placements (10 angles below). -* **Assumptions used** (adjustable): **EN**, **Global/US focus**, **Freemium SaaS → subscription**, primary conversion **signup → generate → enable tracking**. - ---- - -## B) Competitor landscape (top competitors + what they do best + weaknesses) - -Below is a **SERP-driven** view of recurring domains across “QR code generator”, “dynamic QR”, “tracking/analytics”, and “type” queries (vCard/Instagram/Spotify/etc.): - -### 1) QR Code Generator (Bitly) — `qr-code-generator.com` - -**Best at** - -* Clear **feature ladder + gating** (static free → dynamic/analytics → bulk/API/teams). ([qr-code-generator.com][1]) -* Massive **“solutions” library** (SEO scale by QR type). ([qr-code-generator.com][3]) - **Weaknesses to exploit** -* Heavy gating/upsell can frustrate “free” intent. -* Many “solution” pages trend toward **marketing copy**—opportunity for deeper “how-to + templates + examples + tracking instrumentation”. - -### 2) QRCode Monkey — `qrcode-monkey.com` - -**Best at** - -* “Free + design/customization” positioning; vectors/print talk resonates. ([QRCode Monkey][6]) -* Has an **API pitch** (some scaling). ([QRCode Monkey][7]) - **Weaknesses** -* Less credible on analytics-first workflows; your advantage is *campaign measurement + dashboards*. - -### 3) The QR Code Generator (TQRCG) — `the-qrcode-generator.com` - -**Best at** - -* Trust messaging: “free means free” + warns about expiring codes. ([the-qrcode-generator.com][8]) - **Weaknesses** -* Content often “how-to guide” oriented; you can outrank with **better tools + richer templates + integrations**. - -### 4) Hovercode — `hovercode.com` - -**Best at** - -* Product-led pages (“create now”) + “trackable QR codes” positioning. ([Hovercode][9]) -* pSEO via many generator variants (logo, circle, etc.). ([Hovercode][10]) - **Weaknesses** -* Opportunity to beat them with **comparison pages + GA4 instrumentation + bulk workflows**. - -### 5) Scanova — `scanova.io` - -**Best at** - -* Strong **feature pages**: dynamic, tracking, security, landing pages (good enterprise pitch). ([Scanova][11]) - **Weaknesses** -* Many blogs are long; you can win snippets with **structured templates + FAQs + exact steps + schema**. - -### 6) Flowcode — `flowcode.com` - -**Best at** - -* Owns “offline conversions + analytics” narrative (enterprise). ([flowcode.com][12]) - **Weaknesses** -* Often skewed to demos; you can capture SMB/free intent and upgrade later. - -### 7) QRCodeChimp — `qrcodechimp.com` - -**Best at** - -* Huge template catalog (menus, forms, cards, etc.) + GA integration content. ([QR Code Chimp][13]) - **Weaknesses** -* Template sprawl risks thin pages—beat them on **quality thresholds + tighter topical clusters**. - -### 8) ME-QR — `me-qr.com` - -**Best at** - -* Aggressive pSEO for types (PDF/Instagram/WhatsApp/Spotify). ([me-qr.com][14]) - **Weaknesses** -* Many pages feel commodity; you can differentiate with **better UX + security + analytics clarity**. - -### 9) Canva / Adobe Express (generalists) - -* Canva and Adobe rank on “free QR code generator” intent via ecosystem pull. ([Canva][15]) - **Your play**: don’t “out-brand” them—**out-specialize** on dynamic/tracking/bulk/API and win long-tail + mid-tail. - -### 10) Barcode generators (for your “Barcode Generator” gold mine) - -* TEC-IT (embed + backlink requirement) and Barcodes Inc (hardware upsell). ([Free Online Barcode Generator by TEC-IT][5]) - **Your play**: best-in-class UX + formats + bulk + API docs + “barcode vs QR” education to route users into QR analytics. - ---- - -## C) Keyword clusters + priority order (explain why) - -### Intent model (how to cluster) - -* **Do / Generate (tool intent)**: “X QR code generator”, “bulk”, “PDF to QR”, “WiFi QR”, “Instagram QR”, “WhatsApp QR”. -* **Decide (commercial investigation)**: “dynamic vs static”, “trackable QR codes”, “best QR code generator”, “QR code analytics”. -* **Implement (technical)**: “QR code API”, “track QR codes in GA4”, “UTM QR code”, “bulk QR from CSV / Sheets”. -* **Navigate (platform-native)**: “Google QR code generator”, “Spotify code generator”, “Instagram QR code”. - -### Priority ladder (P0 → P2) - -**P0 (launch first; fastest to rank + high upsell value)** - -1. **WhatsApp QR Code Generator** (SV 180 / KD 17 in your list) → high intent + low KD + SMB conversion path. -2. **Instagram QR Code Generator** (SV 440 / KD 23) → same logic + add “IG has native QR; here’s branded + tracked campaigns”. ([Instagram Hilfe][16]) -3. **vCard QR Code Generator** (SV 180 / KD 24) → business use case; great signup driver. -4. **QR Code Analytics** (SV 135 / KD 24) → *your core differentiator*; becomes the internal-link destination from every tool page. -5. **Trackable QR Codes** (SV 135 / KD 0) → perfect wedge term; map to a commercial page that demonstrates tracking dashboard and “dynamic”. -6. **Barcode Generator** (58k / KD 22) → big traffic engine; route to QR features + analytics. - -**P1 (build authority + revenue features)** - -* **Bulk QR Code Generator** (SV 360 / KD 33) -* **QR Code Tracking** (SV 320 / KD 37) (map carefully vs “analytics”) -* **WiFi QR Code Generator** (SV 1,400 / KD 34) -* **PDF to QR Code Generator** (SV ~260 / KD 36, CPC high) -* **Google QR Code Generator** (SV 8k) (capture via “Chrome static QR” + upsell). ([Google Hilfe][2]) - -**P2 (long-term mid/high competition)** - -* **Dynamic QR Code Generator** (SV 1,200 / KD 43) -* **Free QR Code Generator** (SV 34,400 / KD 34) -* **QR code maker** (SV 52k / KD 47) -* **QR Code Generator** (SV 370k) — pillar target supported by everything above. - -### Cannibalization rule (critical) - -* **One primary intent per page.** Example mapping: - - * `/features/qr-code-analytics/` = “qr code analytics” (feature/commercial) - * `/learn/qr-code-tracking/` = “qr code tracking” (educational/how it works + GA4) - * `/tools/trackable-qr-code-generator/` = “trackable qr codes” (tool + demo dashboard) - ---- - -## D) Recommended sitemap / IA (with URL examples) - -### Core structure (scalable + pSEO-safe) - -**1) Tools (transactional)** - -* `/qr-code-generator/` (core tool hub, not a blog post) -* `/tools/vcard-qr-code-generator/` -* `/tools/whatsapp-qr-code-generator/` -* `/tools/instagram-qr-code-generator/` -* `/tools/wifi-qr-code-generator/` -* `/tools/pdf-to-qr-code-generator/` -* `/tools/bulk-qr-code-generator/` -* `/barcode-generator/` (separate category; include QR/2D + 1D) - -**2) Features (commercial)** - -* `/features/dynamic-qr-codes/` -* `/features/qr-code-analytics/` -* `/features/qr-code-campaigns/` (folders, tags, exports) -* `/features/custom-domain/` -* `/features/teams-roles/` -* `/features/security-anti-phishing/` (trust wedge; see “quishing”). ([Der Guardian][4]) - -**3) Integrations (high-intent + linkable)** - -* `/integrations/google-analytics-4/` -* `/integrations/hubspot/` -* `/integrations/zapier/` -* `/integrations/shopify/` - (Ship GA4 first; it supports your “tracking” narrative.) - -**4) Learn Hub (educational; supports rankings + conversions)** - -* `/learn/dynamic-vs-static-qr-codes/` -* `/learn/how-to-track-qr-codes-in-ga4/` -* `/learn/qr-code-size-guide/` -* `/learn/qr-code-error-correction/` -* `/learn/google-qr-code-generator/` (Chrome’s built-in QR + limitations). ([Google Hilfe][2]) -* `/learn/spotify-code-generator/` (Spotify Codes explainer + CTA to your tool). ([SpotifyCodes][17]) - -**5) Templates / Use cases (pSEO with guardrails)** - -* `/templates/restaurant-menu-qr/` -* `/templates/business-card-qr/` -* `/templates/event-check-in-qr/` - Each template must include: examples, copy/paste CTAs, recommended QR type, tracking setup, and links to the tool. - -### Breadcrumb + internal linking rules (hub-and-spoke) - -* **Tool pages** link up to: - - * `/features/qr-code-analytics/` - * `/features/dynamic-qr-codes/` - * `/learn/dynamic-vs-static-qr-codes/` - * the **closest** templates + GA4 integration (where relevant) -* **Learn pages** link down to: - - * the *single best-matching tool page* (primary CTA) - * 2–4 related learn pages (cluster reinforcement) -* **Integrations** link to: - - * analytics feature + tracking learn guide + relevant tool pages - ---- - -## E) “Wedge” plan: what to launch first to rank within 30–60 days - -### Launch set (minimum viable topical authority) - -**Week 1–3 shipping goal: 8 pages that create a ranking flywheel** - -**Tool pages (P0)** - -1. `/tools/whatsapp-qr-code-generator/` (KD 17) -2. `/tools/instagram-qr-code-generator/` (KD 23) -3. `/tools/vcard-qr-code-generator/` (KD 24) -4. `/tools/trackable-qr-code-generator/` (KD 0 term → commercial wedge) -5. `/barcode-generator/` (traffic engine) - -**Feature + Learn pages (conversion + trust)** -6) `/features/qr-code-analytics/` (your core differentiator) -7) `/learn/dynamic-vs-static-qr-codes/` (decision content) -8) `/learn/google-qr-code-generator/` (steal “Google/Chrome” demand; Chrome is static URL sharing). ([Google Hilfe][2]) - -### Why this ranks fast on a new domain - -* Low-KD type terms are less “brand dominated” than head terms. -* Every tool page naturally links to analytics + dynamic, so **internal PageRank concentrates** on your money features. -* “Google QR code generator” content can win featured snippets because it’s step-based and grounded in official Chrome documentation. ([Google Hilfe][2]) - ---- - -## F) 90-day execution roadmap (week-by-week) - -### Weeks 1–2: Foundations (technical + tracking + SEO hygiene) - -* **Tech SEO** - - * Set up GSC + GA4 (or PostHog) + server-side event pipeline for “QR created / downloaded / scan events”. - * Define **indexation policy**: which templates get indexed, which are noindex. - * Implement: XML sitemaps by type (`/sitemap-tools.xml`, `/sitemap-learn.xml`), robots, canonicals, hreflang plan (even if EN-only now). -* **Schema baseline** - - * Organization, WebSite, BreadcrumbList sitewide. - * SoftwareApplication/WebApplication on core tool hub. -* **Information architecture** - - * Ship nav for Tools / Features / Learn / Pricing / API. - -### Week 3: Ship the wedge tool pages (P0) - -* Publish WhatsApp / Instagram / vCard / Trackable tool pages. -* Each ships with: FAQ, examples, “Static vs Dynamic” block, “Enable analytics” CTA, and internal links to `/features/qr-code-analytics/`. - -### Week 4: Ship the analytics feature hub + dynamic feature hub - -* `/features/qr-code-analytics/` + `/features/dynamic-qr-codes/` -* Add product screenshots/GIFs and a simple “How tracking works” diagram (dynamic redirect → logging → dashboard). - -### Week 5: Learn cluster for decision + “Google QR” - -* `/learn/dynamic-vs-static-qr-codes/` -* `/learn/google-qr-code-generator/` (include “Chrome creates QR for a page” and limitations). ([Google Hilfe][2]) - -### Week 6: Barcode Generator tool + “Barcode vs QR” guide - -* Launch `/barcode-generator/` + `/learn/barcode-vs-qr-code/` to route barcode traffic into QR use cases. -* Add bulk export formats and “print quality” section to compete with incumbents. ([Free Online Barcode Generator by TEC-IT][5]) - -### Week 7: Bulk + PDF tools (P1) - -* `/tools/bulk-qr-code-generator/` (CSV upload; align with SERP expectations like “download ZIP”). ([quickchart.io][18]) -* `/tools/pdf-to-qr-code-generator/` (CPC-heavy query → strong conversion) - -### Week 8: GA4 integration page (linkable asset) - -* `/integrations/google-analytics-4/` -* Companion guide: `/learn/how-to-track-qr-codes-in-ga4/` (UTMs, events, attribution). - -### Week 9: Authority pieces (start the pillar support) - -Publish 2 of these 5 (see section below): - -* “QR Code Size Guide” -* “QR Code Error Correction Explained” -* “UTM Builder for QR Campaigns” -* “QR Code Security / Quishing Prevention” -* “QR Code Analytics Benchmarks” - -### Week 10: pSEO expansion (controlled) - -* Add 10–20 additional `/tools/{type}/` pages (WiFi, email, SMS, etc.) only if they meet your thin-content threshold. -* Add 10–20 `/templates/` pages tied to real use cases. - -### Week 11: Comparisons (conversion-focused) - -* `/compare/qr-code-generator-vs-canva/` -* `/compare/qr-code-generator-vs-qrcode-monkey/` -* `/compare/dynamic-qr-code-generators/` (listicle with your wedge terms) - -### Week 12–13: Iterate based on GSC data - -* Optimize pages with impressions but low CTR (titles/meta). -* Expand FAQs to match PAA. -* Strengthen internal links from high-impression pages to money pages. - ---- - -## G) Page briefs for the top 5 money pages (H1, sections, schema, CTA, internal links) - -### 1) Dynamic QR Code Generator - -**URL:** `/features/dynamic-qr-codes/` (feature) + optional `/tools/dynamic-qr-code-generator/` (tool demo) -**Primary keyword:** dynamic qr code generator -**H1:** Dynamic QR Code Generator (Editable + Trackable) -**Sections (order matters)** - -* What is a dynamic QR code? (vs static) -* Edit destination after printing (URL, file, page) -* Tracking/analytics overview (scans, time, location, device) -* Use cases (menus, flyers, events, packaging) -* How it works (redirect + logging) -* Pricing preview + free tier -* FAQ (Do they expire? Can I change the URL? Can I export data?) - **Schema** -* FAQPage -* SoftwareApplication (or WebApplication) -* BreadcrumbList - **Primary CTA** -* “Create a dynamic QR code” (signup) - **Internal links** -* To `/features/qr-code-analytics/`, `/learn/dynamic-vs-static-qr-codes/`, `/integrations/google-analytics-4/` - -> Competitor pattern to beat: strong gating + feature ladder is common. ([qr-code-generator.com][1]) - ---- - -### 2) QR Code Analytics - -**URL:** `/features/qr-code-analytics/` -**Primary keyword:** qr code analytics -**H1:** QR Code Analytics: Track Scans, Measure Campaign ROI -**Sections** - -* What you can measure (total/unique scans, geo, device, time) -* Campaign organization (folders/tags, UTM conventions) -* Export + integrations (GA4 first) -* Dashboards (examples: restaurant menu, event check-in, retail) -* Data accuracy & privacy notes -* FAQ (“Can I track a static QR?” → explain dynamic requirement) - **Schema** -* FAQPage -* SoftwareApplication -* BreadcrumbList - **CTA** -* “Enable analytics on your QR code” (upgrade nudges) - **Internal links** -* From **every tool page** (sticky sidebar “Track scans with Analytics”) -* To `/learn/how-to-track-qr-codes-in-ga4/` - -> This is exactly what SaaS competitors highlight for upsell. ([flowcode.com][12]) - ---- - -### 3) Bulk QR Code Generator - -**URL:** `/tools/bulk-qr-code-generator/` -**Primary keyword:** bulk qr code generator -**H1:** Bulk QR Code Generator (CSV Upload → Download ZIP) -**Sections** - -* Upload CSV / paste data / Google Sheets import (later) -* Output formats (PNG/SVG/PDF), naming conventions -* Dynamic vs static toggle per row (upsell!) -* Common workflows: inventory labels, invites, coupons -* QA: scan testing, error correction, print sizing -* FAQ - **Schema** -* FAQPage -* HowTo (only if you include step-by-step with images) - **CTA** -* “Generate bulk QR codes” + secondary “Enable tracking for all” - **Internal links** -* To `/features/qr-code-analytics/` + `/features/dynamic-qr-codes/` - -> SERPs often expect “free bulk + zip”; match that intent. ([QR Explore][19]) - ---- - -### 4) vCard QR Code Generator - -**URL:** `/tools/vcard-qr-code-generator/` -**Primary keyword:** vCard qr code generator -**H1:** vCard QR Code Generator (Digital Business Card) -**Sections** - -* vCard fields + preview (VCF standard) -* iOS/Android compatibility + best practices -* Static vs dynamic vCard (edit contact later) -* Examples: sales reps, events, storefront QR -* CTA: “Add scan tracking to your business cards” -* FAQ (works on Android/iOS; does it expire; can I add photo; etc.) - **Schema** -* FAQPage -* SoftwareApplication - **CTA** -* “Create vCard QR” + upsell “Track scans / update later” - **Internal links** -* To `/learn/dynamic-vs-static-qr-codes/` + analytics feature - ---- - -### 5) QR Code API (developer money page) - -**URL:** `/features/qr-code-api/` + `/docs/api/` -**Primary keyword:** qr code api, qr code generator api -**H1:** QR Code API (Generate QR Codes at Scale) -**Sections** - -* Authentication, endpoints, rate limits -* Generate static/dynamic, bulk endpoints, webhooks (scan events) -* Code samples (JS/Python/cURL) -* Compliance + uptime -* Pricing tiers - **Schema** -* SoftwareApplication (feature page) -* TechArticle (docs pages) - **CTA** -* “Get API key” / “Start trial” - **Internal links** -* From bulk generator + analytics pages - ---- - -## H) Risks + mitigation (cannibalization, programmatic pitfalls, E-E-A-T, index bloat) - -### 1) Keyword cannibalization (very likely in this niche) - -**Risk:** “qr code tracking”, “trackable qr codes”, “qr code analytics” collapse into the same intent. -**Mitigation:** hard-map intents: - -* Analytics = feature/commercial -* Tracking = learn/how-to + GA4 -* Trackable QR = tool landing with demo dashboard - -### 2) Programmatic SEO thin pages / index bloat - -**Risk:** hundreds of near-identical “{type} QR generator” pages get ignored/deindexed. -**Mitigation (hard rules)** - -* Index only pages that include **unique elements**: - - * type-specific fields + validation (real tool) - * 2–3 examples - * type-specific FAQs - * type-specific tracking use case -* **Noindex**: parameter pages, empty states, duplicate locale stubs, search/filter pages. - -### 3) Trust & QR scam concerns (reputation risk, but also opportunity) - -**Risk:** Users fear scanning QR codes; Google may reward safety content. -**Mitigation:** ship “Security” feature page + learn content about safe scanning and link previews, referencing real-world scam patterns. ([Der Guardian][4]) - -### 4) Over-reliance on “Google QR Code Generator” traffic - -**Risk:** users only want Chrome’s built-in static QR and bounce. -**Mitigation:** page structure: “How to do it in Chrome” (satisfy intent) → “When you need dynamic + analytics” (convert). ([Google Hilfe][2]) - -### 5) E-E-A-T gap vs incumbents - -**Risk:** new domain lacks credibility. -**Mitigation** - -* Publish 2–3 “benchmarks / research” assets with original data (even small): scan-rate benchmarks, print-size testing, or campaign case studies. -* Add transparent pricing, uptime, privacy policy, and author/editor pages for Learn content. - ---- - -If you tell me your **target market (US vs DACH vs global), language (EN/DE), and monetization (freemium vs trials)**, I can *tighten the sitemap + 90-day calendar* so it perfectly matches your rollout (especially internationalization + URL strategy). - -[1]: https://www.qr-code-generator.com/?utm_source=chatgpt.com "QR Code Generator | Create Your Free QR Codes" -[2]: https://support.google.com/chrome/answer/10051760?co=GENIE.Platform%3DDesktop&hl=en&utm_source=chatgpt.com "Share pages in Chrome - Computer" -[3]: https://www.qr-code-generator.com/solutions/?utm_source=chatgpt.com "QR Code Solution for Every Purpose" -[4]: https://www.theguardian.com/money/2025/may/25/qr-code-scam-what-is-quishing-drivers-app-phone-parking-payment?utm_source=chatgpt.com "'Pay here': the QR code 'quishing' scam targeting drivers" -[5]: https://barcode.tec-it.com/en?utm_source=chatgpt.com "Free Online Barcode Generator: Create Barcodes for Free!" -[6]: https://www.qrcode-monkey.com/?utm_source=chatgpt.com "QRCode Monkey - The free QR Code Generator to create ..." -[7]: https://www.qrcode-monkey.com/de/qr-code-service/?utm_source=chatgpt.com "QR Code API for Static Codes" -[8]: https://www.the-qrcode-generator.com/?utm_source=chatgpt.com "The QR Code Generator (TQRCG): Create Free QR Codes" -[9]: https://hovercode.com/?utm_source=chatgpt.com "QR Code Generator | Create Free Dynamic QR Codes" -[10]: https://hovercode.com/circle-qr-code-generator/?utm_source=chatgpt.com "Generate circle QR codes (no sign up required)" -[11]: https://scanova.io/features/?utm_source=chatgpt.com "Powerful features for all QR Code use cases" -[12]: https://www.flowcode.com/product/analytics?utm_source=chatgpt.com "Gain insight into your offline marketing with in-depth Analytics" -[13]: https://www.qrcodechimp.com/qr-code-analytics-guide/?utm_source=chatgpt.com "QR Code Analytics: Track, Analyze & Optimize Your ..." -[14]: https://me-qr.com/qr-code-generator/pdf?srsltid=AfmBOooK1o7kkjaSizlEOWcEcYcDWfKhZuuM3XvrJGQlm2xdiTbw1exS&utm_source=chatgpt.com "Create QR Code For PDF FREE" -[15]: https://www.canva.com/qr-code-generator/?utm_source=chatgpt.com "Free QR Code Generator - Create QR codes with ease" -[16]: https://help.instagram.com/925529167647849/?utm_source=chatgpt.com "Find and customize the QR code of your Instagram profile" -[17]: https://www.spotifycodes.com/?utm_source=chatgpt.com "Spotify Codes" -[18]: https://quickchart.io/bulk-qr-code-generator/?utm_source=chatgpt.com "Bulk QR Code Generator | Custom colors and logo, free" -[19]: https://qrexplore.com/generate/?utm_source=chatgpt.com "Bulk QR Code Generator" - ---- - -## I) Off-Page Risk Management (Backlink Hygiene) - -Maintaining a healthy backlink profile is critical to avoiding "algorithmic suppresses" or manual penalties. - -### 1) Monthly Toxicity Audits -* **Monitor Spam Score:** Use tools to detect sudden spikes in low-quality referring domains. -* **Identify Negative SEO:** Watch for automated directory blasts or irrelevant foreign-language links. - -### 2) Disavow Process -* **Maintain a Master Disavow File:** Keep a running list of domains that are clearly toxic (Link Farms, PBNs, Malware sites). -* **Upload to GSC:** Use the [Google Disavow Tool](https://search.google.com/search-console/disavow-links) once a quarter if toxicity exceeds 5% of total profile. - -### 3) Quality-First Acquisition -* **Avoid Mass Directories:** Focus only on niche-relevant, high-authority directories. -* **Earn over Buy:** Prioritize "link-worthy" content (Guides, Tools, Benchmarks) over purchased placements. diff --git a/seo_issues_new.md b/seo_issues_new.md deleted file mode 100644 index b63e7f7..0000000 --- a/seo_issues_new.md +++ /dev/null @@ -1,743 +0,0 @@ -Issues -/ -Multiple H1 tags - -Why and how to fix - -Submit to IndexNow - -Create new issue - -All URLs - -Pages - -Resources - -Content - -Links - -Redirects - -Indexability - -Sitemaps - -Ahrefs metrics -Word or phrase - -URL - -Advanced filter -Crawl history -Hide chart -12 Jan -13 Jan -13 Jan -14 Jan -14 Jan -0 -1 -2 -3 -4 -All filter results - -All filter results -3 - -Lost from filter results -0 - -Lost -0 - -Patches - -Changes: Don't show - -Columns - -Export -PR -URL -Organic traffic -HTTP status code -Depth -H1 -H1 length -No. of H1 -Is indexable page -40 -html -QR Master: Dynamic QR Generator -https://www.qrmaster.net/ -0 -200 -0 -QR Master: Dynamic QR Code Generator with Analytics -Create QR Codes That Work Everywhere -51 -36 -2 -Yes -38 -html -Pricing Plans | QR Master -https://www.qrmaster.net/pricing -0 -200 -0 -QR Master Pricing – Choose Your QR Code Plan -Choose Your Plan -44 -16 -2 -Yes -38 -html -QR Code Erstellen – Kostenlos | QR Master -https://www.qrmaster.net/qr-code-erstellen -0 -200 -0 -QR Code Erstellen – Kostenloser QR Code Generator mit Tracking -Erstellen Sie QR-Codes, die überall funktionieren -62 -49 -2 -Yes -Showing 3 of 3 - - - - - - - - - - - - - - - -Issues -/ -Open Graph tags missing - -Why and how to fix - -Submit to IndexNow - -Create new issue - -All URLs - -Pages - -Resources - -Content - -Links - -Redirects - -Indexability - -Sitemaps - -Ahrefs metrics -Word or phrase - -URL - -Advanced filter -Crawl history -Hide chart -12 Jan -13 Jan -13 Jan -14 Jan -14 Jan -0 -1 -2 -3 -4 -All filter results - -All filter results -2 - -Lost from filter results -0 - -Lost -0 - -Patches - -Changes: Don't show - -Columns - -Export -PR -URL -Organic traffic -Is valid Open graph -Open graph attributes -Open graph values -Depth -Is indexable page -No. of all inlinks -39 -html -Login to QR Master | Access Your Dashboard -https://www.qrmaster.net/login -0 -0 -Yes -38 -38 -html -Create Free Account | QR Master -https://www.qrmaster.net/signup -0 -0 -Yes -37 -Showing 2 of 2 - - - - - - - - - - - - - - - - - -Issues -/ -X (Twitter) card missing - -Why and how to fix - -Submit to IndexNow - -Create new issue - -All URLs - -Pages - -Resources - -Content - -Links - -Redirects - -Indexability - -Sitemaps - -Ahrefs metrics -Word or phrase - -URL - -Advanced filter -Crawl history -Hide chart -12 Jan -13 Jan -13 Jan -14 Jan -14 Jan -0 -1 -2 -3 -4 -All filter results - -All filter results -2 - -Lost from filter results -0 - -Lost -0 - -Patches - -Changes: Don't show - -Columns - -Export -PR -URL -Organic traffic -Is valid X (Twitter) card -X (Twitter) card attributes -X (Twitter) card values -Depth -Is indexable page -No. of all inlinks -39 -html -Login to QR Master | Access Your Dashboard -https://www.qrmaster.net/login -0 -0 -Yes -38 -38 -html -Create Free Account | QR Master -https://www.qrmaster.net/signup -0 -0 -Yes -37 -Showing 2 of 2 - - - - - - - - - - - - - - - -Issues -/ -Slow page - -Why and how to fix - -Submit to IndexNow - -Create new issue - -All URLs - -Pages - -Resources - -Content - -Links - -Redirects - -Indexability - -Sitemaps - -Ahrefs metrics -Word or phrase - -URL - -Advanced filter -Crawl history -Hide chart -12 Jan -13 Jan -13 Jan -14 Jan -14 Jan -0 -2 -4 -6 -8 -All filter results - -All filter results -8 - -Lost from filter results -0 - -Lost -0 - -Patches - -Changes: Don't show - -Columns - -Export -PR -URL -Organic traffic -HTTP status code -Size (bytes) -Time to first byte (ms) -Loading time (ms) -Depth -Is indexable page -No. of all inlinks -First found at -39 -html -QR Master FAQ: Dynamic & Bulk QR | QR Master -https://www.qrmaster.net/faq -0 -200 -9,957 -3,291 -3,295 -0 -Yes -38 -38 -html -Free WhatsApp QR Code Generator | Start Chats Instantly | QR Master -https://www.qrmaster.net/tools/whatsapp-qr-code -0 -200 -17,196 -22,105 -22,108 -0 -Yes -36 -38 -html -QR Insights: Latest QR Strategies | QR Master -https://www.qrmaster.net/blog -0 -200 -9,739 -23,152 -23,153 -0 -Yes -36 -38 -html -Free PayPal QR Code Generator | Accept Payments Instantly | QR Master -https://www.qrmaster.net/tools/paypal-qr-code -0 -200 -17,661 -16,253 -16,254 -0 -Yes -36 -38 -html -Free vCard QR Code Generator | QR Master -https://www.qrmaster.net/tools/vcard-qr-code -0 -200 -19,120 -17,305 -17,328 -0 -Yes -36 -38 -html -Free Text QR Code Generator | Text zu QR Code | QR Master -https://www.qrmaster.net/tools/text-qr-code -0 -200 -17,089 -27,995 -28,036 -0 -Yes -36 -38 -html -Free Crypto QR Code Generator | Krypto QR Code Erstellen | QR Master -https://www.qrmaster.net/tools/crypto-qr-code -0 -200 -17,093 -10,033 -10,069 -0 -Yes -36 -18 -html -Newsletter Admin | QR Master | QR Master -https://www.qrmaster.net/newsletter -0 -200 -7,334 -11,826 -11,830 -1 -No -36 -https://www.qrmaster.net/ -Showing 8 of 8 - - - - - - - - - - - - - - - - -Issues -/ -Structured data has schema.org validation error - -Why and how to fix - -Submit to IndexNow - -Create new issue - -All URLs - -Pages - -Resources - -Content - -Links - -Redirects - -Indexability - -Sitemaps - -Ahrefs metrics -Word or phrase - -URL - -Advanced filter -Crawl history -Hide chart -12 Jan -13 Jan -13 Jan -14 Jan -14 Jan -0 -10 -20 -30 -40 -All filter results - -All filter results -12 - -Lost from filter results -25 - -Lost -1 - -Patches - -Changes: Don't show - -Columns - -Export -PR -URL -Organic traffic -Schema items -Structured data issues -Is indexable page -38 -html -QR Insights: Latest QR Strategies | QR Master -https://www.qrmaster.net/blog -0 -BreadcrumbList -Organization -WebSite -Schema.org validation error -View issues -Yes -38 -html -QR Code Tracking & Analytics - Track Scans | QR Master | QR Master -https://www.qrmaster.net/qr-code-tracking -0 -BreadcrumbList -HowTo -Organization -SoftwareApplication -WebSite -Schema.org validation error -View issues -Yes -38 -html -Bulk QR Code Generator | Create from Excel | QR Master | QR Master -https://www.qrmaster.net/bulk-qr-code-generator -0 -BreadcrumbList -FAQPage -HowTo -Organization -SoftwareApplication -All 6 -Schema.org validation error -View issues -Yes -24 -html -Free vCard QR Generator: Digital Cards | QR Master -https://www.qrmaster.net/blog/vcard-qr-code-generator -0 -BlogPosting -BreadcrumbList -HowTo -Organization -WebSite -Schema.org validation error -View issues -Yes -24 -html -Restaurant Menu QR Codes: 2025 Guide | QR Master -https://www.qrmaster.net/blog/qr-code-restaurant-menu -0 -BlogPosting -BreadcrumbList -HowTo -Organization -WebSite -Schema.org validation error -View issues -Yes -24 -html -QR Code Analytics: The Complete Guide | QR Master -https://www.qrmaster.net/blog/qr-code-analytics -0 -BlogPosting -BreadcrumbList -HowTo -Organization -WebSite -Schema.org validation error -View issues -Yes -24 -html -Dynamic vs Static QR Codes: The Ultimate Comparison | QR Master -https://www.qrmaster.net/blog/dynamic-vs-static-qr-codes -0 -BlogPosting -BreadcrumbList -Organization -WebSite -Schema.org validation error -View issues -Yes -24 -html -How to Generate Bulk QR Codes from Excel | QR Master -https://www.qrmaster.net/blog/bulk-qr-code-generator-excel -0 -BlogPosting -BreadcrumbList -HowTo -Organization -WebSite -Schema.org validation error -View issues -Yes -24 -html -QR Code Print Size Guide: Minimum Sizes for Every Use Case | QR Master -https://www.qrmaster.net/blog/qr-code-print-size-guide -0 -BlogPosting -BreadcrumbList -Organization -WebSite -Schema.org validation error -View issues -Yes -24 -html -Best QR Code Generator for Small Business 2025 | QR Master -https://www.qrmaster.net/blog/qr-code-small-business -0 -BlogPosting -BreadcrumbList -Organization -WebSite -Schema.org validation error -View issues -Yes -24 -html -QR Code Tracking: Complete Guide 2025 | QR Master -https://www.qrmaster.net/blog/qr-code-tracking-guide-2025 -0 -BlogPosting -BreadcrumbList -HowTo -Organization -WebSite -Schema.org validation error -View issues -Yes -21 -html -Dynamic QR Code Generator | Edit & Track QR | QR Master | QR Master -https://www.qrmaster.net/dynamic-qr-code-generator -0 -BreadcrumbList -FAQPage -HowTo -Organization -SoftwareApplication -All 6 -Schema.org validation error -View issues -Yes -Showing 12 of 12 \ No newline at end of file diff --git a/seobility-findings.md b/seobility-findings.md deleted file mode 100644 index 18f275b..0000000 --- a/seobility-findings.md +++ /dev/null @@ -1,22 +0,0 @@ -# Seobility SEO Findings & Status - -## Structure & Internal Linking -- [FIXED] **Improve Internal Link Texts** - - *Status:* Replaced "Read more" with "Read Article" in `blog/page.tsx`. -- [VERIFIED] **Pages with few internal links (9 pages)** - - *Status:* Core pages. `MarketingLayout` ensures Footer/Nav links exist on all these pages. Design choice. - -## Onpage & Content -- [PARTIAL] **Problems with Page Titles (13 pages)** - - *Fixed:* Word repetition (Duplication). - - *Remaining:* "Too long" titles (e.g. `QR Code Analytics: Track...`). -- [VERIFIED] **Keywords not in text** - - *Action:* Content reviewed. Titles match page intent. Modern SEO prefers natural language over exact keyword stuffing. -- [RESOLVED] **Identical HTML Pages** - - *Status:* `privacy`, `faq`, `newsletter`. Verified as False Positives (Unique content found) or Admin Page confusion (`newsletter`). - -## Technical -- [VERIFIED] **H1 Headings** - - *Status:* **False Positive in Report**. Code review confirms `

` tags are present on all core pages (Login, Signup, etc.). Crawlers can read this. -- [FIXED] **Duplicate Meta Descriptions** - - *Status:* Addressed by fixing metadata on core pages. diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 1cd7c0f..a0d6fd3 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -20,6 +20,7 @@ export const metadata: Metadata = { : { index: false, follow: false }, icons: { icon: [ + { url: '/favicon.ico', type: 'image/x-icon' }, { url: '/favicon.svg', type: 'image/svg+xml' }, { url: '/logo.svg', type: 'image/svg+xml' }, ], diff --git a/toxic_backlinks_remediation.md b/toxic_backlinks_remediation.md deleted file mode 100644 index d6c745d..0000000 --- a/toxic_backlinks_remediation.md +++ /dev/null @@ -1,40 +0,0 @@ -# Backlink Toxicity Remediation Report - qrmaster.net - -## Audit Summary -A recent backlink audit revealed a **Medium Toxicity Score** with approximately **44 toxic domains** and **10 potentially toxic domains** pointing to `qrmaster.net`. - -## High-Risk Domains Identified -The following domains were flagged as primary offenders: - -| Domain | Toxicity Reason | Recommendation | -| :--- | :--- | :--- | -| `your-directory.com` | Low-quality web directory spam | Disavow | -| `webdirectory11.com` | Automated link farm / Directory spam | Disavow | -| `worlds-directory.com` | Irrelevant directory listing | Disavow | -| `robustdirectory.com` | Low-authority "link dump" site | Disavow | -| `directory-nation.com` | Spammy business listing directory | Disavow | -| `runningwebsites.net` | Link farm ("Where to buy aged domains") | Disavow | -| `aboutyoublog.com` | Automated blog network spam | Disavow | -| `blog-gold.com` | Automated blog network spam | Disavow | -| `activoblog.com` | Automated blog network spam | Disavow | -| `uaewebdirectory.info` | Low-quality directory spam | Disavow | -| `hebagh.cv` | Low-quality directory spam | Disavow | - -## Root Cause Analysis -The majority of toxic links originate from **automated web directories** and **social bookmarking sites**. These are often the result of: -1. **Legacy SEO tactics:** Old-school "mass submission" tools. -2. **Negative SEO:** Third-party attempts to associate the site with low-quality neighborhoods. -3. **Automated scrapers:** Low-quality sites scraping content and automatically linking back. - -## Remediation Actions Taken -1. **Disavow File Generated:** A standard `google_disavow_2026_02_09.txt` has been created. -2. **Strategy Update:** "Off-Page Risk Management" has been integrated into the long-term SEO plan. - -## Next Steps for User -1. **Download:** [google_disavow_2026_02_09.txt](file:///c:/Users/a931627/Documents/QRMASTER/google_disavow_2026_02_09.txt) -2. **Upload:** Go to the [Google Disavow Tool](https://search.google.com/search-console/disavow-links). -3. **Select Property:** Select `https://www.qrmaster.net`. -4. **Confirm:** Upload the text file. - -> [!WARNING] -> The Disavow tool is an advanced feature. Only use it to disavow links that are clearly spammy or low-quality. Mistakes can negatively impact your rankings. diff --git a/uploaded_image_1_1768240457880.png b/uploaded_image_1_1768240457880.png deleted file mode 100644 index e0f7904..0000000 Binary files a/uploaded_image_1_1768240457880.png and /dev/null differ diff --git a/uploaded_image_1_1768241189653.png b/uploaded_image_1_1768241189653.png deleted file mode 100644 index 15e2f25..0000000 Binary files a/uploaded_image_1_1768241189653.png and /dev/null differ