Dev.to WebDev 🛠 Dev 👁 0 📖 3 min read

Devlog #2: SEO for 150,000 game pages, and why only ChatGPT recommends my site

In Devlog #1 I wrote about building a backlog tracker for myself. This one is about the part I underestimated: getting anyone to find it. My biggest problem was never the code. It was "where do I share this so people kn

In Devlog #1 I wrote about building a backlog tracker for myself. This one is about the part I underestimated: getting anyone to find it.

My biggest problem was never the code. It was "where do I share this so people know it exists?" Reddit banned me for posting, so I stopped fighting it and went the other way: make NXTO findable on its own.

Step 1: Every game gets a real page

NXTO is a Vue single-page app, and SPAs are a bad deal for search engines and for AI crawlers, because many of them don't run JavaScript. So every game in the catalog gets its own server-rendered page at /games/<slug> with the title, genres, tags, playtime and a description in plain HTML.

Two things made that harder than it sounds:

  • Missing slugs. Links built from Steam titles don't always match my slugs. Backlog links now carry the Steam app id and the game page resolves it before guessing from the slug. If a slug is still missing, it redirects to the clearly most popular game whose slug starts with it, instead of a 404.
  • Thin content. 150,000 pages with one sentence each is a good way to be ignored. For popular games without Steam text I pull a short Wikipedia excerpt (first paragraph, 350-650 characters, with the CC BY-SA credit) and fall back to a longer AI-written description. Unique, useful text per page was the whole point.

Step 2: Tell the search engines when something changes

Google finds pages slowly. Bing supports IndexNow, so every time the catalog changes the server pings it with the changed URLs. Cheap to build, and it's probably why Bing-based products notice me first (more on that below).

Step 3: "Where to buy" without a paywall

Hosting costs money, so game pages now show where a key is cheapest, converted to your currency (guessed from your country, otherwise from the interface language).

The boring engineering behind it:

  • A nightly job streams a store's product feed (a CSV of hundreds of MB) into SQLite, one row per store, game and currency. Streaming matters, because loading it into memory is not an option on a small server.
  • Games are matched by a normalized title. That's imperfect, so not every game gets an offer.
  • Clicks go through my own /go/... redirect, so I can count them and the page itself never contains raw affiliate URLs.

Some links earn me a small commission. You never pay more.

Step 4: What I learned about getting recommended by AI

Right now the only assistant that recommends NXTO is ChatGPT. That isn't random. Different assistants pull from different search indexes:

  • ChatGPT leans on Bing's index (which IndexNow feeds).
  • Gemini and Google AI Overviews use Google's.
  • Claude uses Brave Search.

Links matter much less than in classic SEO. What matters is being in the index the assistant searches, and being mentioned in places it trusts. So my to-do list is: get into Google Search Console and Brave, keep the pages server-rendered, and collect mentions from people who aren't me. This post is part of that.

What's next

  • Better matching between games and store offers.
  • More languages for the game pages.
  • Whatever you ask for on the ideas page.

Questions for you:

  1. If you've launched a side project, where did your first 100 users actually come from?
  2. Do you check whether AI assistants mention your product? If so, how?
📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.