Entity-First Content Strategy: Why Keywords Are Dead
Entity-First Content Strategy: Why Keywords Are Dead
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:
{ "@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:
# 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 →