Loading...
Loading...
Loading...
> 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.
# 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](#the-programmatic-seo-strategy)
- [Page Types & Keyword Targeting](#page-types--keyword-targeting)
- [How Pages Are Generated](#how-pages-are-generated)
- [On-Page SEO Implementation](#on-page-seo-implementation)
- [Internal Linking Architecture](#internal-linking-architecture)
- [Schema Markup (JSON-LD)](#schema-markup-json-ld)
- [Technical SEO Configuration](#technical-seo-configuration)
- [Content Velocity: AI Articles](#content-velocity-ai-articles)
- [Indexation Strategy](#indexation-strategy)
- [Keyword Research Framework](#keyword-research-framework)
- [Competitor Benchmarks](#competitor-benchmarks)
- [Scaling Beyond 6,200 Pages](#scaling-beyond-6200-pages)
---
## 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)
| Aspect | Details |
|---|---|
| **Route** | `app/[pair]/page.tsx` |
| **URL pattern** | `/usd-to-inr`, `/eur-to-gbp`, `/jpy-to-aud` |
| **Data source** | `lib/currency-pairs.ts` — 79 currencies |
| **Total pages** | 79 × 78 = 6,162 (minus duplicates) |
| **Revalidation** | ISR 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)
| Aspect | Details |
|---|---|
| **Route** | `app/inflation/[slug]/page.tsx` |
| **URL pattern** | `/inflation/india-inflation-rate` |
| **Data source** | `lib/inflation-data.ts` — 30 countries |
| **Revalidation** | ISR 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)
| Aspect | Details |
|---|---|
| **Route** | `app/investment/[slug]/page.tsx` |
| **URL pattern** | `/investment/how-to-start-investing` |
| **Data source** | `lib/investment-data.ts` — 30 guides across 10 categories |
| **Revalidation** | ISR 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)
| Aspect | Details |
|---|---|
| **Route** | `app/compare/[slug]/page.tsx` |
| **URL pattern** | `/compare/gold-vs-bitcoin` |
| **Data source** | `lib/comparisons.ts` — 20 pairs across 9 categories |
| **Revalidation** | ISR 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)
| Tool | Target Keywords | Monthly 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
```typescript
// 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 File | Entries | Exported Functions |
|---|---|---|
| `lib/currency-pairs.ts` | 79 currencies | `generateAllPairs()`, `parsePairSlug()`, `getCurrencyByCode()` |
| `lib/comparisons.ts` | 20 pairs | `getComparisonBySlug()`, `getRelatedComparisons()` |
| `lib/inflation-data.ts` | 30 countries | `getInflationBySlug()` |
| `lib/investment-data.ts` | 30 guides | `getGuideBySlug()`, `getRelatedGuides()` |
### SEO Generation Scripts
```bash
# 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
| Element | Implementation | Why |
|---|---|---|
| **Unique `<title>`** | `generateMetadata()` per page | Google uses title as primary ranking signal |
| **Unique `<meta description>`** | Dynamic with currency/country names | Improves click-through rate from SERPs |
| **`<h1>` tag** | One per page, keyword-rich | Page topic signal |
| **Structured data** | JSON-LD in `<script>` | Rich snippets in search results |
| **Canonical URL** | Next.js handles automatically | Prevents duplicate content issues |
| **Internal links** | Related pages, reverse pairs, category links | Distributes link equity |
| **Educational content** | Unique prose per page type | Demonstrates 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)
```json
{
"@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)
```json
{
"@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
| Feature | Status | Configuration |
|---|---|---|
| Server-side rendering | ✅ Default | App Router server components |
| Static generation | ✅ | `generateStaticParams()` |
| ISR | ✅ | `revalidate = 3600` (currency), `86400` (others) |
| Image optimization | ✅ | Next.js `<Image>` component |
| Automatic `<head>` | ✅ | `generateMetadata()` |
| robots.txt | ⬜ Add | Create `app/robots.ts` |
| sitemap.xml | ⬜ Add | Create `app/sitemap.ts` |
| OpenGraph images | ⬜ Add | OG image generation |
### Recommended Additions
```typescript
// 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:
| Phase | Action | Timeline |
|---|---|---|
| Week 1 | Submit sitemap to Google Search Console | Day 1 |
| Week 1 | Request indexing of top 20 pages (homepage, tools, popular pairs) | Day 1–3 |
| Week 2–4 | Google discovers pages via internal links and sitemap | Automatic |
| Month 2–3 | Most pages indexed (Google prioritizes useful, unique pages) | Automatic |
| Ongoing | New AI articles indexed within 24–48 hours | Automatic |
### Monitoring
| Metric | Tool | What to Watch |
|---|---|---|
| Pages indexed | Google Search Console → Coverage | Should grow toward 6,200 |
| Crawl budget | GSC → Settings → Crawl stats | Avg pages crawled/day |
| Index coverage errors | GSC → Coverage → Errors | Fix any "Discovered – not indexed" |
| Top queries | GSC → Performance → Queries | Which 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
| Tool | Cost | Best For |
|---|---|---|
| Google Search Console | Free | Finding keywords you already rank for |
| Google Trends | Free | Comparing keyword popularity over time |
| Google Autocomplete | Free | Finding long-tail variations |
| Ubersuggest | Free tier | Basic volume + competition data |
| Ahrefs | Paid | Comprehensive keyword + competitor analysis |
---
## Competitor Benchmarks
| Competitor | Programmatic Pages | Monthly Traffic | Revenue 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 |
| **SphereVista360** | **6,200+ (and growing)** | **Target: 1M** | **Multi-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 Type | How to Add | Potential New Pages |
|---|---|---|
| More inflation countries | Add entries to `lib/inflation-data.ts` | +50–100 |
| More investment guides | Add entries to `lib/investment-data.ts` | +50–100 |
| More comparison pairs | Add entries to `lib/comparisons.ts` | +50–100 |
| More currencies | Add entries to `lib/currency-pairs.ts` | +1,000–2,000 pairs |
### New Page Types to Build
| Page Type | Template Needed | Potential Pages | Keywords |
|---|---|---|---|
| Tax bracket pages | `app/tax/[slug]` | 50 countries | "[country] income tax rate" |
| Stock market pages | `app/markets/[slug]` | 50 indices | "Nifty 50 today", "S&P 500 live" |
| Interest rate pages | `app/rates/[slug]` | 30 central banks | "RBI repo rate", "Fed rate" |
| Historical rate pages | `app/history/[pair]` | 6,000+ | "USD to INR history" |
| City cost-of-living | `app/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](https://github.com/kdaiops06/spherevista360-ai) open-source project.*
_Status: Work in progress_
1. [Overview](#overview)
You will need to decide where your entity should be located and how it will be structured. This is largely driven by tax considerations, but may also be driven by governance preferences.
This document aims to help you get started with profiling test suites and answers the following questions: which profiles to run first? How do we interpret the results to choose the next steps? Etc.