# Blog Post Improvement Process

**Last Updated:** 2026-04-01

Complete manual-focused workflow for improving blog posts one-by-one with deep data analysis, SERP research, and human-first content creation.

**Cross-surface baseline:** For the **Phase 0** expectation (GSC + GA4 + research before large rewrites) on any live URL, see [PAGE_IMPROVEMENT_DATA_PLAYBOOK.md](../PAGE_IMPROVEMENT_DATA_PLAYBOOK.md).

**Quick flow:** See [CONTENT_OPTIMIZATION_WORKFLOW.md](CONTENT_OPTIMIZATION_WORKFLOW.md) for the streamlined entry point. Use `run-post-improvement-pipeline.php` for Phase 1 data collection (mirrors new-post **parallel SISTRIX batch** after keywords + GA4/GSC; `--dry-run` shows DAG).

**Keyword refresh:** When re-scoping topics or after GSC/SISTRIX drift, follow [KEYWORD_RESEARCH_WORKFLOW.md](KEYWORD_RESEARCH_WORKFLOW.md) (derive-keywords, `KEYWORD_DECISION.md`, outline evidence).

## Overview

This process establishes a comprehensive, manual-focused approach to improving blog posts. Each post is treated as a new creation from scratch, leveraging all available data sources (GA4, GSC, SISTRIX) and deep SERP analysis to create optimized, human-first content.

**AI Content Avoidance:** To ensure natural, human-first content without AI tells, follow [AI_CONTENT_AVOIDANCE_GUIDE.md](../AI_CONTENT_AVOIDANCE_GUIDE.md) throughout content creation.

**New Post Creation:** For creating brand new posts from topic/keyword gaps (vs improving existing posts), see [New Post Creation](#new-post-creation) below. New posts use author "Hady" and follow a scaffold → pipeline → content → image → linking workflow.

**Section Depth (No Thin Sections):** Every H2 section must provide substantive value. No placeholder or "half-assed" sections. See [CONTENT_DEPTH_GUIDELINES.md](CONTENT_DEPTH_GUIDELINES.md) "Section Depth Standards" – each section needs 2+ paragraphs, or 1 paragraph + structured content (list/table), with practical examples where relevant.

## Core Principles

1. **Manual-First Approach:** All content creation is manual, focused, and human-first
2. **Data-Driven Decisions:** Leverage all available data (GA4, GSC, SISTRIX) for informed decisions
3. **SERP Research:** Deep analysis of top ranking pages informs content strategy
4. **New From Scratch:** Treat each post as a new creation, not building around existing content
5. **Preserve Value:** Keep valuable elements (embeds, calculators, videos) but reposition as needed
6. **Natural Integration:** Ordio mentions and internal links must be natural and contextual
7. **Quality Over Speed:** Focus on perfect output, not rushed automation
8. **Comprehensive Coverage:** Ensure all aspects are covered (SEO, GEO, AEO, user value)
9. **Section Depth:** No thin or half-assed sections—each H2 must deliver substantive value (2+ paragraphs or 1 paragraph + structured content)

## Data Flow

**Pipeline order (run-new-post-pipeline.php):** SISTRIX Keywords → PAA Questions → **SERP Features** → **FAQ Research** (SERP before FAQ so faq-research merges PAA from serp-features) → Competition Levels → Search Intent → Competitor Analysis → Competitor Depth → Firecrawl Validation → SERP Skeleton → Content Depth Report → Pre-Content Checklist.

**PAA source hierarchy:** `paa-questions-manual.json` (override) > `serp-features.json` > `paa-questions.json` > SISTRIX. collect-faq-research-data merges into `faq-research.json`. Downstream scripts use: manual > faq-research > paa-questions.

**Script → Output → Consumer:** See [CONTENT_CREATION_WORKFLOW_2026.md](CONTENT_CREATION_WORKFLOW_2026.md) for the full mermaid diagram. Key path: competitive-depth-analysis.md → CONTENT_OUTLINE.md (manual) → generate-section-briefs → section-briefs.md → content creation.

**Keyword selection order (new vs live URLs):** Scaffold primary → `collect-post-keywords-sistrix.php --primary-only` → merge secondaries from ideas + metrics → finalize `target-keywords.json` → full pipeline → `CONTENT_OUTLINE.md` with per-H2 **Evidence**. See [KEYWORD_RESEARCH_WORKFLOW.md](KEYWORD_RESEARCH_WORKFLOW.md). Live URLs: `derive-target-keywords.php` from GSC; optional `--from-sistrix` when GSC is missing.

## Full Rework vs Patchwork (Decision Criteria)

**Before starting:** Determine whether full rework is mandatory or patchwork is acceptable.

| Condition | Action |
|-----------|--------|
| Quality Score \< 60 OR Word Count \< 80% of target | **Full rework mandatory** |
| SEO Score \< 50 | **Full rework mandatory** |
| No SERP_ANALYSIS.md exists | **Full rework mandatory** (analysis required first) |
| User says "improve", "rework", "do post X" for underperforming post | **Full rework mandatory** |
| Content disorganized or flat (many H2s, 0 H3s for long posts) | **Consider H3s** where sections benefit; H2+paragraphs is valid. Don't force. See [BLOG_CONTENT_RESTRUCTURING_GUIDE.md](BLOG_CONTENT_RESTRUCTURING_GUIDE.md) |
| User says "fix links" or "add excerpt" | Patchwork acceptable |

**When patchwork is acceptable:** Use [PATCHWORK_REWORK_CHECKLIST.md](PATCHWORK_REWORK_CHECKLIST.md) for targeted fixes (content.text, meta, tool links, internal_links).

**When full rework is mandatory:** Do not patch. Complete Phases 1–3 (data, analysis, SERP research + outline), then create content from scratch. See [FULL_REWORK_DECISION_GUIDE.md](FULL_REWORK_DECISION_GUIDE.md).

**Phase Gate:** Phase 4 (Content Creation) cannot begin until `validate-improvement-readiness.php` passes. See Phase Gates section below.

## New Post Creation

For creating **brand new posts** from topic/keyword gaps (no existing post to improve):

1. **Scaffold** – Create post JSON, docs dir, target-keywords.json (author: Hady)
   ```bash
   php v2/scripts/blog/create-new-blog-post.php --topic="Personalkosten Gastronomie" --category=lexikon
   ```

1b. **Keywords (before full pipeline)** – Copy [KEYWORD_DECISION_TEMPLATE.md](posts/_templates/KEYWORD_DECISION_TEMPLATE.md) to `KEYWORD_DECISION.md`. Run SISTRIX for the primary only so ideas populate without wasting batch slots on guessed secondaries: `php v2/scripts/blog/collect-post-keywords-sistrix.php --post={slug} --category={category} --primary-only`. Merge secondaries from `related_keywords` / `propose-secondary-keywords.php`; update `target-keywords.json`; then re-run full keyword collection. See [KEYWORD_RESEARCH_WORKFLOW.md](KEYWORD_RESEARCH_WORKFLOW.md).

2. **Research** – Run new-post pipeline (no GA4/GSC; uses SISTRIX + keyword). Pipeline now includes competition-levels and search-intent; collects 25 related keywords, 25 PAA questions, 8 competitor keywords, top 15 competitor URLs. See [SISTRIX_COLLECTION_IMPROVEMENTS_2026-02.md](SISTRIX_COLLECTION_IMPROVEMENTS_2026-02.md).
   ```bash
   php v2/scripts/blog/run-new-post-pipeline.php --post={slug} --category={category}
   ```

3. **Content** – Follow sub-steps below. **Phase Gate:** Do not edit `content.html` until `validate-improvement-readiness.php --new-post` and `validate-content-outline-quality.php` both pass.

   - **3a. Review data/competitive-depth-analysis.md** – Set word count target from recommended (suggested: 100%, minimum 90% for validation). For lexikon main topics without competitive-depth: target 2,500–4,000+ words. See [CONTENT_QUALITY_INDEX.md](CONTENT_QUALITY_INDEX.md) Minimum vs Suggested.
   - **3b. Complete SERP_ANALYSIS.md** – Pipeline auto-remediates sparse top 7. If re-running: `validate-blog-competitor-data-completeness.php --post={slug} --category={category} --top=7 --remediate`. Then 30 min browser review per [SERP_REVIEW_CHECKLIST.md](posts/_templates/SERP_REVIEW_CHECKLIST.md). Fill Featured Snippet, PAA, Ranking Factors, Recommendations (no placeholders).
   - **3c. Create CONTENT_OUTLINE.md** – Use [posts/_templates/CONTENT_OUTLINE.md](posts/_templates/CONTENT_OUTLINE.md). Skyscraper: cover top 10 competitors + gaps + better format. 8–12 H2s; target from competitive-depth. **Each H2** must have a full section brief (**Angle**, **Target words**, **Key points**, **Formats**, **Planned H3s** or `—`, links, **Avoid**)—not only a numbered H2 list. `generate-section-briefs.php` supplements this; it does not replace editorial planning.
   - **3c.1. Run check-outline-h2-overlap.php** – Merge or rephrase overlapping H2s before content creation.
   - **3d. Validate** – Run both scripts; both must pass before content:
     ```bash
     php v2/scripts/blog/validate-improvement-readiness.php --post={slug} --category={category} --new-post
     php v2/scripts/blog/validate-content-outline-quality.php --post={slug} --category={category}
     ```
   - **3e. Write content** – From outline; 2+ paragraphs or 1 paragraph + list/table per H2. Per [CONTENT_DEPTH_GUIDELINES.md](CONTENT_DEPTH_GUIDELINES.md). Reference `keywords-sistrix.json` for primary + related keywords; integrate naturally. **Apply content via `update-post-content.php`; do not edit JSON directly.** See [BLOG_CONTENT_EDIT_WORKFLOW.md](BLOG_CONTENT_EDIT_WORKFLOW.md).
   - **3e.1. Per [ANTI_FLUFF_CHECKLIST.md](ANTI_FLUFF_CHECKLIST.md)** – Avoid filler; cut micro-fluff and redundant paragraphs.
   - **3f. FAQs** – `collect-faq-research-data.php` → `generate-faq-questions.php` → `generate-faq-answers-optimized.php` → manual review → `add-faqs-to-post.php`. **Deduplication:** generate-faq-questions uses stricter similarity (0.55) for definition/comparison types to reduce semantic duplicates. Manual review: remove remaining duplicates; keep one per semantic cluster. Ensure FAQs do not duplicate H2 questions. Run `check-h2-faq-overlap.php` before finalizing. **`add-faqs-to-post.php` sorts FAQs by logical flow by default** (definition first, then how-to, etc.). For existing posts with unordered FAQs, run `reorder-faqs-by-logical-flow.php --post=slug --category=category --write`.

4. **Image** – Generate featured image via AI
   ```bash
   python3 v2/scripts/blog/generate-blog-featured-image.py --post={slug} --category={category}
   ```
   By default: creates PNG, optimizes to WebP (srcset), and updates post JSON. Use `--skip-optimize` for PNG only.

   **Style:** No text in images; conceptual over literal. Create `docs/content/blog/posts/{category}/{slug}/IMAGE_PROMPT.md` for custom prompts. See [BLOG_FEATURED_IMAGE_STYLE_GUIDE.md](BLOG_FEATURED_IMAGE_STYLE_GUIDE.md).

   For existing posts: `php v2/scripts/blog/audit-blog-featured-images.php` lists posts needing optimization.


5. **Linking** – Suggest related posts, add to carousels
   ```bash
   php v2/scripts/blog/suggest-related-posts.php --post={slug} --category={category} --write
   php v2/scripts/blog/add-new-post-to-related-carousels.php --post={slug} --category={category} --write
   ```

6. **Lead capture copy** – Add custom popup copy so the lead capture form shows topic-relevant headline/description. Run generator and add to config (or use `--write` to insert automatically):
   ```bash
   php v2/scripts/blog/generate-lead-capture-copy.php --post={slug} --category={category} [--write]
   ```
   Without `--write`: outputs PHP block to add to `v2/data/lead_capture_copy.php`. With `--write`: inserts automatically. See [docs/systems/lead-capture/COPY_MANAGEMENT.md](../../systems/lead-capture/COPY_MANAGEMENT.md).

7. **Validate** – Run validation before publishing. **Mandatory sequence:** compare-content-to-competitors (address gaps) → validate-section-depth → validate-content-completeness → validate-faq-quality → validate-new-post. Do not publish until all pass. FAQ count target: 10–15 for lexikon/ratgeber; validate-faq-quality fails if &lt; 10 (override with `--min-faqs=6` for narrow topics). See [CONTENT_DEPTH_VALIDATION_GUIDE.md](CONTENT_DEPTH_VALIDATION_GUIDE.md) for fixing failures. If content was applied via external means (not `update-post-content.php`), run `sync-post-content-text.php` first.
   ```bash
   php v2/scripts/blog/sync-post-content-text.php --post={slug} --category={category}  # If content edited outside update-post-content.php
   php v2/scripts/blog/compare-content-to-competitors.php --post={slug} --category={category}  # Mandatory before finalizing; address gaps
   php v2/scripts/blog/validate-section-depth.php --post={slug} --category={category}
   php v2/scripts/blog/validate-content-completeness.php --post={slug} --category={category}
   php v2/scripts/blog/validate-faq-quality.php --post={slug} --category={category}
   php v2/scripts/blog/validate-new-post.php --post={slug} --category={category}
   ```
   **Note:** `validate-new-post.php` warns if lead capture copy is missing.

**Reference:** `.cursor/rules/blog-new-post-creation.mdc`, [BLOG_FEATURED_IMAGE_STYLE_GUIDE.md](BLOG_FEATURED_IMAGE_STYLE_GUIDE.md), [BLOG_FEATURED_IMAGE_GENERATION.md](BLOG_FEATURED_IMAGE_GENERATION.md)

**Supplemental FAQs:** Add `--collect-supplemental-faqs` to the pipeline when PAA all map to H2s or FAQ count is expected to be low. Runs `collect-supplemental-faq-questions.php` after competitor analysis. See [FAQ_EXPANSION_GUIDE.md](FAQ_EXPANSION_GUIDE.md).

**Pipeline edge cases:**

- **PAA step fails (HTTP 0 or no PAA from SISTRIX):** The PAA collector retries 3× (2s, 4s, 8s) for HTTP 0, 429, 5xx. If it still fails: run `collect-post-paa-questions.php --post=X --category=Y` again; retries may succeed. Or use `--skip-paa` when SISTRIX credits low. **Do NOT use `--allow-paa-failure` preemptively** – run the pipeline without it so failures surface. Use `--allow-paa-failure` only when PAA has already failed and you need to continue with manual fallback. Manual fallback: create `data/paa-questions.json` with format `{"primary_keyword":"X","questions":["Q1?","Q2?"],"total_questions":N}` or `data/paa-questions-manual.json` (same format; preferred when PAA fails completely – e.g. Work-Life-Balance HTTP 0 timeout). Use SERP_ANALYSIS.md and manual Google search to collect PAA questions. Downstream steps read from paa-questions-manual.json first, then paa-questions.json.
- **PAA off-topic:** When SISTRIX returns unrelated questions (e.g. Gen Z for Generation X keyword, lavita/filesharing/urheberrecht for Abmahnung Arbeitsrecht), create `data/paa-questions-manual.json` with SERP_ANALYSIS curated list. Update `faq-research.json` paa_questions to use manual list so generate-faq-questions.php picks them up. See [PAA_TOPIC_OVERRIDE_GUIDE.md](PAA_TOPIC_OVERRIDE_GUIDE.md).
- **Demographic/HR topics (e.g. Generation X, Work-Life-Balance, New Work):** Pillar mapping typically both `/insights/dienstplan/` and `/insights/zeiterfassung/` per TIER1_PILLAR_MAPPING.md. Add to related_posts as pillar entries. For New Work / flexible Arbeitszeit: add tool link `/tools/arbeitstage-rechner/`; industry links Industrie (`/branchen/handwerk-industrie`), Kultur (`/branchen/freizeit-kultur`) when discussing principles or Branchenvielfalt.

## Phase Gates

**Principle:** Phase 4 (Content Creation) cannot begin until Phases 1–3 are complete and documented.

**Gate checklist (all must pass before editing `content.html`):**

- **Phase 1 (Data):** Backup, GA4, GSC, derive-keywords, SISTRIX, FAQ, SERP features
- **Phase 2 (Analysis):** POST_ANALYSIS, SEO_REPORT, INTERNAL_LINKS, IMPROVEMENT_PLAN read
- **Phase 3 (Research):** SERP_ANALYSIS.md exists, CONTENT_OUTLINE.md exists

**Validation:** Run `php v2/scripts/blog/validate-improvement-readiness.php --post={slug} --category={category}`. Exit 0 = ready for Phase 4; exit 1 = complete missing steps first.

### Phase Gate Thresholds (2026-02)

| Check | Threshold | Configurable |
|-------|-----------|--------------|
| Outline target vs competitive-depth | ≥90% of recommended | `validate-content-outline-quality.php --target-ratio=0.8` for legacy |
| Unique Value (lexikon/ratgeber) | ≥1 item checked | `--skip-unique-value` for narrow topics |
| H2 count | ≥8 (6 for inside-ordio) | — |
| SERP_ANALYSIS.md | No unchecked placeholders | — |

### Suggested Targets

**Aim for suggested; minimum is fallback.** See [CONTENT_QUALITY_INDEX.md](CONTENT_QUALITY_INDEX.md).

- **Outline target:** 100% of competitive-depth recommended (suggested). 90% minimum for validation.
- **Word count:** 100% of outline target (suggested). Use `--min-word-ratio=0.9` in validate-content-completeness and validate-new-post for new-post workflow.

**Pre-Content Checklist:** Generate `php v2/scripts/blog/generate-pre-content-checklist.php --post={slug} --category={category}` (add `--new-post` for new posts). Complete all items before Phase 4. Output: `docs/content/blog/posts/{category}/{slug}/PRE_CONTENT_CHECKLIST.md`.

## Complete Workflow

### Phase 1: Preparation & Data Collection

#### Step 1.1: Identify Post for Improvement

**Action:** User provides post slug and category

**Files to Review:**

- `v2/data/blog/posts/{category}/{slug}.json` - Current post content
- `docs/content/blog/posts/{category}/{slug}/` - Existing documentation (if any)

**Checklist:**

- [ ] Post JSON file exists and is valid
- [ ] Current content reviewed
- [ ] Existing documentation reviewed (if present)
- [ ] Post URL confirmed: `/insights/{category}/{slug}/`

#### Step 1.2: Collect All Available Data

**Purpose:** Gather comprehensive data from all sources to inform improvement decisions

**1.2.1: GA4 Performance Data**

```bash
php v2/scripts/blog/collect-post-performance-ga4.php --post={slug} --category={category}
```

**Data Collected:**

- Page views (last 90 days, last year)
- Sessions (last 90 days, last year)
- Bounce rate (last 90 days, last year)
- Average engagement time (last 90 days, last year)

**Output:** `docs/content/blog/posts/{category}/{slug}/data/performance-ga4.json`

**1.2.2: GSC Search Performance Data**

```bash
php v2/scripts/blog/collect-post-performance-gsc.php --post={slug} --category={category}
```

**Data Collected:**

- Clicks (last 90 days, last year)
- Impressions (last 90 days, last year)
- CTR (last 90 days, last year)
- Average position (last 90 days, last year)
- Top queries (last 90 days)

**Output:** `docs/content/blog/posts/{category}/{slug}/data/performance-gsc.json`

**1.2.2b: Keyword Derivation (CRITICAL)**

**Purpose:** GSC is the source of truth for what the page actually ranks for. Wrong `primary_keyword` in post JSON causes all downstream data (SISTRIX, FAQ, SERP features) to be irrelevant.

```bash
php v2/scripts/blog/derive-target-keywords.php --post={slug} --category={category} [--update-post]
```

**Logic:** Uses GSC top queries; prefers query that matches topic; fallback slug-derived; avoids generic clusters.

**Output:** `docs/content/blog/posts/{category}/{slug}/data/target-keywords.json`

**Action:** Verify `target-keywords.json`; override if needed.

**`--update-post`:** When set, writes `primary_keyword` and `secondary_keywords` to the post JSON file. Recommended for pipeline runs so post metadata stays in sync. When omitted, collectors read from `target-keywords.json` directly (post JSON unchanged).

**1.2.3: SISTRIX Keyword Data**

```bash
php v2/scripts/blog/collect-post-keywords-sistrix.php --post={slug} --category={category}
```

**Data Collected:**

- Keyword search volume
- Keyword difficulty/competition
- Estimated clicks
- Desktop/mobile distribution
- CPC (if available)

**Output:** `docs/content/blog/posts/{category}/{slug}/data/keywords-sistrix.json`

**Credit Usage:** ~5 credits per keyword (batch mode)

**1.2.4: SISTRIX SERP Features**

```bash
php v2/scripts/blog/collect-post-serp-features.php --post={slug} --category={category}
```

**Data Collected:**

- Featured snippet opportunities
- Knowledge panel eligibility
- People Also Ask (PAA) questions
- Related searches
- SERP feature competition

**Output:** `docs/content/blog/posts/{category}/{slug}/data/serp-features.json`

**Credit Usage:** 1 credit per keyword

**1.2.5: Search Intent Classification**

```bash
php v2/scripts/blog/collect-post-search-intent.php --post={slug} --category={category}
```

**Data Collected:**

- Search intent classification (informational, navigational, transactional)
- Intent alignment with current content

**Output:** `docs/content/blog/posts/{category}/{slug}/data/search-intent.json`

**Credit Usage:** 1 credit per keyword

**1.2.6: Competition Levels**

```bash
php v2/scripts/blog/collect-post-competition-levels.php --post={slug} --category={category}
```

**Data Collected:**

- Competition level for each keyword
- Quick-win opportunities (low competition)

**Output:** Updates `keywords-sistrix.json` with `competition_level` field

**Credit Usage:** 1 credit per keyword (batch mode)

**1.2.7: Validate Data Collection**

```bash
php v2/scripts/blog/validate-data-collection.php --post={slug} --category={category}
```

**Checks:**

- All data files exist
- JSON files are valid
- Data freshness (< 7 days for GA4/GSC, < 30 days for SISTRIX)

### Phase 2: Analysis & Research

#### Step 2.1: Analyze Current Performance

**2.1.1: Review GA4 Data**

**Key Metrics to Analyze:**

- Page views trend (increasing/decreasing)
- Bounce rate (target: < 60%)
- Average engagement time (target: > 2 minutes)
- Session quality indicators

**Action Items:**

- Identify underperforming metrics
- Note traffic patterns
- Identify content gaps based on engagement

**2.1.2: Review GSC Data**

**Key Metrics to Analyze:**

- Top queries and their performance
- Average position (target: < 10 for primary keywords)
- CTR (target: > 3% for positions 1-3)
- Impressions vs clicks ratio

**Action Items:**

- Identify high-impression, low-click queries (optimization opportunities)
- Note queries with declining positions
- Identify missing queries (content gaps)

**2.1.3: Review SISTRIX Keyword Data**

**Key Metrics to Analyze:**

- Primary keyword performance
- Secondary keyword opportunities
- Competition levels (prioritize low competition)
- Search volume trends

**Action Items:**

- Identify high-volume, low-competition keywords
- Note keyword gaps
- Prioritize optimization opportunities

#### Step 2.2: SERP Analysis

**Purpose:** Deep analysis of top-ranking pages to understand what works

**2.2.1: Automated Competitor Extraction (Run First)**

**Before manual research:**

1. Run `php v2/scripts/blog/collect-post-competitor-analysis.php --post={slug} --category={category}` (or use pipeline; outputs `data/competitor-analysis.json`)
2. Review `data/competitor-analysis.json` – headings, topics, word counts of top 10
3. Run `php v2/scripts/blog/generate-serp-analysis-skeleton.php --post={slug} --category={category}` to pre-fill SERP_ANALYSIS.md

Automated extraction supplements (does not replace) manual browser review.

**2.2.2: Manual SERP Research**

**Tools:**

- Browser (Chrome/Firefox) with incognito mode
- Google Search (use target keywords)
- SERP analysis tools (optional)

**Process:**

1. **Search Primary Keyword**

   - Search primary keyword in Google (incognito mode)
   - Screenshot top 10 results
   - Note SERP features (featured snippets, PAA, knowledge panels)

2. **Analyze Top 10 Results**

   For each top 10 result, analyze:

   - **Title:** What makes it compelling?
   - **Meta Description:** What value proposition is highlighted?
   - **URL Structure:** How is it optimized?
   - **Content Structure:** What headings are used?
   - **Content Length:** How comprehensive is it?
   - **Internal Linking:** How many internal links?
   - **FAQs:** Are FAQs present? How many?
   - **Visual Elements:** Images, videos, calculators?
   - **Schema Markup:** What schema types are used?

3. **Content Gap Analysis**

   Identify:

   - Topics covered by competitors but not in current post
   - Topics covered better by competitors
   - Unique value propositions competitors use
   - Content depth differences
   - Structural differences

4. **Featured Snippet Analysis**

   For featured snippet opportunities:

   - What format is used? (paragraph, list, table)
   - What length? (typically 40-60 words)
   - What structure? (direct answer first)
   - What keywords are targeted?

5. **People Also Ask Analysis**

   Review PAA questions:

   - Which questions are answered in current post?
   - Which questions are missing?
   - How are competitors answering these?
   - What format do answers use?

**Documentation:** Create or update `SERP_ANALYSIS.md` in post documentation folder. Complete manual sections per [SERP_REVIEW_CHECKLIST.md](posts/_templates/SERP_REVIEW_CHECKLIST.md).

**2.2.3: Skyscraper Technique**

**Purpose:** Create content that exceeds top competitors in coverage, structure, and value.

**Process:**

1. **Document what top 10 cover** – From SERP analysis, list all topics, headings, and FAQs from top 10 results.
2. **Create outline that covers everything + more** – Build outline that includes all competitor topics, plus gaps they miss, plus better format (clearer H2/H3, better grouping).
3. **Write to exceed** – Each section should be more comprehensive, better structured, or more actionable than competitors. Do not patch incrementally—create the best piece from scratch.

**2.2.4: Competitor Content Extraction**

**Automated:** `competitor-analysis.json` provides headings, word count, FAQs (JSON-LD + microdata extraction). **Manual:** Verify and supplement via browser – visit top 5–10 ranking pages, extract meta, internal links, schema, visual elements. **MCP (optional):** Use Serper for real PAA; Fetch for schema validation; Firecrawl when automated data is sparse. Document findings in `SERP_ANALYSIS.md`. See [SERP_MCP_IMPROVEMENT_GUIDE.md](SERP_MCP_IMPROVEMENT_GUIDE.md).

**2.2.5: Content Gap Identification**

**Create Gap Analysis:**

- **Missing Topics:** Topics competitors cover but current post doesn't
- **Weak Topics:** Topics covered but not as comprehensively
- **Missing Formats:** Formats competitors use (tables, lists, calculators)
- **Missing FAQs:** Questions competitors answer but current post doesn't
- **Missing Internal Links:** Internal linking opportunities competitors use

#### Step 2.3: Generate Analysis Documentation

**Run Analysis Scripts:**

```bash
# Content analysis
php v2/scripts/blog/analyze-post-content.php --post={slug} --category={category}

# SEO analysis
php v2/scripts/blog/analyze-post-seo.php --post={slug} --category={category}

# Internal linking analysis
php v2/scripts/blog/analyze-post-links.php --post={slug} --category={category}
```

**Generate Documentation:**

```bash
php v2/scripts/blog/generate-post-documentation.php --post={slug} --category={category}
```

**Review Generated Documentation:**

- `POST_ANALYSIS.md` - Content analysis
- `SEO_REPORT.md` - SEO performance
- `INTERNAL_LINKS.md` - Internal linking analysis

### Phase 3: Content Strategy & Planning

#### Step 3.1: Define Content Strategy

**Based on Analysis, Define:**

1. **Primary Keyword Strategy**

   - Primary keyword (from SISTRIX data)
   - Secondary keywords (high-volume, low-competition)
   - Long-tail keywords (from GSC queries)

2. **Search Intent Alignment**

   - Current intent classification (from SISTRIX)
   - Required content structure for intent
   - Content depth requirements

3. **Content Structure Plan**

   - Main sections (H2 headings)
   - Subsections (H3 headings)
   - FAQ questions (from PAA and GSC queries)
   - Visual elements needed

4. **Competitive Positioning**
   - How to differentiate from competitors
   - Unique value propositions
   - Content depth targets (deeper than competitors)

#### Step 3.2: Create Content Outline

**Create Detailed Outline:**

1. **Introduction**

   - Hook (first sentence)
   - Context (what is the topic)
   - Value proposition (what reader will learn)

2. **Main Sections (H2)**

   - Section 1: [Topic] (with subsections)
   - Section 2: [Topic] (with subsections)
   - Section 3: [Topic] (with subsections)
   - ... (as needed)

   **Heading Format:** Use question-style H2s for Lexikon/Ratgeber where PAA/intent match (e.g. "Was ist ein Midijob?", "Ab wann gilt ein Midijob?"). Avoid generic headers like "Definition von X". See [HEADING_HIERARCHY_GUIDE.md](HEADING_HIERARCHY_GUIDE.md) "Question Format for Lexikon & Ratgeber".

   **Main Topic Depth:** For main topics (Midijob, Minijob, Arbeitsbescheinigung, etc.) target 2,500–4,000+ words and 8–12 H2 sections. See [CONTENT_DEPTH_GUIDELINES.md](CONTENT_DEPTH_GUIDELINES.md) "Main Topic Classification".

3. **FAQs**

   - List of 10-15 FAQ questions (from PAA, GSC queries)
   - Prioritize high-volume queries

4. **Conclusion**
   - Summary of key points
   - Next steps or CTA (if appropriate)

**Requirements:**

- Definition must appear within first 20% of content
- Logical flow: Intro → Definition → Explanation → Examples → Advanced
- All FAQs in `faqs` array (NOT in content HTML)

### Phase 4: Content Creation (New From Scratch)

**Full Rework Permission:** Content can be completely rewritten. Headers, structure, FAQs, images, internal links—all reconsidered. Keep only calculators, videos, essential images. Do not patch incrementally; create the best piece from scratch.

**Prohibited:** Incremental patching; adding content until word count without outline-driven purpose. Use outline-first, section-by-section comprehensive drafting per [CONTENT_CREATION_WORKFLOW_2026.md](CONTENT_CREATION_WORKFLOW_2026.md).

#### Step 4.1: Preserve Valuable Elements

**Before Creating New Content:**

1. **Identify Valuable Elements in Current Post**

   - Calculators (Alpine.js components)
   - Videos (YouTube embeds)
   - Images (with alt text)
   - Tables (data tables)
   - Interactive elements

2. **Document Element Details**

   - Element type
   - Current position
   - Content context
   - Proposed new position (if different)

3. **Extract Elements**
   - Copy HTML for calculators
   - Copy embed codes for videos
   - Note image paths and alt text
   - Copy table HTML

**Note:** These elements will be reintegrated into new content at appropriate positions.

#### Step 4.2: Create New Content Structure

**Approach:** Treat as completely new post, not building around existing content

**4.2.0: Generate Section Briefs (before writing)**

```bash
php v2/scripts/blog/generate-section-briefs.php --post={slug} --category={category}
```

Merge `data/section-briefs.md` into CONTENT_OUTLINE.md where useful (key points, PAA). The outline should **already** contain per-H2 **Formats** and **Planned H3s** from the template; section-briefs output may be noisy—curate, do not overwrite a good outline with scraped fluff.

**4.2.1: Write Section-by-Section**

Write each H2 to full depth from outline + section brief before moving on. Do not add filler to reach word count—cover all outline key points. Ensure at least one Unique Value item from CONTENT_OUTLINE (original data, expert insights, better format, freshness, use case) is present in content. See [CONTENT_CREATION_WORKFLOW_2026.md](CONTENT_CREATION_WORKFLOW_2026.md).

**4.2.2: Write Introduction**

**Requirements:**

- Hook in first sentence (capture attention)
- Primary keyword in first paragraph
- Context and value proposition
- Natural, conversational tone (du tone)
- 2-3 paragraphs maximum

**Best Practices:**

- Avoid "Furthermore", "Moreover" (AI tells). **See:** [AI_CONTENT_AVOIDANCE_GUIDE.md](../AI_CONTENT_AVOIDANCE_GUIDE.md) for comprehensive patterns to avoid
- Use specific examples
- Vary sentence length
- Natural transitions

**4.2.3: Write Main Content**

**For Each Section:**

1. **Section Introduction (H2)**

   - Prefer question format when PAA/GSC query matches (e.g. "Was ist ein Midijob?", "Wie melde ich einen Midijob an?")
   - Avoid generic headers ("Definition von X", "Vor- und Nachteile")
   - Primary or secondary keyword in heading (natural)
   - Brief introduction paragraph
   - When the section uses H3s, an optional intro paragraph between H2 and first H3 can smooth the transition. Use only when content benefits; avoid cheesy transitions.

2. **Subsections (H3)**

   - **Long posts (>2,500 words):** Add H3s only where they improve flow and scannability. H2+paragraphs is valid for many sections. See [CONTENT_WRITING_GUIDELINES.md](CONTENT_WRITING_GUIDELINES.md) and [TOC_BEST_PRACTICES.md](TOC_BEST_PRACTICES.md).
   - H3s need not follow immediately after H2; intro paragraph(s) between H2 and first H3 are valid when they improve flow.
   - Logical flow within section
   - Natural keyword integration
   - Specific examples and data points
   - Natural internal linking opportunities

3. **Content Quality Standards**

   - Paragraphs: 2-3 sentences max
   - One main idea per paragraph
   - Natural transitions between paragraphs
   - Varied sentence structures
   - Specific examples (not generic)
   - Active voice preferred

4. **Definition Placement**

   - Main definition within first 20% of content
   - Clear, concise definition
   - Natural integration (not forced)

5. **Visual Elements Integration**
   - Reintegrate preserved elements at appropriate positions
   - Ensure natural flow around elements
   - Update surrounding text if needed

**4.2.4: Write Conclusion**

**Requirements:**

- Summary of key points
- Natural transition from main content
- Next steps or CTA (if appropriate)
- No "Fazit" heading (conclusion is implied)

**Best Practices:**

- Avoid "In conclusion" (AI tell)
- Natural summary
- Actionable next steps

#### Step 4.3: Create FAQs

**4.3.1: Generate FAQ Questions**

**Sources (Priority Order):**

1. People Also Ask questions (from SISTRIX SERP features)
2. Top GSC queries (sorted by clicks, then impressions)
3. Related keywords (from SISTRIX)
4. Standard questions based on topic

**Process:**

```bash
# Collect FAQ research data
php v2/scripts/blog/collect-faq-research-data.php --post={slug} --category={category}

# Generate FAQ questions
php v2/scripts/blog/generate-faq-questions.php --post={slug} --category={category}
```

**Requirements:**

- 10-15 FAQs optimal
- Questions must be unique (no duplicates)
- Logical ordering (definitions first, then how-to, etc.)
- High-volume queries prioritized

**4.3.2: Generate FAQ Answers**

**Process:**

```bash
php v2/scripts/blog/generate-faq-answers-optimized.php --post={slug} --category={category} --use-ai
```

**Required:** Use `--use-ai` for production. Template mode (no `--use-ai`) produces placeholders (~20–40 words) and will fail validation. Manual alternative: create `data/faq-answers-optimized.json` with 40–80 word answers.

**Requirements:**

- Answer length: 40-80 words
- Primary keyword in 3-5 FAQs (natural)
- Direct answer first sentence
- Natural du tone
- No template language
- 2-3 natural internal links total across all FAQs

**4.3.3: Manual Review of FAQs**

**Review Checklist:**

- [ ] All FAQs relevant to post topic (topic relevance ≥ 0.3)
- [ ] No pattern violations (nonsensical cost/duration patterns)
- [ ] No duplicate questions (semantic similarity < 0.7)
- [ ] Logical ordering (definitions before how-to)
- [ ] Answers 40-80 words
- [ ] Primary keyword in 3-5 FAQs
- [ ] Natural Ordio mentions (not forced)
- [ ] Natural internal links (2-3 total)

**Fix Quality Issues:**

```bash
php v2/scripts/blog/fix-faq-quality-issues.php --post={slug} --category={category} --backup
```

#### Step 4.3.4: Comprehensive FAQ Quality Review

**CRITICAL:** After FAQ expansion, conduct comprehensive quality review to ensure SEO optimization, keyword consistency, and content quality.

**4.3.4.1: Run Analysis Tools**

```bash
# SEO Analysis
php v2/scripts/blog/analyze-faqs-seo.php --post={slug} --category={category}

# Uniqueness Check
php v2/scripts/blog/check-faq-uniqueness.php --post={slug} --category={category}

# H2-FAQ Overlap (FAQs must not duplicate H2 questions)
php v2/scripts/blog/check-h2-faq-overlap.php --post={slug} --category={category}

# Improvement Suggestions
php v2/scripts/blog/suggest-faq-improvements.php --post={slug} --category={category}
```

**4.3.4.2: Keyword Consistency Check**

- [ ] Primary keyword matches across title, meta, content, and FAQs
- [ ] No keyword variants used inconsistently (e.g., "Zeiterfassung App" vs "Zeiterfassung per App")
- [ ] Primary keyword in 3-5 FAQs (natural integration)
- [ ] Related keywords integrated where relevant

**4.3.4.3: Quality Review Checklist**

Follow `docs/content/blog/FAQ_MANUAL_REVIEW_SEO_CHECKLIST.md`:

- [ ] No duplicate questions (semantic similarity < 0.7)
- [ ] No FAQ duplicates H2 questions (run `check-h2-faq-overlap.php`; similarity < 0.65)
- [ ] No repetitive answers (content similarity < 0.6)
- [ ] Top 10 GSC queries addressed
- [ ] Answers 40-80 words (optimal: 55-65 words)
- [ ] No template language ("Wichtig ist, dass...", "Für detaillierte Informationen...")
- [ ] Natural du tone (informal German)
- [ ] Clean HTML formatting
- [ ] Direct answer in first sentence

**4.3.4.4: Fix All Issues**

- Remove duplicates or merge with unique angles
- Rewrite repetitive answers with unique focus
- Remove template language, use natural specific language
- Optimize keyword integration (natural, not forced)
- Ensure natural flow and value
- Adjust answer lengths to 40-80 words

**4.3.4.5: Validate Changes**

```bash
# Re-run analysis to confirm fixes
php v2/scripts/blog/check-faq-uniqueness.php --post={slug} --category={category}
php v2/scripts/blog/check-h2-faq-overlap.php --post={slug} --category={category}
php v2/scripts/blog/analyze-faqs-seo.php --post={slug} --category={category}
```

**Success Criteria:**

- ✅ Keyword consistency achieved across all content
- ✅ No duplicate questions
- ✅ No repetitive answers
- ✅ All answers 40-80 words
- ✅ No template language
- ✅ Natural keyword integration

#### Step 4.4: Internal Linking Strategy

**4.4.1: Identify Linking Opportunities**

**Link Types:**

1. **Related Posts** - Topically related blog posts
2. **Pillar Pages** - Main topic pages
3. **Tools/Calculators** - Relevant calculation tools
4. **Templates** - Downloadable templates
5. **Product Pages** - Ordio product pages (when relevant)

**4.4.2: Create Natural Internal Links**

**Requirements:**

- 10-15 internal links per post
- Natural anchor text (not "click here")
- Contextual placement (within relevant content)
- Varied anchor text (no repetition)
- Links add value to reader

**Process:**

1. Review `INTERNAL_LINKS.md` for suggestions
2. Identify natural linking opportunities in content
3. Create links with natural anchor text
4. Ensure links flow naturally within sentences

**Example:**

✅ **GOOD:** "Für eine präzise Berechnung nutze unseren [Brutto-Netto-Rechner](/tools/brutto-netto-rechner)."

❌ **BAD:** "Klicke hier für unseren Brutto-Netto-Rechner."

**4.4.3: Validate Internal Links**

```bash
php v2/scripts/blog/validate-tier1-links.php --post={slug} --category={category}
```

**4.4.4: Pillar Page Integration**

**Purpose:** Ensure proper integration with pillar pages for content cluster structure and SEO benefits.

**Process:**

1. **Check Pillar Page Mapping**

   - Review `docs/content/blog/TIER1_PILLAR_MAPPING.md` to identify which pillar page(s) the post should link to
   - Pillar pages:
     - `/insights/dienstplan/` - Dienstplan pillar (Dienstplan cluster)
     - `/insights/zeiterfassung/` - Zeiterfassung pillar (Zeiterfassung cluster)

2. **Add Pillar Links to Internal Links**

   - Add pillar page link(s) to `internal_links` array in JSON file
   - Use appropriate anchor text (e.g., "digitale Zeiterfassung", "Dienstplan")
   - Set `target_type: "pillar-page"` and `priority: "critical"`
   - Add contextual link in content HTML where topic is naturally discussed

3. **Tool Linking Check**

   - If post discusses midijob, minijob, brutto-netto, urlaubsanspruch, arbeitslosengeld, arbeitstage, or similar topics, add 1 contextual link to the relevant tool
   - Use natural anchor text (e.g. "kostenlosen Midijob-Rechner", "Brutto-Netto-Rechner")
   - See `docs/content/blog/guides/INTERNAL_LINKING_GUIDE.md` (Blog-to-Tool Linking) and `docs/data/blog-tool-mapping.json`
   - Run `php v2/scripts/blog/audit-blog-tool-links.php` to find gaps

4. **Add Pillar Pages to Related Posts**

   - Add pillar page(s) to `related_posts` array at the beginning (top 3-5 positions)
   - Use `category: "pillar"` and `relationship_type: "pillar_page"`
   - Set high `similarity_score` (0.85-0.90) to ensure visibility
   - Include proper metadata:
     ```json
     {
         "slug": "dienstplan",
         "title": "Dienstplan 2026: Definition, Erstellung & Software - Ordio",
         "url": "/insights/dienstplan/",
         "category": "pillar",
         "similarity_score": 0.90,
         "relationship_type": "pillar_page"
     }
     ```

4. **Validation**

   - Verify pillar links are in `internal_links` array
   - Verify pillar pages are in `related_posts` array (top positions)
   - Verify contextual links exist in content HTML
   - Run validation script: `php v2/scripts/blog/validate-pillar-links.php --post={slug} --category={category}`

**Checklist:**

- [ ] Pillar page mapping checked
- [ ] Pillar link(s) added to `internal_links` array
- [ ] Contextual pillar link(s) added to content HTML
- [ ] Pillar page(s) added to `related_posts` array (top 3-5 positions)
- [ ] Validation script run and passing

**Reference:**

- [Pillar Page Integration Checklist](PILLAR_PAGE_INTEGRATION_CHECKLIST.md)
- [Internal Linking Guide](INTERNAL_LINKING_IMPROVEMENT_GUIDE.md)

### Phase 5: SEO/GEO/AEO Optimization

**Content creation integration:** During content creation, integrate AEO/GEO patterns: answer-first formatting for key sections; FAQ schema for PAA alignment; question-style headings where PAA exists; entity clarity (Probezeit, Kündigungsfrist, etc.). See [SEO_GEO_AEO_CHECKLIST.md](SEO_GEO_AEO_CHECKLIST.md) and [blog-content-creation-gate.mdc](.cursor/rules/blog-content-creation-gate.mdc).

#### Step 5.1: SEO Optimization

**5.1.1: Meta Tags**

**Title Tag:**

- Length: 50-60 characters
- Primary keyword near beginning
- End with " - Ordio"
- Unique for every page
- Compelling and click-worthy

**Meta Description:**

- Length: 150-160 characters
- Benefit-driven
- Includes primary keyword
- Includes CTA when appropriate
- Compelling and click-worthy

**5.1.2: Schema Markup**

**Required Schema:**

- `Article` schema (main content)
- `FAQPage` schema (if FAQs present)
- `BreadcrumbList` schema (navigation)

**Optional Schema:**

- `HowTo` schema (if step-by-step content)
- `VideoObject` schema (if videos present)
- `ImageObject` schema (for featured image)

**Validation:**

- Test with Google Rich Results Test
- Ensure all required fields present
- Validate JSON-LD syntax

**5.1.3: Keyword Optimization**

**Requirements:**

- Primary keyword in title, H1, first paragraph
- Secondary keywords naturally integrated
- Keyword density: 1-2% (natural)
- LSI keywords included
- Long-tail keywords from GSC queries

**5.1.4: Technical SEO**

**Checklist:**

- [ ] Valid HTML structure
- [ ] Proper heading hierarchy (H2 → H3)
- [ ] Alt text for all images
- [ ] Mobile-responsive
- [ ] Fast loading (< 3 seconds)
- [ ] Valid schema markup
- [ ] Canonical URL set correctly

#### Step 5.2: GEO Optimization (AI Search Engines)

**5.2.1: AI-Ready Content**

**Requirements:**

- Clear, structured content
- Direct answers to questions
- Comprehensive topic coverage
- Authoritative sources cited
- Clear value propositions

**5.2.2: Citation Format**

**Ensure:**

- Author attribution (if applicable)
- Publication date
- Source citations
- Clear entity mentions

**5.2.3: Structured Data**

**Use:**

- ArticleBody schema (full content)
- Speakable schema (for voice search)
- Author schema (if applicable)

#### Step 5.3: AEO Optimization (Answer Engine Optimization)

**5.3.1: Featured Snippet Optimization**

**Requirements:**

- Direct answer in first paragraph (40-60 words)
- Structured formats (lists, tables) when appropriate
- Clear, concise answers
- Target question-based queries

**5.3.2: People Also Ask Optimization**

**Requirements:**

- Answer all PAA questions in content or FAQs
- Direct, concise answers
- Natural keyword integration
- FAQ schema markup

**5.3.3: E-E-A-T Signals**

**Experience:**

- First-hand experiences and examples
- Real-world scenarios
- Specific data points

**Expertise:**

- Deep topic knowledge demonstrated
- Authoritative sources cited
- Accurate, detailed information

**Authoritativeness:**

- Domain authority signals
- Internal linking structure
- Topical authority

**Trustworthiness:**

- Accurate information
- Transparent sources
- Clear value propositions

### Phase 6: Content Quality Validation

#### Step 6.1: Content Quality Checklist

**6.1.1: Human-First Content**

- [ ] Natural, conversational tone (du tone)
- [ ] Varied sentence structures
- [ ] No AI content tells ("Furthermore", "Moreover")
- [ ] Specific examples and data points
- [ ] Natural transitions
- [ ] Personal insights (when appropriate)

**6.1.2: Flow and Readability**

- [ ] Logical content flow
- [ ] Definition within first 20%
- [ ] Smooth transitions between sections
- [ ] Paragraphs 2-3 sentences max
- [ ] Clear heading hierarchy

**6.1.3: Value and User Experience**

- [ ] Provides genuine value
- [ ] Answers user questions
- [ ] Comprehensive topic coverage
- [ ] Easy to scan and read
- [ ] Visual elements enhance content

**6.1.4: Ordio Integration**

- [ ] Natural Ordio mentions (once per major section)
- [ ] Not salesy or pushy
- [ ] Contextually relevant
- [ ] Adds value to reader

#### Step 6.2: SEO/GEO/AEO Validation

**Run Validation Scripts:**

```bash
# SEO validation
php v2/scripts/blog/seo-validation-tier1.php --post={slug} --category={category}

# FAQ validation
php v2/scripts/blog/validate-faq-schema.php --post={slug} --category={category}

# Content flow validation
php v2/scripts/blog/validate-content-flow.php --post={slug} --category={category}
```

**Checklist:**

- [ ] Meta tags optimized
- [ ] Schema markup valid
- [ ] Keywords naturally integrated
- [ ] Internal links present (10-15)
- [ ] FAQs optimized (10-15, 40-80 words)
- [ ] Featured snippet opportunities addressed
- [ ] E-E-A-T signals present

#### Step 6.3: Browser Testing

**Test in Browser:**

1. **Load Post**

   - URL: `https://www.ordio.com/insights/{category}/{slug}/`
   - Check rendering
   - Verify all elements display correctly

2. **Test Functionality**

   - All internal links work
   - Calculators function correctly
   - Videos play correctly
   - Images load correctly
   - FAQs expand/collapse correctly

3. **Test Mobile**

   - Responsive design
   - Mobile-friendly navigation
   - Readable on mobile devices

4. **Test Performance**
   - Page load time (< 3 seconds)
   - No console errors
   - Images optimized

### Phase 7: Final Review & Publication

#### Step 7.1: Final Content Review

**Review Checklist:**

- [ ] Content complete and comprehensive
- [ ] All quality standards met
- [ ] All optimization checklists passed
- [ ] All validation scripts passed
- [ ] Browser testing passed
- [ ] No errors or issues

#### Step 7.2: Validate Content (before finalizing)

```bash
php v2/scripts/blog/validate-section-depth.php --post={slug} --category={category}
php v2/scripts/blog/validate-content-completeness.php --post={slug} --category={category}
php v2/scripts/blog/validate-faq-quality.php --post={slug} --category={category}
```

All must pass. If they fail, address specific gaps—do not add filler. See [CONTENT_DEPTH_VALIDATION_GUIDE.md](CONTENT_DEPTH_VALIDATION_GUIDE.md) for fixing failures.

#### Step 7.3: Update Post JSON File

**Do not edit post JSON directly.** Use `update-post-content.php` to apply content changes:

```bash
# Apply content from HTML file (regenerates content.text, word_count, modified_date automatically)
php v2/scripts/blog/update-post-content.php --post={slug} --category={category} --html=path/to/content.html --backup
```

For FAQ-only changes, use `add-faqs-to-post.php`. For other metadata (meta.title, meta.description), use existing scripts or edit only those fields via a script that uses load→modify→dump. See [BLOG_CONTENT_EDIT_WORKFLOW.md](BLOG_CONTENT_EDIT_WORKFLOW.md).

#### Step 7.4: Validate JSON File

**Check:**

- Valid JSON syntax
- All required fields present
- No syntax errors
- Content renders correctly

#### Step 7.5: Publish

**After Validation:**

- Save JSON file
- Changes appear immediately (no build step)
- Test in browser again
- Monitor for issues

#### Step 7.6: Post-Publication Monitoring

**Monitor (First Week):**

- GA4 traffic metrics
- GSC search performance
- User engagement metrics
- Error logs

**Check (After 1 Week):**

- Traffic trends
- Search performance changes
- User feedback (if any)
- Technical issues

## Quality Standards

### Content Quality

- **Word Count:** Flexible target based on competition and competitor analysis (see Flexible Word Count Guidelines)
- **Content Depth:** Comprehensive coverage of topic
- **Readability:** Easy to scan and read
- **Value:** Provides genuine value to readers
- **Flow:** Logical, natural flow throughout

### SEO Quality

- **Keywords:** Natural integration, 1-2% density
- **Meta Tags:** Optimized and compelling
- **Schema:** Valid and complete
- **Internal Links:** 10-15 natural links
- **Technical:** Fast, mobile-friendly, valid HTML

### GEO Quality

- **AI-Ready:** Clear, structured content
- **Citations:** Proper attribution
- **Comprehensive:** Complete topic coverage
- **Authoritative:** Trustworthy sources

### AEO Quality

- **Featured Snippets:** Optimized for snippets
- **PAA:** All questions answered
- **E-E-A-T:** Strong signals throughout
- **Direct Answers:** Clear, concise answers

## Tools & Scripts Reference

### New Post Creation Scripts

- `create-new-blog-post.php` – Scaffold post JSON, docs dir, target-keywords.json
- `run-new-post-pipeline.php` – Data collection for new posts (no GA4/GSC)
- `generate-blog-featured-image.py` – AI image generation (Gemini 2.5 Flash Image)
- `suggest-related-posts.php` – Suggest related posts for carousel
- `add-new-post-to-related-carousels.php` – Add new post to existing posts' related_posts
- `validate-new-post.php` – Validate new post before publishing

### Data Collection Scripts

- `collect-post-performance-ga4.php` - GA4 metrics
- `collect-post-performance-gsc.php` - GSC search data
- `collect-post-keywords-sistrix.php` - SISTRIX keywords
- `collect-post-serp-features.php` - SERP features
- `collect-post-search-intent.php` - Search intent
- `collect-post-competition-levels.php` - Competition data

### Analysis Scripts

- `analyze-post-content.php` - Content analysis
- `analyze-post-seo.php` - SEO analysis
- `analyze-post-links.php` - Link analysis
- `generate-post-documentation.php` - Generate docs

### Validation Scripts

- `validate-data-collection.php` - Validate data files
- `validate-faq-schema.php` - Validate FAQ schema
- `validate-content-flow.php` - Validate content flow
- `seo-validation-tier1.php` - SEO validation

### FAQ Scripts

- `collect-faq-research-data.php` - Collect FAQ research
- `generate-faq-questions.php` - Generate questions
- `generate-faq-answers-optimized.php` - Generate answers
- `fix-faq-quality-issues.php` - Fix quality issues

## Quick Start

**New to the process?** Start with [Quick Start Guide](QUICK_START_IMPROVEMENT.md) for a streamlined workflow.

## Related Documentation

- [Quick Start Guide](QUICK_START_IMPROVEMENT.md) - Quick reference for getting started
- [Data Collection Guide](IMPROVEMENT_DATA_COLLECTION_GUIDE.md)
- [SERP Analysis Workflow](SERP_ANALYSIS_WORKFLOW.md)
- [Content Creation Workflow](CONTENT_CREATION_WORKFLOW_IMPROVEMENT.md)
- [SEO/GEO/AEO Checklist](SEO_GEO_AEO_CHECKLIST.md)
- [Content Quality Checklist](CONTENT_QUALITY_CHECKLIST_IMPROVEMENT.md)
- [Internal Linking Guide](INTERNAL_LINKING_IMPROVEMENT_GUIDE.md)

## Quick Reference

### Complete Workflow Summary

1. **Prepare:** Identify post, review current state
2. **Collect:** Gather all data (GA4, GSC, SISTRIX)
3. **Analyze:** Review performance, conduct SERP research
4. **Plan:** Define strategy, create outline
5. **Create:** Write new content from scratch
6. **Optimize:** SEO/GEO/AEO optimization
7. **Validate:** Quality checks, browser testing
8. **Publish:** Update JSON, monitor performance

### Estimated Time per Post

- **Data Collection:** 15-30 minutes
- **SERP Analysis:** 1-2 hours
- **Content Creation:** 4-8 hours
- **Optimization:** 1-2 hours
- **Validation:** 30 minutes
- **Total:** 7-13 hours per post

## Success Criteria

- ✅ All data collected and analyzed
- ✅ SERP analysis completed
- ✅ Content created from scratch
- ✅ All quality standards met
- ✅ All optimization checklists passed
- ✅ Browser testing passed
- ✅ Post published and monitored
