I have been using ChatGPT since December 2022. Every question I asked it is sitting in an export on my home server. That is three years of me being curious about things, in writing, timestamped.

Some of those questions must be questions other people are asking Google. The interesting problem is working out which ones, without paying for an SEO tool.

The corpus

The export normalizes to 2,286 markdown files, one per conversation, at about 27 MB. Titles are generated by ChatGPT, so they are labels rather than questions. The actual question I typed is the first **user:** block in each file.

The files have no dates in them, which is annoying, because recency matters. It turns out the eight hex characters at the end of each filename are the first eight characters of the conversation id in conversations.json. That gives you a join key for free:

1890 Brothel Guitar Music-673ff116.md
                          ^^^^^^^^ = id[:8]

All 2,286 files matched a record. The index has 2,297 entries, so eleven conversations exist in the raw export but produced no markdown, presumably because they are empty.

Sorted by year, my curiosity has an obvious shape:

2022:   112
2023:   157
2024:   345
2025:  1568
2026:   104   (export ends 23 January)

2025 is when this stopped being a novelty and became how I think.

Throwing most of it away

Not every conversation is a blog post. I dropped, in order: work and infrastructure topics (505 of them, all Terraform and Postgres and deploy failures), private matters (70), non-English conversations (26), empty or test chats (41), and anything I had already written up on my old blog.

That last filter deserves a note. Publishing the same topic on two domains you own is a good way to have neither of them rank. I have 129 posts on madebynathan.com, so I compared titles by word overlap. It caught six. It should have caught more, because ChatGPT titles a conversation “Kazakh vs Cossack” while my post is called “Free Men of the Steppe”, and no amount of word overlap connects those. A crude filter, honestly reported.

That leaves 1,638 candidates.

Proving demand for free

Here is the trick that makes this work without an SEO subscription.

Google’s autocomplete predictions are generated from real searches that real people perform. So if you feed a phrase to the suggestion endpoint and Google completes it, humans are typing that. If Google returns nothing, essentially nobody is.

curl 'https://suggestqueries.google.com/complete/search?client=firefox&q=why+doesnt+valve+make'
["why doesnt valve make",[
  "why doesnt valve make games anymore",
  "why doesn t valve make half life 3",
  "why doesn't valve make trilogies", ...]]

No key, no account, no rate limit that I managed to hit. Better still, the strings it returns are not paraphrases of what people search. They are what people search. You get the exact phrasing to put in your title.

ChatGPT’s titles rarely work as seeds. 4.5kw sauna power requirements returns nothing, while sauna power requirements returns five suggestions. So I generated fallback seeds for each conversation: the full title, the title with a leading year or number stripped, the title with stopwords removed, and the trailing three words. Query each in turn until something comes back.

Of 1,638 candidates, 1,039 produced suggestions. That is 3,010 unique queries against Google, cached to disk, in about three and a half minutes.

Volume, for free, sort of

Autocomplete tells you a query exists. It will not tell you whether ten people or ten million search it.

For topics that map to an entity, Wikipedia will. The pageviews API is public, documented, and returns actual numbers:

Caspian Sea      70,901 views/month
Prime number     52,815
Cossacks         48,475
Polystyrene      16,295
Emergence        11,985
Laughter          7,574
Holograph           494

This is not search volume. It is a demand proxy, and a decent one, because the people reading the Wikipedia article on the Caspian Sea mostly arrived from a search engine.

The part where I nearly fooled myself

Demand is the easy half. The half that matters, for a domain nobody has ever linked to, is whether you could possibly outrank the pages that already answer the question.

I wrote a scraper to pull the first ten result domains from DuckDuckGo and count how many were Wikipedia, Reddit, YouTube, or major media. It ran, and it reported that every single keyword I tested was uncontested. A wide open field. I was briefly delighted.

The response was 14,235 bytes and contained zero results. DuckDuckGo now serves a challenge page to scrapers, my regex found no links in it, and “no big domains found” got rendered as “no competition”. The tool was not measuring competition. It was measuring nothing, and reporting that nothing looked great.

If a metric ever tells you that every option is excellent, the metric is broken.

I switched to running the searches properly and looked at the actual results.

Three keywords, three verdicts

For s grade vs h grade polystyrene, page one is a BRANZ technical PDF, a couple of manufacturer datasheets, and some insulation supplier pages. No Wikipedia. No Reddit. No article that simply answers the question. The information exists, scattered across documents that were never written to be read by a person choosing between two products. That is a gap, and a small blog can fill it.

For caspian sea salinity vs ocean, page one has Wikipedia and HowStuffWorks, which is intimidating, but it also has two thin content-farm posts. Wikipedia’s article is about the Caspian Sea, not about the comparison. That is beatable by someone who writes a better answer to the exact question.

For bacteria vs human cells in body ratio, page one is ScienceDirect, PubMed Central, BBC Science Focus, Science News, and Sorbonne University. You are not going to win that.

Which is a shame, because it is the best story of the three. The famous claim that bacterial cells outnumber human cells ten to one is wrong. Sender, Fuchs and Milo revisited it in 2016 and put the ratio closer to 1.3 to 1, and their revised estimates paper traces the original figure back to a casual estimate from the 1970s that got repeated for forty years without anyone rechecking it.

I would enjoy writing that post enormously. It would bring me no traffic at all. (But I might still write it anyway.)

The uncomfortable finding

My searchable content and my interesting content barely overlap.

The queries from my own history that have genuine demand are boring: polystyrene grades, Subaru XV towing capacity, the physical dimensions of a Bosch POF 1200 AE router, how much power a sauna needs, whether to start a 3D printing side business. These are real questions with real searchers and weak competition, and I have already researched every one of them.

The conversations I loved are worthless to a search engine. Nobody googles for the Reflective Universe Hypothesis. There is no monthly volume for Higher Orders of Possibility. The ideas that make me want to write are, by their nature, ideas nobody knew to look for.

So there are two blogs available to me. One is useful and dull and would grow. The other is the one I want to write.

I am going to write both, in separate buckets, and never let the first one decide what goes in the second.

Things I got wrong or cannot check

I excluded health, finance and legal topics after they started surfacing in my rankings. Google demotes non-authoritative sites on those, and it is right to. My first ranked list cheerfully suggested I write about pain during pregnancy, GST thresholds, and whether to sell an IPO position. I have no business writing any of that.

The search results I looked at came from a US-based tool, and two of my best candidates are New Zealand specific. My local results will differ.

I have not verified the polystyrene densities. They appear in a BRANZ PDF that returns 403 to anything that is not a browser, and the manufacturer datasheet timed out. If I write that post, I will need to open those documents myself rather than trust a summary of them. That is exactly the mistake the bat article was about.

And my archive stops on 23 January 2026, because that is when I exported it. Six months of my curiosity is missing from the analysis, which is a strange thing to be able to say.

Sources