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.
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
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
- Page Types & Keyword Targeting
- How Pages Are Generated
- On-Page SEO Implementation
- Internal Linking Architecture
- Schema Markup (JSON-LD)
- Technical SEO Configuration
- Content Velocity: AI Articles
- Indexation Strategy
- Keyword Research Framework
- Competitor Benchmarks
- Scaling Beyond 6,200 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
- Long-tail keywords have low competition — "USD to Philippine Peso rate" has search volume but almost no competitor pages
- Each page is genuinely useful — live converter, educational content, related links
- Google rewards comprehensiveness — covering every currency pair signals topical authority
- 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
// 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
# 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)
{
"@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
| 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
// 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
-
Currency pairs: Already comprehensive at 79 currencies. Add new currencies as they become relevant (e.g., CBDC currencies).
-
Inflation pages: Check Google Trends for
[country] inflation rate— add any country with >1000 monthly searches. -
Investment guides: Use Google autocomplete for
how to invest in [X]— if Google suggests it, there's search volume. -
Comparison pages: Search
[asset A] vs [asset B]— if there's a "People also ask" box, it's worth a page. -
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:
- Create data file in
lib/ - Create
[slug]/page.tsxwithgenerateStaticParams() - Add JSON-LD schema
- Add internal links from existing pages
- 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
SphereVista360with your own brand name in title templates and sitemap URLs - Replace
https://spherevista360.comwith your own domain in sitemap and robots.ts - Replace
lib/currency-pairs.ts,lib/comparisons.ts,lib/inflation-data.ts,lib/investment-data.tswith your own data files and paths - Replace
kdaiops06/spherevista360-aiwith 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
Media Handling Playbook - Zyeuté v3
Documents upload, storage, optimization, delivery, and edge-case handling for images, videos, and audio in a social app.
Visual Truth Engine: Product-Market Fit & Go-to-Market Strategy
Outlines a product-market fit strategy and go-to-market plan for a B2B SaaS tool that automates proof asset creation for video creators.
Trader ROI Playbook (Codex + CI)
Defines weekly ROI targets, task prioritization lanes, guardrails, and a scorecard template for measuring engineering output per hour.
Devin Triage Playbook
Defines a 7-phase automated triage playbook for Devin to analyze alerts, find root causes, implement fixes, and notify teams.