← All playbooks · Raw API
news-pages
# News — Pedestal Health
Playbook for **news articles** (`resources/news`) — press releases, partnership announcements, conference coverage, and registry milestones.
## URL patterns
| Pattern | Examples |
|---------|----------|
| `/resources/news/{primaryTopic}/{slug}/` | `/resources/news/press-release/pedestal-health-announces-…/` |
| `/resources/news/{tag}/` | Tag listing (e.g. `/resources/news/hepatology/`) |
| `/resources/news/` | News hub / listings |
Primary topic comes from **asset-type** tag (e.g. `press-release`, `conference-presentation`, `partnership-announcement`).
## Typical content stack
News detail pages use the **resources/news** article type template.
| Region | Type | Role |
|--------|------|------|
| Template hero | **News hero** (article-sourced) | Title, subtitle blocks, date, tags, author, hero image |
| Body | **Article rich text** | Main story copy |
**Do not add News Hero to `content`** — the template renders hero from article fields.
## `featuredImage` vs `visuals`
| Field | Used for |
|-------|----------|
| `visuals` | Hero image on article page + listing card thumbnail (portrait composite) |
| `featuredImage` | OpenGraph / social (landscape composite) |
**Always set both** on news articles. Use **`cms-edit://customer/news-images`** (News Image Studio) to create or reuse branded composites — do not name images after article titles.
- Default OG: site `featuredImageAssetId` in `project.json` only as emergency fallback
- Search Contentful for `News composite —` to reuse an existing portrait/landscape pair and **one shared Media entry** for `visuals[0]` — never one Media entry per article when composites match
## Required / common fields
| Field | Guidance |
|-------|----------|
| `articleType` | `resources/news` |
| `title` | Headline |
| `subtitle` | Display blocks below title (`Partners: …`, `Cohort: …`) |
| `date` | Publication date |
| `authors` | Person links when byline shown |
| `tags` | Asset type, decision type, partner, conference, TA |
| `primaryTag` | Asset type — **must match URL segment** |
| `cmsLabel` on body | `News — {Article title}` |
## Hero tag display
Conference/venue tags on the hero follow `news-hero-tags.ts`. Asset type, decision type, and partner filters appear below the title — see `ARTICLE_PATTERNS.md`.
## Reference news articles
Clone tag + field patterns from existing items:
| Tag / topic | Use when |
|-------------|----------|
| `press-release` | Corporate announcements |
| `partnership-announcement` | Partner news |
| `conference-presentation` | Congress / meeting coverage |
| `registry-cohort-milestone` | TARGET cohort milestones |
```bash
cms-edit list --type article --sort date -n 10
cms-edit peek --article-slug <existing-slug>
```
## Workflow
1. Read `cms-edit://customer/articles` for shared routing
2. `cms-edit index sync`
3. `task-create-article` with `articleTypeSlug: resources/news`
4. Set `primaryTag` (asset-type), `tags`, `subtitle`, `visuals`, and `featuredImage`
5. Add **Article rich text** only in `content`
6. `create from-json --dry-run --strict` before save
7. `preview urls` → `diff` → `save` → `task-publish-handoff`
## Out of scope
- **Publications** — use `publications-pages`
- Duplicating **News hero** in `content`
- Home **News carousel** — auto-hydrated; edit the article entry, not the carousel query
## Publish handoff
`save` creates drafts only — publish in Contentful UI when ready.