SEO: compare/guide pSEO pages + internal links + intent differentiation
This commit is contained in:
255
docs/automations/runs/qrmaster-seo-sprint-2026-06-22.md
Normal file
255
docs/automations/runs/qrmaster-seo-sprint-2026-06-22.md
Normal file
@@ -0,0 +1,255 @@
|
||||
# QRMaster SEO Sprint: Dynamic QR Buying Decision
|
||||
|
||||
Run date: 2026-06-22
|
||||
Automation: QRMaster SEO Sprint Machine
|
||||
Mode: recommendation and PR-ready tasks only, no publishing
|
||||
|
||||
## Inputs Used
|
||||
|
||||
- `docs/automations/qrmaster-seo-sprint-machine.md`
|
||||
- `docs/automations/qrmaster-pr-seo-review.md`
|
||||
- `.agents/product-marketing-context.md`
|
||||
- `marketing/programmatic-seo-top-50.md`
|
||||
- `seo-keywords.csv`
|
||||
- `src/lib/comparison-pages.ts`
|
||||
- `src/lib/guide-pages.ts`
|
||||
- `src/app/sitemap.ts`
|
||||
- `src/app/robots.ts`
|
||||
|
||||
Missing requested input: `marketing/keyword-strategy-seo-plan.md` is not present in this worktree. Scoring used `seo-keywords.csv`, `marketing/programmatic-seo-top-50.md`, and repo inspection instead.
|
||||
|
||||
## PLAN
|
||||
|
||||
1. Understand the task: run a controlled weekly SEO sprint without publishing.
|
||||
2. Identify affected files: pSEO page data, route templates, sitemap, robots, and target money pages.
|
||||
3. Design the implementation: select one cluster and expose only approved pages through allowlisted routes.
|
||||
4. Implement step-by-step: prepare PR-ready tasks, not direct changes.
|
||||
5. Verify results: use the PR SEO review checklist before merge.
|
||||
|
||||
## Cluster Selection
|
||||
|
||||
Selected cluster: Dynamic QR buying decision.
|
||||
|
||||
Rationale: This cluster owns the highest commercial decision point for QR Master: static/free one-off generation versus dynamic, editable, trackable QR workflows. It also avoids repeating last week's tracking package while still reusing the same route/template investment. The top two backlog entries are both in this cluster, and their content already exists in `src/lib/comparison-pages.ts` but is not exposed because there is no `/compare/[slug]` route.
|
||||
|
||||
Important implementation note: `src/lib/comparison-pages.ts` and `src/lib/guide-pages.ts` contain more records than this sprint should publish. The PR should use an explicit published-slug allowlist or `status` field so only the selected pages become reachable and indexable.
|
||||
|
||||
## Candidate Cluster Scores
|
||||
|
||||
Scores use the automation model: product fit 30, commercial intent 25, differentiation potential 15, cluster leverage 10, search winability 10, production effort 10.
|
||||
|
||||
| Cluster | Product fit | Commercial intent | Differentiation | Cluster leverage | Winability | Effort | Score | Decision |
|
||||
|---|---:|---:|---:|---:|---:|---:|---:|---|
|
||||
| Dynamic QR buying decision | 30 | 24 | 14 | 10 | 8 | 8 | 94 | Select |
|
||||
| Tracking and analytics | 29 | 23 | 14 | 9 | 8 | 7 | 90 | Defer, already selected last run |
|
||||
| Bulk QR and spreadsheet workflows | 26 | 21 | 12 | 8 | 9 | 8 | 84 | Next after route scaffold |
|
||||
| Print reliability | 23 | 15 | 12 | 8 | 9 | 8 | 75 | Support cluster |
|
||||
| Restaurant/menu QR | 25 | 18 | 11 | 8 | 6 | 7 | 75 | Hold for industry sprint |
|
||||
|
||||
## Selected Work
|
||||
|
||||
| Type | URL | Score | Reason |
|
||||
|---|---|---:|---|
|
||||
| New comparison page | `/compare/dynamic-vs-static-qr-codes` | 94 | Highest leverage concept page. Explains why QR Master's dynamic/edit-after-print value exists. |
|
||||
| New comparison page | `/compare/free-vs-paid-qr-code-generator` | 91 | Bottom-funnel upgrade page. Connects free QR intent to pricing, dynamic limits, analytics, and reprint risk. |
|
||||
| New guide page | `/guide/dynamic-qr-code-best-practices` | 88 | Strategic support guide. Helps AI/search systems connect dynamic QR setup, naming, tracking, and print workflows. |
|
||||
| Refresh existing page | `/dynamic-qr-code-generator` | 92 | Money page. Strong volume in CSV: `dynamic qr code`, `dynamic qr code generator`, `create dynamic qr code`, `dynamic qr generator`, and `dynamic qr code creator` are each 1k-10k. |
|
||||
| Refresh existing page | `/reprint-calculator` | 84 | Conversion-support page. Should quantify the central "static QR reprint cost" argument for comparison pages. |
|
||||
|
||||
## Keyword Intent And Fan-Out
|
||||
|
||||
| URL | Primary keyword | Intent | Fan-out subtopics |
|
||||
|---|---|---|---|
|
||||
| `/compare/dynamic-vs-static-qr-codes` | dynamic vs static QR codes | Commercial investigation | Can static QR codes be edited, what dynamic QR tracking means, reprint risk, when static is enough, print campaigns, menus, packaging, privacy-aware analytics, cost tradeoff, migration from static to dynamic. |
|
||||
| `/compare/free-vs-paid-qr-code-generator` | free vs paid QR code generator | Commercial investigation | Free static generators, dynamic QR limits, paid plan features, tracking, branding, expiry risk, scan limits, pricing, hidden reprint cost, business use cases, when free is enough. |
|
||||
| `/guide/dynamic-qr-code-best-practices` | dynamic QR code best practices | Informational to commercial | Naming conventions, campaign grouping, editable destinations, scan tracking setup, QR placement, UTM usage, print testing, destination updates, privacy/GDPR framing, internal reporting. |
|
||||
| `/dynamic-qr-code-generator` | dynamic QR code generator | Transactional | Create dynamic QR, editable QR code, free dynamic QR limits, tracking, update after print, branding, plan limits, static vs dynamic, use cases, schema-backed FAQ. |
|
||||
| `/reprint-calculator` | QR code reprint cost calculator | Commercial utility | Static QR risk, reprint math, edit-after-print savings, campaign examples, pricing comparison, calculator assumptions, what to do after calculating savings. |
|
||||
|
||||
## Recommended New Pages
|
||||
|
||||
### 1. `/compare/dynamic-vs-static-qr-codes`
|
||||
|
||||
PR status: content data exists in `src/lib/comparison-pages.ts`; needs route/template, metadata, schema, sitemap entry, and internal links.
|
||||
|
||||
Title: `Dynamic vs Static QR Codes: Which to Use`
|
||||
|
||||
H1: `Dynamic vs Static QR Codes`
|
||||
|
||||
Meta description: `Compare dynamic and static QR codes for editability, scan tracking, reprint risk, and business workflows before you print.`
|
||||
|
||||
Slug: `/compare/dynamic-vs-static-qr-codes`
|
||||
|
||||
Direct answer: Static QR codes lock the destination into the image. Dynamic QR codes route through a managed link, so teams can change the destination and measure scans after the QR code has been printed.
|
||||
|
||||
Schema opportunities: `Article`, `FAQPage`, `BreadcrumbList`, and `ItemList` for the comparison table.
|
||||
|
||||
Visual: Responsive comparison table plus a simple redirect-flow diagram: printed QR -> QR Master redirect -> current destination.
|
||||
|
||||
### 2. `/compare/free-vs-paid-qr-code-generator`
|
||||
|
||||
PR status: content data exists in `src/lib/comparison-pages.ts`; needs route/template, metadata, schema, sitemap entry, and internal links.
|
||||
|
||||
Title: `Free vs Paid QR Code Generator`
|
||||
|
||||
H1: `Free vs Paid QR Code Generator`
|
||||
|
||||
Meta description: `See when a free QR generator is enough and when paid dynamic QR features, tracking, branding, and reprint savings are worth it.`
|
||||
|
||||
Slug: `/compare/free-vs-paid-qr-code-generator`
|
||||
|
||||
Direct answer: A free QR generator is usually enough for one permanent static link. A paid QR platform becomes worth it when the code is printed at scale, tied to campaigns, or needs editing and analytics later.
|
||||
|
||||
Schema opportunities: `Article`, `FAQPage`, `BreadcrumbList`, and `ItemList`.
|
||||
|
||||
Visual: "Free is enough when..." versus "Paid is worth it when..." table.
|
||||
|
||||
### 3. `/guide/dynamic-qr-code-best-practices`
|
||||
|
||||
PR status: content data exists in `src/lib/guide-pages.ts`; needs route/template, metadata, schema, sitemap entry, and internal links.
|
||||
|
||||
Title: `Dynamic QR Code Best Practices`
|
||||
|
||||
H1: `Dynamic QR Code Best Practices`
|
||||
|
||||
Meta description: `Plan dynamic QR codes with better naming, tracking, print testing, privacy checks, and update workflows before campaigns go live.`
|
||||
|
||||
Slug: `/guide/dynamic-qr-code-best-practices`
|
||||
|
||||
Direct answer: The best dynamic QR workflows use clear naming, stable print placement, measurable destinations, and disciplined update management after the code is in circulation.
|
||||
|
||||
Schema opportunities: `Article`, `HowTo`, `FAQPage`, and `BreadcrumbList`.
|
||||
|
||||
Visual: Checklist or workflow graphic for naming -> print test -> publish -> monitor -> update.
|
||||
|
||||
## Recommended Page Refreshes
|
||||
|
||||
### `/dynamic-qr-code-generator`
|
||||
|
||||
Refresh rationale: This is the money page for the cluster and already ranks against high-volume dynamic QR terms. It has strong answer-first structure, schema, FAQs, and internal links, but should be tightened before more internal equity points to it.
|
||||
|
||||
PR-ready tasks:
|
||||
|
||||
- Shorten title under roughly 60 characters if possible. Current absolute title is likely too long.
|
||||
- Verify current plan limits against product/business truth before publishing. Product context says Free includes 8 dynamic codes, but app copy often says 3 active dynamic codes.
|
||||
- Re-check competitor pricing and claims before keeping comparison table language.
|
||||
- Replace or verify weak research/stat blocks. Avoid unsupported numbers such as broad print-error claims unless a reliable source is attached.
|
||||
- Add contextual links to the two new comparison pages and the new best-practices guide.
|
||||
- Ensure each major H2 starts with a direct answer in the first sentence.
|
||||
|
||||
### `/reprint-calculator`
|
||||
|
||||
Refresh rationale: This page supports the strongest conversion argument for dynamic QR: printed assets should not become waste when URLs change.
|
||||
|
||||
PR-ready tasks:
|
||||
|
||||
- Update title to target the query directly: `QR Code Reprint Cost Calculator`.
|
||||
- Add an answer-first block explaining when static QR reprints become expensive.
|
||||
- Add FAQ content and `FAQPage` schema for "Can I edit a QR code after printing?", "How much do QR reprints cost?", and "When is dynamic QR worth it?"
|
||||
- Link to `/compare/dynamic-vs-static-qr-codes`, `/compare/free-vs-paid-qr-code-generator`, `/dynamic-qr-code-generator`, and `/pricing`.
|
||||
- Add visible assumptions around calculator inputs so AI/search systems can cite the methodology.
|
||||
- Keep calculator lightweight. Do not add heavy chart libraries or large images.
|
||||
|
||||
## Internal-Link Plan
|
||||
|
||||
Add links from:
|
||||
|
||||
- `/dynamic-qr-code-generator` to `/compare/dynamic-vs-static-qr-codes`, `/compare/free-vs-paid-qr-code-generator`, `/guide/dynamic-qr-code-best-practices`, and `/reprint-calculator`.
|
||||
- `/reprint-calculator` to `/compare/dynamic-vs-static-qr-codes`, `/dynamic-qr-code-generator`, and `/pricing`.
|
||||
- `/qr-code-tracking` to `/compare/dynamic-vs-static-qr-codes` where dynamic tracking is explained.
|
||||
- `/qr-code-analytics` to `/guide/dynamic-qr-code-best-practices` where naming and placement discipline are discussed.
|
||||
- `/pricing` to `/compare/free-vs-paid-qr-code-generator` with anchor text like `free vs paid QR generator`.
|
||||
- `/tools/url-qr-code` to `/compare/dynamic-vs-static-qr-codes` if the tool page discusses static output or destination changes.
|
||||
|
||||
Add links from new pages to:
|
||||
|
||||
- `/dynamic-qr-code-generator`
|
||||
- `/qr-code-tracking`
|
||||
- `/qr-code-analytics`
|
||||
- `/reprint-calculator`
|
||||
- `/pricing`
|
||||
- `/guide/dynamic-qr-code-best-practices`
|
||||
|
||||
Anchor text should be natural and varied: `dynamic QR code generator`, `track QR code scans`, `compare free and paid QR generators`, `estimate reprint savings`, `dynamic QR best practices`.
|
||||
|
||||
## PR Plan
|
||||
|
||||
1. Add controlled route templates:
|
||||
- `src/app/(main)/compare/[slug]/page.tsx`
|
||||
- `src/app/(main)/guide/[slug]/page.tsx`
|
||||
2. Add published-slug allowlists:
|
||||
- comparisons: `dynamic-vs-static-qr-codes`, `free-vs-paid-qr-code-generator`
|
||||
- guides: `dynamic-qr-code-best-practices`
|
||||
3. Route behavior:
|
||||
- `generateStaticParams` returns only published slugs.
|
||||
- Unknown or unpublished slugs call `notFound()`.
|
||||
- Metadata uses page title, description, canonical path, Open Graph, and no accidental `noindex`.
|
||||
4. Template behavior:
|
||||
- One H1.
|
||||
- Direct answer block near top.
|
||||
- H2/H3 sections start with answer-first language.
|
||||
- Responsive comparison tables with horizontal overflow on mobile.
|
||||
- CTA blocks point to selected commercial pages.
|
||||
5. Schema:
|
||||
- Comparison pages: `Article`, `FAQPage`, `BreadcrumbList`, `ItemList`.
|
||||
- Guide page: `Article`, `HowTo`, `FAQPage`, `BreadcrumbList`.
|
||||
6. Sitemap:
|
||||
- Add selected `/compare/...` and `/guide/...` URLs only.
|
||||
- Use current sprint date for `lastModified`.
|
||||
7. Refresh pages:
|
||||
- Update `/dynamic-qr-code-generator`.
|
||||
- Update `/reprint-calculator`.
|
||||
8. Review gate:
|
||||
- Run the PR SEO review from `docs/automations/qrmaster-pr-seo-review.md`.
|
||||
- Do not merge until high-severity SEO/conversion findings are resolved.
|
||||
|
||||
## Robots And Indexing Assumptions
|
||||
|
||||
- `src/app/robots.ts` currently allows public pages and explicitly allows `OAI-SearchBot`, `GPTBot`, `ChatGPT-User`, `PerplexityBot`, `ClaudeBot`, `anthropic-ai`, and `Google-Extended` while blocking private paths.
|
||||
- Selected pages should be indexable, canonicalized, and included in `sitemap.ts`.
|
||||
- Unselected `comparisonPages` and `guidePages` records should remain unpublished until a human approves them.
|
||||
- For pages that should not appear, prefer route allowlisting or `notFound()` rather than relying on robots.txt.
|
||||
|
||||
External guidance checked:
|
||||
|
||||
- Google SEO Starter Guide: https://developers.google.com/search/docs/fundamentals/seo-starter-guide
|
||||
- Google AI features and your website: https://developers.google.com/search/docs/appearance/ai-features
|
||||
- Google structured data introduction: https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data
|
||||
- Google robots.txt guidance: https://developers.google.com/search/docs/crawling-indexing/robots/intro
|
||||
- OpenAI crawler overview: https://developers.openai.com/api/docs/bots
|
||||
- OpenAI publisher/developer FAQ for ChatGPT search inclusion: https://help.openai.com/en/articles/12627856-publishers-and-developers-faq
|
||||
|
||||
## Mobile, Visual, And Speed Checks
|
||||
|
||||
- Keep comparison tables responsive with `overflow-x-auto` and a minimum readable width.
|
||||
- Avoid new heavyweight images unless they are compressed and useful.
|
||||
- Use existing lightweight cards, tables, and schema components.
|
||||
- Validate CTA tap targets on mobile.
|
||||
- Do not add animated hero assets or charting libraries for this sprint.
|
||||
|
||||
## Verification Checklist
|
||||
|
||||
- `npm run lint`
|
||||
- `npm run build`
|
||||
- Confirm exactly one H1 per selected page.
|
||||
- Confirm metadata title, description, canonical, and Open Graph are set.
|
||||
- Confirm selected pages are in `sitemap.ts`.
|
||||
- Confirm unpublished pSEO records are not reachable.
|
||||
- Confirm robots rules do not block selected public pages.
|
||||
- Validate JSON-LD output for comparison and guide pages.
|
||||
- Check internal links and CTA destinations manually.
|
||||
- Check mobile rendering for comparison tables and CTA blocks.
|
||||
- Run the QRMaster PR SEO Review checklist and request changes for any high-severity finding.
|
||||
|
||||
## Follow-Up Social And Outreach Ideas
|
||||
|
||||
1. LinkedIn post: "Static QR codes are cheap until the printed URL changes." Link to the dynamic-vs-static comparison.
|
||||
2. X thread: "Free QR generators are enough for one-off links. Here is when paid dynamic QR becomes cheaper." Link to free-vs-paid.
|
||||
3. Quora answer: "Can you change a QR code after printing?" Explain static vs dynamic and link to the comparison.
|
||||
4. Short YouTube/Loom: show a printed flyer scenario, change the QR destination, and show scan tracking.
|
||||
5. Outreach pitch: send the reprint calculator to print shops, small agencies, and restaurant consultants as a utility they can reference.
|
||||
|
||||
## Hold For Future Sprints
|
||||
|
||||
- Tracking and analytics cluster from the 2026-06-15 run remains valid, but do not duplicate the same package. The same guide route scaffold can later expose `/guide/how-to-track-qr-code-scans`, `/guide/how-to-use-utm-with-qr-codes`, and `/guide/qr-code-gdpr`.
|
||||
- Next good cluster after this PR: Bulk QR and spreadsheet workflows, because `bulk qr code generator`, `mass qr code generator`, and `qr code generator excel` show strong search fit and low competition in `seo-keywords.csv`.
|
||||
Reference in New Issue
Block a user