# Meta Data Fix: Human Resource Management (HRM)

**Date:** 2026-03-06  
**Issue:** Meta data was not properly set in `seo-meta.json` and synced to post JSON

## Problem

After creating the HRM post, the meta data remained as placeholders:
- `meta.title`: "Human Resource Management - Ordio" (placeholder)
- `meta.description`: "Platzhalter – Erfahre mehr zu Human Resource Management. Inhalt wird erstellt."

The post was also missing from `v2/data/blog/seo-meta.json`.

## Solution

1. **Added entry to `seo-meta.json`:**
   ```json
   "lexikon/human-resource-management": {
       "title": "Human Resource Management (HRM): Definition & Strategien - Ordio",
       "description": "HRM ist das englische Synonym für Personalmanagement mit Fokus auf strategische, internationale und digitale Aspekte. Erfahre Definition, Strategic HRM, eHRM, Unterschied zu Personalmanagement und praktische Umsetzung.",
       "source": "manual",
       "updated_at": "2026-03-06T19:10:00Z"
   }
   ```

2. **Synced meta to post JSON:**
   ```bash
   php v2/scripts/blog/sync-meta-to-posts.php --post=human-resource-management --category=lexikon
   ```

3. **Result:**
   - ✅ Meta title updated: "Human Resource Management (HRM): Definition & Strategien - Ordio"
   - ✅ Meta description updated: Proper description (158 chars)
   - ✅ Post title synced from meta title

## Process Improvement

**CRITICAL:** Always add meta data to `seo-meta.json` AND run `sync-meta-to-posts.php` after setting SEO meta.

### Correct Workflow

1. **After setting SEO meta** (via `set-seo-meta` todo or manually):
   - Add entry to `v2/data/blog/seo-meta.json`:
     ```json
     "{category}/{slug}": {
         "title": "{SEO Title} - Ordio",
         "description": "{Meta description 150-160 chars}",
         "source": "manual",
         "updated_at": "{ISO 8601 timestamp}"
     }
     ```

2. **Sync to post JSON:**
   ```bash
   php v2/scripts/blog/sync-meta-to-posts.php --post={slug} --category={category}
   ```

3. **Verify:**
   - Check `v2/data/blog/posts/{category}/{slug}.json` → `meta.title` and `meta.description`
   - Check `post.title` matches `meta.title` (without " - Ordio" suffix)

### Why This Matters

- **Meta generator priority:** `blog-meta-generator.php` checks:
  1. Centralized SEO meta store (`seo-meta.json`) ← **Primary source**
  2. Post JSON `meta.title` (backward compatibility)
  3. Auto-generate from `post.title`

- **Without `seo-meta.json` entry:** Meta generator falls back to post JSON, which may have placeholder values.

- **Without sync:** Post JSON meta remains outdated even if `seo-meta.json` is correct.

## Prevention

**Update workflow documentation:**
- Add to `blog-new-post-creation.mdc`: Always add meta to `seo-meta.json` AND sync after setting SEO meta
- Add to `CREATION_NOTES.md` template: Include meta data sync step
- Add validation: Check for placeholder meta descriptions in post JSON

## Files Modified

- ✅ `v2/data/blog/seo-meta.json` (added HRM entry)
- ✅ `v2/data/blog/posts/lexikon/human-resource-management.json` (synced meta)
- ✅ Backup created: `docs/backups/blog-seo-meta-sync-2026-03-06-192328/`
