# Content Targets Reference

**Last Updated:** 2026-02-18

How content word count targets are derived and used across validation, audit, and content generation.

## Data Flow

```
competitive-depth-analysis.md
        │
        ├──► validate-template-content-blocks.php  (min/max per template)
        ├──► audit-template-content-blocks.py      (target range for audit)
        ├──► generate-template-content-outline.php (block count, per-block target)
        └──► content-targets.json (optional override per template)
```

## Source: competitive-depth-analysis.md

Each template has `template-data/{id}/data/competitive-depth-analysis.md` generated by `analyze-template-competitor-depth.php`. It contains:

- **Target Word Count (content blocks):** Primary target for total words
- **Minimum:** Floor for validation (content must meet this)
- **Competitive Range:** Min–max range from competitor analysis (aim for upper end)

## Optional Override: content-targets.json

Path: `template-data/{id}/content-targets.json`

```json
{
  "min_total": 1000,
  "target_total": 1200,
  "max_total": 1500,
  "min_per_block": 50,
  "source": "competitive-depth-analysis.md"
}
```

If present, validation uses these values instead of parsing competitive-depth-analysis.md.

## Current Template Targets

| Template | Competitive Avg | Target | Min | Max (Range) |
|----------|-----------------|--------|-----|-------------|
| dienstplan-excel-vorlage | ~1,200 | 1,200 | 1,000 | 1,100–1,400 |
| schichtplan-excel-vorlage | ~1,702 | 2,000 | 800 | 1,900–2,400 |
| wochenplan-vorlage | N/A (0 competitors) | 1,200 | 1,000 | 1,100–1,400 |
| arbeitszeugnis-vorlage | ~2,634 | 3,400 | 1,500 | 2,900–3,700 |

## When to Run analyze-template-competitor-depth

Run after refreshing competitor data:

1. After `collect-template-competitor-analysis.php` (new competitors)
2. When competitor-analysis.json is updated
3. Before generating a new content outline
4. Periodically (e.g. quarterly) to refresh targets

```bash
php v2/scripts/templates/analyze-template-competitor-depth.php --template=id
php v2/scripts/templates/analyze-template-competitor-depth.php --all
```

## Validation Defaults

If competitive-depth-analysis.md is missing and content-targets.json does not exist:

- **Min:** 800 words
- **Max:** 2,500 words
- **Min per block:** 50 words

## References

- [TEMPLATE_CONTENT_EDIT_WORKFLOW.md](TEMPLATE_CONTENT_EDIT_WORKFLOW.md) – Edit workflow
- [TEMPLATE_DATA_COLLECTION_GUIDE.md](TEMPLATE_DATA_COLLECTION_GUIDE.md) – Data collection scripts
- [SKYSCRAPER_CONTENT_GUIDE.md](SKYSCRAPER_CONTENT_GUIDE.md) – Skyscraper technique for templates
