Hatching Growth #17: How We Grew ChatGPT Traffic 37x Using Our Own Server Logs
The full AEO playbook: mining AI-bot 404s, rewriting 12,000 TLDRs, guarding SEO, and a control-group re-measurement. Raw growth: 37x. The part our work can claim: about 2x.
Glasp’s note: This is Hatching Growth, a series of articles about how Glasp organically reached millions of users. In this series, we’ll highlight some that worked and some that didn’t, and the lessons we learned along the way.
* Today’s newsletter is brought to you by Alumni Ventures.
Invest in High-Potential AI Startups Like These
Alumni Ventures is giving readers early access to high-potential startup opportunities, including some of today’s most exciting AI, Deep Tech, Quantum Computing, and Cybersecurity companies co-invested alongside top VC firms like Andreessen Horowitz (a16z), Bessemer, & Y Combinator.
You get:
Curated deal flow of high-potential AI First startups
AV is already investing alongside elite lead venture firms in these deals
No cost to see deals
No obligation to invest
For accredited investors only.
Popular Episodes at a Glance
#3: How We Rode the AI Wave with Side Projects Before It Exploded
#8: How We Doubled Down on YouTube Summary with Programmatic SEO
#12: AEO in Practice: Memory Hacks, Prompt Injection Experiments, and Honest Results
Hi, Kei and Kazuki here.
An earlier version of this story ran as a guest essay on Sean Ellis’s Substack: How Glasp grew ChatGPT traffic from 500 to 19,000 daily sessions in 4 months. We are genuinely grateful to Sean for giving us that stage; the essay reached a far larger audience than it would have on its own, and the conversations it started are part of why this follow-up exists. The essay recently moved behind the paywall, though, and we kept getting asked for a version people could actually read, so this issue is the permanent public home of the playbook. It is also more than a reprint: since that essay went out, we re-measured the entire experiment with a control group, published the analysis as a paper on arXiv, and ran two more months of iterations. The tactics are here in full, and so is the honest accounting of what they were actually worth.
If you want to reread or highlight this newsletter, save it to Glasp.
The bet
Glasp has a corpus of 400,000+ YouTube Q&A pages, grown out of our side product YouTube Summary with ChatGPT (how that corpus came to be is Hatching Growth #8; how we decided to embrace it is #10).
How those pages are built matters for everything that follows, because AEO at this scale only survives if the corpus survives scrutiny from creators, platforms, and the AI providers who decide whether to keep crawling you. We do not store transcripts; YouTube’s terms do not allow republishing them at scale, so we keep video metadata only. Channels with strict copyright posture are excluded from the pipeline entirely, and Creative Commons licensed videos are prioritized. When a transcript fragment appears in an article, it is a citation, never the substance; the page is built around our own Q&A synthesis and structured data. And attribution flows back to the creator: every article embeds the original video and links prominently to it, so a reader who wants the full thing sends their attention upstream, while a reader who wants to summarize their next video themselves finds our extension. A corpus designed to give before it asks is a corpus designed to last.
In late December 2025 we made a bet on that corpus: deprioritize direct SEO investment and optimize for ChatGPT instead. For a growing share of users, the first move to learn what is inside a YouTube video is no longer Google. Search behavior is not dying; it is expanding, and AI assistants are absorbing exactly the summarization and Q&A queries our corpus is built for. Our 400,000 pages were optimized for the wrong retrieval surface.
One important precondition before anything else. AEO is not a substitute for SEO; it sits on top of it. Glasp’s domain authority was around 69 to 70 when this experiment began, built over years of category clusters, clean HTML, schema, and JSON-LD. As of this writing it sits at 71, and we will come back to why that small move matters. Everything below assumes a domain that Google already takes seriously. If you skip that foundation and optimize for ChatGPT from a cold start, we genuinely do not know what happens. We did not run that experiment.
Why we walked away from SEO
Given that foundation, why stop investing in it? Because at our scale, SEO had almost no levers left that we could actually pull. For a page that is indexed but not ranking, backlinks were honestly still part of the answer, but acquiring meaningful backlinks for each of 400,000 programmatically generated pages is functionally impossible; the unit economics do not pencil out. In the early weeks we ran a parallel SEO plus AEO matrix, scoring every article on both axes and routing each to a different playbook, and the operational overhead was crushing. Worse, the few levers SEO did still have at our scale, title rewrites and structural rewrites, were the same levers helping AEO. Two playbooks were converging into one, and the AEO side had the steeper upside and the higher velocity.
There was also a quieter reason, harder to put in a spreadsheet: by then we had a feel for what gets cited. Through earlier, smaller experiments, publishing tutorials on Glasp Post, watching landing pages and user-generated content across the glasp.co domain, and posting articles on other sites, we had seen which kinds of pages ChatGPT actually picked up, and built working intuitions about what an answer engine reaches for. Those intuitions were not 100 percent right, and we knew it. But walking into a large experiment with a sense of direction changes everything about its economics: improvement ideas suggest themselves instead of having to be mined from scratch. We optimized for the asymmetric bet, and collapsed the two playbooks into one.
Read your own logs, not the model’s mind
Most AEO tools (Profound, Peec, AirOps, and the rest of the category) query LLMs from the outside with prompt lists, run them many times, and statistically estimate citation rates. We built our own MVP of that in August 2025: hit ChatGPT’s web search 100 times per query, compute how often glasp.co shows up. It worked, technically. It was also indirect, noisy, and expensive, and it answered “are we cited” rather than “what should we build next.”
The reframe that drove this whole project: instead of asking the model what it cites, ask your own server what arrived. The bot already made its routing decision. Server logs are deterministic, free, and you already own them.
There was one more reason we leaned this way, and it is worth naming honestly: spamming an LLM with 100 prompts to estimate a citation rate that has already been decided on the server side felt like solving the wrong problem from the wrong end. The log-driven approach felt cleaner, and as far as we could tell, nobody had built on it. We searched, we asked around, we read every AEO product page we could find, and nothing was building on top of Cloudflare’s AI Crawl Control logs. Doing something genuinely novel, even at small scale, was part of what made the experiment exciting enough to actually run.
Cloudflare’s AI Crawl Control dashboard shows AI bot requests by category and by page, but its lookback window is short and depends on your plan: the free tier shows only the past 24 hours, and on our plan the dashboard kept 7 days. Either way, data that ages out of the window is gone. So we built a weekly snapshot pipeline: every 7 days, pull the data via API and store it in Firestore with timestamp, page URL, bot type, and request count. Over months, that becomes a longitudinal dataset the dashboard itself does not keep. Ours runs as a Cloud Run Job, but a GitHub Action on cron or a $5 VPS works identically.
Cloudflare splits AI bot traffic into three categories, and the split is the whole game. AI Crawler is training collection. AI Search is indexing. AI Assistant is a real-time fetch triggered by a live user’s prompt: ChatGPT-User retrieving your page in the middle of answering someone’s question. That third category is the closest server-side proxy to a human being about to see your content. We sorted the entire rewrite queue by AI Assistant request volume per page, because improving pages that already had live human demand compounds fastest.
One caveat that applies to everything in this essay: Cloudflare records bot requests, not citations. We can see that ChatGPT-User fetched a page during a live prompt; we cannot see whether the model used that page in its answer or discarded it after reading. AI Assistant volume is the closest server-side proxy to citation behavior available, but it is a proxy. When we say a page “got cited,” we mean the inference; when we cite lift numbers, we mean measured request volume.
What separates cited pages from ignored ones
The diagnostic ran in two layers, whole site first. Where on glasp.co was AI traffic actually landing: blog posts, landing pages, user profiles, discovery pages, the YouTube corpus? The distribution was lopsided; the YouTube corpus dominated by orders of magnitude. That alone settled the strategy, because the obvious move was to double down on the surface already generating most of the AI traffic rather than coax the others upward.
Then, within the corpus: we compared the top 10 percent of pages by AI Assistant traffic against the bottom decile, across every dimension we could extract: source channel, language, topic, article length, title structure, TLDR structure, Q&A depth, and vocabulary. Comparing that many dimensions across 400,000 pages by hand was not feasible, so we fed the logs and page metadata to a model and had it surface the separating patterns. There is a small recursive joke in using AI to figure out how to be cited by AI, but the synthesis was genuinely beyond what spreadsheet pivots could absorb.
Three findings dominated everything else:
The TLDR is the citation surface. Frequently requested pages had TLDRs averaging 132 characters and about 20 words across 2 sentences. Rarely requested pages averaged 14 characters and 2 words: placeholder length. A roughly 10x gap, tightly correlated with AI bot request volume.
Descriptive prose openers were the strongest structural signal, about 15x more concentrated in frequently requested pages. Sentences that start “This video explains...” or “The video covers...” read as standalone answers a model can lift cleanly. Bullets were not the enemy; empty TLDRs were.
Educational vocabulary signals a real answer. TLDRs that name the topic specifically and frame the video as explanatory get requested more. Descriptive, not prescriptive: we never jammed keywords into pages that were not about them.
The three signals we acted on
Signal 1: URL hygiene
Partly a confession. We had two URL patterns serving identical content, slug-based and videoID-based, a design oversight from years ago. The logs showed AI bot traffic splitting credit across duplicates of the same article. We consolidated to one canonical URL per video and stopped generating slugs. Not an AEO trick; the logs just made an old hygiene debt visible enough to finally pay.
Signal 2: 404s as latent demand
The most underrated discovery of the project. Cloudflare logs include 404s from AI bots, and a 404 from ChatGPT-User means the model constructed a URL it expected to exist on your domain, tried to fetch it mid-answer, and found nothing. LLMs pattern-match URL structures they have seen before, so if a model has observed many glasp.co/youtube/ pages, it will guess new ones of the same shape. Ahrefs found ChatGPT sends users to 404s about 3x as often as Google search. To give a sense of volume: in one 7-day window, ChatGPT-User alone logged 78,640 unsuccessful requests against glasp.co. Not all of those are 404s; the bucket also includes 403s, 429s, and server errors. But a meaningful share are, and that subset is where the roadmap signal lives. The industry treats this as noise to clean up. We treat it as a roadmap: the model is telling you what content your category should have but does not. Your competitors do not have those pages either, and the user already wanted them. We generated pages for the highest-frequency 404 patterns, and their rate of getting re-requested by ChatGPT within weeks ran meaningfully above baseline.
Signal 3: Titles and TLDRs are the interface
The highest-leverage rewrite. Users prompt ChatGPT in commands and questions, so we rewrote titles from the video’s own click-optimized phrasing into the question a user would actually ask, and rewrote thin TLDRs into self-sufficient 2 to 3 sentence answers in the 80 to 150 character range, opening with a descriptive verb and leading with the entity. Worth being concrete about scale: this first rewrite pass covered about 12,000 pages, a small slice of a 400,000-page corpus, worked through in descending order of AI Assistant request volume so the effort landed where live demand already existed. The program has not stopped since; as of this writing, just over 70,000 pages have been through an AEO rewrite. And we restructured pages around short, self-contained chunks, a direction sharpened by our conversation with Metehan Yeşilyurt on Glasp Talk #55: models parse short paragraphs more reliably than long ones, so the top of the page must carry the complete answer even if nothing else gets read.
SEO Guard: the safety valve
Walking away from SEO must not break the SEO you already have. We wired Google Search Console’s APIs into the same Firestore pipeline and gave every page a rule:
Pages earning 100+ Google clicks in 180 days are locked. No automated rewrite touches a page that already converts on Google. The threshold is judgment, not science; the principle is that you do not trade certain value for speculative value.
Pages with zero Google impressions in 180 days and zero AI bot requests since logging began get tombstoned: unpublished, removed from the sitemap, flagged in Firestore so they can be restored if the signal ever changes. This was roughly 50,000 to 60,000 pages in the first pass alone. The pruning has continued alongside the rewrites ever since, and as of this writing more than 200,000 pages have been tombstoned, roughly half the corpus.
Everything in between is the rewrite zone.
The counterintuitive result of the tombstone pass: indexation rates on the remaining content improved. Crawl budget concentrated where it should have been all along. In a world where models judge sources by site-wide signal, deletion is a growth lever.
The result, and then the honest version of the result
Daily sessions from chatgpt.com: 517 on January 1, 2026. 19,129 on May 5, 2026. Roughly 37x in four months. Those are human click-throughs measured in GA4, not bot hits; bots do not execute JavaScript. If anything the figure undercounts, because ChatGPT’s mobile apps strip referrers into the Direct bucket.
One more measurement, and it may be the most interesting one in this essay. Our weekly AI bot request volume was roughly flat through this entire period, fluctuating in the 2 to 3 million per week range. It did not 37x. Human sessions did. Same crawl volume, dramatically more downstream traffic: the same bots were extracting more citable, more clickworthy answers from our pages than before. The rewrites compounded into how often our pages get chosen and clicked, not into how often they get crawled. If your AEO dashboard fixates on raw bot request counts, it is worth asking whether that is the metric that reflects downstream value at all.
The 37x is the number that travels well in a screenshot. Here is what happens to it as you make it progressively more honest. This cascade is the part of this essay we most wish every AEO case study included, ours until recently included.
37x is a comparison of two single days, and to be clear, neither was chosen for effect: January 1 is simply the start of 2026, the cleanest calendar boundary available, landing just after our Firestore logging came online in late December, and May 5 is right around the day we sent Sean the draft. We had even pre-committed a threshold, deciding in advance that crossing 10,000 daily sessions would be the trigger to pitch Sean the guest post; the 19,129 reading was overshoot past that bar, lucky in its timing. But honest endpoints still make a fragile number, because single days are volatile: the sustained late-May level was under half that peak. The fragility is a property of daily endpoints, not of intent.
On monthly aggregates, total ChatGPT referrals grew 5.7x from January to May. Still excellent. Already a long way from 37.
Split treated from untreated, and the tide appears. The AEO bundle described above was applied only to the YouTube corpus. The rest of glasp.co never got that treatment. It was not frozen, to be fair: site-wide work such as performance tuning and some LLM-oriented schema continued everywhere, but that touched both groups equally, which is exactly what a control is for. Those untreated pages still grew 3.5x over the same window, riding ChatGPT’s own growth. Treated pages grew 6.1x. The difference between those two, not the raw curve, is what our work can claim, and if the shared site-wide improvements helped the control at all, the true treatment effect is understated, not overstated.
The defensible effect of the intervention is about 1.8x to 2.3x. An interrupted time-series model on the weekly treated-to-control ratio finds a discrete 1.82x jump (95% CI 1.31 to 2.54) aligned exactly with the January rollout, stable across every specification we threw at it, including engagement-filtered traffic at 2.27x.
And we still will not call it proven. The most conservative test we ran, a placebo permutation across the pre-period, returns p=0.16: the pre-period is short and noisy enough that jumps almost this large occasionally appear by chance. So the paper says “suggestive, not conclusive,” because that is what the data says.

ChatGPT referral sessions, treated vs. control, indexed to January 2026 = 100 (log scale). Both lines rise; that shared rise is the platform tailwind. The gap that opens after the January intervention is the part our work can claim.One more result from the paper matters for anyone protecting an existing search channel: Google organic clicks to the rewritten pages declined about 25 percent, which is in line with the site-wide and industry-wide trend for the window, with no deindexation. SEO Guard held. AEO and SEO are not in tension if you guard the boundary explicitly.
The methodological takeaway costs nothing to adopt: hold out an on-domain control. If someone quotes you a raw AEO multiple on a channel that grew 3.5x untouched, they are taking credit for the weather. Full model, robustness checks, and reproduction code are in the paper.
What the last two months added
The May 5 peak did not hold; ChatGPT referral sessions came down substantially through June and July, and chasing that decline taught us more than the growth did. Five updates.
1. Why AI citations rose again in June: page selection beats page polish
Round one was about rewriting existing pages. Round two changed how pages get born. Instead of generating articles in bulk and hoping demand arrives, we now create pages almost exclusively from observed demand: recurring AI-bot 404 patterns, AI Assistant requests hitting thin placeholder pages, and real queries from search data.
The cohort math is stark. Using Search Console’s bulk export in BigQuery, we measured what share of newly created pages earned any Google impressions, by creation month. Pages created March through May: 0.3 to 0.8 percent. Pages created in June under the demand-driven flow: 13.4 percent, roughly 17x higher, with July tracking similarly. We checked the obvious confounder: the generation prompt had not materially changed since mid-March. The writing stayed the same; the selection of which pages deserve to exist changed. In programmatic content, a perfectly optimized page nobody asked for is still a page nobody asked for.
2. Bing Webmaster Tools is the AEO dashboard nobody reads
A fair question about round one: why care about search indexes at all if the target is ChatGPT? Because ChatGPT’s live web search has long drawn on Bing’s index as a major grounding source. A page invisible to Bing has a far narrower path into a grounded ChatGPT answer, no matter how good its TLDR is. So we connected Bing Webmaster Tools and its API into the same measurement loop, and found that Bing now reports something none of our other sources do: how your pages are used by AI, not just by searchers.
Over the trailing 30 days, our pages were cited about 62,000 times in Bing-grounded AI answers, averaging around 2,000 citations a day in a steady weekly rhythm, even while ChatGPT referral sessions swung violently. Against 3.2 million indexed pages site-wide, the number of pages actually cited on an average day is around 520. And the Grounding Queries report lists the literal questions AI answered using our pages, hundreds of them in any given window, from the Feynman technique to Australian civil liability law. If the 404 log tells you what should exist, grounding queries tell you what already works. Both are free. Almost nobody reads either.
3. Why the next round has to go deeper than the TLDR
Those Bing numbers contain a hard message. 486 cited pages out of 3.2 million indexed is not an indexation problem; it is a selection problem. Our working model of AI citation now has three stages: a page has to be discovered, then chosen as the best answer, then clicked. The Bing data says discovery is essentially solved for us, since the index has everything. Title and TLDR rewrites got us into the candidate set. They do not win stage two against a page that actually answers the question better, and they say nothing about stage three at all.
So the current rewrite generation works on substance, not surface, aimed squarely at being chosen. Where the grounding data shows a real question, the page now needs to contain the real answer: Q&A sections deepened from four entries to six or eight, with the actual grounding query as the lead question and concrete details and quotes from the source video, not four sentences of polite summary. We are also undoing some damage from our own first pass: earlier rewrites sometimes optimized away the entities that make a page findable, show names, episode numbers, people, products, so those are being restored. And every rewrite now passes a grounding gate: if a number is not in the source material, it does not get written. An answer engine’s trust is rented, and one hallucinated statistic is an expensive way to lose it.
We said last time that we had not yet closed the loop from rewrite to measured lift. This time we are doing it properly: the Q&A deepening is running as a randomized test, with eligible pages split into treatment and control, which is exactly the experiment the paper’s limitations section said someone should run. When it reads out, we will report the result whichever way it points. Stage three, whether a chosen page actually gets the click, is designed into this generation of rewrites but not yet measured. We would rather tell you that than screenshot another curve.
4. Two operational notes, offered as tips
First, audit your own firewall before you optimize anything. While investigating the summer decline we found our own security rules answering a share of AI-bot requests with 403s: at the worst point, roughly a quarter of ChatGPT-User requests were being rejected, one page type was blocked outright, and a rate-limiting rule was intermittently refusing ChatGPT’s own retrieval infrastructure. We had spent months optimizing pages for bots we were partially turning away at the door. We could also pin the decline on this rather than on some model-side change, because Copilot referrals, grounded on the same Bing index, never dipped. The control-group habit pays off across engines, not just across page groups.
Second, the generation itself now runs on Claude Code instead of metered API calls. Article generation and rewrites used to run through the OpenAI API and were burning tens of dollars a day at full pace. We moved the pipeline onto Claude Code running continuously on an always-on Mac, with a keepalive script that restarts the generator whenever it stops and there is queue left. It is slower per page and it rides a flat subscription instead of a meter, which changes what is economical to attempt at 400,000-page scale. Slow and flat beats fast and metered when the queue is effectively infinite. How we use Claude Code inside Glasp has turned into a story of its own, honestly one of the more interesting operational changes we have made this year, and it deserves a future Hatching Growth issue of its own.
5. The flywheel’s first tick
The original essay ended on a hypothesis: ChatGPT cites a page, a writer or researcher follows the citation and links to it, link equity compounds, and SEO strengthens as a byproduct of AEO rather than a parallel investment. The paper’s strict test found no measurable organic-traffic lift inside the study window, and we stand by that. But the slower dial has started to move. Backlinks to the YouTube corpus keep appearing from sites we never pitched, and Glasp’s domain authority, 69 to 70 when this experiment began, now reads 71. There is also a structural reason to expect this loop to speed up: a growing share of the web’s articles are now researched and drafted with ChatGPT or Claude in the loop, and when the researcher is an AI, the sources it cites are the sources that get linked. Being the page an answer engine reaches for no longer just wins the answer; it wins a place in the next generation of articles. One point on a vendor metric proves nothing on its own. It is exactly the size and kind of signal the flywheel would produce first, though, so we are noting it here and will keep reporting it either way.
The mental model, revised
Your server is the sensor. Logs over vendor dashboards; 404s are a roadmap; AI Assistant volume is live human demand.
Measure against a control, or you are measuring the weather. The tide alone was 3.5x. Our work was worth about 2x on top. Both numbers deserve to be said out loud.
Selection beats polish. Demand-driven page creation moved hit rates 17x; no rewrite ever did that.
Getting seen and getting chosen are different problems. Titles and TLDRs solve the first. Only genuinely better answers solve the second.
Guard the channel you already own. SEO Guard cost us nothing and protected everything.
The open questions from the first essay stay open: what AEO traffic converts into, and whether any of this works from a cold start. If you have signal on either, we would genuinely like to compare notes.
Would you like to take Glasp on the go?
With the Glasp mobile app, you can highlight and organize your favorite content anytime, anywhere. Stay productive on the move and never miss an insightful quote.
Partner With Glasp
We currently offer newsletter sponsorships. If you have a product, event, or service you’d like to share with our community of learning enthusiasts, sponsor an edition of our newsletter to reach engaged readers.











Loved this breakdown of AEO in practice. The “your server is the sensor” mindset and using 404s as a roadmap are especially sharp. The honest accounting of the 37x headline into a ~2x true lift, with a proper control, is rare and really valuable.
Also really liked the distinction between “getting seen” and “getting chosen” and how you tied that to TLDR design, grounding, and deeper Q&A. The demand driven page creation stats vs bulk generation were eye opening. This is one of the most concrete and intellectually honest case studies on AI oriented growth I have read in a while.
The question we would genuinely like to hear answers to: what does your AEO dashboard actually measure? Ours fixated on bot request counts for months, and the number that mattered most (bot volume flat, human sessions 37x) was the one we almost did not chart.
If you run Cloudflare, Vercel, or Fastly, here is the one tactic from this piece you can try this week: read your AI-bot 404 log. It is a content roadmap almost nobody opens.
And the honest caveat one more time: of the 37x, the tide was 3.5x and our work was worth about 2x. If you measure your own AEO against an on-domain control, we would love to compare notes.
No Substack account? We are also on Reddit: https://www.reddit.com/r/glasp/