The Diamond Standard — VPN.com Content Quality Guide

2026-05-07 · Ben · handoff

The Diamond Standard

Every page must pass these checks before going live. The system enforces them automatically at three points:

  1. Editor — Publish modal checks and blocks/warns
  2. Build — Zod schema rejects pages missing required fields
  3. CI — Deploy pipeline runs SEO and enrichment audits before translation

Translation costs $0.02–0.50 per page. The Diamond Standard is the gate that prevents thin content from wasting budget.


Required Fields

FieldRule
titleNon-empty
descriptionNon-empty, 120-160 chars
focusKeywordNon-empty, unique across site
dateISO format

Posts also require: category, permalink. Provider pages also require: template: provider, parent: vpn.


Publish Checks

Blockers (cannot publish)

Warnings (can publish, should fix)


Enrichment Score

Scored out of 85. Measures structural richness beyond plain text.

SignalPoints
FAQ section (## FAQ heading)10
Table (markdown or HTML)10
List (bullets or numbered)10
Image10
Blockquote5
Word count 1,000+15
3+ internal links to VPN.com pages15
1+ external authority link10
ScoreTierMeaning
60-85DiamondPublish-ready. Worth translating.
40-59SilverAcceptable. Has specific gaps.
0-39ThinFlagged. Will waste translation budget.

Fixing a Thin page:


Focus Keyword Rules

One keyword per page, unique across the site. Blocks on collision.

CI checks after build:

Cannibalization: Two pages targeting the same intent splits authority — both lose. Either merge the pages or differentiate keywords.


Content Depth

TypeMinimumTarget
Blog post300 words1,000+
Provider review300 words2,000+
Pillar page300 words1,000+
Legal pageNoneComplete and dated

A 300-word provider review will publish but gets flagged as Thin and excluded from translation.


Translation Opt-In

Set translate: true in frontmatter (or check "Include in translation" in the editor). Pages with translate: true and enrichment score under 40 are flagged as translation budget risk.


Deploy Workflow


Content Freshness


Structured Data

Build auto-generates JSON-LD — no manual schema needed if frontmatter is complete.

Page typeSchema generated
Blog postArticle (author, date)
Provider reviewSoftwareApplication + Review (with rating)
Landing pageWebSite + SearchAction
All pagesOrganization, BreadcrumbList

Quick Checklist

[ ] Title: 40-60 chars, contains focus keyword
[ ] Description: 120-160 chars
[ ] Focus keyword: unique, specific, in title
[ ] Date present
[ ] Word count: 300+ minimum, 1,000+ recommended
[ ] At least 1 table or comparison
[ ] At least 1 list
[ ] 3+ internal links
[ ] 1+ external link
[ ] Updated within 6 months

System Files

FilePurpose
scripts/seo-audit.mjs16 post-build HTML checks
scripts/enrichment-check.mjsEnrichment scorer (Diamond/Silver/Thin)
src/content.config.tsZod schemas — build fails on missing fields
vpn-editor/static/index.htmlEditor SPA — Diamond Standard modal
scripts/build.shLocal build pipeline