# Ahrefs Internal Link Audit – 2026-02-15

**Last Updated:** 2026-02-15

Audit of Ahrefs link opportunities from `ordio_14-feb-2026_link-opportunities_2026-02-15_12-55-21.csv` using the project's scripts and workflow.

## Summary

| Status | Count | % |
|--------|-------|---|
| **ACCEPT** (implement) | 36 | 63.2% |
| **REJECT** | 21 | 36.8% |

## Workflow Used

1. **Analysis:** `python3 v2/scripts/blog/process-ahrefs-csv.py <csv> --dry-run-only`
2. **Scripts:** `analyze-ahrefs-opportunities-jan-2026.py` → `add-ahrefs-links-enhanced.py`
3. **Output:** `v2/scripts/blog/ahrefs-analysis/`

## ACCEPT – 36 Opportunities (Ready to Implement)

All 36 passed validation: safe placement, no duplicates, canonical targets, keyword in content.

| # | Source | Target | Keyword |
|---|--------|--------|---------|
| 1 | hr-trends | personalabteilung | Personalabteilung |
| 2 | lohnarten | tarifvertraege | Tarifvertrag |
| 3 | hr-trends | arbeitsplan | Arbeitsplanung |
| 4 | urlaubsentgelt | urlaubsantrag-stellen | Urlaubsverwaltung |
| 5 | new-work | vertrauensarbeitszeit | Vertrauensarbeitszeit |
| 6 | krankmeldung | tarifvertraege | Tarifvertrag |
| 7 | pausenzeiten | dienstplan-erstellen | Dienstplan |
| 8 | probezeit | tarifvertraege | Tarifvertrag |
| 9 | arbeitnehmerueberlassung | tarifvertraege | Tarifvertrag |
| 10 | arbeitsproduktivitaet | personalentwicklung-und-weiterbildung | Personalentwicklung |
| 11 | offboarding | schichtplan-erstellen | Schichtplan |
| 12 | zeitlohn | nettoentgelt | Bruttoentgelt |
| 13 | spesen | tarifvertraege | Tarifvertrag |
| 14 | offboarding | personalakte-inhalt | Personalakte |
| 15 | work-life-balance | schichtmodelle | Schichtmodelle |
| 16 | work-life-balance | dienstplan-erstellen | Dienstplan |
| 17 | onboarding | dienstplan-erstellen | Dienstplan |
| 18 | offboarding | probezeit | Probezeit |
| 19 | personaleinsatzplanung | personalentwicklung-und-weiterbildung | Personalentwicklung |
| 20 | human-resources | personalcontrolling | Personalcontrolling |
| 21 | human-resources | dienstplan-erstellen | Dienstplan |
| 22 | mindestlohn | tarifvertraege | Tarifvertrag |
| 23 | offboarding | personalabteilung | Personalabteilung |
| 24 | employee-engagement | dienstplan-erstellen | Dienstplan |
| 25 | pausenzeiten | tarifvertraege | Tarifvertrag |
| 26 | onboarding | personalakte-inhalt | Personalakte |
| 27 | offboarding | dienstplan-erstellen | Dienstplan |
| 28 | generation-x | schichtmodelle | Schichtmodelle |
| 29 | remote-work | personalabteilung | Personalabteilung |
| 30 | verpflegungsmehraufwand | nachtarbeit | Nachtarbeit |
| 31 | bundesurlaubsgesetz | tarifvertraege | Tarifvertrag (FAQ) |
| 32 | pausenzeiten | nachtarbeit | Nachtarbeit |
| 33 | krankmeldung | personalabteilung | Personalabteilung |
| 34 | new-work | arbeitsorganisation | Arbeitsorganisation |
| 35 | arbeitsstunden-pro-monat | urlaubsanspruch | Wie viele Urlaubstage pro Jahr |
| 36 | new-work | schichtmodelle | Schichtmodelle |

## REJECT – 21 Opportunities (Do Not Implement)

### By Reason

| Reason | Count |
|--------|-------|
| Unsafe placement (keyword in headers, existing links, or unsafe locations) | 17 |
| Keyword in FAQ question (links not allowed in questions) | 3 |
| Source page not found (pillar page, not blog post) | 1 |

### Rejected Items

| Source | Target | Keyword | Reason |
|--------|--------|---------|--------|
| work-life-balance | dienstplan-pflege | dienstpläne erstellen | Unsafe placement |
| midijob | dienstplan-erstellen | dienstplan | Unsafe placement |
| urlaubsanspruch-von-minijobbern | midijob | midijob | FAQ question |
| employee-engagement | dienstplan-erstellen | dienstpläne erstellen | Unsafe placement |
| nettoentgelt | sozialversicherungspruefung-checkliste | sozialversicherungsprüfung | Unsafe placement |
| lohnsteuerbescheinigung | personalakte-inhalt | personalakte | Unsafe placement |
| new-work | dienstplan-pflege | dienstpläne erstellen | Unsafe placement |
| personalabteilung | personalentwicklung-und-weiterbildung | personalentwicklung | FAQ question |
| new-work | dienstplan-erstellen | dienstpläne erstellen | Unsafe placement |
| unternehmenskultur | personalakte-inhalt | personalakte | Unsafe placement |
| urlaubsentgelt | tarifvertraege | tarifvertrag | FAQ question |
| bonuszahlung | tarifvertraege | tarifvertrag | Unsafe placement |
| hr-trends | dienstplan-erstellen | dienstplan | Unsafe placement |
| **zeiterfassung (pillar)** | arbeitsorganisation | arbeitsorganisation | Source not blog post |
| bewirtungskosten-... | verpflegungsmehraufwand | verpflegungsmehraufwand | Unsafe placement |
| zeiterfassung-gastronomie-pflicht | sozialversicherungspruefung | sozialversicherungsprüfung | Unsafe placement |
| arbeitsproduktivitaet | personalakte-inhalt | personalakte | Unsafe placement |
| rufbereitschaft | zuschlage-berechnen-rechner | zuschlagsrechner | Unsafe placement |
| ueberstunden | zuschlage-berechnen-rechner | zuschlagsrechner | Unsafe placement |
| employee-engagement | dienstplan-pflege | dienstpläne erstellen | Unsafe placement |

## Manual Action: Zeiterfassung Pillar

**Opportunity #32** (zeiterfassung pillar → arbeitsorganisation) was rejected because the source is a pillar PHP page, not a blog post. The add-ahrefs-links script only processes blog JSON.

**To implement manually:** Edit `v2/pages/pillar_zeiterfassung.php` (or equivalent) and add a contextual link from "Arbeitsorganisation" to `/insights/lexikon/arbeitsorganisation/` where the keyword appears in body text.

## Implementation

**Status: COMPLETED** (2026-02-15)

All 36 approved links were implemented. Backups saved to `v2/scripts/blog/ahrefs-analysis/backups/` (timestamp: 20260215-125742).

## Notes

- **Canonical URLs:** All targets use canonical paths (`/insights/lexikon/...`, `/insights/ratgeber/...`).
- **Anchor text:** Script uses the matched keyword from content (e.g. "Tarifvertrag", "Dienstplan") – natural phrasing per `INTERNAL_LINK_QUALITY_PREVENTION.md`.
- **Backups:** Implementation creates backups in `v2/scripts/blog/ahrefs-analysis/backups/`.
- **Urlaubsverwaltung → urlaubsantrag-stellen:** Approved; "Urlaubsverwaltung" (vacation management) and "Urlaubsantrag stellen" (request vacation) are related; target is a reasonable destination.
