SEO & style
Rendered from playbook/docs/style-guide.md. Written for the writing agents; readers are welcome.
8020.in SEO & style conventions
This file owns four things: SEO on-page conventions, length vs evidence tier, uniqueness across the corpus, and credit label conventions. Everything else - the core promise, templates, research brief, evidence tiers, voice, typography, and the publish checklist - lives in writing-system.md and is not repeated here. The publish checklist is writing-system.md §12 and there is no second one.
1. Length & depth
Google does not use word count directly. Use length as a depth floor, not a padding target.
| Topic type | Target length | Depth must include |
|---|---|---|
| Competitive (investing, time management, broad life, major finance) | ~1,800-3,000+ words | Only-on-8020 case or citation synthesis block - not tip stacks |
| Niche skill / narrow mechanism (e.g. Fortnite rotations) | ~1,400-2,000 words | Unique drills/mechanisms; optional mini-data |
| Narrow niche with full intent met | ~1,200-2,000 words | Concentration claim fully shown |
Evidence tier vs length (tiers defined in writing-system.md §7):
- Tier 1 (B, many C): hit competitive length and >=2 outbound primary citations. Do not invent sources to fill space.
- Tier 2 (A, some C): prefer a runnable measurement protocol over extra generic sections.
- Tier 3 (D, E): do not pad toward 3,000 with unsourced "researchers say." Add mini-data or cut.
2. Uniqueness & duplicate content
Goal: every article is clearly unique to both users and search engines.
Internal duplication
- Do not recycle paragraphs verbatim between articles.
- Restating the 80/20 rule is fine, but vary the wording and anchor it in the topic.
- If two articles feel very similar: merge, or give them clearly different intents.
Topic separation
- Each slug has a single primary intent (
seo_intent). - When two slugs overlap strongly, choose one pillar and reframe or redirect the other.
- Near-neighbour slugs (
meditation/relaxation/breathing) must not share an intent line.
Global 80/20 explanation
- Keep detailed theory on a cornerstone explainer page.
- In regular articles: 2-4 fresh domain sentences + internal link. Never re-paste long generic text.
Only-on-8020
- Every article needs at least one block derived from the brief's original observation (audit, ranked list, implications table, tracked sample, interview note). This is what a SERP clone cannot copy.
3. SEO on-page conventions
Headings
- One
<h1>per page (the title, rendered by the site template, not inside article JSON). - Article content starts with body paragraphs, then
<h2>/<h3>. - Primary and secondary keywords appear naturally in some headings.
Meta (handled by the site template from JSON fields)
- Browser title:
80/20 in {Title} - {seo_intent}(~50-60 characters total when possible). - Meta description built from
seo_intent(~120-155 characters). Makeseo_intentread like a search answer, not a slogan.
Internal links
- 3-7 contextual internal links per article.
- 1-3 links from relevant pillar pages pointing back.
Outbound links
- Required for Tier-1 claims (studies, papers, official standards docs).
- Prefer primary sources over secondary blogs.
Images
- Descriptive
alttext; topic keywords only when natural.
Visualizations
- Default: none. Viz articles (~20% of the corpus max) ship ~4-5 custom encodings, never a single default
paretobar. Rules inwriting-system.md§10.
4. Credit label conventions
Public names come from playbook/data/authors.json. Use them exactly. The authors and models_used arrays are identical.
Legacy passes with no logged model are credited by the period the article was created in, because that is what the site used at the time:
| Article created | Credit |
|---|---|
| 2022-2023 | ChatGPT-3.5 |
| 2024 | ChatGPT-4o |
| 2025-01 to 2025-10 | ChatGPT-5 |
| 2025-11 to 2026-06 | ChatGPT-5.1 |
| 2026-07 onward | No default. The pass log must name the model. |
Every credit is a name from authors.json. There is no placeholder author. If the human did not name the model for a pass, ask before writing the entry.
Forbidden in any credit field: Cursor Agent, 8020.in Editorial, Writer tool, or any name not in authors.json.
Aliases: GPT-5.5 -> ChatGPT-5.5, GPT-4o -> ChatGPT-4o, etc. Write the ChatGPT- form.
When an article is substantially updated by a newer model, the new model is appended to authors/models_used and a pass-log entry is written. The original credit stays.