# Articles — point.me

Insights / blog articles on the marketing site. Hub and **tag** listing URLs are **`cms-edit://customer/insights-hub-pages`**. Author profiles are **Person** entries — **`cms-edit://customer/people`**.

## Source packages (briefs, Drive, assets)

Before creating from an external brief or asset pack:

1. Follow **`task-source-readiness-review`** (inventory → beat sheet → GO / GO-WITH-GAPS / NO-GO → light human yes).
2. Map structure **faithfully** to this site's components — **do not rewrite source copy**.
3. Do not invent pair layouts or section titles absent from the source.
4. Prefer source order; use labeled placeholders when the verdict is GO-WITH-GAPS.

## Routing

| Concept | Value |
|---------|-------|
| Public base | `/insights/` |
| Article URL | `https://www.point.me/insights/{slug}/` |
| Markdown | `https://www.point.me/insights/{slug}.md` |
| Primary tag in article path | **No** (`enablePrimaryTagPartOfSlug` is false) |
| Public listing URLs | Tag indexes at `/insights/{tag}/` (see hub playbook). Hub `/insights/` is `articleType`. |

**Do not** build `/insights/{articleType}/{slug}/`. Production articles are **flat** under `/insights/{slug}/`. Do not use `/topics/{slug}.md` (redirects to `/insights/{slug}.md`).

Read `cms-edit://customer/routing` for live constants.

## Article type vs tags

| Field | Contentful type | point.me usage |
|-------|-----------------|----------------|
| `articleType` | `articleType` | Required CMS field on the article. The public Insights **hub** is this type (`/insights.md`). It does **not** create `/insights/{type}/{slug}/` article URLs. |
| `tags` | `tag` (many) | Topic labels. Production listing URLs like `/insights/credit-cards/` and `/insights/travel-tips/` are **tags** (`articleTypeTag` in markdown), not type indexes. |

Do not confuse **article type** (CMS field + hub) with **tags** (public listing URLs). Peek markdown `contentType` before opening.

Verify:

```bash
cms-edit index sync
cms-edit list --type articleType
cms-edit list --type tag
```

## Common article components

See `cms-edit://customer/components-index`:

- **Article hero** or **Blog hero** — article chrome (do not also put a marketing **Hero text left** on the article unless a live reference does)
- **Rich text** — main body
- **Pro tip**, **Pull quote centered** / **Pull quote offset**, **Quote**
- **Credit card table**, **Credit card tile**, **Card value calculator**, **Dynamic table** — card/comparison embeds (read each external guideline)
- **Rail CTA email**, **Iterable form** — newsletter embeds. Markdown export may show the same embed twice; that is an export quirk. **Do not add a second form in CMS** unless the live page actually has two entries.
- **Article CTA** — end-of-article conversion band
- **Related articles** (and layout variants) — related reading collections
- **Dynamic flight deals**, **Blog deal shelf** — deal embeds

Advertiser disclosure copy is editorial — keep it when the source article has it.

## Listing and discovery

```bash
cms-edit list --type article --sort date -n 20
cms-edit list --type article --has-field tags
```

Articles sort by publication `date`, not `sys.updatedAt`.

## Reading article fields

```bash
cms-edit open --article-slug american-express-platinum-card-review
cms-edit read @root
cms-edit read @root tags
cms-edit read @root authors
```

Use `@root` for the article entry itself (not a content component).

## Setting tags and authors

Tags and authors are **arrays of entry links**. Resolve slugs to IDs first (`list --type tag`, `list --type person`).

```bash
cms-edit open --id <article-entry-id>
cms-edit set @root tags <tagId1>,<tagId2> --links
cms-edit set @root authors <personId1>,<personId2> --links
cms-edit diff
cms-edit save
```

## Creating articles

1. `cms-edit://customer/task-create-article` (or `create from-json --dry-run --strict`)
2. Set `articleType`, `slug`, `title`, `description`, `date`, `featuredImage`, `authors`, `tags`
3. Clone body stack from a same-type reference (card review vs travel tip)
4. `preview urls` on staging → `diff` → `save` → `task-publish-handoff`

## Reference articles

| Path | Clone when |
|------|------------|
| `/insights/american-express-platinum-card-review/` | Card review (tiles, calculator, disclosure) |
| `/insights/the-best-airline-co-branded-credit-cards/` | Comparison roundup |
| `/insights/alaska-airlines-first-class/` | Airline / loyalty explainer |

## Out of scope

- AWS product search UI
- Author bio pages (`people` playbook)
- Hub / tag **listing** entries (`insights-hub-pages`)
