# Website page publication index (non-blog)

**Last Updated:** 2026-04-02

Single entry map for **shipping new or substantially new** marketing/site pages outside the blog JSON system: tools, templates, downloads/resources, webinars, comparison pages, pillars, and static/special pages. For blog posts, start at [blog/CONTENT_SYSTEM_INDEX.md](blog/CONTENT_SYSTEM_INDEX.md).

**Improving an existing live URL (SEO/AEO sprint):** Start with [PAGE_IMPROVEMENT_DATA_PLAYBOOK.md](PAGE_IMPROVEMENT_DATA_PLAYBOOK.md) and [PAGE_IMPROVEMENT_ITERATION_CHECKLIST.md](PAGE_IMPROVEMENT_ITERATION_CHECKLIST.md) (GSC, GA4, SISTRIX, period compare, Firecrawl) before large copy or meta changes.

**Schichtplan routing (2026-04):** Indexed URL **`/schichtplan`** → `v2/pages/product_schichtplan_neu.php`. Draft path **`/schichtplan-neu`** **301 → `/schichtplan`** (QSA). Archived template **`v2/pages/product_shiftplan.php`** stays in repo only — **no clean URL**, direct **`/v2/pages/product_shiftplan.php`** → **403**; not linked. Editorial links: **`/schichtplan`** only — see [CANONICAL_URLS_AND_LINKING.md](../development/CANONICAL_URLS_AND_LINKING.md) and [LANDING_PAGE_REDIRECTS.md](../systems/landing-page-redirects/LANDING_PAGE_REDIRECTS.md).

**Pricing routing:** Canonical **`/preise`** → `v2/pages/static_pricing_new.php`. **`/preise-neu`** **301 → `/preise`** (QSA). Doc SSOT: [pricing-documentation.md](pages/static-pages/pricing-documentation.md).

**Kunden routing:** Canonical **`/kunden`** → `v2/pages/static_customers_new.php`. **`/kunden-neu`** rewrites to the same file (prefer **`/kunden`** in links). Doc SSOT: [kunden-documentation.md](pages/static-pages/kunden-documentation.md).

## Start here

| Goal | Primary doc | Cursor rule / skill |
|------|-------------|---------------------|
| **Improve existing page (data baseline)** | [PAGE_IMPROVEMENT_DATA_PLAYBOOK.md](PAGE_IMPROVEMENT_DATA_PLAYBOOK.md) | `.cursor/rules/page-improvement-data-baseline.mdc` |
| **OG image + social preview** | [NEW_PAGE_OG_AND_SOCIAL_CHECKLIST.md](../systems/og-images/NEW_PAGE_OG_AND_SOCIAL_CHECKLIST.md) | `.cursor/rules/og-image-generation.mdc`, `.cursor/rules/og-images.mdc` |
| **New tool / Rechner** | [guides/tools-pages/TOOLS_CONTENT_WORKFLOW.md](../guides/tools-pages/TOOLS_CONTENT_WORKFLOW.md) · [NEW_TOOL_PUBLICATION_TODO.md](_templates/NEW_TOOL_PUBLICATION_TODO.md) | `.cursor/rules/tools-pages-*.mdc` · `ordio-tools-content-block` skill |
| **New template / Vorlage** | [systems/templates/TEMPLATE_CONTENT_WORKFLOW.md](../systems/templates/TEMPLATE_CONTENT_WORKFLOW.md) · [TEMPLATE_HERO_VISUALS.md](../systems/templates/TEMPLATE_HERO_VISUALS.md) (8-row hero JSON + `validate-hero-visuals.php`) · [TEMPLATE_CONTENT_CREATION_WORKFLOW.md](../systems/templates/TEMPLATE_CONTENT_CREATION_WORKFLOW.md) | `.cursor/rules/templates-*.mdc` · `ordio-template-content-workflow` skill |
| **Download / gated resource** | `.cursor/rules/download-pages.mdc` · [NEW_DOWNLOAD_RESOURCE_TODO.md](_templates/NEW_DOWNLOAD_RESOURCE_TODO.md) | `download-pages.mdc` |
| **Comparison page** | [guides/comparison-pages/COMPARISON_PAGES_GUIDE.md](../guides/comparison-pages/COMPARISON_PAGES_GUIDE.md) | `comparison-pages-*.mdc` |
| **Webinar** | `.cursor/rules/webinar-pages.mdc` | `webinar-pages.mdc` |
| **Pillar / insights hub** | [guides/PAGE_TYPE_GUIDES.md](../guides/PAGE_TYPE_GUIDES.md) → Pillar Pages | `pillar-pages.mdc` |
| **Static / legal / company** | [guides/PAGE_TYPE_GUIDES.md](../guides/PAGE_TYPE_GUIDES.md) → Static Pages | `static-pages.mdc` |

## Page-family matrix

| Family | Typical PHP | Custom OG slug | Registry | Carousel / cross-links | Key data / includes |
|--------|-------------|----------------|----------|------------------------|---------------------|
| **Tool** | `v2/pages/tools_*.php` | `{tool-slug}` e.g. `pendlerpauschale-rechner` | `og-image-registry.php` `$page_specific` | [tools_carousel.php](../../v2/base/tools_carousel.php) **before FAQ**; map in `$filenameToSlugMap` | [tools_index_data.php](../../v2/data/tools_index_data.php) |
| **Template** | `v2/pages/templates_*.php` | `{template-slug}` | Registry + `get_template_og_image()` pattern | [templates_carousel.php](../../v2/base/templates_carousel.php) per template page | Template pipeline under `docs/content/templates/` |
| **Download / resource** | `v2/pages/download_*.php`, `content_*.php` | Per [og-image-specs.json](../../v2/scripts/og-images/og-image-specs.json) | Registry if dedicated slug | [downloads_carousel.php](../../v2/base/downloads_carousel.php) **before FAQ**; set `$currentDownloadSlug` | Download-specific data in carousel base |
| **Comparison** | `v2/pages/compare_*.php` | `comparison-{competitor-slug}.webp` | Type `comparison` + slug | [compare_carousel.php](../../v2/base/compare_carousel.php) where used | `generate-comparison-og-images.py` |
| **Webinar** | `v2/pages/webinar_*.php` | Spec slug | Registry | Often `downloads_carousel` for related assets | Event schema per rule |
| **Product / industry** | `product_*.php`, `industry_*.php` | Slug in registry | `og-image-registry.php` | Product/industry patterns | PAGE_TYPE_GUIDES |
| **Pillar** | `pillar_*.php` | `insights-*` style | Registry | [related_content_carousel.php](../../v2/base/related_content_carousel.php) | `*_related_content.php` data |

## OG pipeline (all families)

1. `v2/scripts/og-images/og-image-specs.json` — `headline` + `visual`
2. If `--gemini-visuals`: `VISUAL_DESCRIPTIONS` + `VISUAL_ONLY_PROMPTS` in `generate-og-image-gemini.py` for that **exact** slug
3. `python3 v2/scripts/og-images/generate-og-images.py --type={slug} [--gemini-visuals]`
4. `validate-og-images.py` + `validate-og-logo.py` + `audit-og-publish-readiness.py` (tools) + `php v2/scripts/og-images/audit-og-registry-vs-disk.php` or `make og-audit-marketing` (all `get_og_image_for_page` resolutions vs files on disk)
5. Wire `get_og_image_for_page()` / page overrides + `og_image_alt`

Details: [OG_IMAGE_GUIDE.md](../systems/og-images/OG_IMAGE_GUIDE.md).

## Cursor playbook

See [cursor-playbook.md](../ai/cursor-playbook.md) → **Content workflows** for blog vs website routing.

## Agent skill

For a compact router and commands: `.cursor/skills/ordio-new-page-og-carousel/SKILL.md`.
