How We Added 15+ Cultural Name Origins to a Baby Name Generator (With SEO Results)
Source: Dev.to
The Architecture Problem
Our name data lives in a single TypeScript file (nameData.ts) as a typed array:
export interface NameEntry {
name: string;
meaning: string;
origin: string;
gender: "boy" | "girl" | "unisex";
popularity: "trending" | "classic" | "rare" | "rising";
style: string[];
}Each category page is generated at build time using Next.js generateStaticParams:
// app/[category]/page.tsx
export function generateStaticParams() {
return categories.map((cat) => ({ category: cat.slug }));
}Adding a new origin means:
- Add names to
nameData.ts - Add a category definition with
filterFn, SEO text, and FAQ schema - Rebuild — Next.js generates the new static page automatically
No database, no API calls, no runtime cost. Pure SSG.
Scaling Name Data Without Losing Quality
The temptation with a name database is to bulk‑import thousands of names from public datasets. We deliberately didn’t do that. Here’s why:
- Quality signals matter more than quantity. Each name entry includes:
- A verified meaning (not auto‑translated)
- Cultural context (origin language and tradition)
- Popularity classification (trending/classic/rare/rising)
- Style tags (Nature, Royal, Literary, etc.)
A name like “Emrys” isn’t just “immortal” — it’s specifically the Welsh name for Merlin, which matters for parents exploring Welsh baby names.
FAQ Schema for Rich Snippets
For each category page, we added FAQPage structured data:
interface FaqItem {
question: string;
answer: string;
}
// In the category definition:
faqs: [
{
question: "How do you pronounce Welsh baby names?",
answer: "Welsh pronunciation follows consistent rules..."
}
]This generates JSON‑LD that Google can display as expandable FAQ sections in search results — dramatically increasing the visual space your result occupies on the page.
SEO Results So Far
After 3 weeks:
- 20 pages indexed out of 25 submitted
- 187 impressions in Google Search (doubled week over week)
- 57 different search keywords driving impressions
- 3 clicks (CTR 1.6 % — normal for a new site)
The most interesting finding: Irish baby names gets the most impressions despite being a relatively niche category. Cultural name pages attract highly specific, high‑intent searches.
What Worked, What Didn’t
Worked
- Cultural specificity — “Italian baby names” converts better than generic “baby names”
- FAQ schema — richer search results
- Internal linking — every category page links to related categories
- Static generation — perfect Lighthouse scores, fast indexing
Didn’t work (yet)
- Bulk directory submissions — most AI directories charge $29‑$247
- Reddit self‑promotion — new accounts get deleted immediately
- Medium automation — content‑editable editors break all browser automation
The New Categories
We recently added:
- Italian names (Matteo, Giulia, Valentina)
- Persian names (Cyrus, Soraya, Darya)
- Scottish names (Hamish, Isla, Maisie)
- Welsh names (Rhys, Seren, Emrys)
- Hawaiian names (Kai, Leilani, Moana)
Each page includes cultural context about naming traditions — not just lists, but stories about why these cultures name children the way they do.
Key Takeaways
- SSG + TypeScript = free scaling — adding 100 names costs $0 in runtime
- Cultural depth > volume — 15 well‑researched names beat 500 scraped ones
- FAQ schema is free SEO real estate — more visual space in search results
- Category pages are long‑tail gold — “hawaiian baby names” has less competition than “baby names”
If you’re building a content site, consider: what dimensions can you slice your data by? Each slice is a potential category page, and each category page is a new entry point from Google.
Try the generator: babynamepick.com
Browse all origins: Boy Names · Girl Names · Nature Names