← All playbooks · Raw API
insights-hub-pages
# Insights hub & listing pages — point.me
Playbook for **Insights listing surfaces** (not individual articles).
These listings are **not marketing pages**. Do **not** `cms-edit open --page-slug insights`.
## URL patterns
| Pattern | Examples | Live `contentType` (markdown) | How to open |
|---------|----------|-------------------------------|-------------|
| Hub | `/insights/` | **`articleType`**, slug `insights` | `list --type articleType` → `open --id` for Insights |
| Tag index | `/insights/airlines/`, `/insights/credit-cards/`, `/insights/travel-tips/`, `/insights/company-news/` | **`articleTypeTag`** | `list --type tag` → `open --id` |
| Article | `/insights/{articleSlug}/` | `article` | See `cms-edit://customer/articles` |
| Author | `/insights/author/{slug}/` | Person | See `cms-edit://customer/people` |
**Collision:** hub, tags, and articles share `/insights/{slug}/`. Always fetch markdown or `peek` before editing.
- Hub markdown: `https://www.point.me/insights.md` → `contentType: articleType`
- Listing markdown: `https://www.point.me/insights/{slug}.md` → almost always `articleTypeTag` on production (including `travel-tips`, `company-news`, `credit-cards`, `reports`)
- Article markdown: same URL shape, `contentType` is the article
`articleType` on an **article** is still a required field (CMS bucket). That does **not** mean a public type-index URL exists for every type. Production listing URLs under `/insights/{slug}/` (except the hub) are tags.
There is **no** `/topics/{slug}.md` on production (404). Tag markdown is `/insights/{slug}.md`.
## Typical content stack
| Order | Type | Role |
|-------|------|------|
| 1 | **Blog index hero** or **Blog category hero** | Hub vs category heading |
| 2 | **Iterable form** (external) | Newsletter — already on type/tag pages. Markdown export may render it twice; **do not add a second form in CMS** to match the export. |
| 3 | **Article search** | Filter / search chrome when present |
| 4 | **Related articles** (layout variant) | Listing grid — often auto-hydrated; edit heading/links only |
| 5 | **Article list CTA** / **CTA** | Conversion |
Do not rebuild the listing by hand-adding dozens of **Blog article** cards unless a reference page does that.
## Reference listings
| Path | Clone when |
|------|------------|
| `/insights/` | Insights home (`articleType`) |
| `/insights/travel-tips/` | Editorial **tag** listing |
| `/insights/credit-cards/` | Card-topic **tag** listing |
## Workflow
1. Fetch `https://www.point.me{path}.md` (or staging) and read `contentType`
2. `cms-edit list --type articleType` **or** `cms-edit list --type tag` to match that type
3. `cms-edit open --id <entry-id>` — never `--page-slug insights`
4. `snapshot` — confirm listing chrome, not an article body
5. Update hero, newsletter embed (once), related-articles heading
6. `preview urls` on staging → `diff` → `save` → `task-publish-handoff`
## Out of scope
- Writing article body copy (`articles`)
- Author profiles (`people`)
- AWS `/search`