Generating 50+ SEO Landing Pages from a Static Site Build Script
I run TextTimeTools , a free site with speaking-time and reading-time calculators. It's a pure static site deployed to Cloudflare Pages — no backend, no database, no CMS. The calculators themselves are one page. But the site has 50+ pages , each targeting a different keyword like "how many words is a 5 minute speech" or "how long to read 1000 words". Every single one of those pages is generated…
The author of TextTimeTools, a free site offering speaking-time and reading-time calculators, utilizes a build script to generate 50+ SEO-optimized landing pages without manual intervention. Rather than maintaining individual pages for each keyword, the site employs a build script that creates complete HTML pages for every keyword-targeted page.
The script, gen-longtail.cjs, takes a list of keyword targets and emits a separate page for each one. It computes the answer from a speed table and renders a full HTML page with essential elements such as a keyword-exact title, computed answer, speed selector table, and FAQ section tailored to that keyword. The script ensures that each page is as useful and consistent as a hand-written page, thanks to the one-time template creation and real data used for calculations.
The build pipeline comprises four steps: gen-longtail.cjs for generating "how many words is a X minute speech" pages, gen-reading.cjs for generating "how long to read N words" pages, build-site.mjs for assembling the dist/ directory, and gen-sitemap.mjs for generating sitemap.xml. The sitemap generation step automatically discovers existing pages in the dist/ directory, eliminating the need for manual maintenance and avoiding orphaned URLs.
By implementing this build script-based approach, the site transitioned from a single calculator page to 50+ keyword-targeted pages with minimal ongoing manual effort. The site ranks for the questions people actually ask, combining instant answers with interactive tools to maximize conversion rates.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.