Programmatic SEO without thin pages: our quality gates
What programmatic SEO is, how it works, examples and tools, plus the quality gates MegaLaunch uses to keep thin generated pages out of Google’s index.
In this article12
What is programmatic SEO?
Programmatic SEO is the practice of publishing many search-targeted pages from one template and a structured dataset, so each page answers a variation of the same query: one page per product, per category, per pair of apps. It works when every page carries data a searcher cannot get from its siblings, and fails when it does not.
MegaLaunch is a programmatic site by construction. Every launch becomes a product page built from one template, and the catalog generates hubs on top of it: category pages, topic tag pages, a Hall of Fame of past daily podiums, and alternatives and comparison pages that draw on one registry of sourced facts. This article is about the part most guides skip: the code that decides which of those generated pages search engines are invited to index.
Tutorials tend to stop once the template renders, but the template is the cheap part. What keeps a site out of trouble is the rule that says a page is not ready yet, applied automatically.
How does programmatic SEO work?
Every programmatic setup has the same four parts, whatever the stack. The fourth is the one usually left to good intentions.
- A dataset: rows you trust, one per page. Ours are product submissions, a reviewed list of tags and a registry of third-party facts in which every value has a source URL and a check date.
- A template: the layout and copy rules that turn one row into one page, including its title tag, meta description and structured data.
- Routes: one URL pattern per family, such as /tags/ followed by a slug, with a rule for unknown values and synonyms.
- A gate: a function that looks at the data behind a page and answers a single question, index or not.
Write the gate once and let every surface ask it
A gate only works if everything that exposes a URL agrees with it. On MegaLaunch the thresholds are named constants and small functions, and the robots meta tag, the XML sitemap and, for comparison pages, the footer and llms.txt all read the same ones. On Next.js, generateMetadata can fetch a page’s data and return a robots object while the page renders (Next.js documentation, checked October 31, 2026). Google asks for a sitemap of the URLs you want to see in its results (Google: build and submit a sitemap, checked October 31, 2026), so a sitemap that lists a page tagged noindex sends both signals at once. With one predicate, the page and the sitemap switch together the moment the data crosses the line.
Where scaled pages cross Google’s line
Google’s spam policies name the failure mode. Scaled content abuse is when “many pages are generated for the primary purpose of manipulating search rankings” and not helping users (Google spam policies, checked October 31, 2026). Google announced the policy on March 5, 2024 and said it applies whether the content comes from automation, from people or from both (Google Search Central blog, checked October 31, 2026).
The examples on the policy page share one pattern: pages generated or scraped without added value, content stitched together from other pages, and pages stuffed with search keywords that make little sense to a reader. None is about page count. A site can publish ten thousand pages within the policy, or fifty in breach of it.
So the useful question is not how many pages the dataset can produce, but at what point a given page becomes a weaker copy of its siblings. Below that point it can still exist for visitors. It should not be offered to search.
Picture a hypothetical site with a “best coffee shops in [city]” page for every city in a country, each showing the same national chains with the city name swapped in. The template works; the data adds nothing from one page to the next. The fix is not a better template but real local data, or a gate that keeps the empty cities out of the index until that data exists.
The quality gates we use on MegaLaunch
Each page family has its own threshold, defined in src/lib/product-indexing.ts and src/lib/tags.ts. The comment beside each one states the intent: a hub is indexed once it is useful on its own, a comparison once it has enough original analysis and verified facts.
| Page family | Indexed when | Below the gate |
|---|---|---|
| Product page | Published, with a name and a description. Moderation controls publication; there is no word count. | Not indexed, not in the sitemap |
| Category hub | 5 published products | noindex, follow; out of the sitemap |
| Tag page | One of 14 reviewed tags, 5 published products, a written guide and at least three buying criteria; first page only | noindex, follow; out of the sitemap |
| Hall of Fame | 10 frozen daily podiums | noindex, follow; out of the sitemap and llms.txt |
| Alternatives page | 1,200 words of analysis and 5 verified alternatives | noindex, follow; out of the sitemap, llms.txt and the footer |
| Comparison page | 1,000 words of analysis and a complete facts table | noindex, follow; out of the sitemap, llms.txt and the footer |
| Alternatives and comparison hubs | 3 indexable pages | noindex, follow; out of the sitemap |
Thresholds read from the MegaLaunch code that applies them.
Why each threshold sits where it does
Product pages are the one family without a word threshold, on purpose. A page about one product is the unit of value, and padding it to reach a word count would make it worse. Moderation controls publication, and a published page with a name and a description is indexable. That is also what a maker gets from launching here: a MegaLaunch listing, Free or Premium, carries an index tag and enters the sitemap once it is published, which for a Free listing is 48 hours after submission, once its link back has been checked.
Hubs are where thin pages come from. A category with two products is a weaker version of the product search under a title that promises a collection. So a category hub waits for 5 published products, a tag page for 5 published products that carry the tag, and the Hall of Fame for 10 frozen daily podiums: an archive of three days is not an archive yet.
Tags have a second gate before the count: the vocabulary. Makers can type any tag on their listing, but only a reviewed list of 14 tags creates a public URL, each with a hand-written guide. Synonyms such as “artificial intelligence” redirect permanently to the AI tag, unknown tags return a 404, and only the first page of a tag can be indexed. A closed vocabulary stops the classic flood of near-empty tag URLs before any threshold is needed.
Alternatives and comparison pages are the family most exposed to scaled content abuse, because a template makes them cheap to multiply. Their gate counts only the analysis written for that page: tables, footnotes and the shared disclosure do not count toward the 1,200 or 1,000 words. An alternative counts as verified when every required table fact has an https source and a check date, and neither MegaLaunch nor the page’s subject counts. A comparison needs every required criterion sourced and dated for both sides. The Product Hunt alternatives page shows the result.
One more rule is about links, not indexing: our tests fail unless every alternatives or comparison page is linked from at least three existing articles or guides and from two sibling pages. A page nobody links to is a page you are asking a crawler to find on its own.
What happens to a page below the gate
Below its threshold, a page is served normally to visitors with a noindex, follow robots tag, and it is left out of the sitemap. Three details matter more than the tag itself.
- Follow, not nofollow. A gated hub still links to product pages that passed their own gate, so we keep its links followable.
- Never blocked in robots.txt. Google only reads a noindex rule on a page it may crawl; if robots.txt blocks the URL, the rule is never seen and the URL can still appear in results (Google: block indexing with noindex, checked October 31, 2026). Our robots.txt blocks only areas such as the dashboard, the admin and the API. Check yours with the free robots.txt generator.
- No manual promotion. The page and the sitemap read the same threshold, so a hub that reaches it switches in both places without anyone editing a list.
What the gates look like on a live site
When this article was written, on October 31, 2026, the MegaLaunch sitemap listed fewer than half of our category hubs and of our tag pages, among them the SaaS category and the SaaS tag page. The other hubs were live, linked from the catalog and useful to someone browsing; each one carries an index tag once its product count reaches the threshold. That day, the Hall of Fame had crossed its own, and every alternatives and comparison page published so far cleared its gate.
Leaving most hubs out of the index can look like lost traffic. Google’s help for the Page indexing report says not to expect every URL on a site to be indexed, and that non-indexed URLs can be fine (Search Console Help, checked October 31, 2026). Choosing which ones yourself beats leaving a crawler to sort through near-duplicates.
Programmatic SEO examples
The textbook example is Zapier, which publishes one page per pair of apps, such as Gmail and Slack, with the triggers and actions available between the two (Zapier’s Gmail and Slack page, checked October 31, 2026). The pages differ because the integrations do, which is what makes them worth indexing.
On MegaLaunch, what makes each page different is the input, not the template:
- Product pages carry a maker’s own description, images and links, under moderation. Recent launches show one template applied to very different products.
- Tag pages carry a guide and three buying criteria written for that topic by a person, plus the products that use the tag.
- Comparison pages carry facts read on each platform’s own site, each with a source and a check date, and analysis written for that page.
- The Hall of Fame carries a record that exists nowhere else: the frozen result of each launch day.
Programmatic SEO tools
You do not need a dedicated platform. The tools map onto the four parts, plus a template check, since a template mistake repeats on every page.
- Data: a spreadsheet works for a few hundred rows; beyond that, a database with validation. Ours is Postgres on Supabase, plus typed TypeScript files for third-party facts that need a source and a date.
- Template and routes: any framework or CMS with dynamic routes and per-page metadata. We use Next.js.
- Gate: a plain function per page family and a test that runs it on every page you ship. Our test suite validates every registered comparison page each time it runs.
- Template check: render one page before publishing the batch. The free SERP preview shows how a generated title and meta description truncate in results, which matters when one pattern writes hundreds of titles. The schema markup generator builds JSON-LD for types such as Product, Article and BreadcrumbList, and the FAQ schema generator does the same for FAQPage.
- Monitoring: the Page indexing report in Search Console, and a crawl of your own sitemap to confirm that nothing listed there carries a noindex tag.
How to set your own thresholds
There is no universal number; ours fit a launch directory.
- Name the unit of value of each family: the product for a product page, the number of entries for a hub, verified facts and analysis for a comparison. Measure that unit, not words for their own sake.
- Start strict. Lowering a threshold is a one-line change; cleaning up thousands of indexed thin pages is not.
- Merge instead of multiplying. When two pages answer the same search, keep one and redirect the other permanently, as we did when our Product Hunt alternatives article moved from the blog to its alternatives page.
Frequently asked questions
Can you give me an example of programmatic SEO?
Zapier’s integration pages, one for each pair of apps, are the classic example. On MegaLaunch, product pages, category hubs, tag pages and alternatives pages are generated from templates, each family with its own indexing threshold.
Is programmatic SEO against Google’s guidelines?
No. Google’s scaled content abuse policy targets pages generated mainly to manipulate rankings without helping users, whatever the method. Templates are fine when each page adds something its siblings do not.
Does programmatic SEO still work?
It works when every page answers a distinct search with data your other pages do not have, and stops when the page count outgrows the data. MegaLaunch is a young site with no traffic results to share yet, and its gates keep most hubs out of the index for now.
Should I noindex thin programmatic pages or delete them?
Noindex a page that is useful to visitors and will improve as data arrives, such as a category that will fill up. Delete or permanently redirect a page with no future, such as a duplicate. Do not block a noindexed page in robots.txt, or Google cannot read the rule.
How many pages should a programmatic SEO project start with?
As many as pass your gate. The rest can stay online with noindex, follow for visitors, out of the sitemap until they qualify.
What tools do you need for programmatic SEO?
A dataset you trust, a framework or CMS with dynamic routes and per-page metadata, a gate written as code and Search Console. The free SERP preview checks generated titles before they multiply.
Sources
- Google Search Central: spam policies, scaled content abuse (checked on 31 Oct 2026)
- Google Search Central blog: core update and new spam policies, March 5, 2024 (checked on 31 Oct 2026)
- Google Search Central: block search indexing with noindex (checked on 31 Oct 2026)
- Google Search Central: build and submit a sitemap (checked on 31 Oct 2026)
- Search Console Help: Page indexing report (checked on 31 Oct 2026)
- Next.js documentation: generateMetadata (checked on 31 Oct 2026)
- Zapier: Gmail and Slack integration page (checked on 31 Oct 2026)
Free tools mentioned in this article
- Robots.txt GeneratorBuild a readable robots.txt file with path rules and sitemap URLs, ready to copy or download.
- SERP SimulatorCheck your page title and meta description length, with a search-style snippet and a social card preview.
- Schema Markup GeneratorJSON-LD for seven schema types, checked against the fields Google requires as you type, ready to copy and test.
- FAQ Schema GeneratorTurn your questions and answers into FAQPage JSON-LD you can paste into your page.
Put it into practice. Launch your product.
A permanent page, a followed link to your site, and makers who vote for what they like.
- Free with a link back to MegaLaunch
- Premium: $4.99 one-time, no backlink needed
Done for you
We submit your product to 100+ dofollow directories.
By hand, with a report for every directory. No badge needed on your site.
From$99one-time
See the plans
