
SEO 2.0: Topical Graphs, Programmatic SEO, and Internal Linking
SEO is growing up: from keywords and “one page per phrase” to entity graphs, programmatic landing generation, and deliberate internal linking.
This practical map shows how to think in clusters, assemble a topical graph, when and how to use programmatic SEO, how to avoid cannibalization,
which technical templates to set up for WordPress/WooCommerce, and how to enforce an AI content quality gate before indexing.
1. From “keywords” to an entity graph
In SEO 2.0 we work with entities rather than “phrases”: product, brand, technology, job-to-be-done, location, symptom, comparison, alternative.
Entities connect via relations: “type”, “part-of”, “located-in”, “used-with”, “better-than”, “compatible-with”, “contraindicated”.
This graph underpins content clusters: a “hub” (pillar), “spokes” (supporting pages), “bridges” (comparisons) and “navigators” (categories/taxonomies).
Entity Graph (simplified)
[Coffee category] ─has_type→ [Espresso machine]
│ │
├─related_to→ [Grind] ├─compatible_with→ [Capsules]
│ └─vs→ [Pump machine]
└─located_in→ [London] └─how_to→ [Pressure tuning]
1.1. Extracting entities and relations
Signal sources: on-site search, calls/chat (real FAQs), category maps, product attributes, service logic, CRM export,
Search Console (group queries by intent). Practically, start with a table:
Entity | Type | Relation | Target | Intent |
---|---|---|---|---|
Espresso machine | ProductType | vs | Pump machine | Comparative |
Capsules N | Accessory | compatible_with | Espresso machine | Commercial |
London | Location | located_in | Service center | Local |
Pressure tuning | HowTo | how_to | Espresso machine | Informational |
2. Programmatic SEO: landings for stable demand
Programmatic SEO generates many pages from a single template and structured data (products×cities, service×problem, model×compatibility).
Strength: long-tail coverage. Weakness: risk of “thin content.”
2.1. When it’s justified
When query patterns repeat (stable intent), you have real data (prices, stock, media, facts, FAQs), and each page delivers unique value:
local specifics, different selections, distinct offers. If value isn’t unique, prefer pagination/filters without indexing.
2.2. Data architecture
- Reference sets: entities (products, brands, cities, compatibility, problems, case types).
- Facts: price, availability, lead times, GTIN/MPN, warranties, local conditions.
- Templates: variable titles/leads, benefit blocks, comparison tables, reviews, FAQ.
Sample title/lead (pseudo)
<h1>{product} in {city}: pricing, stock, same-day delivery</h1>
<p class="lead">{brand} {model} — {key_benefit}. {stock_badge}. Delivery across {city_area}.</p>
2.3. Anti-thin: what to include
Minimum for each page:
- A unique intro paragraph + local facts (address/zones/ETAs).
- Live shelf (stock, price, variants) + structured data (JSON-LD).
- Entity-based comparisons/alternatives (not “10 more products”).
- FAQ sourced from support/search.
- “Compatibility”/“often bought together” built from the graph.
3. Anti-cannibalization: keeping pages from fighting
Cannibalization happens when multiple pages target the same intent. You dilute visibility, confuse ranking signals, and worsen behavior metrics.
3.1. Diagnosis
Aggregate queries by cluster and count how many different URLs get impressions/clicks for one intent. If >2–3, red flag.
Compare title/H1/anchors, page roles (category/landing/article/product), and behavioral metrics.
3.2. Fixes
- Hierarchy: pick a canonical “hub,” narrow the others’ intent (“for X”, “in Y”, “how to Z”).
- Internal links: spokes → hub (first paragraph); hub → spokes with exact-match anchors.
- Consolidation: merge duplicates, 301/canonicals, migrate unique blocks into the main page.
- Robots: don’t index filters/sorts that mimic the parent intent.
4. Internal linking: a cluster’s energy
Internal links aren’t “random related.” They’re a routing grammar between entities. Keep a written
link policy.
Policy: every supporting page links to the hub (first paragraph), to 2 sibling support pages by adjacent intent, and to 1 comparison bridge.
The hub links to all supporting pages (TOC table) and to 2–3 comparison bridges. Anchors = intent phrasing, not “read more.”
Pseudocode for ranking internal links
score(link) = w1*entity_overlap + w2*intent_match + w3*traffic_potential + w4*recency
place_top(score, k=3) in body; demote others to “related” widgets
5. Technical templates for WordPress/WooCommerce
Goal: make the entity graph native to your CMS, not a duct-taped overlay.
5.1. Data structure
- CPT “Entity”: type (taxonomy term), relations (ACF: relationship), description, linked products/articles.
- CPT “Landing”: parameters (city/model/task), linked entities, rendering template.
- Taxonomies: entity_type (Product/HowTo/Comparison/Location), brand, compatibility.
JSON-LD example (Article + BreadcrumbList)
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Espresso machine: comparison vs pump",
"mainEntityOfPage": {"@type": "WebPage","@id":"https://site.com/coffee/espresso-vs-pump"},
"author": {"@type":"Organization","name":"Brand"},
"datePublished":"2025-09-01",
"articleSection":["Comparison","Coffee"],
"about":[{"@type":"Thing","name":"Espresso machine"},{"@type":"Thing","name":"Pump machine"}]
}</script>
5.2. Canonical, pagination, filters
- Categories/search —
rel="canonical"
to the main category; sort/view params —noindex,follow
. - Pagination —
link rel="prev/next"
and a self-canonical on each paginated page (not to page 1). - Facets — index only “whitelisted” combinations; canonical the rest to the parent.
5.3. WooCommerce: product as an entity
- Attributes → entities (material, compatibility, brand) with dedicated “node” pages.
- Product/Offer schema: price, currency, availability, SKU, GTIN/MPN, rating, reviewCount.
- Comparison pages — dedicated template with spec tables and links to entity nodes.
6. AI content quality gate before indexing
AI speeds release but raises thinness/error risk. A Quality Gate mixes automated and manual checks; without it, a page never enters the sitemap.
6.1. Automated checks
- Factuality: verify numbers/dates/names against sources (RAG logic, NLI entailment).
- Uniqueness: find duplicates/paraphrases on-site and against top-10 SERP by key claims.
- Markup: JSON-LD validity, alts, H1≠title, unique H1, title/meta lengths within bounds.
- Readability: locale-appropriate score; ban “fluff” > X%.
- Toxicity/safety: term filters, legal disclaimers for risky topics.
- Internal links: hub link present; ≥2 sibling links; no broken links.
- Web perf: template LCP/INP/CLS meet targets.
6.2. Manual verification
Editor checks tone (brand/audience), argument cohesion, logic holes. Legal reviews the “forbidden” list.
Tech lead spot-checks microdata on samples.
Publish checklist (excerpt)
- [ ] Hub/spokes wired (2→hub, hub→N)
- [ ] Canonical/facets/pagination
- [ ] JSON-LD valid (Article/Product/BreadcrumbList)
- [ ] Unique title/H1/OG
- [ ] FAQ from real questions
- [ ] Internal links free of 404/redirect loops
7. Indexing, sitemaps, monitoring
- Dynamic sitemaps: by type (articles, landings, products); submit only after the Quality Gate.
- Ping: update sitemaps on status/stock/price changes.
- Monitoring: “cluster visibility” (clicks/impressions/avg position for hub and spokes), share of no-impression pages, share indexed.
8. Evolving the cluster: iterations and signals
A cluster is alive. Every N weeks: revisit entities (new themes?), refresh facts/prices/ETAs, fold “thin” pages into consolidated guides,
strengthen internal links to the cluster’s “stars.” In parallel: test titles, FAQs, and comparison blocks.
Conclusion
SEO 2.0 is the shift from keyword lists to a semantic map of your domain. The topical graph sets structure,
programmatic SEO scales coverage, internal links distribute “energy,” and the Quality Gate keeps quality.
This approach withstands search updates and assortment growth: you’re not “adding pages,” you’re building a knowledge system — and plugging content into it carefully.
Want to do something great? Let us help you.
Related Articles
In recent years, web development has undergone rapid changes. To stay ahead of the competition and effectively grow an online business, it’s essential to pay attention to the latest trends…
1) AOV isn’t the goal — it’s a by-product Average order value is tempting, but it’s only a shadow of what matters: gross profit per session. Any tactic that lifts…
The big picture: what “entering Europe and the UK” really means Localization isn’t “translate the site.” It’s aligning four independent systems: language, currency, tax, shipping. Language explains value; currency makes…
We tend to picture an “auction” as a split-second bid shoot-out. In reality it’s a chain of decisions: who’s even allowed in, how the platform spreads your budget over time,…
Fraud prevention in e-commerce isn’t a wall — it’s a thermostat. You constantly trade off two risks: letting a bad transaction through and losing a good one. Any added “hardness”…
Faster pages convert better. Skipping the academic stuff, here’s how speed (LCP, INP, CLS) turns into revenue and what to do now: leave a render margin, extract critical CSS, defer…
Any questions?
