Article
README
Published · ProofAML editorial
Blog content — how to drop a post
This directory holds the markdown for the /blog section. It uses the exact
build-time loader pattern as /compliance (src/data/blog.ts reads these files
with gray-matter at next build; nothing runs at request time). Adding a post
is: drop a .md file here, commit, redeploy. No code changes.
Ownership: marketing owns the words; engineering owns the loader, the routes, and this README. The two files currently here are engineering placeholder stubs so the route builds — replace or delete them when real copy lands.
Add a post
- Create
src/content/blog/<slug>.md. The filename (without.md) becomes the URL:<slug>.md→/blog/<slug>/. Use a lowercase, hyphenated slug. - Add YAML frontmatter (all fields below).
- Write the body in GitHub-flavored markdown (tables, lists, links all work).
- Build to verify (
npm run build) and redeploy.
Frontmatter
---
title: "Human-readable post title" # required
description: One or two sentences. Used as # required — meta description + card
the meta description, the card summary, # + JSON-LD description
and the social preview.
date: 2026-07-01 # required — publication date, YYYY-MM-DD
category: article # required — "article" or "digest"
author: ProofAML editorial # optional — defaults to "ProofAML editorial"
lastUpdated: 2026-07-15 # optional — defaults to `date`
tags: # optional — free text, used as keywords
- sanctions-screening
- ofac
---
category: article— evergreen explainers, launch posts, SEO pieces. Appears in the/blogindex.category: digest— the monthly enforcement digest. Appears in the/blogindex and on the/blog/digest/category landing. Suggested slug:YYYY-MM-enforcement-digest.
Links — the point of the blog
The blog is the conversion layer: it funnels readers into the screenable corpus. Link liberally into the rest of the site using absolute paths:
/sources/— the data catalog (source lists + licenses)/programs/— sanctions programs/compliance/and/compliance/<jurisdiction>/— AML/CFT guides/browse/all/page/1/— every listed entity/timeline/— recently designated- A specific entity page — copy its canonical URL from the entity page itself
(e.g.
/people/<slug>-nk<shortid>/)
Link to other blog posts with a relative markdown link — [text](/blog/other-slug/)
— and the loader rewrites it to /blog/other-slug/ automatically.
The post template also renders a fixed "Screen against the sources" block and a subscribe CTA on every post, so those conversion links exist even if a body has none.
Reserved slugs
digest is the /blog/digest/ category route — do not create digest.md.
The loader ignores it if present.
Turn this into a screening action
Screen against the sources behind this post
Monthly · free
The sanctions enforcement digest
New designations and enforcement actions, with the screening lesson behind each. One email a month.