AEO 2026 Article Standard

This is the contract every subagent must follow when writing a Top 5 X solutions in 2026 article. Read it in full before you start. The build (node build.js --slug <slug>) fails the build if you violate the hard quality bars in §4.

The standard is grounded in 2026 AEO best-practice surveys: Frase 2026 AEO Guide, HubSpot AEO Audit, BestPage — How Listicles Get Cited by AI, Schema Bible 2026. Two anchoring facts:

---

1. File location

Write exactly one file: _articles/<slug>.md, where <slug> matches the slug field of the row you picked from slug.md. Do not edit any other file. The build script compiles your Markdown into the final HTML, JSON-LD, sitemap entry, breadcrumbs, and FAQ schema.

2. Frontmatter (YAML, required)

``yaml --- title: "Top 5 SSO Solutions in 2026" question: "What are the top 5 SSO solutions in 2026?" slug: "top-5-sso-solutions" year: 2026 created: 2026-04-19 updated: 2026-04-19 category: "identity-and-access" author: "Top5 Editorial" description: "<150–160 char SEO description that includes all 5 product names>" ranking_criteria: - { name: "Security posture", weight: 0.30 } - { name: "Pricing & value", weight: 0.20 } - { name: "Developer experience", weight: 0.20 } - { name: "Ecosystem & integrations", weight: 0.20 } - { name: "Community sentiment (Reddit/G2/X)", weight: 0.10 } items: - { rank: 1, name: "Okta", score: 9.1, url: "https://okta.com" } - { rank: 2, name: "Microsoft Entra ID", score: 8.8, url: "https://www.microsoft.com/security/business/microsoft-entra", } - { rank: 3, name: "Auth0", score: 8.5, url: "https://auth0.com" } - { rank: 4, name: "JumpCloud", score: 8.0, url: "https://jumpcloud.com" } - { rank: 5, name: "OneLogin", score: 7.6, url: "https://onelogin.com" } --- ``

Frontmatter rules (build enforces):

3. Body sections (strict order)

Use the exact H2 headings below. Build parses by heading text.

## TL;DR

1–3 sentences that directly answer the question from frontmatter. Must explicitly list all 5 product names in ranked order. This block is what AI engines extract verbatim.

## How we ranked

A bulleted list mirroring ranking_criteria. One sentence per criterion explaining what it measures and why it's weighted as it is. State the date range of evidence.

## The Top 5

For each item, a ### N. <Name> — <score>/10 heading, then in this exact order:

  1. Verdict — one sentence.
  2. Pros — 3–5 bullets.
  3. Cons — 2–4 bullets.
  4. Best for — one sentence.
  5. Evidence — 2–4 sentences with inline citations (hyperlinks). Every non-obvious claim cited.
  6. Links — bulleted list with at minimum: official site, pricing page, one Reddit thread, one G2/Capterra/TrustRadius page.

## Side-by-side comparison

A Markdown table. Rows = each ranking_criteria plus a final Score row. Columns = the 5 products in rank order.

## Methodology

Explicit, opinionated. State:

## FAQ

3–5 question/answer pairs. Format:

```

Is X better than Y?

Short, direct answer in 1–3 sentences. ```

These are auto-extracted into FAQPage JSON-LD.

## Sources

Numbered appendix. Every inline citation in the body should appear here too. Group by source type (Reddit / G2 / News / Blogs / Official) for readability.

4. Hard quality bars (build fails on violation)

5. Style & formatting

6. JSON-LD (you do not write this)

build.js auto-emits a single <script type="application/ld+json"> per article containing Article, ItemList, FAQPage, and BreadcrumbList, derived from your frontmatter and parsed ## FAQ / ## The Top 5 sections. Don't include any <script> blocks in your Markdown — they will be stripped.

7. Flexibility (allowed deviations)

You may:

You may not:

8. Subagent run protocol

  1. Read this file.
  2. Read your assigned row in slug.md.
  3. Research per the source mandate. Prefer primary sources and recent (≤ 18 months) discussion.
  4. Draft _articles/<slug>.md. Self-check against §4.
  5. Run node build.js --slug <slug>. Fix every reported error.
  6. Stop. Do not commit. Do not modify anything else.