# Content Quality Pre-Publish Checklist

**Last Updated:** 2026-04-04  
**Purpose:** Single runnable checklist for content quality before applying or publishing. Combines AI avoidance, anti-fluff, and writing best practices.

## When to Run

**Before** calling `update-post-content.php` or considering content complete. Run after section-by-section drafting, before Step 3 (Single Apply) in [CONTENT_CREATION_WORKFLOW_2026.md](CONTENT_CREATION_WORKFLOW_2026.md). **Mandatory:** Complete [ANTI_FLUFF_CHECKLIST.md](ANTI_FLUFF_CHECKLIST.md) before apply—no filler; cut micro-fluff; address gaps substantively.

## Quick Scan (2 min)

- [ ] No "In diesem Artikel erfährst du" or "In diesem Lexikon-Eintrag erfährst du" or similar intro phrases
- [ ] No "Definition:" at start of post or intro
- [ ] No duplicate H2s
- [ ] Each H2 adds distinct value (no redundancy)
- [ ] Fazit doesn't copy intro verbatim
- [ ] At least one concrete example, number, or table per major section
- [ ] **Sibling benchmark (when paired post exists):** Compare to sibling (e.g. soft-skills for hard-skills). Parity on comparison list, branchenspezifisch with industry links, concrete training formats, practical HR steps.
- [ ] **No SERP/strategy narration in `<p>`:** Avoid *In Suchergebnissen…*, *Suchbegriffe aus dem Privatkontext*, *unten ordnen wir…* — explain disambiguation for the reader (HR vs. Bank, Team vs. Suche). Gate: `python3 v2/scripts/blog/audit-meta-intro-language.py --json-posts --path-contains category/slug --fail-on high` (exit 0). See [PEOPLE_FIRST_INTRO_AND_LINKING.md](PEOPLE_FIRST_INTRO_AND_LINKING.md).
- [ ] **No AEO label fatigue:** Avoid repeating the same section opener (e.g. **„In Kürze:“**) under many H2s—keep answer-first leads, vary or drop the label. Repo-wide scan: `make audit-blog-repetition` (optional `--csv=` on the script); per post is covered by `validate-aeo-capsule-diversity.php` inside `make blog-post-validate`. See [CONTENT_DEPTH_GUIDELINES.md](CONTENT_DEPTH_GUIDELINES.md).

## AI Content Avoidance

- [ ] **Sentence variety:** Mix short (5–10 words) and longer (15–25 words) sentences
- [ ] **No generic transitions:** Cut "Furthermore", "Moreover", "In addition", "Im Folgenden", "Kommen wir nun zu"
- [ ] **No generic phrases:** Cut "It's important to note", "In today's world", "Wie wir alle wissen"
- [ ] **Specific examples:** At least 2–3 concrete numbers, scenarios, or examples in body
- [ ] **Natural flow:** Read aloud – does it sound human? Rewrite stiff passages

**See:** [AI_CONTENT_AVOIDANCE_GUIDE.md](../AI_CONTENT_AVOIDANCE_GUIDE.md)

## Anti-Fluff

- [ ] **Front-load answers:** Direct answer or definition in first sentence of each H2
- [ ] **No vague claims:** Replace "many companies struggle" with specific scenarios
- [ ] **No filler:** Cut "sehr", "wirklich", "es ist wichtig zu" – use stronger verbs or delete
- [ ] **Value test:** Would a reader who landed here feel their question was fully answered?
- [ ] **Per-sentence:** Does each sentence add unique value? If not, cut

**See:** [ANTI_FLUFF_CHECKLIST.md](ANTI_FLUFF_CHECKLIST.md)

## Copy Quality

- [ ] **Du tone:** Informal "du" throughout (not "Sie")
- [ ] **Ordio in body:** 2–4 contextual mentions in main content (not only FAQs)
- [ ] **Benefits over features:** "erfasst du Arbeitszeiten gesetzeskonform" not "Zeiterfassung-Feature"
- [ ] **Paragraphs:** 2–3 sentences max; one main idea per paragraph
- [ ] **Active voice:** Prefer verbs over passive constructions

**See:** [.cursor/rules/shared-patterns.mdc](../../.cursor/rules/shared-patterns.mdc) Universal Copy Guidelines

## Content Depth

- [ ] **Section depth:** 2+ paragraphs or 1 paragraph + list/table per H2
- [ ] **"Bold label: description" pattern:** When 3+ consecutive blocks follow **Bold label:** content, use `<ul><li><strong>Label:</strong> description</li></ul>` – not separate paragraphs
- [ ] **4+ items in one paragraph?** (e.g. "Konkrete Formate: A, B, C, D...") → Convert to list with bold lead-ins
- [ ] **Question-style subtopics:** When a section has distinct PAA-style questions (e.g. "Warum ist X wichtig?", "Welche X sind wichtig?") with 2+ sentences each, consider H3s for TOC/featured-snippet value
- [ ] **Formats:** Tables where competitors use tables; lists where competitors use lists
- [ ] **Visual formats (smart):** `formula-block` only for canonical/scannable equations (not every calculation line); comparison tables in `table-breakout-wrapper` with plain table markup; `blog-note--important` only for high-impact warnings—see [CONTENT_FORMAT_PATTERNS.md](CONTENT_FORMAT_PATTERNS.md) § *Visual format decision guide*
- [ ] **PAA covered:** All PAA from outline addressed in H2 or FAQ
- [ ] **Unique value:** At least one item from CONTENT_OUTLINE Unique Value checklist present
- [ ] **No word-count chasing:** No filler added solely to reach target

**See:** [CONTENT_DEPTH_GUIDELINES.md](CONTENT_DEPTH_GUIDELINES.md), [SKYSCRAPER_TECHNIQUE_2026.md](SKYSCRAPER_TECHNIQUE_2026.md)

## Redundancy Check

- [ ] **No H2 repeats another** – Each H2 covers a distinct angle
- [ ] **No paragraph restates the intro** – Definition appears once (intro or first H2)
- [ ] **No "Tipps" that merely repeat prior sections** – Each tip adds new, actionable information
- [ ] **Cross-section:** Before each H2, ask: "Did I repeat content from a previous section?"

## Post-Checklist

After passing checklist:

1. Run `compare-content-to-competitors.php` – address gaps
2. Run `validate-section-depth.php` and `validate-content-completeness.php`
3. Apply via `update-post-content.php` with `--backup`

## Related Documentation

- [CONTENT_CREATION_WORKFLOW_2026.md](CONTENT_CREATION_WORKFLOW_2026.md) – Full workflow
- [CONTENT_WRITING_BEST_PRACTICES_2026.md](../CONTENT_WRITING_BEST_PRACTICES_2026.md) – Writing guide
- [.cursor/rules/blog-content-creation-gate.mdc](../../.cursor/rules/blog-content-creation-gate.mdc) – Content gate
