173 calculator pages from one data file — and what happened when I submitted them to Bing
I built a small site of material calculators for home projects: concrete, paint, mulch, gravel, drywall, tile. You put in dimensions, it tells you bags, sheets, boxes or cubic yards. It's called MaterialCalc. This post
I built a small site of material calculators for home projects: concrete, paint,
mulch, gravel, drywall, tile. You put in dimensions, it tells you bags, sheets,
boxes or cubic yards. It's called MaterialCalc.
This post is about the build and the indexing experiment, because the second part
turned out more interesting than the first.
The whole site is one data file
Every calculator is an object in data/tools.mjs:
{
slug: 'concrete-calculator',
compute: computeConcrete, // pure function, serialized to the browser
inputs: [...],
longtail: {
sizes: [[10, 10], [12, 12], [10, 12]],
variants: [4, 6],
build: (size, thickness) => ({ slug, h1, title, desc, inputs })
}
}
build.mjs walks that file and writes static HTML: one page per tool, plus one
page per size/thickness combination. 173 pages, no framework, no client-side
routing. The heaviest page is about 8 KB of HTML. The compute function is
shipped as a string so the same code that produced the static answer table also
runs live in the browser — one source of truth, so the numbers can't drift
between the page and the calculator.
A test file runs every combination through the compute functions and checks the
output (concrete in cubic yards and bags, paint in gallons, drywall in sheets).
172 assertions. That part was easy compared to what came next.
Then I tried to get it indexed
The site went live on a brand-new .com, no backlinks, 173 pages.
I submitted all 173 URLs two ways: IndexNow, and the Bing Webmaster URL
Submission API (daily quota, batched). Both accepted everything.
A week later, from Bing's own API:
- Pages crawled: 21
- Pages in the index: about 2
- External links detected: 0
- Impressions in search: 0
So: accepted, crawled, essentially not indexed. Submission is a request to
crawl, not a request to index. That distinction cost me a week of checking
dashboards.
The pattern that came out of it:
- A single page got crawled and kept getting recrawled. The rest sat in the queue. Crawl budget goes where there's a reason to spend it.
- Zero external links means zero priority. A new domain has no history, no authority, and no links telling the crawler "this is worth a look."
- Programmatic pages are near-duplicates by construction. My own similarity test showed the worst pair at 88% identical. That is a lot to ask a crawler to index at once on an unknown domain.
What I'd do differently
- Write the ten pages that matter, not the two hundred that don't. Six head terms carry the search volume; the long tail mostly carries none.
- Get one or two real links before submitting anything. It changes how the rest of the queue is treated.
- Keep the submission API in the loop, but stop watching it. Crawling is not a progress bar you can nudge by clicking.
The calculators are at materialcalchq.com —
free, no sign-up, no ads. If you're building something similar and want to
compare notes on the static-generation side, the code is here:
github.com/haorufei-web/materialcalc-tools.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.