Back to .md Directory

SEO Playbook — How SphereVista360 Targets 1M Monthly Visitors

Documents a programmatic SEO strategy that auto-generates 6,200+ pages from templates, targeting long-tail keywords with structured data and internal linking.

May 2, 2026
0 downloads
2 views
ai eval
View source

What this file does

Documents a programmatic SEO strategy that auto-generates 6,200+ pages from templates, targeting long-tail keywords with structured data and internal linking.

When to use it

  • Building a site with many similar pages that differ only by data
  • Planning to scale content generation with templates and ISR
  • Designing an internal linking mesh to distribute PageRank across thousands of pages
  • Adding JSON-LD schemas for FAQ and WebApplication rich results

Assumes this stack

Next.js 15TypeScriptISRJSON-LDGitHub ActionsMDX

SEO Playbook — How SphereVista360 Targets 1M Monthly Visitors

A technical breakdown of the programmatic SEO strategy behind 6,200+ auto-generated pages, structured data, and the internal linking architecture that powers organic traffic growth.


Table of Contents


The Programmatic SEO Strategy

Traditional SEO: Write one article → rank for one keyword → repeat.

SphereVista360 approach: Create a template once → generate thousands of unique pages automatically → each page targets a different long-tail keyword.

1 Template + 79 Currencies = 6,006 Unique Pages
1 Template + 30 Countries  = 30 Inflation Pages
1 Template + 30 Topics     = 30 Investment Guides
1 Template + 20 Pairs      = 20 Comparison Pages
─────────────────────────────────────
4 Templates               → 6,086 Indexable Pages
+ AI Articles (daily)     → Compounding Content

Why This Works

  1. Long-tail keywords have low competition — "USD to Philippine Peso rate" has search volume but almost no competitor pages
  2. Each page is genuinely useful — live converter, educational content, related links
  3. Google rewards comprehensiveness — covering every currency pair signals topical authority
  4. Pages compound over time — once indexed, they drive traffic indefinitely

Page Types & Keyword Targeting

Currency Pair Pages (6,006 pages)

AspectDetails
Routeapp/[pair]/page.tsx
URL pattern/usd-to-inr, /eur-to-gbp, /jpy-to-aud
Data sourcelib/currency-pairs.ts — 79 currencies
Total pages79 × 78 = 6,162 (minus duplicates)
RevalidationISR every 1 hour
Target keywords"USD to INR", "convert euro to pound", "1 USD in rupees"

Monthly search volume (estimated combined): 500K–2M

Example keywords per page:

  • Primary: "USD to INR exchange rate"
  • Secondary: "1 dollar in Indian rupees", "convert USD to INR"
  • Long-tail: "how much is 100 dollars in Indian rupees"

Inflation Tracker Pages (30 pages)

AspectDetails
Routeapp/inflation/[slug]/page.tsx
URL pattern/inflation/india-inflation-rate
Data sourcelib/inflation-data.ts — 30 countries
RevalidationISR every 24 hours
Target keywords"India inflation rate 2026", "UK CPI rate"

Example countries: US, UK, India, Germany, Japan, Brazil, Turkey, Argentina, Nigeria, Australia

Monthly search volume (estimated): 50K–200K combined

Investment Guide Pages (30 pages)

AspectDetails
Routeapp/investment/[slug]/page.tsx
URL pattern/investment/how-to-start-investing
Data sourcelib/investment-data.ts — 30 guides across 10 categories
RevalidationISR every 24 hours
Target keywords"how to start investing", "best SIP funds", "what is compound interest"

Categories: beginner, stocks, fixed-income, real-estate, crypto, commodities, retirement, tax, forex, alternative

Monthly search volume (estimated): 100K–500K combined

Comparison Pages (20 pages)

AspectDetails
Routeapp/compare/[slug]/page.tsx
URL pattern/compare/gold-vs-bitcoin
Data sourcelib/comparisons.ts — 20 pairs across 9 categories
RevalidationISR every 24 hours
Target keywords"gold vs bitcoin", "stocks vs bonds", "term life vs whole life"

Categories: precious-metals, crypto, stocks, savings, currency, real-assets, commodities, insurance, retirement

Monthly search volume (estimated): 50K–200K combined

Financial Tool Pages (11 pages)

ToolTarget KeywordsMonthly SV (est.)
SIP Calculator"SIP calculator", "SIP returns calculator"200K+
EMI Calculator"EMI calculator", "home loan EMI"500K+
Compound Interest"compound interest calculator"100K+
Currency Converter"currency converter", "USD to INR converter"1M+
Inflation Calculator"inflation calculator", "inflation impact"50K+
Purchasing Power"purchasing power calculator"20K+
Investment Return"investment return calculator", "CAGR calculator"30K+
Gold vs Dollar"gold price vs dollar chart"50K+
Recession Tracker"recession risk 2026", "recession indicator"30K+

Total tool keyword volume: 1M–2M+


How Pages Are Generated

Static Generation with Dynamic Data

// app/[pair]/page.tsx — Simplified flow
import { CURRENCY_LIST, generateAllPairs } from "@/lib/currency-pairs";

// 1. Tell Next.js which pages to generate at build time
export async function generateStaticParams() {
  return generateAllPairs().map((pair) => ({
    pair: `${pair.from.toLowerCase()}-to-${pair.to.toLowerCase()}`,
  }));
}

// 2. ISR revalidation (new data every hour)
export const revalidate = 3600;

// 3. Dynamic metadata for each pair
export async function generateMetadata({ params }) {
  const { pair } = await params;
  const { from, to } = parsePairSlug(pair);
  return {
    title: `Convert ${from.name} to ${to.name} (${from.code}/${to.code}) — Live Rate`,
    description: `Free ${from.code} to ${to.code} converter with live exchange rate...`,
  };
}

// 4. Page component with unique content per pair
export default async function CurrencyPairPage({ params }) {
  // Render converter, SEO content, related pairs, FAQ
}

Data File Pattern

Each programmatic page type follows the same pattern:

lib/[data-file].ts          → Array of entries + lookup functions
app/[type]/[slug]/page.tsx   → generateStaticParams() + dynamic page
Data FileEntriesExported Functions
lib/currency-pairs.ts79 currenciesgenerateAllPairs(), parsePairSlug(), getCurrencyByCode()
lib/comparisons.ts20 pairsgetComparisonBySlug(), getRelatedComparisons()
lib/inflation-data.ts30 countriesgetInflationBySlug()
lib/investment-data.ts30 guidesgetGuideBySlug(), getRelatedGuides()

SEO Generation Scripts

# Generate all programmatic pages at build time
npm run generate:seo

# This runs:
# 1. tsx scripts/generate-currency-pages.ts  → Currency pair static params
# 2. tsx scripts/generate-seo-pages.ts       → Sitemap entries, meta validation

On-Page SEO Implementation

Every Page Includes

ElementImplementationWhy
Unique <title>generateMetadata() per pageGoogle uses title as primary ranking signal
Unique <meta description>Dynamic with currency/country namesImproves click-through rate from SERPs
<h1> tagOne per page, keyword-richPage topic signal
Structured dataJSON-LD in <script>Rich snippets in search results
Canonical URLNext.js handles automaticallyPrevents duplicate content issues
Internal linksRelated pages, reverse pairs, category linksDistributes link equity
Educational contentUnique prose per page typeDemonstrates expertise (E-E-A-T)

Title Template Patterns

Currency: "Convert {FromName} to {ToName} ({FromCode}/{ToCode}) — Live Rate | SphereVista360"
Inflation: "{Country} Inflation Rate 2026 — CPI Tracker | SphereVista360"
Investment: "{Title} — Investment Guide | SphereVista360"
Comparison: "{Asset1} vs {Asset2} — Which Is Better? | SphereVista360"
Tool: "{ToolName} — Free Online Calculator | SphereVista360"

Internal Linking Architecture

Internal links are critical for distributing PageRank across 6,200+ pages.

Homepage (/):
├── links to → /dashboard, /tools, /news, /predictions, /currencies
├── links to → /global-risk-radar (risk radar widget)
│
├── /tools (index):
│   ├── links to → all 11 tool pages
│   └── each tool links to → /tools (back), related tools
│
├── /compare (index):
│   ├── links to → all 20 comparison pages
│   └── each comparison links to → related comparisons, tool pages
│
├── /[pair] (currency pages):
│   ├── links to → reverse pair (/inr-to-usd ↔ /usd-to-inr)
│   ├── links to → same-from pairs (/usd-to-eur, /usd-to-gbp, ...)
│   ├── links to → same-to pairs (/eur-to-inr, /gbp-to-inr, ...)
│   └── links to → /tools (Back to Tools)
│
├── /inflation/[slug]:
│   ├── links to → 5 related countries (same region/similar rates)
│   └── links to → /tools/inflation-calculator
│
├── /investment/[slug]:
│   ├── links to → 4 related guides (same category)
│   └── links to → /tools/compound-interest

Link Equity Flow

       Homepage (highest authority)
           │
     ┌─────┼─────┐
     ▼     ▼     ▼
  /tools /compare /currencies
     │     │         │
     ▼     ▼         ▼
  11 tools 20 pages  6,000+ pairs ← deep pages get link equity
                         │              from related pair links
                         ▼
                  reverse + related pairs (mesh network)

Schema Markup (JSON-LD)

FAQPage Schema (Comparison, Inflation, Investment pages)

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Should I invest in gold or bitcoin?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Both gold and bitcoin serve as..."
      }
    }
  ]
}

Why: FAQ rich snippets take more SERP real estate → higher CTR

WebApplication Schema (Tool pages)

{
  "@context": "https://schema.org",
  "@type": "WebApplication",
  "name": "SIP Calculator",
  "description": "Calculate SIP returns...",
  "applicationCategory": "FinanceApplication",
  "operatingSystem": "Web",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "USD"
  }
}

Why: Marks tools as free web apps → potential for rich results


Technical SEO Configuration

Next.js 15 Defaults

FeatureStatusConfiguration
Server-side rendering✅ DefaultApp Router server components
Static generationgenerateStaticParams()
ISRrevalidate = 3600 (currency), 86400 (others)
Image optimizationNext.js <Image> component
Automatic <head>generateMetadata()
robots.txt⬜ AddCreate app/robots.ts
sitemap.xml⬜ AddCreate app/sitemap.ts
OpenGraph images⬜ AddOG image generation

Recommended Additions

// app/robots.ts
export default function robots() {
  return {
    rules: { userAgent: "*", allow: "/" },
    sitemap: "https://spherevista360.com/sitemap.xml",
  };
}

// app/sitemap.ts
export default async function sitemap() {
  const pairs = generateAllPairs().map((p) => ({
    url: `https://spherevista360.com/${p.from.toLowerCase()}-to-${p.to.toLowerCase()}`,
    lastModified: new Date(),
    changeFrequency: "daily",
    priority: 0.7,
  }));

  return [
    { url: "https://spherevista360.com", priority: 1.0 },
    { url: "https://spherevista360.com/tools", priority: 0.9 },
    ...pairs,
  ];
}

Content Velocity: AI Articles

Beyond programmatic pages, daily AI-generated articles compound organic keyword coverage:

How It Works

GitHub Actions (daily 6 AM UTC)
    │
    ├── news-agent → Finance news article
    ├── currency-agent → Forex analysis article
    └── macro-agent → Economic indicator article
    │
    ▼
3 new MDX articles/day → 90 articles/month → 1,000+ articles/year

Article SEO

Each AI article is optimized by seo-agent:

  • Keyword-optimized title and meta description
  • Proper heading hierarchy (H1 → H2 → H3)
  • Internal links to tool pages and programmatic pages
  • FAQ section for rich snippet eligibility
  • 1,000–2,000 word length (Google's preferred range for informational queries)

Indexation Strategy

Getting 6,200+ Pages Indexed

Google doesn't index thousands of pages overnight. Strategy:

PhaseActionTimeline
Week 1Submit sitemap to Google Search ConsoleDay 1
Week 1Request indexing of top 20 pages (homepage, tools, popular pairs)Day 1–3
Week 2–4Google discovers pages via internal links and sitemapAutomatic
Month 2–3Most pages indexed (Google prioritizes useful, unique pages)Automatic
OngoingNew AI articles indexed within 24–48 hoursAutomatic

Monitoring

MetricToolWhat to Watch
Pages indexedGoogle Search Console → CoverageShould grow toward 6,200
Crawl budgetGSC → Settings → Crawl statsAvg pages crawled/day
Index coverage errorsGSC → Coverage → ErrorsFix any "Discovered – not indexed"
Top queriesGSC → Performance → QueriesWhich keywords drive traffic

Keyword Research Framework

Finding High-Value Keywords for New Pages

  1. Currency pairs: Already comprehensive at 79 currencies. Add new currencies as they become relevant (e.g., CBDC currencies).

  2. Inflation pages: Check Google Trends for [country] inflation rate — add any country with >1000 monthly searches.

  3. Investment guides: Use Google autocomplete for how to invest in [X] — if Google suggests it, there's search volume.

  4. Comparison pages: Search [asset A] vs [asset B] — if there's a "People also ask" box, it's worth a page.

  5. Tool keywords: Search [calculator type] online free — finance calculators consistently rank in top organic positions.

Tools for Keyword Research

ToolCostBest For
Google Search ConsoleFreeFinding keywords you already rank for
Google TrendsFreeComparing keyword popularity over time
Google AutocompleteFreeFinding long-tail variations
UbersuggestFree tierBasic volume + competition data
AhrefsPaidComprehensive keyword + competitor analysis

Competitor Benchmarks

CompetitorProgrammatic PagesMonthly TrafficRevenue Model
XE.com~10,000 (currency pairs)50M+Ads + API licensing
WiseTransfer rates~5,000 (currency routes)20M+Remittance service
CalculatorSoup~200 (calculators)5M+Display ads
Investopedia~30,000 (articles)100M+Ads + lead gen
SphereVista3606,200+ (and growing)Target: 1MMulti-stream

Our advantage: We combine programmatic scale (like XE) with educational content (like Investopedia) and free tools (like CalculatorSoup) in a single platform with AI-powered content velocity.


Scaling Beyond 6,200 Pages

Easy Wins (Add Data Only)

Page TypeHow to AddPotential New Pages
More inflation countriesAdd entries to lib/inflation-data.ts+50–100
More investment guidesAdd entries to lib/investment-data.ts+50–100
More comparison pairsAdd entries to lib/comparisons.ts+50–100
More currenciesAdd entries to lib/currency-pairs.ts+1,000–2,000 pairs

New Page Types to Build

Page TypeTemplate NeededPotential PagesKeywords
Tax bracket pagesapp/tax/[slug]50 countries"[country] income tax rate"
Stock market pagesapp/markets/[slug]50 indices"Nifty 50 today", "S&P 500 live"
Interest rate pagesapp/rates/[slug]30 central banks"RBI repo rate", "Fed rate"
Historical rate pagesapp/history/[pair]6,000+"USD to INR history"
City cost-of-livingapp/cost-of-living/[slug]100 cities"cost of living in Mumbai"

Each new page type follows the same pattern:

  1. Create data file in lib/
  2. Create [slug]/page.tsx with generateStaticParams()
  3. Add JSON-LD schema
  4. Add internal links from existing pages
  5. Add E2E test

This playbook is part of the SphereVista360 open-source project.

What's inside

12 sections covering page types, generation flow, on-page SEO, linking architecture, schema markup, technical config, AI articles, indexation, keyword research, benchmarks, and scaling.

Change this for your project

  • Replace SphereVista360 with your own brand name in title templates and sitemap URLs
  • Replace https://spherevista360.com with your own domain in sitemap and robots.ts
  • Replace lib/currency-pairs.ts, lib/comparisons.ts, lib/inflation-data.ts, lib/investment-data.ts with your own data files and paths
  • Replace kdaiops06/spherevista360-ai with your own repository reference

Where it goes

Keep it in your repository where the agent or team that needs it will read it.

Worth borrowing

  • Generate thousands of unique pages from a single template plus a data array, using generateStaticParams() and ISR
  • Create a mesh network of internal links (reverse pairs, same-from pairs, same-to pairs) to distribute link equity to deep pages
  • Add FAQPage and WebApplication JSON-LD schemas to eligible page types for rich snippet eligibility

Related Documents