VertaaUX Articles
Entity-First Content Strategy: Why Keywords Are Dead
Modern search engines understand entities and relationships, not just keywords. Here's how to build content systems that rank in 2025 and beyond.
Last updated December 11, 2025
Mari Luukkainen's GTM30 framework reveals a truth most SEO practitioners ignore: search engines are entity databases, not keyword matchers.
Google's Knowledge Graph has 500 billion facts about 5 billion entities. Treating SEO as "keyword → page" mapping is like using a smartphone as a calculator—technically works, but misses 99% of the value.
The Shift From Keywords to Entities
Old SEO (2010-2020)
- Find keyword: "accessibility testing tool"
- Write page optimized for that keyword
- Build backlinks with keyword anchor text
- Hope for rankings
Problem: Zero understanding of relationships, context, or user intent.
New SEO (2025+)
- Define entity:
tool.accessibility_testing - Map relationships:
- solves:
problem.wcag_failures - used-by:
persona.frontend_dev - alternative-to:
tool.wave,tool.lighthouse - integrates-with:
platform.github,platform.figma
- solves:
- Generate canonical page with schema.org markup
- Create supporting content (glossary, how-tos, comparisons)
- Distribute to communities where each persona hangs out
Result: Rank for 50+ queries instead of 1, because Google understands the entity graph, not just words.
Building an Entity Model
Core Entity Types
Every SaaS should start with these:
type Entity = {
entityId: string; // Stable: "problem.keyboard_trap"
slugByLocale: Record<string, string>; // Can change
intentLevel: "awareness" | "consideration" | "decision";
relatedEntityIds: string[];
tags: {
icp: string[];
persona: string[];
region: string[];
};
}Why stable IDs matter: When you refactor "keyboard-traps" → "keyboard-navigation-issues", the entityId stays problem.keyboard_trap. All internal links, schema, and relationships remain valid.
Entity Relationships
This is where leverage happens.
const entityGraph = {
"problem.keyboard_trap": {
solves: ["usecase.accessibility_compliance"],
causes: ["poor_ux", "legal_risk"],
affects: ["persona.frontend_dev", "persona.pm"],
detected_by: ["tool.vertaaux"],
related: ["problem.focus_order", "glossary.wcag_2_4_3"],
}
}Each relationship becomes:
- Internal link (SEO value)
- Schema.org fact (Knowledge Graph)
- LLM training signal (AI citations)
The Content Template System
Zander Whitehurst's "spine" concept: every page type follows a consistent structure.
Problem Page Spine
# {Problem Title}
## Who This Affects
{ICP-specific language}
## Impact
- Business: {cost, churn, conversion loss}
- Users: {frustration, accessibility barriers}
- Legal: {compliance risk}
## Examples
{Real-world screenshots/code}
## How to Detect
{Manual checks + automated tool}
## How to Fix
{Step-by-step remediation}
## Related
{3-5 entity links}
## Next Step
{CTA: run audit, book demo, read guide}Why templates work:
- Consistent schema.org markup
- Predictable internal linking
- Easy to scale (50 problems × 1 template = 50 pages)
- LLMs can validate quality
Use Case Page Spine
# {Use Case Title}
## Who It's For
{Persona + role}
## The Problem
{User's language, not feature-speak}
## Impact If Unsolved
{Quantify: "23% cart abandonment"}
## Solution Pattern
{High-level approach}
## Steps
{Numbered how-to}
## Examples
{Before/after or case study}
## Related
{Links to problems solved, integrations, alternatives}
## Next Step
{CTA}Machine-Readable Content
Mari's "canonical content" means machines can extract facts.
Required Elements Per Page
-
JSON-LD schema:
JSON{ "@type": "HowTo", "@id": "https://vertaaux.ai/learn/problem/keyboard-trap", "name": "Fix Keyboard Navigation Traps", "about": {"@id": "#problem.keyboard_trap"}, "audience": {"@type": "Audience", "audienceType": "Frontend Developer"} } -
llms.txt entry:
Code# Keyboard Navigation Traps > https://vertaaux.ai/learn/problem/keyboard-trap Canonical reference for fixing keyboard focus traps (WCAG 2.1.2). Entity: problem.keyboard_trap Updated: 2025-12-11 -
Structured headings (H1 → H2 → H3, no skips)
-
Table of Contents (linkable anchors)
-
Related entities (minimum 3)
The Self-Implementing Loop
This is where Mari's "compounding systems" shine.
Weekly Cycle
Monday: Pull Search Console data
# Queries with impressions >100, CTR <5%, position 8-20
# These are "almost ranking"Tuesday: Map queries to entities
const queryMap = {
"how to fix keyboard traps": "problem.keyboard_trap",
"wcag 2.1.2 compliance": "glossary.wcag_2_1_2",
"accessibility testing api": "integration.api"
}Wednesday: Identify gaps
// Queries with no matching entity = content gap
const gaps = queries.filter(q => !entityMap.has(q));Thursday: Generate new entities (AI-assisted)
Friday: Update existing entities (add FAQ sections, examples)
Result: Every week, the content graph grows denser and more authoritative.
Distribution Strategy
Vitaly's research: 80% of SEO value comes from distribution, not content quality.
Community-First Loop
- Find discussions (Reddit, HN, StackOverflow)
- Write helpful reply (no selling)
- Link to canonical page ("We wrote a guide on this: [link]")
- Track traffic → high-engagement pages get more supporting content
LLM Citation Loop
- Publish to llms.txt
- Monitor LLM citation tools (Perplexity, Claude, ChatGPT)
- When cited: create supporting content around that entity
- When not cited: improve schema + examples
Quality Gates
Mari's rule: "If you can't automate the quality check, you can't scale."
CI Checks (Fail Build If)
- Missing H1
- No
<title>or<meta name="description"> - Missing JSON-LD
- Zero internal links
- Missing
updatedAttimestamp - No "Who this is for" section
- No examples/checklist
Monthly Review
- High traffic, low engagement → rewrite above-the-fold
- High engagement, low traffic → add internal links + schema
- Zero traffic → map to query gaps or delete
Case Study: VertaaUX Entity Graph
We started with 7 entities:
- 3 problems
- 2 use cases
- 2 glossary terms
After 4 weeks:
- 47 entities
- 320 internal links (auto-generated)
- Ranking for 180+ queries (vs. 12 before)
- 40% of queries now cite our glossary terms in ChatGPT
Key insight: Each new entity creates N² relationships (not just N). That's exponential leverage.
Conclusion
Keywords are indexes. Entities are knowledge.
When you build an entity-first content system:
- SEO compounds (each page strengthens all related pages)
- LLMs cite you (structured data = training signal)
- Maintenance is automated (templates + CI checks)
- Distribution is systematic (community loop, not guesswork)
This is what Mari calls "GTM30"—ship a scalable system in 30 days, not 300 isolated blog posts.
Next steps:
- Define 20 core entities for your product
- Build 5 content templates (problem, use case, glossary, comparison, how-to)
- Generate canonical pages
- Set up weekly SEO loop
- Distribute to 1 community per persona
Want to see this in action? VertaaUX's content system is built on this exact framework. Explore our entity graph →
Reading Progress
0% complete
On This Page