69 lines
3.8 KiB
Markdown
69 lines
3.8 KiB
Markdown
# SEO Remaining Tasks
|
|
|
|
This document contains a list of all SEO issues identified in the Ahrefs and Seobility reports that still need to be addressed in the codebase.
|
|
|
|
## 1. Content & Metadata Issues
|
|
|
|
- [ ] **Fix Missing H1 Tags on Core Pages**
|
|
- Affected Pages: `/`, `/pricing`, `/login`, `/signup`, `/faq`, `/privacy`, `/newsletter`, `/create`.
|
|
- **Issue:** These pages are Client Side Rendered (CSR) or lack a server-side `<h1>` tag in the initial HTML payload.
|
|
- **Action:** Add an `<h1>` (visible or `sr-only`) to the Server Component or ensure the Client Component renders it immediately.
|
|
|
|
- [ ] **Fix Low Word Count / Thin Content**
|
|
- Affected Pages: `/`, `/pricing`, `/login`, `/signup`, `/faq`, `/privacy`.
|
|
- **Issue:** Crawlers see 0 words on these pages because the content is rendered via JavaScript (`use client`).
|
|
- **Action:** Implement Server Side Rendering (SSR) for the main content or add `sr-only` semantic fallbacks for crawlers.
|
|
|
|
- [ ] **Expand Meta Descriptions**
|
|
- Affected Pages: `/`, `/pricing`, `/login`, `/signup`, `/newsletter`, `/privacy`, `/faq`, `/qr-code-erstellen`, Blog entries.
|
|
- **Issue:** Meta descriptions are too short (< 80 characters) or duplicates.
|
|
- **Action:** Update `generateMetadata` in `page.tsx` files to have descriptions between 110-160 characters.
|
|
|
|
- [ ] **Fix Page Titles**
|
|
- Affected Pages: `/qr-code-erstellen`, Blog posts.
|
|
- **Issue:** Titles are too long (> 60-70 characters) or have keyword stuffing/repetition.
|
|
- **Action:** Shorten titles to be concise and click-worthy, avoiding simple concatenation of keywords.
|
|
|
|
- [ ] **Fix Duplicate Content & Titles**
|
|
- Affected Pages: `/pricing`, `/newsletter`, `/login`, `/signup`.
|
|
- **Issue:** These pages likely share the same metadata or layout without unique content in the crawler's eyes.
|
|
- **Action:** Ensure each page has unique `title` and `description` in `generateMetadata`.
|
|
|
|
## 2. Technical SEO
|
|
|
|
- [ ] **Fix 307 Redirects to 301**
|
|
- **Issue:** Blog posts and legacy URLs are redirecting with status `307` (Temporary) instead of `301` (Permanent).
|
|
- **Affected Paths:**
|
|
- `/blog/vcard-qr-code-generator` -> `/create`
|
|
- `/blog/qr-code-restaurant-menu` -> `/dynamic-qr-code-generator`
|
|
- `/blog/bulk-qr-code-generator` -> `/bulk-qr-code-generator`
|
|
- **Action:** Locate these redirects (likely in `next.config.js` or `middleware.ts` or component logic) and change status to 301.
|
|
|
|
- [ ] **Fix Indexing of Protected/Private Pages**
|
|
- **Issue:** Ahrefs is flagging `/pricing` as "Indexable" but likely encountering issues. Verify if `/pricing` should be indexed.
|
|
- **Action:** Ensure public pages like Pricing are NOT in `(app)` group which has `noindex` in layout, or override the `robots` meta in `pricing/page.tsx`.
|
|
|
|
- [ ] **Fix "No Outgoing Links"**
|
|
- **Issue:** Crawlers see pages as dead ends because links are injected via JS.
|
|
- **Action:** Ensure standard `<a>` or `Link` tags are present in the initial HTML.
|
|
|
|
## 3. Link Profile
|
|
|
|
- [ ] **Improve Internal Link Texts**
|
|
- **Issue:** "Click here" or full URL used as anchor text.
|
|
- **Action:** Use descriptive keywords for links (e.g., "See our pricing" instead of "Click here").
|
|
|
|
- [ ] **Fix Alternate Links (hreflang)**
|
|
- **Issue:** Mismatch in `hreflang` or missing self-referencing canonicals.
|
|
- **Action:** Verify `alternates` configuration in `layout.tsx` or `page.tsx` matches the actual URL structure.
|
|
|
|
## 4. Performance & Images
|
|
|
|
- [ ] **Optimize Large Images**
|
|
- **Files:** `/blog/1-boy.png`, `/blog/2-body.png` (~4MB each).
|
|
- **Action:** Convert to WebP/AVIF and resize to < 500KB.
|
|
|
|
- [ ] **Improve Page Speed**
|
|
- **Issue:** Response time for `/qr-code-erstellen` is slow.
|
|
- **Action:** Check for expensive server-side operations or optimize database queries.
|