← All playbooks · Raw API
task-news-images
# Capability: News article images (composite)
## Intent phrases
- create news article images
- branded news card image
- OG image for press release
- frame news photo
- news composite image
- portrait and landscape news images
## Requires capabilities
`articles`
## Prerequisites
- Read `cms-edit://customer/news-images` (full playbook)
- Read `cms-edit://customer/news-pages`
- `cms_edit ["index", "sync"]`
## Steps
### When user supplies composite image files (hosted MCP)
1. `cms_edit ["index", "sync"]`
2. **Search** for existing `News composite —` assets and Media entry (`list --type media --asset-id <portraitAssetId>`) — see `news-images` playbook **Hosted MCP workflow**
3. If match: link **shared** `visuals[0]` media entry ID + `featuredImage` landscape asset ID to each article (`set` + `asset set` → `diff` → `save`)
4. If no match: staged upload portrait + landscape **once**, `create media` **once**, then link same IDs to all articles in the batch
5. `preview urls` on each article → `task-publish-handoff`
**Do not** use `asset upload --with-media` or `create media` per article when composites are shared.
### When studio is available (dev/preview)
1. Open News Image Studio: `/cms/news-images?slug={slug}`
2. Confirm portrait + landscape preview; note composite descriptor (reuse vs new upload)
3. Apply — studio reuses existing composite + Media entry when matched
4. `preview urls` → `diff` → `save` → `task-publish-handoff`
## Confirmation gates
1. Before upload, report search results — if another article already has the composite, copy its media + asset IDs
2. After linking batch articles, confirm all share the **same** media entry ID for `visuals[0]`
## Out of scope
- Publications poster/download flow — `publications-pages`
- Raw iStock upload without branded composite