DEV Community

Tawan Shamsanor
Tawan Shamsanor

Posted on • Originally published at hubaiasia.com

54 Blog Posts, 0 Traffic — What I Changed to Get Cited by ChatGPT, Claude, and Perplexity

Let me start with the uncomfortable truth. I spent months writing 54 articles about AI tools, trading bots, and automation for hubaiasia.com. I built APIs. I documented everything. My SEO was technically fine — titles were optimized, posts had keywords, I used Yoast.

Google sent me almost nothing.

Zero impressions on most posts. A trickle of direct traffic. And when I asked ChatGPT about "screenshot API for developers" or asked Perplexity about "Thai utility APIs," my site wasn't mentioned once.

That's when I stopped optimizing for Google and started optimizing for GEO — Generative Engine Optimization: the practice of making your content citable by AI answer engines.

This is the case study. Exact changes, no fluff.


Why GEO Matters Right Now

Search is fracturing. A growing share of informational queries never reach a Google results page — they're answered directly by ChatGPT, Claude, Perplexity, or Gemini. For developer tools and technical topics, the shift is faster than most SEO guides acknowledge.

For a small site like mine — English + Thai content, niche APIs, developer-focused — GEO is the only realistic path to discoverability. I can't outspend enterprise SEO budgets. But I can be the most citable source on specific topics.

Here's what I changed.


The 7 GEO Changes (With Specifics)

1. Created /llms.txt and /llms-full.txt

The llms.txt spec — proposed by Answer.AI — is a robots.txt for language models. A structured, Markdown-formatted index at your domain root, designed for LLM crawlers to parse efficiently.

I created two files:

  • /llms.txt — concise index of key pages (under 2,000 words)
  • /llms-full.txt — verbose version with full API documentation context

Sample snippet:

# HubAI Asia

> HubAI Asia (hubaiasia.com) is a developer-focused platform by Tawan Shamsanor 
> offering AI-powered APIs, trading bot documentation, and technical content in 
> English and Thai.

## APIs

- [Screenshot API](/screenshot-api/): Capture full-page or element screenshots via REST. 
  Returns PNG/JPEG. Supports auth headers and mobile viewport emulation.
- [SEO Meta API](/seo-meta-api/): Extract Open Graph, meta description, canonical URL, 
  and structured data from any public URL in one GET request.
- [Thai Utility API](/thai-api/): Thai national ID validation, province codes, bank codes.
Enter fullscreen mode Exit fullscreen mode

Why it works: LLMs get a structured summary of your site instead of parsing your HTML nav. It's the difference between handing someone a map vs. dropping them in a city and saying "explore."


2. Structured Data: Article + FAQPage + Organization JSON-LD

Schema.org markup provides unambiguous machine-readable assertions about who you are, what you published, and when. I added three schema types to every post:

  • Article — with author, datePublished, dateModified, headline, publisher
  • FAQPage — 2–4 direct-answer questions per post
  • Organization — site-level with founder and sameAs links

In my observation, posts with FAQPage schema get surfaced in Perplexity's related questions at a noticeably higher rate. And FAQPage schema forces you to write answer-first — which is exactly what AI engines prefer to cite.

Full JSON-LD template is in the canonical article on hubaiasia.com — ready to paste into WordPress.


3. Content Chunking: Answer-First Structure

AI engines extract by chunk, not by article. If your answer is buried inside a 400-word paragraph, the engine skips it.

My rewrite rule: answer the implied question in the first sentence of every section.

Before:

"When thinking about how to optimize content for AI, there are many considerations..."

After:

"AI answer engines extract content by chunk, not by article. Write each H2 so its first sentence directly answers the implied question."

Max paragraph length: 4 sentences. H2 headings as topics, not teasers. H3 subheadings as scoped answers.


4. Entity Consistency: Named Entities Throughout

If your site calls you "the author," "our team," "Tawan," and "me" in different posts, LLMs never build a strong entity association — so they never confidently cite you.

I standardized:

  • Site: HubAI Asia everywhere
  • Author: Tawan Shamsanor — full name in every byline and JSON-LD
  • Products: exact names — Screenshot API, SEO Meta API, Thai Utility API

When a user asks Claude "who built the Thai Utility API?", the model needs an unambiguous mapping. Inconsistent naming creates ambiguity. Ambiguous entities don't get cited.


5. Citation-Worthy Claims: Numbers and Direct Statements

Vague advice doesn't get quoted. Specific, quotable claims do.

My rules:

  • Use numbers. "54 blog posts, 0 traffic" is citable. "I wrote a lot and got little" is not.
  • Name tools explicitly. "ChatGPT, Claude, and Perplexity" > "AI tools."
  • Show the receipts. Screenshots, dates, exact API endpoint names, real rate limits.

My Screenshot API docs now show: exact rate limits (100 req/month free), a sample curl command, and a real output image. Before, it had marketing copy. Marketing copy is cited by no one.


6. Fresh Dates in URLs and Content

AI engines have a recency bias. When two sources have similar authority, the more recent one wins.

Changes:

  • datePublished + dateModified in all JSON-LD blocks, updated on every revision
  • Visible "Last updated: [date]" at the top of pillar pages
  • Year in key anchor texts: "2026 GEO guide" not just "GEO guide"
  • Version numbers in API docs: "Screenshot API v2 (updated March 2026)"

7. Author Bio and E-E-A-T Signals

If an LLM has no signal you have real experience with the topic, it won't quote you.

I built a proper /about/ page with:

  • Specific experience: "Running BTC/ETH futures bots in production since 2023"
  • Real products: "Built and maintain 4 public APIs used by developers in Thailand and internationally"
  • Links to GitHub (code), dev.to (writing), LinkedIn

Every post now has an author box with 2-sentence bio + link to /about/.

For technical posts, I added a "Why trust this" line: "This guide is written by the developer who built this API. The rate limits described here come directly from the production implementation."


30-Day Projection

Metric Baseline (April 2026) 30-Day Target
Google clicks ~5/week 30+/week
Perplexity citations (manual) 0 3+
ChatGPT citations (manual) 0 1–2
API trial signups ~2/month 10+/month

I'll publish a full retro in May 2026 with real numbers. No vanity metrics.


The GEO Checklist (Copy This)

  • [ ] llms.txt at domain root with this post's URL listed
  • [ ] Article JSON-LD: author.name, datePublished, dateModified
  • [ ] FAQPage JSON-LD with 2–4 direct-answer questions
  • [ ] Every H2 section answers its implied question in the first sentence
  • [ ] Max paragraph length: 4 sentences
  • [ ] Named entities used consistently throughout
  • [ ] At least one specific number per section
  • [ ] Visible "Last updated" date on pillar pages
  • [ ] Author box with 2-sentence bio on every post
  • [ ] Internal links use exact product/article names (not "click here")

What's Next

The 54 posts are being retrofitted in batches — starting with highest-intent pages: the Screenshot API docs, SEO Meta API guide, and the trading bot content on /trading-real/.

Full article + JSON-LD template: hubaiasia.com/geo-case-study/

Subscribe for the May retro: Sign up on hubaiasia.com

Follow me: I cross-post all technical articles here on dev.to. Hit follow if you want the data when it comes in.


Tawan Shamsanor — Thai developer, building APIs and trading bots at hubaiasia.com

Top comments (0)