# Template Publication Checklist

**Last Updated:** 2026-03-26

Checklist for publishing new templates on the Ordio website. Run through all items when adding a new template to ensure full discoverability and internal linking.

## Slug (Data-Driven)

- [ ] **Slug derived from primary keyword** (keywords-sistrix.json). German only. See TEMPLATE_SLUG_MIGRATION_GUIDE.md.
- [ ] **validate-template-slug-keyword-alignment.php** – Run `--all`; must pass for published templates
- [ ] **If slug change:** Add 301 redirect in .htaccess; update sitemap, llms, internal links

## Registry & Routing

- [ ] **template-registry.json** – Add entry with `status: "published"`; use keyword-based `id` as slug
- [ ] **.htaccess** – Add route for `/vorlagen/{template-slug}` (if not covered by existing rule). If the file contains **duplicated** `# Templates` blocks, add the same `RewriteRule` in each block (or consolidate blocks first); verify boundaries before running `generate-template-routes.php` blindly.

## Discovery

- [ ] **sitemap-pages.json** – Add `https://www.ordio.com/vorlagen/{template-slug}` (alphabetically)
- [ ] **llms.txt** – Add entry in "Sofort-Lösungen" section (follow ACAO format)
- [ ] **llms-full.txt** – Add entry in "Vorlagen & Downloads" section

## Index & Carousel

- [ ] **templates_index_data.php** – Loads from registry; verify template appears in data
- [ ] **templates-index-config.php** – Add `'{template-slug}'` to `$publishedTemplatesForIndex`, `$templateSlugToFilterKey`, and `$templateIndexCardOverrides` (description, features, cta_icon). This controls both `/vorlagen` index cards and the carousel on template pages.

## Lead Capture (if gated)

- [ ] **submit-template.php** – Add `'vorlagen/{template-slug}' => 'Template Name'` to `$pageNameMap`
- [ ] **lead_capture_copy.php** – Add to template URLs if lead capture popup should show for relevant pages

## Internal Linking

- [ ] **Blog posts** – Add contextual links from relevant Lexikon/Ratgeber posts with natural anchor text
- [ ] **internal_links** – Add to `internal_links` array in post JSON if applicable (via appropriate scripts)

## OG Image (Required)

- [ ] **Custom OG image** – Create tailored OG image before publishing. Add to `og-image-specs.json`, add Gemini prompts in `generate-og-image-gemini.py`, run `python3 v2/scripts/og-images/generate-og-images.py --type={template-slug} --gemini-visuals`. Output: `v2/img/og/{template-slug}.webp`. See [OG_IMAGE_GUIDE.md](../../systems/og-images/OG_IMAGE_GUIDE.md) → "Publishing New Pages".

## Documentation

- [ ] **TEMPLATES_PAGES_INVENTORY.md** – Add template as new numbered entry with URL, slug, status, description
- [ ] **Template Types** – Add to Excel/PDF list in inventory if applicable

## Validation

- [ ] `python3 v2/scripts/llms/validate-llms-metadata.py --report`
- [ ] `php v2/scripts/blog/validate-anchor-text-quality.php --all` (after blog links)
- [ ] Load `/vorlagen/{template-slug}` – 200, content renders
- [ ] Load `/vorlagen` – template card appears
- [ ] Load `/sitemap.xml` – template URL present

## Reference

- [TEMPLATES_PAGES_INVENTORY.md](../../content/pages/templates-pages/TEMPLATES_PAGES_INVENTORY.md) – Template inventory
- [Templates Pages Cursor Rules](../../../.cursor/rules/templates-pages.mdc) – Page patterns
